SUBROUTINE RUKU (Z,DZ)
DIMENSION Z(6),X(6),DZ(6),DX(6)
COMMON T,DT,H,ALFA,IPR,IPO,G1,G2,Z1,Z2,GPL,GMI,EPP,EPM,XK,MO
COMMON IC,IT,IG,IP
CALL ZERV (DZ)
CALL GRAD (Z,DX)
CALL AUGV (DZ,DZ,1.0/6.0,DX)
CALL AUGV (X,Z,DT/2.0,DX)
CALL GRAD (X,DX)
CALL AUGV (DZ,DZ,1.0/3.0,DX)
CALL AUGV (X,Z,DT/2.0,DX)
CALL GRAD (X,DX)
CALL AUGV (DZ,DZ,1.0/3.0,DX)
CALL AUGV (X,Z,DT,DX)
CALL GRAD (X,DX)
CALL AUGV (DZ,DZ,1.0/6.0,DX)
RETURN
END
Esta subrutina sí la vamos a discutir con todo detalle, tanto por su
importancia como por estar formada con llamadas a otras subrutinas.
Se comienza propiamente con la instrucción CALL ZERV(DZ)
que realiza la operación DZ=O. Luego, con CALL
GRAD(Z,DX) se está indicando la operación DX F(Z)
CALL AUGV(DZ,DZ,1/3,DX) para calcular DZ = DZ+DX/3
= DZ+
/3
CALL AUGV(X,Z,DT,DX)
X = Z+DT*DX = Z+DT
CALL GRAD(X,DX) con esto tendremos
DX = F(X) = F
Y por último:
CALL AUGV(DZ,DZ,1/6,DX) para obtener
DZ=DZ+DX/6
Con lo cual queda completo un paso de la integración de
Runge-Kutta en FORTRAN. Hay que observar que este método de
Runge-Kutta a cuarto órden se reduce al de Simpson. Cuando hay
dependencias del tiempo debe incluirse el argumento, calculando en
términos de más múltiplos de DT.