常微分方程的数值解法一、 实验目的:冃的与要求:通过实验,熟悉常微分方程的数值解法的棊本原理掌握向前欧拉法、向后 欧拉法、梯形法、改进欧拉法及三阶、四阶龙格■库塔法等基木算法二、 实验内容:在下列方法中:向前欧拉法、向后欧拉法、梯形法、改进欧拉法及三阶、四阶龙格■库塔法 选择不同的三种算法求卜•面方程的数值解,并与准确解比较\ yf = x2 + x- yJ、 ,0Dashed]; A3=Plot [f [x] z {xf 0 z 1} , PlotStyle—>{Red, Thick}]; Show [A3 ,h2,hl]x2=0.2y2=0.840953f i:x2) =0.0212692 f(x2)-y(x2) =-0.819683x3=0•3y3=0<791362f(x3j=0.0491818 ffx3j-yi:x3j=-0.74218x4=0.4y4=0.761733f(x4)=0.08968 f(x4)-y(x4)=-0.672053x5=0.5丫5=0.7520“f(x5)=0.1434691f(x5)-y(x5)=-0>608599x6=0.6y6=0.762372f(x6:!=0.211188f(x6)-y(x6)=-0.551183x7=0.7y7=0<792646f(x7)=0.293415f(x7:!-yi:x7)=-0-499232x8=0.8y8=0.842895f(x8:!=0.390671fi:x8:!-yi:x8)=-0.452224x9=0.9丫9=0.91312 f(x9)=0<50343 f(x9)-y(x9)=-0>4096910 xl0=l. yl0=l.00332 f(xlO)=0.632121 f(xlO)-y(xlO)=-0.3712034.四阶龙格■库塔法 f [x_,y_] : =x2+x-y;f [x_] : 丄 + e^x2);;y0=l;a=0;b=l;n=10;h= (b-a)/n;xx=Table[a+(i・l)h,{i,l,n+l}]//N;y=Table[0z{irlzn+l}];y[[1]]=yO//N;For[i = 2 z i$n+l# i + +,al=h f[xx[[i-l]]zy[[i-l]]];a2=h f[xx[[i-1]]+h/2,y[[i-1]]+al/2];a3=h f[xx[[i-1]]+h/2,y[[i-1]]+a2/2];a4=h f[xx[[i-1]]+h,y[[i-1]]+a3];y[[i]]=y[[i-1]]+1/6 (al+2a2+2a3+a4);Print [i-lz H 11 z "x11 zi jy xx [ [i] ] J' H z ,,y,,zi-l/ ,, = ,,/y [ [i] ] z 11"."f (x"/i-l/")=,,zf [xx[[i]]] J"/ "f (xn/ii/ ") -y (xn/ii/ ") = nz f [xx [ [i] ] ] -y [ [i]]];] data=Table[{xx[[i]],y[[i]]}z{izlzn+l}]; Al=Graphics[{Pointsize[0 ・ 02] ,Bluez Point[data]}]; A2=ListLinePlot[data];A3=Plot [f [x] , {x, 0,1} # Plotstyle—>{Red, Thick}]; Show[A3/A2/Al]xl=0.1x2=0.2yl=0.91 f(xl)=0e00516258 f(xlO)-y(xlO)=-0.904838y2=0.84 f(x2)=0e0212692 f(xlO)-y(xlO)=-0.818731x3=0.3y3=0.790001f(x3)=0e0491818 f(xlO)-y(xlO)=-0e740819x4=0<4y4=0.760001fi:x4)=0e08968 f«:xl0)-y(xl0)=-0.670321x5=0.5y5=0.750001f(x5;=0.143469f(xlO)-y(xlO)=-0.606532x6=0< 6y6=0.760001f i:x6)=0e211188f(xlO)-y(xlO)=-0.548813X7=0e7y7=0.790001f i:x7:i=0<293415f(xlO)-y(xlO)=-0.496586x8=0<8y8=0.840001f i:x8)=0e390671x9=0.9y9=0.910001f(x9)=0.50343 f(xlO)-y(xlO)=-0.40657110 xlO=l. ylO=l. f1X10)=0.632121 f(xlO)-y(xlO)=-0<367881五、实验总结:木次实验是为了熟悉常微分方程的数值解法的基木原理。
掌握向前欧拉法、向 后欧拉法、梯形法、改进欧拉法及三阶、四阶龙格-库塔法等基本算法对同一个方程求数值解,我采用了向前欧拉法、改进欧拉法和四阶龙格■库塔法, 了解了不同算法的编程难度和运算效率本次实验中又犯了粗心的错误,少打了一 个“]”,使程序不能正确运行,花了不少时间查错。