常微分方程数值解法(IV).ppt
绪论,在工程和科学计算中,所建立的各种常微分方程的初值或边值问题,除很少几类的特殊方程能给出解析解,绝大多数的方程是很难甚至不可能给出解析解的,其主要原因在于积分工具的局限性。因此,人们转向用数值方法去解常微分方程,并获得相当大的成功,讨论和研究微分方程的数值解法是有重要意义的。,所谓微分方程数值解法,就是研究利用计算机求解微分方程的近似解的数值方法及相关理论。微分方程数值解法是“信息与计算科学”专业的专业基础课程之一,与数值代数、数值逼近和计算几何统称三大核心课程。,第一部分 常微分方程数值解/*Numerical Methods for Ordinary Differential Equations*/,待求解的问题:一阶常微分方程的初值问题/*Initial-Value Problem*/:,解的存在唯一性(“常微分方程”理论):只要 f(x,y)在a,b R1 上连续,且关于 y 满足 Lipschitz 条件,即存在与 x,y 无关的常数 L 使对任意定义在 a,b 上的 y1(x)和 y2(x)都成立,则上述IVP存在唯一解。,解析解法:(常微分方程理论)只能求解极少一类常微分方程;实际中给定的问题不一定是解析表达式,而是函数表,无法用解析解法。,如何求解,步进式:根据已知的或已求出的节点上的函数值计算当前节点上的函数值,一步一步向前推进。因此只需建立由已知的或已求出的节点上的函数值求当前节点函数值的递推公式即可。,-Eulers Method,1 欧拉方法/*Eulers Method*/,1 Eulers Method,Taylor展开法,几何意义,亦称为欧拉折线法/*Eulers polygonal arc method*/,几何直观是帮助我们寻找解决一个问题的思路的好办法哦,说明,1 Eulers Method,截断误差:实际上,y(xn)yn,yn 也有误差,它对yn+1的误差也有影响,见下图。但这里不考虑此误差的影响,仅考虑方法或公式本身带来的误差,因此称为方法误差或截断误差。局部截断误差的分析:由于假设yn=y(xn),即yn准确,因此分析局部截断误差时将y(xn+1)和 yn+1都用点xn上的信息来表示,工具:Taylor展开。,欧拉法的局部截断误差:,Rn+1 的主项/*leading term*/,1 Eulers Method,欧拉法具有 1 阶精度。,在xn点用一阶向前差商近似一阶导数,Eulers method,1 Eulers Method,1 Eulers Method,欧拉公式的改进:,隐式欧拉法或后退欧拉法/*implicit Euler method or backward Euler method*/,隐式或后退欧拉公式,由于未知数 yn+1 同时出现在等式的两边,故称为隐式/*implicit*/欧拉公式,而前者称为显式/*explicit*/欧拉公式。隐式公式不能直接求解,一般需要用Euler显式公式得到初值,然后用Euler隐式公式迭代求解。因此隐式公式较显式公式计算复杂,但稳定性好(后面分析)。,收敛性,1 Eulers Method,见上图,显然,这种近似也有一定误差,如何估计这种误差y(xn+1)yn+1?方法同上,基于Taylor展开估计局部截断误差。但是注意,隐式公式中右边含有f(xn+1,yn+1),由于yn+1不准确,所以不能直接用y(xn+1)代替f(xn+1,yn+1),设已知曲线上一点 Pn(xn,yn),过该点作弦线,斜率为(xn+1,yn+1)点的方向场f(x,y)方向,若步长h充分小,可用弦线和垂线x=xn+1的交点近似曲线与垂线的交点。,几何意义,1 Eulers Method,隐式欧拉法的局部截断误差:,1 Eulers Method,1 Eulers Method,隐式欧拉法的局部截断误差:,即隐式欧拉公式具有 1 阶精度。,1 Eulers Method,比较尤拉显式公式和隐式公式及其局部截断误差,显式公式,隐式公式,1 Eulers Method,若将这两种方法进行算术平均,即可消除误差的主要部分/*leading term*/而获得更高的精度,称为梯形法,1 Eulers Method,梯形公式/*trapezoid formula*/,显、隐式两种算法的平均,注:的确有局部截断误差,即梯形公式具有2 阶精度,比欧拉方法有了进步。但注意到该公式是隐式公式,计算时不得不用到迭代法,其迭代收敛性与欧拉公式相似。,梯形法的迭代计算和收敛性,收敛性,1 Eulers Method,梯形法的简化计算 迭代计算量大,且难以预测迭代次数。为了控制计算量,通常只迭代一次就转入下一点的计算。用显式公式作预测,梯形公式作校正,得到如下预测校正系统,也称为改进尤拉法:,改进欧拉法/*modified Eulers method*/,1 Eulers Method,注:此法亦称为预测-校正法/*predictor-corrector method*/。可以证明该算法具有 2 阶精度,同时可以看到它是个单步递推格式,比隐式公式的迭代求解过程简单。后面将看到,它的稳定性高于显式欧拉法。,1 Eulers Method,其它形式,1 Eulers Method,令x=x1,得,Another point of view,对右端积分采用左矩形、右矩形、梯形积分公式,即可得尤拉显式、隐式、梯形公式,1 Eulers Method,中点欧拉公式/*midpoint formula*/,假设,则可以导出即中点公式也具有 2 阶精度,且是显式的。,需要2个初值 y0和 y1来启动递推过程,这样的算法称为双步法/*double-step method*/,而前面的三种算法都是单步法/*single-step method*/。,1 Eulers Method,令x=x2,得,Another point of view,对右端积分采用中矩形公式即得中点公式,1 Eulers Method,预测-校正-改进系统中点法具有二阶精度,且是显式的,与梯形公式精度相匹配,用中点公式作预测,梯形公式作校正,得到如下预测校正系统:,校正误差约为预测误差的1/4,1 Eulers Method,预测误差和校正误差的事后误差估计式,利用上两式可以估计预测值和校正值与准确值的误差,可以期望,利用这两个误差分别作预测值和校正值的补偿,有可能提高精度。设pn,cn分别为第n步的预测值和校正值,即,此时cn+1未知,故用pn-cn代替,1 Eulers Method,预测-校正-改进公式,注:利用该算法计算yn+1时,需要,1 Eulers Method,summary,两个预测-校正系统,尤拉两步法和梯形公式构成的预测-校正-改进系统,尤拉公式和梯形公式构成的预测-校正系统,例,HW:p.201#1-5证明中点法和梯形公式的精度为2阶,2 龙格-库塔法/*Runge-Kutta Method*/,建立高精度的单步递推格式:在改进尤拉法和尤拉两步法预测-校正系统中,预测公式都是单步法,如果预测误差很小,则通过校正后得到的近似值误差会更小,因此需要研究高精度的单步法.,1.Taylor级数法,IVP:,设其解为y=y(x),由Taylor展开,有,(1),2 Runge-Kutta Method,(2),2 Runge-Kutta Method,要使公式具有p阶精度,则在(1)式中截取前p+1项,用(2)式计算各阶导数,即得下面Taylor公式:,局部截断误差,(3),2 Runge-Kutta Method,2.Taylor公式(3)表面上看形式简单,但具体构造时往往很困难,因为按(2)式求导,这一过程可能很复杂。因此通常不直接用Taylor公式,而借鉴其思想提出其它公式。,1.由此看出,一种方法具有p阶精度公式对不超过p次的多项式准确成立(局部截断误差为0)。这一等价条件也可以用来判断一种方法的精度。,2 Runge-Kutta Method,单步递推法的基本思想是从(xn,yn)点出发,以某一斜率沿直线达到(xn+1,yn+1)点。欧拉法及其各种变形所能达到的最高精度为2阶。,2.RungeKutta Method,由微分中值定理,有,k*称为区间xn,xn+1上的平均斜率,只要知道平均斜率,就可计算y(xn+1).因此只要对平均斜率提供一种近似算法,则由(4)式可导出一种相应的求解公式。,(4),2 Runge-Kutta Method,例,2 Runge-Kutta Method,由此看出,改进的尤拉公式用xn与xn+1两个节点的斜率的算术平均作为平均斜率,xn+1点的斜率通过已知信息yn来预测。,考察改进的欧拉法,可以将其改写为:,斜率一定取K1,K2 的平均值吗?,步长一定是h 吗?即第二个节点一定是xn+1吗?,2 Runge-Kutta Method,2 Runge-Kutta Method,首先希望能确定系数 1、2、p,使得到的算法格式有2阶精度,即在 的前提假设下,使得,Step 1:将 K2 在(xi,yi)点作 Taylor 展开,Step 2:将 K2 代入第1式,得到,2阶RungeKutta Method,2 Runge-Kutta Method,Step 3:将 yi+1 与 y(xi+1)在 xi 点的泰勒展开作比较,要求,则必须有:,这里有 个未知数,个方程。,3,2,存在无穷多个解。所有满足上式的格式统称为2阶龙格-库塔格式。,注意到,就是改进的欧拉法;,p=1/2,1=0,2=1,变形尤拉公式。,Q:为获得更高的精度,应该如何进一步推广?改进的Euler 公式推广为二阶Runge-Kutta公式带来这样的启示:若在xn,xn+1上多预测几个点的斜率值,然后将它们的算术平均作为平均斜率,则有可能构造出具有更高精度的计算公式。-Runge-Kutta方法的基本思想。,注:二阶Runge-Kutta公式用多算一次函数值f 的办法避开了二阶Taylor级数法所要计算的f 的导数。在这种意义上,可以说Runge-Kutta方法实质上是Taylor级数法的变形。,2 Runge-Kutta Method,其中i(i=1,m),i(i=2,m)和 ij(i=2,m;j=1,i1)均为待定系数,确定这些系数的步骤与前面相似。,2 Runge-Kutta Method,高阶RungeKutta Method,Gill公式:4阶经典龙格-库塔公式的一种改进,2 Runge-Kutta Method,最常用为四级4阶经典龙格-库塔法/*Classical Runge-Kutta Method*/:,2 Runge-Kutta Method,由于龙格-库塔法的导出基于泰勒展开,故精度主要受解函数的光滑性影响。对于光滑性不太好的解,最好采用低阶算法而将步长h 取小。,2 Runge-Kutta Method,变步长的RungeKutta Method,Q:由局部截断误差可以看出,步长 h 越小,局部截断误差越小;但步长减小,在一定求解范围(区间)内要完成的步数就增加了,步数增加会引起计算量增大,导致舍入误差积累。因此要选取适当的步长。,选择步长时要考虑两个问题:1.如何衡量和检验计算结果的精度?2.如何根据所获得的精度处理步长?,HW:p.201#6-8,3 单步法的收敛性与稳定性/*Convergency and Stability*/,前面介绍了两大类微分方程数值解法:一类是用差商近似导数得到的尤拉系列公式,另一类是基于平均斜率概念的RungeKutta公式。基本思想都是通过某种离散化手续,将微分方程转化为差分方程(代数方程)来求解。Q1.这种转化是否合理?要看差分问题的解yn当h0时是否收敛到微分方程的解y(xn),即是否成立 yn y(xn),h0.-收敛性问题 Q2.实际计算时,由于舍入误差的影响,差分方程的解本身也有误差,这种误差在计算过程中会不会扩大-稳定性问题,3 Convergency and Stability,收敛性/*Convergency*/,例:就初值问题 考察欧拉显式格式的收敛性。,解:该问题的精确解为,欧拉公式为,对任意固定的 x=xi=i h,有,3 Convergency and Stability,显式单步法的收敛性,(1),3 Convergency and Stability,而整体截断误差为,(2)-(1),得,3 Convergency and Stability,从而,3 Convergency and Stability,3 Convergency and Stability,Euler法的收敛性:(x,y)=f(x,y),故当f(x,y)满足Lipschitz条件时,尤拉法收敛;,3 Convergency and Stability,3 Convergency and Stability,稳定性/*Stability*/,例:考察初值问题 在区间0,0.5上的解。分别用欧拉显、隐式格式和改进的欧拉格式计算数值解。,1.00002.0000 4.00008.0000 1.6000101 3.2000101,1.00002.5000101 6.25001021.56251023.90631039.7656104,1.00002.50006.25001.56261013.90631019.7656101,1.00004.97871022.47881031.23411046.14421063.0590107,What is wrong?!,3 Convergency and Stability,3 Convergency and Stability,一般分析某算法的稳定性时,为简单起见,只考虑模型方程或试验方程/*test equation*/,常数,可以是复数,3 Convergency and Stability,3 Convergency and Stability,3 Convergency and Stability,3 Convergency and Stability,例:隐式龙格-库塔法,而显式 1 4 阶方法的绝对稳定区域为,其中2阶方法 的绝对稳定区域为,无条件稳定,注:一般来说,隐式欧拉法的绝对稳定性比同阶的显式法的好。,小结,尤拉两步公式与尤拉单步公式相比,使用两个节点上的已知信息将精度提高一阶。可以设想,计算y(xn+1)时,充分利用前面已经求出的节点上的 y 及 y 值的线性组合来近似y(xn+1),精度会大大提高。-线性多步法的基本思想。构造线性多步法有多种途径,这里介绍两种:基于数值积分的构造方法;基于Taylor展开的构造方法。,4 线性多步法/*Multistep Method*/,线性多步法的通式可写为:,当 10 时,为隐式公式;1=0 则为显式公式。,基于数值积分的构造法,一般地,利用插值原理所建立的一系列数值积分方法也可以导出解微分方程的一系列计算公式。运用插值方法的关键在于选取合适的插值节点。假设已构造出f(x,y(x)的插值多项式Pr(x),则,4 Multistep Method,亚当姆斯显式公式/*Adams explicit formulae*/,利用r+1 个节点上的被积函数值构造 r 阶牛顿后插多项式,有,Newton插值余项,/*Adams 显式公式*/,外推技术/*extrapolation*/,table 5-6,p.181,实际计算时,将差分展开,局部截断误差为:,注:Br 与yn+1 计算公式中 fn,fnk 各项的系数 均可查表得到。见下表。,例:,Adams显式公式用 作为插值节点,在求积区间xn,xn+1上用插值函数Nr(x)近似f(x,y(x),而xn+1不在插值节点内,因此是一个外推的过程。虽然公式是显式的,便于计算,但效果并不理想,比如稳定性较差等。因此改用通过r+1个节点的插值多项式Nr(x)近似f(x,y(x),由于xn+1是其中一个插值点,因此是内插多项式,但导出的公式是隐式的。,4 Multistep Method,亚当姆斯隐式公式/*Adams implicit formulae*/,利用r+1 个节点上的被积函数值 fn+1,fn,fnr+1 构造r 阶牛顿前插多项式。与显式多项式完全类似地可得到一系列隐式公式。,局部截断误差为:,小于Br,注:与yn+1 计算公式中 fn+1,fn+1k 各项的系数 均可查表得到。见下表。,较同阶显式稳定,例:,4 Multistep Method,亚当姆斯预测-校正系统/*Adams predictor-corrector system*/,Step 1:用Runge-Kutta 法计算前 k 个初值;,Step 2:用Adams 显式计算预测值;,Step 3:用同阶Adams 隐式计算校正值。,注意:三步所用公式的精度必须相同。通常用经典Runge-Kutta 法配合4阶Adams 公式。,4阶Adams隐式公式的截断误差为,4阶Adams显式公式的截断误差为,Predicted value pn+1,Corrected value cn+1,Modified value mn+1,预测值与校正值的事后误差估计,Adams显隐预测-校正-改进系统,4 Multistep Method,Adams 4th-Order predictor-corrector AlgorithmTo approximate the the solution of the initial-value problemAt(N+1)equally spaced numbers in the interval a,b.Input:endpoints a,b;integer N;initial value y0.Output:approximation y at the(N+1)values of x.Step 1 Set h=(b a)/N;x0=a;y0=y0;Output(x0,y0);Step 2 For i=1,2,3 Compute yi using classical Runge-Kutta method;Output(xi,yi);Step 3 For i=4,N do steps 4-10Step 5;/*predict*/Step 6;/*modify*/Step 7;/*correct*/Step 8;/*modify the final value*/Step 9 Output(xi+1,yi+1);Step 10 For j=0,1,2,3 Set xi=xi+1;yi=yi+1;/*Prepare for next iteration*/Step 11 STOP.,应为(ci+1 pi+1),但因ci+1 尚未算出,只好用(ci pi)取代之。,4 Multistep Method,基于泰勒展开的构造法,将通式中的右端各项 yn1,ynk;fn+1,fn1,fnk(yn+1,ynk)分别在 xn 点作泰勒展开,与精确解 y(xn+1)在 xn 点的泰勒展开作比较。通过令同类项系数相等,得到足以确定待定系数0,r;1,0,r 的等式,则可构造出线性多步法的公式。,当 10 时,为隐式公式;1=0 则为显式公式。,局部截断误差为,4 Multistep Method,解:,/*y(xn)=yn*/,个未知数个方程,7,5,4 Multistep Method,令 1=2=0,以 yn+1 取代 yn3,并取 1=2=0,以 yn3 取代 yn3,则可导出另一组4 阶显式算法,其中包含了著名的米尔尼/*Milne*/公式(4步4阶显式公式),其局部截断误差为,取 1=1,2=0得到辛甫生/*Simpson*/公式与Milne 公式匹配使用,构成预测-校正系统,辛甫生/*Simpson*/公式(2步4阶),在区间xn1,xn+1上积分,并用Simpson数值积分公式来近似积分项,亦可得此Simpson公式。,其局部截断误差为,Milne-Simpson预测校正系统的局部截断误差(14/450.31,-1/90-0.01)都比同价的Adams公式(251/720 0.34,-19/720-0.02)小,计算量又比4阶Runge-Kutta公式少。缺点是,校正公式是弱稳定的,即对某些问题来说,其稳定性不好。Hamming对Simpson公式的稳定性作了改进,得到Hamming公式。,4 Multistep Method,Milne-Simpson 系统的缺点是稳定性差,为改善稳定性,考虑另一种隐式校正公式:,要求公式具有4 阶精度。通过泰勒展开,可得到 个等式,从中解出 个未知数,则有 个自由度。,5,6,1,取 1=1 得Simpson 公式,哈明/*Hamming*/用1 的不同数值进行试验,发现当1=0 时,公式的稳定性较好,即:,其局部截断误差为,注:哈明公式不能用数值积分方法推导出来。,Milne-Hamming预测-校正-改进系统,5 微分方程组与高阶方程/*Systems of Differential Equations and Higher-Order Equations*/,一阶微分方程组,IVP的一般形式为:,前述所有公式皆适用于向量形式。,高阶微分方程,5 Systems of DEs and Higher-Order Equations,化作一阶微分方程组求解。,引入新变量,初值条件为:,6 边值问题的数值解/*Boundary-Value Problems*/,2 阶常微分方程边值问题,打靶法/*shooting method*/,先猜测一个初始斜率 y(a)=s,通过解初值问题,找出s*使得(s*)=,即把问题转化为求方程(s)=0 的根。,每计算一个(s)都必须解一个ODE.,有限差分法/*finite difference method*/,6 Boundary-Value Problems,将求解区间a,b 等分为N 份,取节点 xi=a+ih(i=0,N),在每一个节点处将 y 和 y 离散化。,