您好,欢迎访问三七文档
()1()51115(2)15(2)11(2)11()11,(),2,,2()2,2()1.()16hnhnnnnhnhnnhnnhnnhyyxychhxxhychyxycyxyyxyn///以经典四阶龙格—库塔公式为例。从节点x出发,以为步长求一近似值将步长折半,即取为步长从跨两步到,求一近似值每跨一步的截断误差是因此有由上两式(2)(2)()11111()[].15hhhnnnnyxyyy//变步长的龙格—库塔方法11111RK(,)(,)(2,3,)(,)()pnniiinniininijjjnnnyyhcKKfxyKfxahyhbKipxyTayloryxxTaylor一般地,方法设近似公式为确定原则是使近似公式在处的展开式与在处的展开式的前面项尽可能多地重合。111112121(,)11()22(,)(,)nnnnnnnnnnyyhKEulerKfxyyyhKKEulerKfxyKfxhyhK公式改进公式公式7.4.6变步长的龙格-库塔法在微分方程的数值解中,选择适当的步长是非常重要的。单从每一步看,步长越小,截断误差就越小;但随着步长的缩小,在一定的求解区间内所要完成的步数就增加了。这样会引起计算量的增大,并且会引起舍入误差的大量积累与传播。因此微分方程数值解法也有选择步长的问题。以经典的四阶龙格-库塔法(7.20)为例。从节点xi出发,先以h为步长求出一个近似值,记为,由于局部截断误差为,故有)(1hiy)(5hO5)(11)(chyxyhii当h值不大时,式中的系数c可近似地看作为常数。然后将步长折半,即以为步长,从节点xi出发,跨两步到节点xi+1,再求得一个近似值,每跨一步的截断误差是,因此有2h)2(1hiy52hc5)2(1122)()(hcxyxyhii这样161)()()(11)2(11hiihiiyxyyxy)(151)()(1)2(1)2(11hihihiiyyyxy由此可得这表明以作为的近似值,其误差可用步长折半前后两次计算结果的偏差)2(1hiy)(1ixy)(1)2(1hihiyy来判断所选步长是否适当当要求的数值精度为ε时:(1)如果Δε,反复将步长折半进行计算,直至Δε为止,并取其最后一次步长的计算结果作为(2)如果Δε,反复将步长加倍,直到Δε为止,并以上一次步长的计算结果作为。这种通过步长加倍或折半来处理步长的方法称为变步长法。表面上看,为了选择步长,每一步都要反复判断Δ,增加了计算工作量,但在方程的解y(x)变化剧烈的情况下,总的计算工作量得到减少,结果还是合算的。1iy1iy其中i(i=1,…,m),i(i=2,…,m)和ij(i=2,…,m;j=1,…,i1)均为待定系数,确定这些系数的步骤与前面相似。§2Runge-KuttaMethod)...,(......),(),(),(]...[1122112321313312122122111mmmmmmimiiiiiimmiihKhKhKyhxfKhKhKyhxfKhKyhxfKyxfKKKKhyy高阶Runge—KuttaMethodGill公式:4阶经典龙格-库塔公式的一种改进1123461212221231222222423222222(,)(,)(,1)(,1)hiiiihhiihiiiiyyKKKKKfxyKfxyKKfxyhKhKKfxhyhKhK§2Runge-KuttaMethod最常用为四级4阶经典龙格-库塔法/*ClassicalRunge-KuttaMethod*/:),(),(),(),()22(34222312221432161hKyhxfKKyxfKKyxfKyxfKKKKKyyiihihihihiiihii§2Runge-KuttaMethod注:龙格-库塔法的主要运算在于计算Ki的值,即计算f的值。Butcher于1965年给出了计算量与可达到的最高精度阶数的关系:753可达到的最高精度642每步须算Ki的个数)(2hO)(3hO)(4hO)(5hO)(6hO)(4hO)(2nhO8n由于龙格-库塔法的导出基于泰勒展开,故精度主要受解函数的光滑性影响。对于光滑性不太好的解,最好采用低阶算法而将步长h取小。§2Runge-KuttaMethod变步长的Runge—KuttaMethod1(1)1ppnnRchyxQ:由局部截断误差可以看出,步长h越小,局部截断误差越小;但步长减小,在一定求解范围(区间)内要完成的步数就增加了,步数增加会引起计算量增大,导致舍入误差积累。因此要选取适当的步长。选择步长时要考虑两个问题:1.如何衡量和检验计算结果的精度?2.如何根据所获得的精度处理步长?HW:p.201#6-8
本文标题:变步长的龙格库塔法
链接地址:https://www.777doc.com/doc-5493905 .html