您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 会议纪要 > 7_1 常微分方程数值解法汇总
第七章常微分方程数值解/*NumericalMethodsforOrdinaryDifferentialEquations*/考虑一阶常微分方程的初值问题/*Initial-ValueProblem*/:0)(],[),(yaybaxyxfdxdy只要f(x,y)在[a,b]R1上连续,且关于y满足Lipschitz条件,即存在与x,y无关的常数L使对任意定义在[a,b]上的y1(x)和y2(x)都成立,则上述IVP存在唯一解。|||),(),(|2121yyLyxfyxf要计算出解函数y(x)在一系列节点a=x0x1…xn=b处的近似值),...,1()(nixyyii节点间距为步长,通常采用等距节点,即取hi=h(常数)。)1,...,0(1nixxhiii§1欧拉方法/*Euler’sMethod*/欧拉公式:x0x1向前差商近似导数hxyxyxy)()()(010),()()()(000001yxfhyxyhxyxy1y记为)1,...,0(),(1niyxfhyyiiii定义在假设yi=y(xi),即第i步计算是精确的前提下,考虑的截断误差Ri=y(xi+1)yi+1称为局部截断误差/*localtruncationerror*/。定义若某算法的局部截断误差为O(hp+1),则称该算法有p阶精度。欧拉法的局部截断误差:)],([)]()()()([)(32112iiiihiiiiiyxhfyhOxyxyhxyyxyR)()(322hOxyih欧拉法具有1阶精度。Ri的主项/*leadingterm*/亦称为欧拉折线法/*Euler’spolygonalarcmethod*/§1Euler’sMethod欧拉公式的改进:隐式欧拉法/*implicitEulermethod*/向后差商近似导数hxyxyxy)()()(011x0x1))(,()(1101xyxfhyxy)1,...,0(),(111niyxfhyyiiii由于未知数yi+1同时出现在等式的两边,不能直接得到,故称为隐式/*implicit*/欧拉公式,而前者称为显式/*explicit*/欧拉公式。一般先用显式计算一个初值,再迭代求解。隐式欧拉法的局部截断误差:11)(iiiyxyR)()(322hOxyih即隐式欧拉公式具有1阶精度。§1Euler’sMethod梯形公式/*trapezoidformula*/—显、隐式两种算法的平均)1,...,0()],(),([2111niyxfyxfhyyiiiiii注:的确有局部截断误差,即梯形公式具有2阶精度,比欧拉方法有了进步。但注意到该公式是隐式公式,计算时不得不用到迭代法,其迭代收敛性与欧拉公式相似。)()(311hOyxyRiii中点欧拉公式/*midpointformula*/中心差商近似导数hxyxyxy2)()()(021x0x2x1))(,(2)()(1102xyxfhxyxy1,...,1),(211niyxfhyyiiii假设,则可以导出即中点公式具有2阶精度。)(),(11iiiixyyxyy)()(311hOyxyRiii需要2个初值y0和y1来启动递推过程,这样的算法称为双步法/*double-stepmethod*/,而前面的三种算法都是单步法/*single-stepmethod*/。单步法和多步法单步法:在计算yi+1时只利用yi多步法:在计算yi+1时不仅利用yi,还要利用yi−1,yi−2,…,k步法:在计算yi+1时要用到yi,yi−1,…,yi−k+1显式计算公式可写成:yk+1=yk+hΦf(xk,yk;h)隐式格式:yk+1=yk+hΦf(xk,yk,yk+1;h)它每步求解yk+1需要解一个隐式方程方法§1Euler’sMethod显式欧拉隐式欧拉梯形公式中点公式简单精度低稳定性最好精度低,计算量大精度提高计算量大精度提高,显式多一个初值,可能影响精度Can’tyougivemeaformulawithalltheadvantagesyetwithoutanyofthedisadvantages?Doyouthinkitpossible?Well,callmegreedy…OK,let’smakeitpossible.改进欧拉法/*modifiedEuler’smethod*/Step1:先用显式欧拉公式作预测,算出),(1iiiiyxfhyyStep2:再将代入隐式梯形公式的右边作校正,得到1iy)],(),([2111iiiiiiyxfyxfhyy注:此法亦称为预测-校正法/*predictor-correctormethod*/。可以证明该算法具有2阶精度,同时可以看到它是个单步递推格式,比隐式公式的迭代求解过程简单。后面将看到,它的稳定性高于显式欧拉法。)1,...,0(),(,),(211niyxfhyxfyxfhyyiiiiiiii§1Euler’sMethod§2龙格-库塔法/*Runge-KuttaMethod*/建立高精度的单步递推格式。单步递推法的基本思想是从(xi,yi)点出发,以某一斜率沿直线达到(xi+1,yi+1)点。欧拉法及其各种变形所能达到的最高精度为2阶。9Runge-Kutta方法的推导思想0)(),(yaybxayxfy对于常微分方程的初值问题的解y=y(x),在区间[xi,xi+1]上使用微分中值定理,有)()()(1iiiyhxyxy即))(()()(11iiiiixxyxyxy),(1iiixx其中2020/2/610上的平均斜率在区间可以认为是],[)(1iixxxyyKKxyxyii)()(1引入记号)(,)(iiiyhfyhKKxxxyii上平均斜率的近似值间在区出只要使用适当的方法求],[)(1就可得到相应的Runge-Kutta方法ix1ixxy)(xyyKyyii1K2020/2/611ix1ixxy)(xyy如下图Kxxxyxxyiii上的平均斜率在处的斜率作为在如果以],[)()(1即则上式化为),(1iiiiyxhfyy)(ixyhK)](,[iixyxhf),(iiyxhf即Euler方法Euler方法也称为一阶Runge-Kutta方法KK2020/2/6建立高精度的单步递推格式。考察改进的欧拉法,可以将其改写为:),(),(2121121211hKyhxfKyxfKKKhyyiiiiii斜率一定取K1K2的平均值吗?步长一定是一个h吗?§2Runge-KuttaMethod首先希望能确定系数1、2、p,使得到的算法格式有2阶精度,即在的前提假设下,使得)(iixyy)()(311hOyxyRiiiStep1:将K2在(xi,yi)点作Taylor展开)(),(),(),(),(2112hOyxfphKyxphfyxfphKyphxfKiiyiixiiii)()()(2hOxyphxyii将改进欧拉法推广为:),(),(][12122111phKyphxfKyxfKKKhyyiiiiii),(),(),(),(),(),()(yxfyxfyxfdxdyyxfyxfyxfdxdxyyxyxStep2:将K2代入第1式,得到)()()()()]()()([)(322212211hOxyphxyhyhOxyphxyxyhyyiiiiiiii§2Runge-KuttaMethodStep3:将yi+1与y(xi+1)在xi点的泰勒展开作比较)()()()(322211hOxyphxyhyyiiii)()(2)()()(321hOxyhxyhxyxyiiii要求,则必须有:)()(311hOyxyRiii21,1221p这里有个未知数,个方程。32存在无穷多个解。所有满足上式的格式统称为2阶龙格-库塔格式。21,121p注意到,就是改进的欧拉法。Q:为获得更高的精度,应该如何进一步推广?其中i(i=1,…,m),i(i=2,…,m)和ij(i=2,…,m;j=1,…,i1)均为待定系数,确定这些系数的步骤与前面相似。§2Runge-KuttaMethod)...,(......),(),(),(]...[1122112321313312122122111mmmmmmimiiiiiimmiihKhKhKyhxfKhKhKyhxfKhKyhxfKyxfKKKKhyy最常用为四级4阶经典龙格-库塔法/*ClassicalRunge-KuttaMethod*/:),(),(),(),()22(34222312221432161hKyhxfKKyxfKKyxfKyxfKKKKKyyiihihihihiiihii§2Runge-KuttaMethod注:龙格-库塔法的主要运算在于计算Ki的值,即计算f的值。Butcher于1965年给出了计算量与可达到的最高精度阶数的关系:753可达到的最高精度642每步须算Ki的个数)(2hO)(3hO)(4hO)(5hO)(6hO)(4hO)(2nhO8n由于龙格-库塔法的导出基于泰勒展开,故精度主要受解函数的光滑性影响。对于光滑性不太好的解,最好采用低阶算法而将步长h取小。§3收敛性与稳定性/*ConvergencyandStability*/收敛性/*Convergency*/定义若某算法对于任意固定的x=xi=x0+ih,当h0(同时i)时有yiy(xi),则称该算法是收敛的。例:就初值问题考察欧拉显式格式的收敛性。0)0(yyyy解:该问题的精确解为xeyxy0)(欧拉公式为iiiiyhyhyy)1(10)1(yhyii对任意固定的x=xi=ih,有iixhhxihyhyy])1[()1(/10/0ehhh/10)1(lim)(0ixxyeyi§3ConvergencyandStability稳定性/*Stability*/例:考察初值问题在区间[0,0.5]上的解。分别用欧拉显、隐式格式和改进的欧拉格式计算数值解。1)0()(30)(yxyxy0.00.10.20.30.40.5精确解改进欧拉法欧拉隐式欧拉显式节点xixey301.00002.00004.00008.00001.60001013.20001011.00002.50001016.25001021.56251023.90631039.76561041.00002.50006.25001.56261013.90631019.76561011.00004.97871022.47881031.23411046.14421063.0590107Whatiswrong??!§3ConvergencyandStability定义若某算法在计算过程中任一步产生的误差在以后的计算中都逐步衰减,则称该算法是绝对稳定的/*absolutelystable*/。一般分析时为简单起见,只考虑试验方程/*testequation*/yy常数,可以是复数当步长取为h时,将某算法应用于上式,并假设只在初值产生误差,则若此误差以后逐步衰减,就称该
本文标题:7_1 常微分方程数值解法汇总
链接地址:https://www.777doc.com/doc-3521894 .html