资源描述:
《第五章常微方程初值问题2》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第五章常微方程初值问题数值微分我们讨论y=/(x)的导数问题。实际计算及讨论函数在具体某点的导数值。我们自然想到微积分中的导数定义:/*(x0)=lim/?-»()/(无0+/2)-/(兀0)h用/(兀+力-于(兀。)作为广(兀)的近似。h理论上这种近似,h越小越好,但实际计算相近的数相减会损失有效数字,实际计算中要注意这些问题。二阶导数的三点公式:小。)4(宁-譽)詁仇f+旳)hhhh心)弓宁"一竽)诂仇f+%)精度高一个量级往往利用插值方法先求出插值函数,在对函数求导,用之代替原函数的导数。数值
2、积分我们也曾这样做。本章我们主要解决初值问题的数值解法。即:ax数值解就是要求出在兀1=兀0+h.兀2=兀0+2h,兀3=兀0+3人…,Xn=X0+nh一系列点上的近似值假设/(x)在所讨论问题中连续。由Leibniz公式(或对方程积分)有:V(£+i)=y(^)+f(x,y)dx依据上式可得到不同的数值解法。§1欧拉法和改进欧拉法、预估-校正法由(兀+i)=y(xi)+广/(兀,y皿Jxib积分可用JfMdx=f(a)(b-a)左矩形公式,得:》(£+J=V(益)+h/(£,儿)显式b用=/(/?
3、)(/?-6Z)右矩形公式,得:yg+J=y(暫)+hf(xn+],儿+j隐式hy(&+J=yM+-[/(£,儿)+/(£+i,儿+i)1改进欧拉公式精度比上两个高一个量级。隐式和改进欧拉法都是一个方程。如果方程解时比较复杂,则用迭代发近似求解。先用显式欧拉公式计算初值,再用改进欧拉公式迭代求解。(数学证明当©在所讨论的范围有界在h取得很小时,这种迭代收敛〉。dy公式为:*=儿+方f(Xn,几)=儿+%fnhyT=儿+-tfn+g用)]"o,i,2,・・.程序结构:孚=/(兀,y)鼻=%F(x,y)
4、二Y*YWRIT玖*,*)'INPUTX0,Y0‘READ(*,*)XO,YOWRITER,*)'INPUT[xO,b]B‘READ(*,*)BWRIT玖*,*)'INPUTh'READ(*,*)hY=Y0FO=F(XO,YO)DO100X=X0,B,HKl=K2=K3=K4=Y=Y+Y=Y0+H*F0DO200K=l,10Y=Y0+H/2.0*(F0+F(X,Y))200CONTINUEWRITE(*,*)X+h,Y,1.0/(1-X-h)Y0=YF0=F(X,Y)100CONTINUESTOPE
5、ND注意:所计算的范围必须是从X0到某值B。因为是逐点递推的。当计算范围为[B,X0]时,步长h取负值。作业:数值解初值问题:^=y2y=1dxlA=()用改进公式解方程,并和精确解y二丄作图比较。—X注意:本题中X的取值范围不能接近1,为什么?将方程换成^=yy=1,精确解为计算卜2,2]间曲线dxA=o将方程换成^=yxy=1,精确解为)=严”计算卜2,2]间曲线dxe72xdx^y-Q=>y=exp(—)22改进欧拉法在判断迭代收敛时堂很不好求(为什么?未知!)。dy往往计算中用预估-
6、校正法,公式如下:人+1=儿+力/(£+几)左矩形预估儿+iQ+严儿+心(£,臨1)右矩形h几+i=几+㊁"g'儿)+兀心'%J]h=儿+-【/(暫,几)+/(£+】,儿+hg,几))]校正h二儿+二(即+G+Jhy(£+J=x^)+-[/(暫,儿)+/(£+】,yn+l)]曲)=yn+级+g,此)]n,2,…§2龙格-库塔法(Runge-Kutta)欧拉法计算简单,精度不高。预估校正法可写为:h儿+i=儿+3MX,儿)+/(&+】,儿+町区,儿))]二儿+£[&+©]K2=/(£+1,儿+hf(X
7、n,儿))]=/(£+1,儿+力KJ]将上式加以推广几+1=几+"匕&+:©]K]=.f(£,y”)**K2=/(兀+a2h,yn+a2hK^]c}.c2.a2为待定系数,当q=C2=l/2,希=1时就是预估-校正法。我们现在要选取上面的三个系数,使得上式的误差为0(胪)。字=f(x,y)我们将y(£+J在耳展开:
8、=儿y(£+i)=yM+hy*(xj+*h2yXxn)+0(A3)****其中:yG)=/(x,yCr))y"(兀)=fx(兀,y(%))+fy(兀,y(兀))y'(兀)=£(兀,y(兀
9、))+厶(%,y(兀))/(兀,y(兀))=fx+fyf另一方面,将**式中的£在已知点(£,儿)展开©=/(兀,儿)+/“2/2+九矽%+0(心二元函数展开带入**式得:下标x,y表示偏导数,n表示在(暫,儿)点。儿+i=儿+hC[fn+c2h[f(xn,儿)+fxa2h+fya2hK{]+0(忙)=yn+hcjn+hc2fn+c2fxa2h2+C2fya2h2fn+0(h3)=yn+h(q+C2)fn+h2c2a2(fx+fyf+0(h3)=yn+h(c,+c2