龙格库塔法
§9-3
一、高阶泰勒法
假设初值问题
龙格—库塔法 龙格 库塔法
dy = f (t , y ) dt y (a) = α 的解y (t)及f (t , y )足够光滑.
将y (ti +1 )在ti处作n阶泰勒展开, 得
a≤t ≤b
(1)
y′′(ti ) 2 y ( n ) (ti ) n y ( n +1) (ξ i ) n +1 y (ti +1 ) = y (ti ) + y′(ti )h + h +L+ h + h n! 2! (n + 1)! 其中, ti < ξ i < ti +1.
2
i
i
1
3
i
i
2
4
i
i
3
i +1
i
6123 Nhomakorabea4
作业 教材P198 习题3
(2)
(3)
首先将y (ti +1 )在ti处展成幂级数 h2 y (ti +1 ) = y (ti ) + hy′(ti ) + y′′(ti ) + O(h 3 ) 2 将 y′(t ) = f (t , y (t )) y′′(t ) = f t′(t , y (t )) + f y (t , y (t )) f (t , y (t )) 代入上式, 得 h2 y (ti +1 ) = y (ti ) + hf + ( f t + ff y ) + O(h 3 ) (3) 2 其中f , f t , f y′分别表示相应函数在点(ti , y (ti ))处的函数值.
局部截断误差为O (h 3 ).
三、三、四阶龙格—库塔法 四阶龙格 库塔法 三阶龙格—库塔法
y0 = α
k1 = f (ti , yi )
h h k2 = f (ti + , yi + k1 ) 2 2 k3 = f (ti + h, yi + h(2k2 k1 )) h yi +1 = yi + (k1 + 4k2 + k3 ) 6
(8)
(9)
1 如果取c1 = 0, c2 = 1, β = , 递推公式为 2 y0 = α k = f (t , y ) i i 1 1 1 k 2 = f (ti + h, yi + hk1 ) 2 2 yi +1 = yi + hk 2 )
(10)
公式(8)、(9)、(10)三式是三种常见的二阶龙格—库塔公式
由式(3), 得 yi +1 = yi + h[c1 f (ti , yi ) + c2 f (ti + βh, yi + βhf (ti , yi ))]
利用二元函数的泰勒展开式,将函数f (ti + βh, yi + βhk1 )在 点(ti , yi )处展开成 f (ti + βh, yi + βhk1 ) = f (ti , yi ) + βhf (ti , yi ) + βhf (ti , yi ) f y (ti , yi ) + O( h 2 ) 代入上式, 得 yi +1 = yi + h(c1 f + c2 f ) + c2 βh( f t + ff y ) + O(h 2 )
再将y′(ti ) = f (ti , y (ti )), 得 f ′(ti , y (ti )) 2 y (ti +1 ) = y (ti ) + f (ti , y (ti ))h + h +L 2! f ( n 1) (ti , y (ti )) n f ( n ) (ti , y (ti )) n +1 + h + h (n + 1)! n! 当h充分小时 y0 = α f ′(ti , yi ) 2 f ( n 1) (ti , yi ) n h +L+ h yi +1 = yi + f (ti , yi )h + 2! n!
在局部截断误差的前提假设yi = y (ti )下, 得 1 y (ti +1 ) yi +1 = h(c1 + c2 1) f + h 2 ( c2 β )( f t + ff y ) + O(h 3 ) 2 要使局部截断误差y (ti +1 ) yi +1 = O(h 3 ),当且仅当 1 c1 + c2 1 = 0, c2 β = 0 2 即常数c1 , c2 , β 满足条件 1 2 方程组有三个未知数,但只有两个方程,因此可得到 c1 + c2 = 1 c2 β = 局部截断误差为O (h 3 )的计算公式.
称上式为n阶泰勒法
二、二阶龙格—库塔法 二阶龙格 库塔法
给定初值问题
dy = f (t , y ) a ≤ t ≤ b dt y (a) = α 确定常数c1 , c2 及β 的值, 使以下数值解法 y0 = α y = y + h (c k + c k ) i +1 i 1 1 2 2 k1 = f (ti , yi ) k 2 = f (ti + β h, yi + β hk1 ) 的局部截断误差 y (ti +1 ) y (ti ) = O (h 3 ).
1 如果取c1 = c2 = , β = 1, 递推公式为 2 y0 = α k = f (t , y ) i i 1 k 2 = f (ti + h, yi + hk1 ) y = y + h (k + k ) i 1 2 i +1 2 1 2 3 取c1 = , c2 = , β = , 递推公式为 3 3 4 y0 = α k = f (t , y ) i i 1 3 3 k 2 = f (ti + h, yi + hk1 ) 4 4 1 2 yi +1 = yi + h( k1 + k 2 ) 3 3
四阶龙格—库塔法
k = f (t , y ) k = f (t + h , y + h k ) 2 2 k = f (t + h , y + h k ) 2 2 k = f (t + h, y + hk ) y = y + h (k + 2k + 2k + k )
1 i i
y0 = α