第6章常微分方程数值解法§6.1引言§6.2欧拉方法§6.3龙格—库塔方法§6.1引言微分方程数值解一般可分为:常微分方程数值解和偏微分方程数值解。自然界与工程技术中的许多现象,其数学表达式可归结为常微分方程(组)的定解问题。一些偏微分方程问题也可以转化为常微分方程问题来(近似)求解。Newton最早采用数学方法研究二体问题,其中需要求解的运动方程就是常微分方程。许多著名的数学家,如Bernoulli(家族),Euler、Gauss、Lagrange和Laplace等,都遵循历史传统,研究重要的力学问题的数学模型,在这些问题中,许多是常微分方程的求解。作为科学史上的一段佳话,海王星的发现就是通过对常微分方程的近似计算得到的。本章主要介绍常微分方程数值解的若干方法。1、常微分方程与解为n阶常微分方程。0),,'',',,()(nyyyyxF如果函数在区间[a,b]内n阶可导,称方程)(xyy)(xyy满足方程的函数称为微分方程的解。则如为任意常数)xy2'CCxy(,2一般称为方程的通解。为方程的解,12xy如果则有10)(y为方程满足定解条件的解。一、初值问题的数值解法102)('yxyCCxy1212xy方程的通解满足定解条件的解微分关系(方程)解的图示本教材重点讨论定解问题(初值问题)定解条件(初始条件)00yxyyxfy)(),('),(yxf是否能够找到定解问题的解取决于仅有极少数的方程可以通过“常数变易法”、“可分离变量法”等特殊方法求得初等函数形式的解,绝大部分方程至今无法理论求解。如xyxyeyxyxyy212','),sin('sin等等2、数值解的思想(1)将连续变量离散为],[baxbxxxxank10nkxyykk,,,)(21(2)用代数的方法求出解函数在点的近似值)(xyykx)(kxy*ky)(xyy数学界关注工程师关注数学界还关注:解的存在性解的唯一性解的光滑性解的振动性解的周期性解的稳定性解的混沌性……求函数y(x)在一系列节点a=x0x1…xn=b处的近似值的方法称为微分方程的数值解法。()(1,...,)iiyyxin称节点间距为步长,通常采用等距节点,即取hi=h(常数)。)1,...,0(1nixxhiii1,,nyy称为微分方程的数值解。所谓数值解法:称在区域D上对满足Lipschitz条件是指:1212120..(,)(,),[,],,[(),()]LstfxyfxyLyyxabyyyxyx(,)fxyy{(,),()()}Dxyaxbyxyyx记3、相关定义(2)一般构造方法:离散点函数值集合+线性组合结构→近似公式4、迭代格式的构造(1)构造思想:将连续的微分方程及初值条件离散为线性方程组加以求解。由于离散化的出发点不同,产生出各种不同的数值方法。基本方法有:有限差分法(数值微分)、有限体积法(数值积分)、有限元法(函数插值)等等。(3)如何保证迭代公式的稳定性与收敛性?5、微分方程的数值解法需要解决的主要问题(1)如何将微分方程离散化,并建立求其数值解的迭代公式?(2)如何估计迭代公式的局部截断误差与整体误差?二、初值问题解的存在唯一性考虑一阶常微分方程的初值问题/*Initial-ValueProblem*/:0)(],[),(yaybaxyxfdxdy|||),(),(|2121yyLyxfyxf则上述IVP存在唯一解。只要在上连续,且关于y满足Lipschitz条件,(,)fxy1,abR即存在与无关的常数L使,xy对任意定义在上的都成立,,ab12,yxyx三、初值问题的离散化方法离散化方法的基本特点是依照某一递推公式,值,取。按节点从左至右的顺序依次求出的近似()iyx(1,...,)iyin0y如果计算,只用到前一步的值,则称这类方法为单步方法。1iyiy如果计算需用到前r步的值,,则称这类方法为r步方法。1iy11,,iiryyiy§6.2Euler方法kp0p1p1npnpkx0x1x1nxnx),(111212yxfxxyy第一步:连续变量离散化,,,,,nkxxxxx10第二步:用直线步进),(000101yxfxxyy),(),(nnnnnnnnnnyxhfyyyxfxxyy111·····Euler格式1、Euler格式00yxyyxfy)(),('18世纪最杰出的数学家之一,13岁时入读巴塞尔大学,15岁大学毕业,16岁获得硕士学位。1727年-1741年(20岁-34岁)在彼得堡科学院从事研究工作,在分析学、数论、力学方面均有出色成就,并应俄国政府要求,解决了不少地图学、造船业等实际问题。24岁晋升物理学教授。1735年(28岁)右眼失明。1741年-1766(34岁-59岁)任德国科学院物理数学所所长,任职25年。在行星运动、刚体运动、热力学、弹道学、人口学、微分方程、曲面微分几何等研究领域均有开创性的工作。1766年应沙皇礼聘重回彼得堡,在1771年(64岁)左眼失明。Euler是数学史上最多产的数学家,平均以每年800页的速度写出创造性论文。他去世后,人们用35年整理出他的研究成果74卷。在假设yi=y(xi),即第i步计算是精确的前提下,考虑的截断误差Ri=y(xi+1)yi+1称为局部截断误差/*localtruncationerror*/。定义2.2若某算法的局部截断误差为O(hp+1),则称该算法有p阶精度。定义2.12、欧拉法的局部截断误差欧拉法的局部截断误差:11()iiiRyxy23()()2ihyxOhRi的主项/*leadingterm*/欧拉法具有1阶精度。232[()()()()][(,)]hiiiiiiyxhyxyxOhyhfxy()iiyyx'()(,())iiiyxfxyx2()Oh例1:用欧拉公式求解初值问题2201.201yxyxy()取步长。0.1h解:应用Euler公式于题给初值问题的具体形式为:2120,1,...,1101iiiiyyhxyiy其中。0.1ixi计算结果列于下表:iixiyiyxiiyxy1234567891011120.10.20.30.40.50.60.70.80.91.01.11.21.0000000.9800000.9415840.8883890.8252500.7571470.6883540.6220180.5601130.5036420.4529110.4077830.9900990.9615380.9174310.8630690.8000000.7352940.6711410.6097560.5524860.5000000.4524890.4098360.0099010.0184620.0241530.0263200.0252500.0218520.0172130.0122620.0076260.0036420.0004220.002053可用来检验近似解的准确程度。进行计算,数值解已达到了一定的精度。这个初值问题的准确解为,211yxx从上表最后一列,我们看到取步长0.1h3、欧拉公式的改进:隐式欧拉法/*implicitEulermethod*/向后差商近似导数hxyxyxy)()()(011x0x1))(,()(1101xyxfhyxy由于未知数yi+1同时出现在等式的两边,不能直接得到,故称为隐式/*implicit*/欧拉公式,而前者称为显式/*explicit*/欧拉公式。111,0,1iiiiyhfxiyyn一般先用显式计算一个初值,再迭代求解。隐式欧拉法的局部截断误差:11()iiiRyxy23()()2ihyxOh即隐式欧拉公式具有1阶精度。梯形公式/*trapezoidformula*/—显、隐式两种算法的平均)1,...,0()],(),([2111niyxfyxfhyyiiiiii注:梯形公式的局部截断误差,311iiiRyxyOh即梯形公式具有2阶精度,比欧拉方法有了进步。但注意到该公式是隐式公式,计算时不得不用到迭代法。,...2,1,0),(),(2),()(11)1(1)0(1kyxfyxfhyyyxhfyyknnnnnknnnnn中点欧拉公式/*midpointformula*/中心差商近似导数hxyxyxy2)()()(021x0x2x1))(,(2)()(1102xyxfhxyxy1,...,1),(211niyxfhyyiiii假设,则可以导出即中点公式具有2阶精度。)(),(11iiiixyyxyy)()(311hOyxyRiii方法显式欧拉隐式欧拉梯形公式中点公式简单精度低稳定性最好精度低,计算量大精度提高计算量大精度提高,显式多一个初值,可能影响精度改进欧拉法/*modifiedEuler’smethod*/Step1:先用显式欧拉公式作预测,算出Step2:再将代入隐式梯形公式的右边作校正,得到1ny1,nnnnyyhfxy111,,2nnnnnnyyyyhfxfx11121211()2(,)(0,1,2,...)Euler,[(,)(,(,)2,]())nnnnnnnnnnnnnnyykkkhhyyfxyfxhyhfxfxynkhfyxhyk上式还常写成该式称为改进方法亦可写成注:此法亦称为预测-校正法/*predictor-correctormethod*/可以证明该算法具有2阶精度,同时可以看到它是个单步递推格式,比隐式公式的迭代求解过程简单。后面将看到,它的稳定性高于显式欧拉法。改进的欧拉法111(,)(,)2nnnnnnhyyfxyfxy在实际计算时,可将欧拉法与梯形法则相结合,计算公式为,...2,1,0),(),(2),()(11)1(1)0(1kyxfyxfhyyyxhfyyknnnnnknnnnn应用改进欧拉法,如果序列收敛,,,)1(1)0(1nnyy它的极限便满足方程111(,)(,)2nnnnnnhyyfxyfxy改进欧拉法的截断误差)(0)(311hyxynn因此,改进欧拉法公式具有2阶精度例2:用改进Euler公式求解例1中的初值问题,取步长。0.1h解:对此初值问题采用改进Euler公式,其具体形式为21()211111111(,)2(,)2()12piiiiiiicppiiiiiiipciiiyyhfxyyhxyyyhfxyyhxyyyy计算结果列于下表:例1:用欧拉公式求解初值问题2201.201yxyxy()0,1,...,11i01yiixiy1piy1ciyiiyxy改进的Euler法iiyxyEuler法01234567891011120.00.10.20.30.40.50.60.70.80.91.01.11.21.0000000.9900000.9613660.9172460.8619540.8000340.7355270.6175870.6103990.5532890.5009190.4534790.4108591.0000000.9703890.9243970.8667650.80251