120第6章常微分方程初值问题数值解法6.1问题的描述和基本概念1、常微分方程初值问题一般形式0(,)()yfxyyay式中(,)fxy已知,0()yay称为初值条件.初值问题的数值方法和数值解求函数()yyx在若干离散点kx上的近似值(0,1,)kyk的方法称为初值问题的数值方法,而称(0,1,)kyk为初值问题的数值解.1212.建立数值解法的思想与方法用离散化方法将初值问题化为差分方程,然后再求解.设节点为011nnaxxxx距离1kkkhxx称为步长.求数值解一般是从0y开使逐次顺序求出12,,yy.初值问题的解法有单步法和多步法两种:单步法:计算1ky时只用到ky一个值;多步法:计算1ky时要用1,,,kkklyyy多个值。数值解法还有显格式和隐格式之分。122微分方程离散化方法主要有数值微分法,数值积分法和Taylor展开法1)数值微分法由'()(,())kkkyxfxyx,用数值微分的2点前差公式代替'()kyx,得近似离散化方程11()()'()(,())kkkkkkkyxyxyxfxyxxx记1kkhxx,做()kkyyx,“”,得差分方程1(,)kkkkyyfxyh即1(,)kkkkyyhfxy(Euler公式)由初值条件0()yya及Euler公式可求出数值解12,,,,nyyy.Euler公式是显式单步法.1232)数值积分法在1[,]kkxx上对'(,)yfxy两边取定积分,得111()()'(,())kkkkxxkkxxyxyxydxfxyxdx右端积分用左矩形公式(数值积分公式)得1()()(,())kkkkyxyxhfxyx于是得到求初值问题的Euler方法1(,)kkkkyyhfxy124右端积分用右矩形公式(数值积分公式)得111()()(,())kkkkyxyxhfxyx于是得到求初值问题的后退Euler方法1+1+1(,)kkkkyyhfxy后退Euler方法是隐式的.125右端积分用梯形公式(数值积分公式)得近似离散化方程:111()()[(,())(,())]2kkkkkkhyxyxfxyxfxyx于是得到求初值问题的梯形方法111[(,)(,)]2kkkkkkhyyfxyfxy该公式是隐式单步法.1263)Taylor展开法因为初值问题中函数(,)fxy是已知函数,由(,)yfxy,可以计算''y,'''y,…,于是有函数()yyx在kx处的Taylor展式212()()'()''()2!()(,())[(,())]2!kkkkkkkkxxhyxyxhyxyxhdyxhfxyxfxyxdx取上式右端前若干项,得近似离散化方程.例如取前两项有1()()(,())kkkkyxyxhfxyx于是又得到Euler公式:1(,)kkkkyyhfxy.1273.数值解法的误差、阶与绝对稳定性单步法的一般形式可以表示成11(,,,)kkkkkyyhxyyh显式:1(,,)kkkkyyhxyh其中(,,)xyh称为增量函数.128显式单步法的一些概念定义1称111()kkkeyxy为单步法在节点1kx的整体截断误差,而称11()()(,(),)kkkkkTyxyxhxyxh为在1kx点的局部截断误差。()kyx表示解()yx在kx的值,是准确值,没有误差;ky表示由数值解公式得出()kyx的近似值,是数值解,有截断误差.129局部截断误差1kT的理解假设在计算()kyx时没有误差(()kkyyx)下,计算出的1ky(1()(,(),)kkkkyyxhxyxh)与1()kyx的误差111kkkTyxy(计算一步的误差).定义2如果数值解法的局部截断误差为11()PkTOh则称该方法具有p阶精度或该方法是p阶方法.局部截断误差的主项130如果某方法是p阶方法,11()PkTOh按h可展为1121()(,())()PPPkkkTOhgxyxhOh则称1(,())Pkkgxyxh为局部截断误差的主项.对Euler方法1(,)kkkkyyhfxy,有1()()(,())kkkkkTyxhyxhfxyx将()kyxh在kx点展开,有2()()'()''()2!kkkkhyxhyxhyxyx2()(,())''()2!kkkkhyxhfxyxyx故有231()().2kkyxThOhEuler方法是一阶方法.例1试求梯形方法的阶和局部截断误差主项.解该单步公式的局部截断误差是131111()()((,())(,()))2kkkkkkkhTyxhyxfxyxfxyx1()()(()())2kkkkhyxhyxyxyx23()()()(()()23!2kkkkkhhhyxhyxyxyxyx24()())()2kkhyxhyxOh34()().12khyxOh故局部截断误差主项是3()12khyx,方法是二阶的.定义3设某种数值方法在ky上大小为的扰动,于以后各()nynk上产生的偏差均不超过,则称该132数值方法是稳定的。通常用试验方程'yy(为复数)来讨论求解数值方法绝对稳定性.Euler方法稳定性将Euler公式用于试验方程'yy,得到1(1)kkkkyyhyhy设计算ky时有误差,k则有11(1)()kkkkyhy得1(1)kkh要想1kk,只须11h,因此Euler方法在11h时是绝对稳定的,其绝对稳定域为复平面h上以(-1,0)为中心的单位圆盘.绝对稳定区间为20.h6.2Runge-Kutta方法13311111,,(2,3,,)mkkiiikkrrkrkrjjjyyhcKKfxyKfxahyhbKrm称为m级R-K方法.增量函数是()1,,,,miiixyhcKxyh构造过程134以2m来说明Runge-Kutta方法的构造方法和过程,对一般的Runge-Kutta方法可类似处理.2m的Runge-Kutta公式为11122kkyyhcKcK式中1,kkKfxy,22211,kkKfxahyhbK.由,yfxy,可得(),(),(),()xyyxfxyxfxyxfxyx在kx处做Taylor展开,有2322!(,())(,())2!kkkkkkkxkkyxyxhyxyxhhOhhyxhfxyxfxyx3(,())(,())ykkkkfxyxfxyxOh对,,kkxyxh在(,())kkxyx做二元Taylor展开,有12,,(,())(,())kkkkkkxyxhcfxyxcfxyx21(,())(,())ykkkkhbfxyxfxyx22(,())()xkkahfxyxOh12()(,())kkccfxyx221(,())(,())ykkkkcbfxyxfxyx22(,())()xkkafxyxhOh由1,,kkkkkTyxhyxhxyxh,有1351122211(,())()(,())2kkkxkkTccfxyxhcafxyx232211()(,())(,())()2ykkkkcbfxyxfxyxhOh选1222221111,0,022cccacb有局部截断误差3TOh,这样可得到二阶Runge-Kutta公式.取20ct,则式(6.13)的解为11ct,22112abt取不同的t可得出不同的二阶Runge-Kutta公式.如取12t时,得到改进的Euler公式1,,,2kkkkkkkkhyyfxyfxhyhfxy1t时,得到中点公式1(,(,)).22kkkkkkhhyyhfxyfxy136经典Runge-Kutta公式112341213243226,,22,22,kkkkkkkkkkhyyKKKKKfxyhhKfxyKhhKfxyKKfxhyhK四阶方法.137例1设初值问题为100yyy00.4x分别用Euler方法(0.025h),改进Euler方法(0.05h)和经典Runge-Kutta方法(0.1h)计算。解Euler方法计算格式(0.025h)为10.0251kkkyyy改进的Euler方法计算格式(0.05h)为1121210.02510.051kkkkyyKKKyKyK138经典Runge-Kutta方法计算格式(0.1h)为1123412132431(22)6010.0510.0510.11kkkkkkyyKKKKKyKyKKyKKyK它们的初值00y,计算结果及准确解列于下表kxEuler方法改进Euler方法经典R-K法)(kxy000000.10.0963120.0951230.095162500.095162580.20.1833480.1811930.181269100.181269250.30.2620010.2590850.259181580.259181780.40.3330790.3295630.329679710.32967995139例2给定初值问题0(,)()yfxyaxbyay1)分析求解公式122[(,)3(,(,))]433mmmmmmmmhyyfxyfxhyhfxy的局部截断误差,指出它是几阶公式;2)证明用上面求解公式计算初值问题'01(0)1yyxy的数值解1nmmy成立极限2011lim6nhyyhe本题中的节点是等距节点,h为步长,n为由节点分割区间[a,b]的份数.140解由题意有,,0,1,,mbahxamhmnn1)局部截断误差1122()()[(,())3(,()(,()))]433mmmmmmmmmhTyxyxfxyxfxhyxhfxyx1322()()()(,()())4433mmmmmmhyxyxyxhfxhyxhyx将1mmyxyxh在mx点做Taylor展开到3h项,将22(,()())33mmmfxhyxhyx在,mmxyx点做二元Taylor展开到2h项,则有3431,()()6mmymmhTyxfxyxOhOh得所用公式是2阶的.2)显然所给初值问题的准确解为xyxe。由给出的数值解计算公式有2111111222021[3()]1432111111222nnnnnnnnhhyyyyhyhhyhhyhhhh故1411122200111limlim12hnhhyyehhhh211ln112201limhhhheeh231116201limhOhheeh