rk4.f90
来自「这是一个可以用来计算洛仑兹方程解的程序」· F90 代码 · 共 55 行
F90
55 行
subroutine rk4(t0,x0,y0,z0,h,n,x1)
real*8 k_1,k_2,k_3,k_4,D_1,D_2,D_3,D_4,xx,yy,zz
integer n
h2=h/2
h6=h/6
xx=x0
yy=y0
zz=z0
call f(t0,xx,yy,zz,n,D_1)
k_1=D_1
t0=t0+h2
if(n.EQ.1)then
x0=xx+h2*k_1
call f(t0,x0,yy,zz,1,D_2)
k_2=D_2
x0=xx+h2*k_2
call f(t0,x0,yy,zz,1,D_3)
k_3=D_3
x0=xx+h*k_3
call f(t0,x0,yy,zz,1,D_4)
k_4=D_4
x1=xx+h6*(k_1+2*(k_2+k_3)+k_4)
!---------------------------------------------------
else if(n.EQ.2)then
x0=xx
y0=y0+h2*k_1
z0=zz
call f(t0,x0,y0,z0,2,D_2)
k_2=D_2
y0=yy+h2*k_2
call f(t0,x0,y0,z0,2,D_3)
k_3=D_3
y0=yy+h*k_3
call f(t0,x0,y0,z0,2,D_4)
k_4=D_4
x1=yy+h6*(k_1+2*(k_2+k_3)+k_4)
!----------------------------------------------------
else if(n.EQ.3)then
x0=xx
z0=z0+h2*k_1
y0=yy
call f(t0,x0,y0,z0,3,D_2)
k_2=D_2
z0=zz+h2*k_2
call f(t0,x0,y0,z0,3,D_3)
k_3=D_3
z0=zz+h*k_3
call f(t0,x0,y0,z0,3,D_4)
k_4=D_4
x1=zz+h6*(k_1+2*(k_2+k_3)+k_4)
end if
!-----------------------------------------------------
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?