四阶龙格库塔法(Runge-Kutta)求解常微分方程的
Matlab 程序及案例
1. 算法
上一篇介绍了显式欧拉法、隐式欧拉法、两步欧拉法和改进欧拉
法求解常微分方程初值问题;其中显式欧拉法和隐式欧拉法是一阶算
法精度,截断误差为
2
Oh
;两步欧拉法和改进欧拉法是二阶算法精
度,截断误差为
3
Oh
;欧拉法的精度有限、需要求解步长 h 很小。
本篇介绍求解精度更高的四阶龙格库塔法(Runge-Kutta),其截断误差
为
5
Oh
。
对于一阶微分方程初值问题:
00
,t
t
yy
yy
f
式中,
0
t
为初始时间(已知常数),
0
y
为初始状态(已知向量),
,t yf
为关于时间
t
和状态
y
的函数(已知函数)。
四阶龙格库塔法(Runge-Kutta)求解算法为:
1
21
32
43
1 2 3 4
0
,
,
22
,
22
,
1 2 2
6
0
t k k
hh
t k k
hh
t k k
t k h k h
h
kk
y
y
y
y
yy
yy
kf
k f k
k f k
k f k
k k k k
上式是关于
ky
向
1k y
的递推形式,可以根据初始条件按照递
推关系依次求出
1 , 2 , 3 , 4 , Ny y y y y
,此离散序列即为微分方
程的数值解。
微分方程的数值解法,本质是使用数值积分来实现
y
向
y
的转换。
四阶龙格库塔法通过对微分的四步分段逼近,在一个求解步长内能够
逼近复杂的曲线,因此能够取得较高的计算精度,其截断误差为
5
Oh
。
评论0