1第八章常微分方程数值解法8.1欧拉法(重点)8.2龙格-库塔法8.3亚当斯方法8.4线性多步法(重点)8.5方程组与高阶方程的数值解法8.6边值问题的数值解法2欧拉法的几何意义y0xi0P1P2PiP1iP1nPnP1P2PiP1iP1nPnP)(xyyx0x1xi+1xn-1xnx238.1.1矩形法11()()(,())nnxnnxyxyxfxyxdx(二)数值积分11(,())(,())()nnxnnnnxfxyxdxfxyxxx(左)矩形公式:001()(,)0,1,2,...nnnnyyxyyhfxyn计算积分近似值:()(8.1.2)48.1.2梯形法(改进的Euler方法)()()(()())2:babafxdxfafb由梯形积分公式:则得梯形公式111[(,)(,)]20,1,2,...nnnnnnhyyfxyfxyn()Euler梯形公式是单步隐式法,也需计算函数方程的解。(8.1.4)5迭代求解隐式方程ny计算时常用以下的迭代式:(8.1.5)(0)1(1)()111(,)[(,)(,)]20,1,2,...nnnnkknnnnnnyyhfxyhyyfxyfxyk()(1)()(1)111||,.kkknnnnyyyy当时取,迭代中止6隐式方程的收敛性1212(,)(,)(,)fxyDyLipschitzfxyfxyLyy设函数在有界区域上连续,且对变量满足条件,即:()1,201,28.1.5{}(0,1,2...)knLLipschitzhhLhLyk其中:为常数则如果步长满足:即:时,则由隐式方程()产生的序列:收敛。★7隐式方程的收敛性。故有从而可得:证明1)1(11)0(1)1(11)1(1)(1)1(11)(11)(1)1(1)(11)1(1lim,0)2(lim:||)2(||2|),(),(|2)],(),([2nknkkknnkknknknnknnknknknnnnnknyyhLyyhLyyhLyxfyxfhyyyxfyxfhyy★8预估-矫正法上式常写成1Euler,[()(,(,))]2nnnnnnnnhyyfxyfxhyhfxy该式称为改进的方法亦可写成此式为显式单步方法。1121211122(,)(,)nnnnnnyykkkhfxykhfxhyk9局部截断误差1,(),,nnnnnxyyxy假设第步在点的值计算没有误差即由单步法计算出则0011(),nnyxyxy从初值出发,由单步法显式或隐式逐步计算,得的值则1nx称为在点上的整体截断误差。111()nnnyxy1.nx称为点上的局部截断误差111()nnnTyxy10算法精度与局部截断误差的主项1111()(8.1.1)(,,)(,,)()nnnnpnnnnnyxyyhxyhTyyhxyhOhp定义设是初值问题的精确解,如对的局部截断误差:则称该算法具有阶精度;1211(())()(,())ppnnnpnnTx,yxhOhxyxh如果则称为主局部截断误差或局部截断误差的主项。11欧拉法的局部截断误差232Euler()()(,(),)()()(,())()()()11()()26()yxhyxhxyxhyxhyxhfxyxyxhyxhyxhyxhyxOh对于方法,有:22Euler(),1().2Ohhyx所以法是一阶方法,其局部截断误差为主局部截断误差为★12梯形法的局部截断误差1112342334()()[(,())(,())]2[()()][()()]21()()()()2!3[(){()()()()}]221()()12nnnnnnnnnnnnnnnnhTyxhyxfxyxfxyxhyxhyxyxyxhhyxhyxhyxOhhhyxyxhyxyxOhhyxOh!31()12hyx梯形法是二阶方法,其主局部截断误差为。★13算法精度,p一般来说一个算法的阶越高,则数值结果的精度相对也就越高:231Euler:()O(h)2nnhTyx显式法231Euler:y()O()2nnhTxh隐式法341:()()12nnhTyxOh梯形公式二阶方法一阶方法一阶方法注:也可定义算法具有p阶精度为:算法公式对任意次数不超过p次的多项式准确成立,但对于某一p+1次多项式不准确成立。14例证明Euler方法能准确地求解以下初值问题00)(yxyxydxdy=00()yyxxx解:由准确解为,所以00(),(),nnyyxyyx由=假定=往证:★0110()nnyyxxx01110()nnnyyyxxx;15证明11(1)()(1)nnnnyhyxhxx00001(1)()nnnyyxhxhxxx010nyxx1()nyx1(,)nnnnnnnyyyhfxyyhx16Euler法的收敛性0()lim()nhnyyx00,[,]nxxxnhxxb称初值问题(8.1.1)的数值解法是收敛的,如:其中:17例考察以下初值问题Euler法的收敛性0(0)(0)dyydxyy=0100;(1)(0)(1)(0,1,2)xnnnnnnyyeEuleryyhyhyyyyhyn该方程精确解为由法公式有:=得解:100000lim(1)lim[(1)]nhnxhhhhyhyye★188.2Runge-Kutta方法龙格-库塔(Runge-Kutta)方法的一般形式为:11111(,)(,)rnniiinniininijjjyykkhfxykhfxhyk1111()(),pnnnTyxyOh此类公式称为r级p阶R-K方法。使局部截断误差为:其中:i,i,ij为待定参数,适当选择参数:i,i,iji=1,2,...,rn=0,1,2,...19二级二阶Runge-Kutta方法适当选择参数:1,2,,,使局部截断误差为:11122121(,)(0,1,2,...)(,)nnnnnnyykkkhfxynkhfxhyk3111()()nnnTyxyOh这里仍假定yn=y(xn)(r=2)受改进的Euler方法的启发,可设:★201(,)(,)nnnnxykhfxyhf221(,)23(,)[()][[(,)]()nnnnxyxyxnnyxykhfhfkfOhhfhffxyfOh11122nnyykk有:1122322(,)(){()[]}()nnnnxyxyyyxhfhfffOh231(,)()(){()]}()2!nnnnxyxyhyxyxhffffOh二级Runge-Kutta方法由二元函数Taylor展式得:由一元函数Taylor展式得:★21二级二阶Runge-Kutta方法122211212与Taylor展式相比较得:由于有四个参数,只有三个方程,因此有一个自由参数,即解(计算格式)不唯一。★22展开Taylor公式到二阶微分21222211(,)4111222122232222(,)4[()1(2)]2()()(){[](2)]}2()nnnnxyxxxyyyxynnnxyxxxyyyxykhfhfkfhfhkfkfOhyyxkkyxhfhfhfffhfffffOh于是23213224(,()()[()2(2)]()6nnnnxyxxxyyyyxyxyhyxyxhffffhfffffffffOh)二级R-K公式的阶由R-K公式:对比Taylor展式:211222322242(,)(){[](2)]}()2nnnnxyxxxyyyxyyyxhfhfhfffhfffffOh2R-Kyxyffff由于项:无法消去,所以二级方法无法达到三阶。24Runge-Kutta方法的其他问题,1,2,3,41,5,6,7()2,8,92,10,11,rrrrprrrrr1RK、方法单步方法,因而可以自启动;2()-prrRK、设表示级方法能够达到的阶,则有以下结果:R-K因此,四阶方法一般较为常用。258.4线形多步法1,0当时称为显式格式;线性多步法一般形式可设为:10101011110...(...)rrnknkknkkkrrknkknkkknnrnrnnrnryyhfyhyyyyhfff:(,)(1,0,1,...,).nknknkffxykr其中.隐否称为式格式则(8.4.1)26基于Taylar展开式的方法111101()10()()()()()rrnnnnknkhnkkkrkkrknkTyxyyxyhfCyxhOh001rkkC1011rrkkkkCk10111011()()[]!!(1)!1[1(1)(1)]!kkrrkiiiirrkkkkiiiiiiCkkkikik2,3,jr1010(1)rrkkkkiiiiCiki271、四阶Adams显示格式11230,0,取可得001235559379124242424,,,,11235(5)61(5559379)24251()()720nnnnnnnnhyyffffThyxOh4Adams这是和它的余阶显式公式式估计。故: