Skip to content

第8章:常微分方程与综合误差分析

离散时间推进

初值问题为 y=f(t,y),y(t0)=y0y'=f(t,y),y(t_0)=y_0。显式 Euler 用当前斜率推进:

yn+1=yn+hf(tn,yn).y_{n+1}=y_n+h f(t_n,y_n).

在解与 f 足够光滑、关于 y 满足适当 Lipschitz 条件等情况下,单步未归一化局部截断误差为 O(h2)O(h^2),固定时间区间上的全局误差为 O(h)O(h)

局部误差不是简单乘步数就总成立,误差传播还受动力系统和算法稳定性控制。

绝对稳定性

对测试方程 y=λyy'=\lambda y,Euler 给出 yn=(1+hλ)ny0y_n=(1+h\lambda)^ny_0。当真实解衰减时,希望数值解也不增长,需要 1+hλ1|1+h\lambda|\le1

λ=100\lambda=-100,显式 Euler 需 0<h0.020<h\le0.02 才落在负实轴稳定区,边界会振荡而不衰减。h=0.03 时放大因子为 -2,数值解交替发散,尽管真解快速趋零。

隐式方法与刚性

隐式 Euler 为 yn+1=yn+hf(tn+1,yn+1)y_{n+1}=y_n+h f(t_{n+1},y_{n+1})。对测试方程,放大因子为 1/(1hλ)1/(1-h\lambda),对左半平面满足稳定要求。

它扩大了稳定区域,却每步需要求解方程。刚性问题中,稳定性要求可能迫使显式方法使用远小于精度所需的步长,隐式方法因而有优势。稳定不等于准确,步长过大仍会失去真实变化细节。

Runge–Kutta 与自适应

Runge–Kutta 在每步使用多个阶段评估斜率,提高精度。嵌入式方法用共享阶段产生不同阶近似,估计局部误差并调步长。

不同分量尺度悬殊时,应结合绝对与相对容差,避免小分量被大分量掩盖。事件检测、守恒量和长时间行为还可能提出额外要求。

综合练习

  1. y=100y,y(0)=1y'=-100y,y(0)=1,比较显式 Euler 在 h=0.01、0.02、0.03 下的结果与真解。
  2. 在同一误差目标下比较显式与隐式方法,计入隐式每步求解成本。
  3. 为一个数值实验报告输入条件、离散化误差、迭代残差、舍入影响和参考解来源。无解析解时,可采用独立方法、高精度或步长收敛研究交叉检查,但不要把相互一致自动当成严格证明。

上次更新: