第五章 常微分方程数值解
5.2 Runge-Kutta法§
5.2 Runge-Kutta法§
),( 111 ??? += kkkk yxhfyy
)],(),([2 111 kkkkkk yxfyxfhyy ++= ???
考虑改进 Euler法
如果将其改成 )(2 211 KK
hyy
kk ++= ?
),( 111 ??= kk yxfK
),( 112 hKyxfK kk += ?
)( 00 xyy =?
?
?
???
?
----------(1)
改进 Euler法是由梯形公式和 Euler公式复合而成
梯形公式具有 2阶精度
形如 (1)式的求解公式称为 二阶 Runge-Kutta法
同样可以证明 ,改进 Euler法也具有 2阶精度
对于 Simpson求解公式 :
)],())2(,2(4),([6 11111 kkkkkkkk yxfhxyhxfyxfhyy +++++= ?????
这是隐式多步法 选取适当的显化方法 ,可得类似 (1)的高阶 Runge-Kutta方法
以下使用中值定理进行推导
一 、 Runge-Kutta方法的导出
??
?
=
≤≤=′
0)(
),(
yay
bxayxfy
对于常微分方程的边值问题
的解 ),(xyy = 有上使用微分中值定理在区间 ,],[ 1 nn xx ?
))(()()( 111 ??? ?′=? nnnnn xxyxyxy x ),( 11 nnn xx ?? ∈x
)()()( 111 ??? ′+=+ nnn yhxyhxy x即 ----------(3)
为了同学们课后复习的方便 ,以下的内容将 k写成 n.
上的平均斜率在区间可以认为是 ],[)( 1 nn xxxyyK ?=
hKxyhxy nn +=+ ?? )()( 11 ----------(3)引入记号
)( 1?′= nyK x )](,[ 11 ??= nn yf xx
Kxx
xy
nn 上平均斜率的近似值间
在区出只要使用适当的方法求
],[
)(
1?
就可得到相应的 Runge-Kutta方法
1?nx nx x
y
)(xyy =
hKyy nn += ?1 ----------(4)
即 (4)式
K
二 、 低阶 Runge-Kutta方法
1?nx nx x
y
)(xyy =
如下图
Kxxxyxxy nnn 上的平均斜率在处的斜率作为在如果以 ],[)()(.1 11 ??
即 )( 1?′= nxyK )](,[ 11 ??= nn xyxf
则 (4)式化为
),( 111 ??? += nnnn yxhfyy
),( 11 ??= nn yxf
即 Euler方法
Euler方法也称为 一阶 Runge-Kutta方法
)()( 2hOhen =由于
----(5)
K K
1?nx nx x
y
)(xyy =
上的平均斜率在
的算术平均值作为和处的斜率和在如果以
],[)(
)(.2
1
211
nn
nn
xxxy
KKxxxy
?
?
)( 11 ?′= nxyK ),( 11 ??= nn yxf
)(2 nxyK ′= )](,[ nn xyxf=
),( nn yxf≈
),( 11 hKyxf nn += ?(由 (5)式 )
令 2 21 KKK +=
则 (4)式化为
K1K
2K
)(2 211 KKhyy nn ++= ?
),( 111 ??= nn yxfK
),( 112 hKyxfK nn += ?
)( 00 xyy =?
?
?
???
?
-----------(6)
和 (1)式 一致 ,即改进 Euler公式 ,也称为 二 阶 Runge-Kutta法
)()( 3hOhen =
三 、 高阶 Runge-Kutta方法
2],[ 1212111
hxxxxx
nnnnn +== ??+?? 上增加一点如果
上的平均斜率在作为
的加权平均值和、处的斜率和、在且以
],[)(
)(
1
321
2
11
nn
nnn
xxxy
KKKxxxxy
?
??
)( 11 ?′= nxyK ),( 11 ??= nn yxf
)(
2
12 ?′= nxyK )](,[
2
1
2
1 ??= nn xyxf
1?nx nx21
hx
n +? x
y
)(xyy =
)(3 nxyK ′= )](,[ nn xyxf= 未知
K1K
2K 3K
)(
2
1?nxy
)2,2( 111 Khyhxf nn ++= ??令
11 2 K
hy
n +≈ ?
)(
2
12 ?′= nxyK
)2( 121 KKhyn ?+≈ ?)( nxy
))2(,( 1211 KKhyhxf nn ?++= ??)(3 nxyK ′=
)(
2
111 ?? nn xyKx 预测处的斜率如果以
)(2 2111 nnn xyKKhxx 预测、处的斜率、同样以 +??
令
参照 Simpson求解公式
)],())2(,2(4),([6 11111 nnnnnnnn yxfhxyhxfyxfhyy +++++= ?????
公式前进 Euler
取 321 616461 KKKK ++=
则 (4)式 化为
)4(6 3211 KKKhyy nn +++= ?
),( 111 ??= nn yxfK
)2,2( 1112 KhyhxfK nn ++= ??
))2(,( 12113 KKhyhxfK nn ?++= ??
-----------(7)
)( 00 xyy =?
?
?
???
?
(7)式称为 三阶 Runge-Kutta方法
展开式处的在、、分别作 TailorxKKK n 1321 ?
),( 111 ??= nn yxfK )( 1?′= nxy
)2,2( 1112 KhyhxfK nn ++= ??
),(2),(2),( 1111111 ?????? ′+′+= nnynnxnn yxfhKyxfhyxf
)()],(4),(4),(4[!21 311
2
1
2
11
1
2
11
2
hOyxfKhyxfKhyxfh nnynnxynnx +′′+′′+′′+ ??????
)(2)( 11 ?? ′′+′= nn xyhxy )()(8 31
2
hOxyh n +′′′+ ?
))2(,( 12113 KKhyhxfK nn ?++= ??
),()2(),(),( 11121111 ?????? ′?+′+= nnynnxnn yxfKKhyxfhyxf
)()],()2(
),()2(),([!21
3
11
2
12
2
1112
2
11
2
hOyxfKKh
yxfKKhyxfh
nny
nnxynnx
+′′?
+′′?+′′+
??
????
),()22()()( 111211 ???? ′?+′′+′= nnynn yxfKKhxyhxy
)()],()44(
),()22()([2
3
11212
11121
2
hOyxfKKK
yxfKKxyh
nny
nnxyn
+′′?
+′′?+′′′+
??
???
)()(2)()( 31
2
11 hOxy
hxyhxy
nnn +′′′+′′+′= ???
展开式处的在再作 Tailorxxyy n 1)( ?=
)()(!3)(2)()()( 41
3
1
2
111 hOxy
hxyhxyhxyhxy
nnnnn +′′′+′′+′+=+ ?????
)4(6 3211 KKKhyy nn +++= ?
因此
)()(!3)(2)( 41
3
1
2
11 hOxy
hxyhxyhy
nnnn +′′′+′′+′+= ???? ----(8)
----(9)比较 (7)(8)两式 ,可知
)()( 4hOhen = 因而三阶 R-K方法 (7)具有 3阶精度
)22(6 43211 KKKKhyy nn ++++= ?
),( 111 ??= nn yxfK
)2,2( 1112 KhyhxfK nn ++= ??
),( 3114 hKyhxfK nn ++= ??
)( 00 xyy =?
?
?
???
?
类似于 (7)式 ,还可构造 四阶 (经典 )Runge=Kutta方法
)2,2( 2113 KhyhxfK nn ++= ??
)()( 5hOhen =
-----------(10)
因而方法 (10)有 4阶精度
例 1. 使用高阶 R-K方法计算初值问题
?
?
?
=
≤≤=′
1)0(
5.002
y
xyy
.1.0=h取
解 : (1) 使用三阶 R-K方法 (7)
时1=n 201 yK = 1=
2
102 )2
1.0( KyK += 1025.1=
2
1203 ))2(1.0( KKyK ?+= 2555.1=
)4(61.0 32101 KKKyy +++= 1111.1=
RK.m
其余结果如下 :
(2) 如果使用四阶 R-K方法 (10)
时1=n 201 yK = 1=
2
102 )2
1.0( KyK += 1025.1=
n xn k1 k2 k3 yn
1.0000 0.1000 1.0000 1.1025 1.2555 1.1111
2.0000 0.2000 1.2345 1.3755 1.5945 1.2499
3.0000 0.3000 1.5624 1.7637 2.0922 1.4284
4.0000 0.4000 2.0404 2.3423 2.8658 1.6664
5.0000 0.5000 2.7768 3.2587 4.1634 1.9993
2
203 )2
1.0( KyK += 1133.1=
2
304 )1.0( KyK += 2351.1=
)22(61.0 432101 KKKKyy ++++= 1111.1=
其余结果如下 :
n xn k1 k2 k3 k4 yn
1.0000 0.1000 1.0000 1.1025 1.1133 1.2351 1.1111
2.0000 0.2000 1.2346 1.3756 1.3921 1.5633 1.2500
3.0000 0.3000 1.5625 1.7639 1.7908 2.0423 1.4286
4.0000 0.4000 2.0408 2.3428 2.3892 2.7805 1.6667
5.0000 0.5000 2.7777 3.2600 3.3476 4.0057 2.0000
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
1
1.2
1.4
1.6
1.8
2
2.2
精 确 解
Euler法
预 测 -校 正 系 统
改 进 Euler法
3阶 RK法
4阶 RK法
0.128 0.13 0.132 0.134 0.136 0.138 0.14 0.142 0.144 0.146 0.148
1.13
1.14
1.15
1.16
1.17
1.18
1.19
精 确 解
Euler法
预 测 -校 正 系 统
改 进 Euler法
3阶 RK法
4阶 RK法
0.2965 0.297 0.2975 0.298 0.2985 0.299 0.2995 0.3 0.3005
1.418
1.42
1.422
1.424
1.426
1.428
精 确 解
改 进 Euler法
3阶 RK法
4阶 RK法