fortran下龙格-库塔法求解常微分方程(实例)Word文件下载.docx
《fortran下龙格-库塔法求解常微分方程(实例)Word文件下载.docx》由会员分享,可在线阅读,更多相关《fortran下龙格-库塔法求解常微分方程(实例)Word文件下载.docx(3页珍藏版)》请在冰点文库上搜索。
21)
DOUBLEPRECISIONx,y,z,p,h,x0,y0,z0,p0,n,k1,k2
f(x,y)=x-y
h=1.0/20
n=20
x(0)=0.0
y(0)=0.0
DOi=0,n-1
x(i+1)=x(i)+h
k1=f(x(i),y(i))
k2=f(x(i+1),y(i)+h*k1)
y(i+1)=y(i)+h*(k1+k2)/2
ENDDO
p(0)=0
DOi=0,n
z(i)=p(i)+exp(-p(i))-1
p(i+1)=p(i)+h
ENDDO
open(10,file='
1.txt'
)
WRITE(10,10)(x(i),y(i),z(i),i=0,20)
WRITE(*,10)(x(i),y(i),z(i),i=0,20)
10 FORMAT(1x,f10.7,2x,f10.8,2x,f10.8/)
END
输出结果:
0.00000000.000000000.00000000
0.05000000.001250000.00122942
0.10000000.004876560.00483742
0.15000000.010763830.01070798
0.20000000.018801590.01873075
0.25000000.028885020.02880078
0.30000000.040914370.04081822
0.35000000.054794800.05468809
0.40000000.070436050.07032005
0.45000000.087752290.08762815
0.50000000.106661870.10653066
0.55000000.127087100.12694981
0.60000000.148954110.14881164
0.65000000.172192600.17204578
0.70000000.196735710.19658531
0.75000000.222519840.22236656
0.80000000.249484500.24932897
0.85000000.277572130.27741494
0.90000000.306727990.30656967
0.95000000.336900010.33674103
1.00000000.368038630.36787945
通过比对公式或者输出结果可以知道,二阶龙格—库塔法即为改进欧拉法
2.四阶龙格—库塔法
DOUBLEPRECISIONx,y,z,p,h,x0,y0,z0,p0,n,k1,k2,k3,k4
h=0.05
x(i+1)=(i+1)*h
k2=f(x(i)+0.5*h,y(i)+0.5*h*k1)
k3=f(x(i)+0.5*h,y(i)+0.5*h*k2)
k4=f(x(i)+h,y(i)+h*k3)
y(i+1)=y(i)+h*(k1+2*k2+2*k3+k4)/6
WRITE(10,10)(x(i),y(i),z(i),i=0,20)
10 FORMAT(1X,f12.10,2x,f12.10,2x,f12.10/)
WRITE(*,10)(x(i),y(i),z(i),i=0,20)
0.00000000.00000000000.0000000000
0.05000000.00122942710.0012294245
0.10000000.00483742310.0048374182
0.15000000.01070798370.0107079767
0.20000000.01873076260.0187307536
0.25000000.02880079450.0288007839
0.30000000.04081823400.0408182218
0.35000000.05468810440.0546880913
0.40000000.07032006230.0703200480
0.45000000.08762816900.0876281541
0.50000000.10653067800.1065306626
0.55000000.12694983040.1269498138
0.60000000.14881165760.1488116401
0.65000000.17204579930.1720457814
0.70000000.19658532750.1965853090
0.75000000.22236657780.2223665586
0.80000000.24932899010.2493289707
0.85000000.27741495900.2774149392
0.90000000.30656968730.3065696677
0.95000000.33674105130.3367410321
1.00000000.36787946980.3678794506