MathLabs
定理已证明

经典龙格库塔法的精度阶数

命题陈述

经典四阶龙格库塔法由阶段k1=f(tn,yn)k_1 = f(t_n, y_n)、k2=f(tn+h2,yn+h2k1)k_2 = f\left(t_n+\frac{h}{2}, y_n+\frac{h}{2}k_1\right)、k3=f(tn+h2,yn+h2k2)k_3 = f\left(t_n+\frac{h}{2}, y_n+\frac{h}{2}k_2\right)、k4=f(tn+h,yn+hk3)k_4 = f(t_n+h, y_n+hk_3)及更新公式yn+1=yn+h6(k1+2k2+2k3+k4)y_{n+1} = y_n + \frac{h}{6}(k_1+2k_2+2k_3+k_4)定义,每步的局部截断误差为O(h5)O(h^5),在与之前相同的利普希茨假设下,经过nn步后的整体误差为O(h4)O(h^4)。

为什么成立?

RK4在精心选择的中间点上每步计算四次斜率,而不是一次,然后按权重1,2,2,11,2,2,1(分母为66)取加权平均。这多做的工作换来了比欧拉法高三阶的精度:展开式与真解的泰勒级数一直匹配到h4h^4项,而不是只到一次项为止。

证明思路

把每个阶段在(tn,yn)(t_n, y_n)附近做泰勒展开。由于k1=f(tn,yn)=y′(tn)k_1=f(t_n,y_n)=y'(t_n),而k2,k3k_2, k_3是在中点用沿前一阶段方向偏移半步的yny_n来计算ff的,把y′=fy'=f、y′′=ft+fyfy''=f_t+f_yf、y′′′=ftt+2ftyf+fyyf2+fy(ft+fyf)y'''=f_{tt}+2f_{ty}f+f_{yy}f^2+f_y(f_t+f_yf)的链式法则代入每个kik_i,就得到关于hh的四个多项式,它们与y′(tn),y′′(tn),y′′′(tn)y'(t_n), y''(t_n), y'''(t_n)在每个阶段能看到的阶数内一致。

构造加权组合16(k1+2k2+2k3+k4)\frac{1}{6}(k_1+2k_2+2k_3+k_4)并乘以hh,这个和中h1,h2,h3h^1, h^2, h^3与h4h^4的系数恰好就是泰勒展开y(tn+h)=y(tn)+hy′(tn)+h22y′′(tn)+h36y′′′(tn)+h424y(4)(tn)+⋯y(t_n+h) = y(t_n) + hy'(t_n) + \frac{h^2}{2}y''(t_n) + \frac{h^3}{6}y'''(t_n) + \frac{h^4}{24}y^{(4)}(t_n) + \cdots中直到h4h^4项的系数——这正是RK4表的系数c=(0,12,12,1)c=(0,\frac12,\frac12,1)和b=(16,13,13,16)b=(\frac16,\frac13,\frac13,\frac16)被选定要满足的经典阶条件。

由于两个级数在h4h^4之前都一致,它们可能不同的第一项是O(h5)O(h^5)项,因此每步的局部截断误差为O(h5)O(h^5)。与欧拉的情形一样,利用ff上的利普希茨条件,把这些局部误差在到达固定时刻所需的n≈(T−t0)/hn\approx (T-t_0)/h步上累积起来,恰好损失hh的一次幂,得到整体误差O(h4)O(h^4)。

用到此定理的主题

分步证明

该定理暂无分步证明。

参考文献

  1. J. C. Butcher (2016). Numerical Methods for Ordinary Differential Equations
  2. E. Hairer, S. P. Norsett, G. Wanner (1993). Solving Ordinary Differential Equations I: Nonstiff Problems