2. 动力系统建模与数值方法回顾

在讨论数值精度之前,必须先厘清一个基本事实:我们真正计算的往往不是原动力系统本身,而是一个被离散化后的近似系统。连续系统由常微分方程(ODE)描述,例如 dy/dt = f(t, y),给定初值 y(t₀)=y₀;而计算机只能处理有限步长上的代数运算,于是我们把时间轴切成 t₀, t₁, …, tₙ,步长 h = tₙ₊₁ − tₙ,把导数替换为差商,得到离散动力系统 yₙ₊₁ = Φ(yₙ, h)。数值解法的全部差异,就体现在这个映射 Φ 如何构造、以及它与真实流映射的接近程度。

三类典型离散化方式

显式欧拉法是最直接的构造:用前向差商近似导数,yₙ₊₁ = yₙ + h·f(tₙ, yₙ)。它只用到当前点的信息,实现简单、每步计算量最小,但精度仅一阶,且对刚性方程或长时间积分极不稳定。以 y' = −λy(λ>0)为例,欧拉法给出 yₙ = (1 − λh)ⁿ y₀,只有当 |1 − λh| ≤ 1 即 h ≤ 2/λ 时才不发散——步长稍大,数值解就会振荡放大,而真实解是单调衰减的。

龙格-库塔法(RK)通过在一步内多次采样斜率并加权组合来提高阶数。经典四阶 RK(RK4)每步计算四次 f:k₁ = f(tₙ, yₙ),k₂ = f(tₙ + h/2, yₙ + h·k₁/2),k₃ = f(tₙ + h/2, yₙ + h·k₂/2),k₄ = f(tₙ + h, yₙ + h·k₃),再取 yₙ₊₁ = yₙ + h(k₁ + 2k₂ + 2k₃ + k₄)/6。它的局部误差为 O(h⁵)、全局误差为 O(h⁴),在光滑问题上性价比很高,是通用积分的默认选择。但 RK 方法不保持系统的几何结构,长时间积分哈密顿系统时能量会缓慢漂移。

辛算法(symplectic integrator)针对哈密顿系统设计,其离散映射保持辛结构,从而在长时间积分中能量误差有界振荡而非单调漂移。最简单的辛欧拉(半隐式欧拉)对 q' = p, p' = −∂V/∂q 交替更新:先更新 pₙ₊₁ = pₙ − h·V'(qₙ),再用新动量更新 qₙ₊₁ = qₙ + h·pₙ₊₁。它只有一阶精度,但结构保持性使其在轨道积分、分子动力学等场景中远优于同阶甚至更高阶的非辛方法。更高阶的 Störmer-Verlet(蛙跳)格式为二阶辛算法,是这类问题的常用基线。

连续动力系统 dy/dt = f(t, y) 真实流映射 φₕ 离散化 步长 h 离散动力系统 yₙ₊₁ = Φ(yₙ, h) 数值映射 Φ 显式欧拉法 一阶 · 每步1次 f · 稳定性受限 龙格-库塔 RK4 四阶 · 每步4次 f · 通用高效 辛算法(辛欧拉/Verlet) 保辛结构 · 能量有界振荡 局部截断误差 τₙ 单步引入 ≈ O(hᵖ⁺¹) 逐步累积 全局误差 Eₙ ≈ O(hᵖ),p 为方法阶 h→0 检验 收敛阶验证 log E 对 log h 斜率 ≈ p 注:p 为方法阶数;欧拉 p=1,RK4 p=4;辛算法阶数低但结构保持性优先。 局部误差是“单步欠账”,全局误差是“累计欠账”,二者阶数相差一阶。

局部截断误差与全局误差:两种“欠账”

把数值解代入精确方程,会留下一个残差,这就是局部截断误差(LTE)。严格地说,设真实解为 y(t),则 τₙ = [y(tₙ₊₁) − Φ(y(tₙ), h)] / h,它衡量“假设当前点完全准确时,走一步会引入多大偏差”。对显式欧拉法,泰勒展开给出 y(tₙ₊₁) = y(tₙ) + h·y'(tₙ) + (h²/2)y''(ξ),而欧拉法只保留到一阶项,故 τₙ = (h/2)y''(ξ) = O(h),方法是一阶的。RK4 的局部误差为 O(h⁵),故为四阶方法。一般地,若 τₙ = O(hᵖ),则称方法为 p 阶。

全局误差 Eₙ = y(tₙ) − yₙ 才是我们真正关心的量。它由两部分构成:每一步新引入的局部误差,以及此前误差被后续演化放大或衰减的传播效应。在 f 满足利普希茨条件(常数 L)时,可以证明 |Eₙ| ≤ (e^{LT} − 1)·max|τ|/L,其中 T 为积分总时长。由于总步数 N = T/h,局部误差 O(hᵖ⁺¹) 累积 N 步后得到全局误差 O(hᵖ)——全局误差阶数总比局部误差低一阶,这是精度分析中最容易被记错的关系。

用数值实验确认阶数

理论阶数必须能被实验验证,否则无法判断实现是否正确。以 y' = −2y, y(0)=1 在 t∈[0,1] 上积分为例,精确解为 y(1)=e^{−2}≈0.135335。取 h = 0.1, 0.05, 0.025, 0.0125,分别用欧拉法和 RK4 计算终点误差,再计算相邻两次的误差比 E(h)/E(h/2):欧拉法应接近 2(一阶),RK4 应接近 16(四阶)。若实测比值明显偏离,通常意味着实现有误(如 RK4 的系数写错、时间点取错)或步长尚未进入渐近区。这一“步长减半、看误差比”的做法,是后续所有精度验证的基本手段。

判断数值方法是否可信,至少要看三件事:理论阶数与实测收敛阶是否一致;步长减小时误差是否按预期速率下降;对结构性问题(如能量、动量)是否出现系统性漂移。三者缺一,结论都不可靠。

方法选择的实践准则