1、21)DOUBLE PRECISION x,y,z,p,h,x0,y0,z0,p0,n,k1,k2f(x,y)=x-yh=1.0/20n=20x(0)=0.0y(0)=0.0DO i=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)/2ENDDOp(0)=0DO i=0,n z(i)=p(i)+exp(-p(i)-1 p(i+1)=p(i)+hEND DOopen(10,file=1.txt)WRITE(10,10) (x(i),y(i),z(i),i=0,20)WRITE(*,10)
2、 (x(i),y(i),z(i),i=0,20)10FORMAT(1x,f10.7,2x,f10.8,2x,f10.8/)END输出结果:0.0000000 0.00000000 0.00000000 0.0500000 0.00125000 0.00122942 0.1000000 0.00487656 0.00483742 0.1500000 0.01076383 0.01070798 0.2000000 0.01880159 0.01873075 0.2500000 0.02888502 0.02880078 0.3000000 0.04091437 0.04081822 0.35000
3、00 0.05479480 0.05468809 0.4000000 0.07043605 0.07032005 0.4500000 0.08775229 0.08762815 0.5000000 0.10666187 0.10653066 0.5500000 0.12708710 0.12694981 0.6000000 0.14895411 0.14881164 0.6500000 0.17219260 0.17204578 0.7000000 0.19673571 0.19658531 0.7500000 0.22251984 0.22236656 0.8000000 0.2494845
4、0 0.24932897 0.8500000 0.27757213 0.27741494 0.9000000 0.30672799 0.30656967 0.9500000 0.33690001 0.33674103 1.0000000 0.36803863 0.36787945通过比对公式或者输出结果可以知道,二阶龙格库塔法即为改进欧拉法2.四阶龙格库塔法DOUBLE PRECISION x,y,z,p,h,x0,y0,z0,p0,n,k1,k2,k3,k4h=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
5、,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)/6WRITE(10,10)(x(i),y(i),z(i),i=0,20)10FORMAT(1X,f12.10,2x,f12.10,2x,f12.10/) WRITE(*,10)(x(i),y(i),z(i),i=0,20)0.0000000 0.0000000000 0.0000000000 0.0500000 0.0012294271 0.0012294245 0.1000000 0.0048374231 0.0048374182 0.1500000
6、0.0107079837 0.0107079767 0.2000000 0.0187307626 0.0187307536 0.2500000 0.0288007945 0.0288007839 0.3000000 0.0408182340 0.0408182218 0.3500000 0.0546881044 0.0546880913 0.4000000 0.0703200623 0.0703200480 0.4500000 0.0876281690 0.0876281541 0.5000000 0.1065306780 0.1065306626 0.5500000 0.1269498304
7、 0.1269498138 0.6000000 0.1488116576 0.1488116401 0.6500000 0.1720457993 0.1720457814 0.7000000 0.1965853275 0.1965853090 0.7500000 0.2223665778 0.2223665586 0.8000000 0.2493289901 0.2493289707 0.8500000 0.2774149590 0.2774149392 0.9000000 0.3065696873 0.3065696677 0.9500000 0.3367410513 0.3367410321 1.0000000 0.3678794698 0.3678794506