Skip to content

✍内容

[[常微分方程第2版 [张伟年,杜正东,徐冰 编著] 2014年版(1).pdf]] 在实际问题中求解微分方程 dxdt=f(t,x),x(t0)=x0,使用 Picard 逐步逼近法和欧拉折线法,会有精度差和收敛速度慢的缺点,于是有了改进的 Euler 方法和 Runge-Kutta 方法。 所谓的数值解,就是在一些离散的点 (称为节点) t1<t2<<tn< 处,求得函数值 x1,x2,,xn,,其中 hk=tk+1tk 称为步长,假设所有的步长都是 h,那么 tm=t0+mh. 欧拉折线法的思想就是 MVT,即 xn=xn1+hf(tn1,xn1),n=1,2,,但是对于导数变化大的 f,误差就会越来越大。为了改进欧拉折线法,我们利用严格等式 xn+1=xn+tntn+1f(τ,x(τ))dτ,考虑梯形法,即 tntn+1f(τ,x(τ))dτh2[f(tn,xn)+f(tn+1,xn+1)]. 但是这样的 xn+1 会是 xn 的一个隐式解,求解过程又会产生误差,于是我们不妨令 xn+1=xn+h2[f(tn,xn)+f(tn+1,xn+1)],其中 xn+1=xn+hf(tn,xn) 为 Euler 折线法的解,这就是改进的 Euler 方法. 该过程也可以写作:

{xp=xn+hf(tn,xn),xc=xn+hf(tn+1,xp)xn+1=12[xp+xc].

对于单步法 xn+1=xn+hΦ(tn,xn,xn+1,h),其中显式单步法 xn+1=xn+hΦ(tn,xn,h) 的精度为 Tn+1=x(tn+1)x(tn)hΦ(tn,x(tn),h) 称为显式单步法的局部截断误差,通常 hp+1,称为有 p 阶精度. 注意到误差来源于对积分 tntn+1f(τ,x(τ))dτ 的逼近,逼近用到的节点越多,误差越小,于是有了四阶 Runge-Kutta 方法,一般的 q 级显式 Runge-Kutta 方法为:

xn+1=xn+hi=1qwiKiK1=f(tn,xn)Ki=f(tn+λih,xn+hj=1i1μjKj)(i=2,3,,q).

NOTE

q=1 是 Euler 折线法,q=2 是改进的 Euler 方法。

一般在实际情况中用得多的是四阶 Runge-Kutta 公式:

K1=f(tn,xn)K2=f(tn+h2,xn+h2K1)K3=f(tn+h2,xn+h2K2)K4=f(tn+h,xn+hK3)xn+1=xn+h6(K1+2K2+2K3+K4)

它具有四阶精度,公式计算复杂,这里从略。

IMPORTANT

值得注意的是四阶 Runge-Kutta 公式的精度虽然很高, 但它要求初值问题 (5.52)的解具有较好的光滑性,如果(5.52)的解光滑性较差,用四阶 RungeKutta 公式求得的近似解的精度可能反而不如改进的 Euler 方法. 因此我们需要根据具体问题选择适当的方法.