上页下页第9章常微分方程初值问题数值解法•9.1引言•9.2简单的数值方法•9.3龙格-库塔方法•9.4单步法的收敛性与稳定性•9.5线性多步法•9.6线性多步法的收敛性与稳定性•9.7一阶方程组与刚性方程组上页下页9.1引言科学技术中很多问题都可用微分方程的定解问题来描述,主要有初值问题与边值问题两大类,本章只考虑初值问题.常微分方程初值问题中最简单的例子是人口模型,设某特定区域在t0时刻人口为y(t0)=y0已知的,该区域的人口自然增长率为,人口增长与人口总数成正比,所以t时刻的人口总数y(t)满足以下微分方程.)(),(00ytytyy上页下页很多物理系统与时间有关,从卫星运行轨道到单摆运动,从化学反应到物种竞争都是随时间的延续而不断变化的.解常微分方程是描述连续变化的数学语言,微分方程的求解就是确定满足给定方程的可微函数y(t),研究它的数值方法是本章的主要目的.考虑一阶常微分方程的初值问题)2.1(.)()1.1(],,[),,(000yxybxxyxfy则称f关于y满足利普希茨(Lipschitz)条件,L称为y的利普希茨常数(简称Lips.常数).如果存在实数L0,使得)3.1(.,,),(),(212121RyyyyLyxfyxf上页下页定理1设f在区域D={(x,y)|axb,yR}上连续,关于y满足利普希茨条件,则对任意x0[a,b],y0R,常微分方程初值问题(1.1)式和(1.2)式当x[a,b]时存在唯一的连续可微解y(x).解的存在唯一性定理是常微分方程理论的基本内容,也是数值方法的出发点,此外还要考虑方程的解对扰动的敏感性,它有以下结论.定理2设f在区域D(如定理1所定义)上连续,且关于y满足利普希茨条件,设初值问题.)(),,()(0sxyyxfxy的解为y(x,s),则.),(),(21210ssesxysxyxxL上页下页这个定理表明解对初值依赖的敏感性,它与右端函数f有关,当f的Lips.常数L比较小时,解对初值和右端函数相对不敏感,可视为好条件.若L较大则可认为坏条件,即病态问题.如果右端函数可导,由中值定理有.,,),(),(),(212121之间在yyyyyxfyxfyxf若假定在域D内有界,设,则yyxf),(Lyyxf),(.),(),(2121yyLyxfyxf它表明f满足利普希茨条件,且L的大小反映了右端函数f关于y变化的快慢,刻画了初值问(1.1)式和(1.2)式是否为好条件.这在数值求解中也是很重要的.上页下页虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些特殊类型的方程,实际问题中归结出来的微分方程主要靠数值解法.所谓数值解法,就是寻求解y(x)在一系列离散节点121nnxxxx上的近似值y1,y2,,yn,yn+1,.相邻两个节点的间距hn=xn+1-xn称为步长.今后如不特别说明,总是假定hi=h(i=1,2,)为常数,这时节点为xn=x0+nh(i=0,1,2,)(等距节点).上页下页初值问题的数值解法有个基本特点,他们都采取“步进式”,即求解过程顺着节点排列的次序一步一步地向前推进.描述这类算法,只要给出用已知信息yn,yn-1,yn-2,计算yn+1的递推公式.本章首先要对常微分方程(1.1)离散化,建立求解数值解的递推公式.一类是计算yn+1时只用到前一点的值yn,称为单步法.另一类是用到yn+1前面k点的值yn,yn-1,,yn-k+1,称为k步法.其次,要研究公式的局部截断误差和阶,数值解yn与精确解y(xn)的误差估计及收敛性,还有递推公式的计算稳定性等问题.上页下页9.2简单的数值方法9.2.1欧拉法与后退欧拉法我们知道,在xy平面上,微分方程(1.1)式的解y=f(x)称作它的积分曲线,积分曲线上一点(x,y)的切线斜率等于函数f(x,y)的值.如果按f(x,y)在xy平面上建立一个方向场,那么,积分曲线上每一点的切线方向均与方向场在该点的方向相一致.基于上述几何解释,我们从初始点P0(x0,y0)出发,先依方向场在该点的方向推进到x=x1上一点P1,然后再从P1点依方向场在该点的方向推进到x=x2上一点P2,循环前进做出一条折线P0P1P2.上页下页一般地,设已做出该折线的顶点Pn,过Pn(xn,yn)依方向场的方向再推进到Pn+1(xn+1,yn+1),显然两个顶点Pn,Pn+1的坐标有关系)),(,()(),(111nnnnnnnnnnnxyxfxyyxfhyyxxyy)1.2(),(1nnnnyxhfyy这就是著名的(显式)欧拉(Euler)公式.若初值y0已知,则依公式(2.1)可逐次逐步算出各点数值解.即),,(0001yxhfyy),,(1112yxhfyy上页下页例1用欧拉公式求解初值问题)2.2(.1)0(),10(2yxyxyy解取步长h=0.1,欧拉公式的具体形式为)2(1nnnnnyxyhyy其中xn=nh=0.1n(n=0,1,,10),已知y0=1,由此式可得191818.1)1.12.01.1(1.01.1)2(1.11.01)2(1111200001yxyhyyyxyhyy上页下页依次计算下去,部分计算结果见下表.xy21与准确解相比,可看出欧拉公式的计算结果精度很差.xn欧拉公式数值解yn准确解y(xn)误差0.20.40.60.81.01.1918181.3582131.5089661.6497831.7847701.1832161.3416411.4832401.6124521.7320510.0086020.0165720.0257260.0373310.052719上页下页欧拉公式具有明显的几何意义,就是用折线近似代替方程的解曲线,因而常称公式(2.1)为欧拉折线法.()yyxxynx1nxnp1np1npx还可以通过几何直观来考察欧拉方法的精度.假设yn=y(xn),即顶点Pn落在积分曲线y=y(x)上,那么,按欧拉方法做出的折线PnPn+1便是y=y(x)过点Pn的切线.从图形上看,这样定出的顶点Pn+1显著地偏离了原来的积分曲线,可见欧拉方法是相当粗糙的.上页下页为了分析计算公式的精度,通常可用泰勒展开将y(xn+1)在xn处展开,则有).,()(2),()()(2)()()()(1221nnnnnnnnnnnnxxyhyxhfxyyhxyhxyhxyxy在yn=y(xn)的前提下,f(xn,yn)=f(xn,y(xn))=y(xn).于是可得欧拉法(2.1)的公式误差为)3.2(),(2)(2)(2211nnnnxyhyhyxy称为此方法的局部截断误差.上页下页如果对方程(1.1)从xn到xn+1积分,得)4.2(.))(,()()(11nnxxnndttytfxyxy右端积分用左矩形公式hf(xn,y(xn))近似,再以yn代替y(xn),yn+1代替y(xn+1)也得到欧拉公式(2.1),局部截断误差也是(2.3).称为(隐式)后退的欧拉公式.它也可以通过利用均差近似导数y(xn+1),即如果右端积分用右矩形公式hf(xn+1,y(xn+1))近似,则得到另一个公式)5.2(),,(111nnnnyxhfyy直接得到.)),(,()()()(1111nnnnnnnxyxfxyxxxyxy上页下页后退的欧拉公式与欧拉公式有着本质的区别,后者是关于yn+1的一个直接计算公式,这类公式称作是显式的;前者公式的右端含有未知的yn+1,它实际上是关于yn+1的一个函数方程,这类方程称作是隐式的.显式与隐式两类方法各有特点,考虑到数值稳定性等其他因素,人们有时需要选用隐式方法,但使用显式算法远比隐式方便.隐式方程(2.5)通常用迭代法求解,而迭代过程的实质是逐步显式化.上页下页设用欧拉公式),()0(1nnnnyxhfyy给出迭代初值,用它代入(2.5)式的右端,使之转化为显式,直接计算得)0(1ny),,()0(11)1(1nnnnyxhfyy然后再用代入(2.5)式,又有)1(1ny).,()1(11)2(1nnnnyxhfyy如此反复进行,得)6.2().,1,0(),()(11)1(1kyxhfyyknnnkn上页下页由于f(x,y)对y满足Lipschitz条件(1.3).由(2.6)减(2.5)得),(),(11)(111)1(1nnknnnknyxfyxfhyy.1)(1nknyyhL由此可知,只要hL1,迭代法(2.6)就收敛到解yn+1.关于后退欧拉方法的公式误差,从积分公式看到它与欧拉法是相似的.上页下页9.2.2梯形方法为得到比欧拉法精度高的计算公式,在等式(2.4)右端积分用梯形求积公式近似,并用yn代替y(xn),yn+1代替y(xn+1),则得)7.2(,),(),(2111nnnnnnyxfyxfhyy称为矩形方法.矩形方法是隐式单步法,用迭代法求解,同后退的欧拉方法一样,仍用欧拉法提供迭代初值,则矩形迭代公式为上页下页)8.2().,1,0(),(),(2);,()(11)1()0(11kyxfyxfhyyyxhfyyknnnnnknnnnn为了分析迭代过程的收敛性,将(2.7)与(2.8)相减,得)],,(),([2)(1111)1(11knnnnknnyxfyxfhyy于是有,2)(11)1(11knnknnyyhLyy使得,12hL则当k→∞时有,这说明迭代过程(2.8)是收敛的.1)(1nknyy上页下页9.2.3改进的欧拉公式我们看到,梯形方法虽然提高了精度,但其算法复杂,在应用迭代公式(2.8)进行实际计算时,每迭代一次,都要重新计算函数f(x,y)的值,而迭代又要反复进行若干次,计算量很大,而且往往难以预测.为了控制计算量,通常只迭代一两次就转入下一步的计算,这就简化了算法.具体地说,我们先用欧拉公式求得一个初步的近似值,称之为预测值,此预测值的精度可能很差,再用梯形公式(2.7)将它校正一次,即按(2.8)式迭代一次得yn+1,这个结果称之为校正值.1ny1ny上页下页这样建立的预测-校正系统通常称为改进的欧拉公式:或表示为下列平均化形式).(21),,(),,(11cpnpnncnnnpyyyyxhfyyyxhfyy(2.9),),(1nnnnyxhfyy预测.)],(),([2111nnnnnnyxfyxfhyy校正上页下页例2用改进的欧拉法解例1中的初值问题(2.2).解仍取步长h=0.1,改进的欧拉公式为).(21),2(),2(11cpnpnpncnnnnpyyyyxyhyyyxyhyy部分计算结果见下表xnyn误差xnyn误差00.20.41.1.1840961.34336000.0000880.0017190.60.81.01.4859561.6164761.7378690.0027160.0040240.05818同例1中的欧拉法的计算结果比较,明显改善了精度.上页下页9.2.4单步法的局部截断误差与阶初值问题(1.1),(1.2)的单步法可用一般形式表示为)10.2(,),,,(11hyyxhyynnnnn其中多元函数与f(x,y)有关,当含有yn+1时,方法是隐式的,若不含yn+1则为显式方法,所以显式单步法可表示为(x,y,h)称为增量函数,例如对欧拉法(2.1)有)11.2(,),,