Skip to content

自适应步长与嵌入式 Runge–Kutta

Adaptive step size · Embedded Runge-Kutta method · Adaptive Runge-Kutta

用共享 stages 的嵌入式 Runge–Kutta 对估计单步误差,并通过尺度化接受、拒绝与受限控制器分配时间步。

形式陈述

嵌入式Runge–Kutta对在同一步内共享 stages

ki=f(tn+cihn,yn+hnj=1saijkj),i=1,,s,

再用两组权重形成不同阶的候选值:

yn+1[p]=yn+hni=1sbiki,yn+1[q]=yn+hni=1sb^iki.

以下约定 p>q,通常 q=p1;若文献按“低阶/高阶”写成 p/(p+1),只需交换阶数标签,控制器仍应使用估计量真正的局部幂次。两式之差

en+1=yn+1[p]yn+1[q]=hni=1s(bib^i)ki

不是真解误差本身,而是在光滑性和嵌入对设计成立时对本步局部误差尺度的廉价估计。共享 stages 使估计器只增加少量向量组合,而不是把整步再算一次。

不同分量可能有不同单位和量级。对第 i 个状态分量,先定义混合尺度

sci=atoli+rtolimax(|yn,i|,|yn+1,i[p]|),

再计算例如加权均方范数

En+1=[1di=1d(en+1,isci)2]1/2.

也可以约定加权最大范数,但接口必须说明选择。rtoli 控制大幅值分量的相对尺度,atoli 在分量接近或穿过零时提供非零基准;只给单一绝对容差会过度约束大分量,只给相对容差则可能在零附近要求无法实现的精度。

En+11,本步通过当前的局部接受规则,求解器推进到 tn+1=tn+hn 并保存约定的高阶候选值。若 En+1>1,时间和状态仍保持在 tn,yn,缩短步长后重试。拒绝步不是轨道的一部分,但其函数求值和失败原因必须计入成本。

设嵌入差的主导尺度为 EChr。比例控制器据此提出

hnew=hnclip(fmin,θE1/r,fmax),

其中 0<θ<1 是安全因子,fminfmax 限制一次缩放幅度。若一对方法的阶为 pp1,差值通常具有 r=p 的局部幂次;其他嵌入设计应使用自身估计器的幂次,不能只看到“高阶为 p”就机械套指数。

E 极小或舍入成零时,应使用 Esafe=max(E,Efloor) 或直接采用受限的最大增长因子,避免除零和一步暴涨。最终到达终点时还要把候选步长截到剩余区间,并检查浮点加法是否真的满足 tn+hn>tn

纯比例控制会对相邻误差的噪声作出剧烈反应。PI 控制器把当前与上一接受步的估计结合,例如按

hnewhn=θEn+1α/rEnβ/r

再施加上下界,其中 α,β 由所用方法和控制器调校。它的作用是平滑步长序列,不是把局部估计升级为全局误差证明。拒绝后的控制通常应更保守,也不能使用尚未接受的状态更新历史。

重试时,所有依赖新步长或新 stage 状态的 ki 都必须重算。具有 first-same-as-last 性质的嵌入对,在一步成功接受且端点条件匹配时可以把末 stage 导数复用为下一步首 stage;这是一项有前提的缓存优化,不改变接受准则,也不能让旧步长下的中间 stages 在拒绝后继续生效。

完整输入包括 f,t0,y0,T、初始步长、逐分量或可广播的 atol,rtol、最大与最小步长以及工作预算。输出至少应给实际网格、接受和拒绝步数、函数求值数、最后的 E、事件或终点状态与退出原因。若连续拒绝、导数或估计非有限、所需步长低于下限,或 tn+hn=tn,应明确失败,不能通过强行接受超容差步骤制造“完成”。

直觉

嵌入对像用同一组观测点画两条精细程度略有不同的短轨道。两条轨道靠得近,说明当前局部形状在这个尺度下容易解析;差得远,则提示这一步跨过了过多曲率或快速变化。控制器把这项局部反馈转成下一步的长度,使计算工作随轨道难度分布。

绝对与相对容差共同定义“差多少才重要”。温度与浓度若量纲不同,直接比较原始误差没有意义;逐分量尺度先把误差换成无量纲比例,再由范数汇总。这个尺度是用户对数值状态的精度约定,不是算法从方程中自动推断出的物理重要性。

例子与边界

y(t)=εε2+(t12)2,y(0)=arctan(12ε).

精确解为

y(t)=arctan(t12ε).

远离 t=12 时,导数只有 O(ε);在宽度约为 O(ε) 的过渡区内,斜率峰值达到 1/ε。嵌入式控制器会在两端平缓区逐步放大 hn,进入过渡区前后因 E 增大而缩步,离开后再恢复较长步。固定使用过渡区所需的最小步长会把大部分函数求值浪费在平缓区。

这幅图像不表示控制器一定提前“看见”尖锐变化。若一步的所有 stage 都跨过一个非常窄的特征,两套共享-stage 公式可能同时漏掉它,差值也可能偶然相消。最大步长限制、问题特定的采样要求或事件检测仍有价值;误差估计器不是对未采样区间的全知探测器。

局部接受也不保证全局真值。每个 En+11 只说明嵌入估计在当前尺度下通过,误差随后还会被动力系统传播和累积。长时间振荡的相位、守恒量、混沌轨道以及零点事件的位置,都可能在每步局部估计合格时仍产生明显偏差。容差通常控制工作—精度折中,而不是给终点全局误差提供严格上界。

Dormand–Prince 5(4) 是共享 stages、局部外推和 FSAL 配合的典型显式嵌入对,但它仍受显式稳定域限制。对刚性问题,控制器可能为了稳定性而持续缩步,即使局部平滑度看似允许更大步;这时换用合适的隐式方法比继续压低显式步长更有效。

推论与应用

自适应算法把估计量与真实误差的区别带入时间积分:可计算的嵌入差驱动局部决策,独立参考解、步长加密实验或问题结构才用于验证全局结果。报告容差而不报告实际网格、拒绝次数和函数求值数,无法判断控制器把工作花在了哪里。

事件检测通常在已接受步的连续插值上定位符号变化。减小局部状态误差有助于事件定位,却不自动规定插值阶、漏检多个事件的防护或终止方向。密集输出、事件误差和状态步长控制应共享已算 stages,但保留各自的验收标准。

参考资料
  • Ernst Hairer, Syvert P. Nørsett, and Gerhard Wanner, Solving Ordinary Differential Equations I: Nonstiff Problems, 2nd rev. ed., Springer, 1993.
  • J. R. Dormand and P. J. Prince, “A Family of Embedded Runge-Kutta Formulae,” Journal of Computational and Applied Mathematics 6(1), 1980.
  • SciPy documentation, Integration and ODEs: solve_ivp.