计算方法 第五章常微分方程数值解 S52 Runge- Kutta法
第五章 常微分方程数值解 §5.2 Runge-Kutta法
§52 Runge-Kuta法 考虑改进 Euler法 Dk=Yx-1+hf(k-L Dk-1 h Dk=Dk+alf(k-lyk1+f(xk Dx) 如果将其改成(1=+2(<1+K2) K,=f(k-1 k-1) (1) K2=f(xk,yk1+hk) yo=y(ro
§5.2 Runge-Kutta法 ( , ) k = k -1 + k -1 k -1 y y hf x y [ ( , ) ( , )] 2 k k 1 k 1 k 1 k k f x y f x y h y = y - + - - + 考虑改进Euler法 如果将其改成 ( ) 2 1 K1 K2 h y y k = k - + + ( , ) 1 = k -1 k -1 K f x y ( , ) 2 1 1 K = f xk yk - + hK ( ) 0 0 ï y = y x ï î ï ï í ì ----------(1)
改进 Euler法是由梯形公式和 Euler公式复合而成 梯形公式具有2阶精度 同样可以证明,改进 Euler法也具有2阶精度 形如(1)式的求解公式称为二阶 Runge-Kutt法 对于 Simpson求解公式: h yk=y1+[f(x-1yk-)+4f(xk12以(xk-1+)+f(xk,yk) 6 这是隐式多步法选取适当的显化方法,可得类似(1) 的高阶 Runge-Kutt方法 以下使用中值定理进行推导
改进Euler法是由梯形公式和Euler公式复合而成 梯形公式具有2阶精度 形如(1)式的求解公式称为二阶Runge-Kutta法 同样可以证明,改进Euler法也具有2阶精度 对于Simpson求解公式: )) ( , )] 2 , ( 2 [ ( , ) 4 ( 6 k k 1 k 1 k 1 k 1 k 1 k k f x y h y x h f x y f x h y = y - + - - + - + - + + 这是隐式多步法 选取适当的显化方法,可得类似(1) 的高阶Runge-Kutta方法 以下使用中值定理进行推导
为了同学们课后复习的方便以下的内容将k写成n 、 Runge-Kutt方法的导出 对于常微分方程的边值问题 ∫y=f(x,y) a<xs b 的解y=y(x),在区间x-1xn上使用微分中值定理,有 y(n)-y(rn-1=y(sn-1(rn-x, 5 ∈(xn1rx 即y(xn-1+h)=y(x-1)+y(n-1)
一、Runge-Kutta方法的导出 î í ì = ¢ = £ £ 0 ( ) ( , ) y a y y f x y a x b 对于常微分方程的边值问题 的解 y = y(x), 在区间[xn-1 , xn ]上使用微分中值定理,有 ( ) ( ) ( )( ) -1 -1 - -1 - = ¢ n n n n n y x y x y x x x ( , ) n 1 n 1 n x x - Î - x ( ) ( ) ( ) -1 -1 -1 + = + ¢ n n n 即 y x h y x hy x ----------(3) 为了同学们课后复习的方便,以下的内容将k写成n
引入记号y(xn-1+h)=y(xn1)+hK -(3) K=y(n-1)=fn1)y(n-1) yn=In-1+hK K可以认为是y=y(x)在区间xn1,x上的平均斜率 只要使用适当的方法求出y(x)在区 y=y( 间xn1xn上平均斜率的近似值K 就可得到相应的 Runge-Kut方法 即(4)式
K可以认为是y = y(x)在区间[xn-1 , xn ]上的平均斜率 引入记号 y(xn-1 + h) = y(xn-1 ) + hK ----------(3) ( ) -1 = ¢ n K y x [ , ( )] = n-1 n-1 f x y x x x K y x 间 n n 上平均斜率的近似值 只要使用适当的方法求出 在区 [ , ] ( ) -1 就可得到相应的Runge-Kutta方法 n-1 x n x x y y = y(x) yn = yn-1 + hK ----------(4) 即(4)式 K
低阶 Runge-Kutt方法 1如果以y(x)在xn1处的斜率作为y(x)在[xn1,xl上的平均斜率K 即K=y(x2-1)=f[x-1,y(xn1) 如下图 n-1 则(4)式化为 K yn=yr-1+hf(xr-1/yn-1)---(5) K 即E Euler方法 Xn 由于 e,(h)=o(h) Euler方法也称为一阶 Runge-Kutt方法
二、低阶Runge-Kutta方法 n-1 x n x x y y = y(x) 如下图 1.如果以y(x)在xn-1处的斜率作为y(x)在[xn-1 , xn ]上的平均斜率K 即 ( ) -1 = ¢ n K y x [ , ( )] = n-1 n-1 f x y x 则(4)式化为 ( , ) n = n-1 + n-1 n-1 y y hf x y ( , ) = n-1 n-1 f x y 即Euler方法 Euler方法也称为一阶Runge-Kutta方法 ( ) ( ) 2 e h O h 由于 n = ----(5) K K
2如果以y(x)在xn1和x,处的斜率K1和K2的算术平均值作为 y(x)在[x21,xnl上的平均斜率 K1=y(xn-1)=f(xn-1,yn-1) K y=yx) K2=y()=fl,y(a,) K K f(rn, yu) 由(5)式)=f(xny21+hK1) xI KtK K 2 则(4)式化为
n-1 x n x x y y = y(x) 在 上的平均斜率 如果以 在 和 处的斜率 和 的算术平均值作为 ( ) [ , ] 2. ( ) 1 1 1 2 n n n n y x x x y x x x K K - - ( ) 1 -1 = ¢ n K y x ( , ) = n-1 n-1 f x y ( ) 2 n K = y ¢ x [ , ( )] n n = f x y x ( , ) n n » f x y ( , ) 1 1 (由(5)式) = f xn yn- + hK 令 2 K1 K2 K + = 则(4)式化为 K1 K K2
h Vn=yn-1+o(K1+K2) K n-1yn-=1 (6) K2=f(,, yn-1+hK1 y(x0) e,()=o(h) 和(1)式一致,即改进 Euler公式也称为二阶 Runge-Kutt法
( ) 2 1 K1 K2 h y y n = n- + + ( , ) 1 = n-1 n-1 K f x y ( , ) 2 1 1 K = f xn yn- + hK ( ) 0 0 y = y x ï ï î ï ï í ì -----------(6) 和(1)式一致,即改进Euler公式,也称为二阶Runge-Kutta法 ( ) ( ) 3 e h O h n =
三、高阶 Runge-Kut法 如果[x-1xnl上增加一点x1=x1=xn-1+ h n-1+ 2 且以y(x)在xn1、x1和xn处的斜率K1、K2和K3的加权平均值 作为y(x)在[xn1xn上的平均斜率 K K K1=y(xn-1)=f(xn-1,yn-1) K2=y(x1)=x1(x K K xn)=xn少p(xn) 未知 h
三、高阶Runge-Kutta方法 2 [ , ] 1 2 1 2 1 1 1 h x x x x xn n n n n = = - + - + - 如果 - 上增加一点 作为 在 上的平均斜率 且以 在 、 和 处的斜率 、 和 的加权平均值 ( ) [ , ] ( ) 1 1 2 3 2 1 1 n n n n n y x x x y x x x x K K K - - - ( ) 1 -1 = ¢ n K y x ( , ) = n-1 n-1 f x y ( ) 2 2 1 - = ¢ n K y x [ , ( )] 2 1 2 1 - - = n n f x y x xn-1 xn 2 1 h xn- + x y y = y(x) ( ) 3 n K = y ¢ x [ , ( )] n n = f x y x 未知 K1 K K2 K3
如果以xn1处的斜率K1预测y(x1) +-k 前进 Euler公式 令K2=y(x1)=(1+ h /n-1 +K1) 2 同样以xn-1、x21+处的斜率K1、K2预测y(xn) y(xn)ayn-+h(2k2-k) y(x)=f(x21+h,y21+h(2K2-K1) 参照 Simpson求解公式 yn=ym1+[(xnym)+4f(x2(xn1+)+/(x)
( ) 2 1 n- y x ) 2 , 2 ( 1 1 K1 h y h f x 令 = n- + n- + 1 1 2 K h y » n- + ( ) 2 2 1 - = ¢ n K y x (2 ) 1 K2 K1 y h y(xn ) » n- + - ( , (2 )) 1 1 K2 K1 f x h y h ( ) = n- + n- + - 3 n K = y ¢ x ( ) 2 1 1 1 - - n n 如果以x 处的斜率K 预测y x ( ) 2 n 1 n 1 1 2 n K K y x h 同样以x - 、x - + 处的斜率 、 预测 令 参照Simpson求解公式 )) ( , )] 2 , ( 2 [ ( , ) 4 ( 6 n n 1 n 1 n 1 n 1 n 1 n n f x y h y x h f x y f x h y = y - + - - + - + - + + 前进Euler公式