Skip to content

Euler 方法

Euler method · Forward Euler · Backward Euler

以前向与后向 Euler 建立一阶时间步进基线,并用局部缺陷、全局误差和测试方程放大因子揭示适用边界。

形式陈述

对初值问题

y=f(t,y),y(t0)=y0,

时间网格 tn+1=tn+hn 上,前向 Euler 使用当前斜率:

yn+1=yn+hnf(tn,yn).

它是显式一步法。输入 f,tn,yn,hn 后,每步需要一次新的函数求值和一次状态更新;若状态维数为 d 且一次 f 求值成本为 Cf,单步成本为 Cf+O(d),只推进末状态时额外存储为 O(d)

后向 Euler 使用新时刻和新状态上的斜率:

yn+1=yn+hnf(tn+1,yn+1).

它是隐式一步法,每步需求解

Fn(z)=zynhnf(tn+1,z)=0.

fyLipschitz 常数LhnL<1,映射 zyn+hnf(tn+1,z) 是压缩映射,给出一步解的存在唯一性和简单不动点迭代的收敛充分条件;Newton 等求解器可在更广条件下工作,但必须报告非线性残差、迭代上限和失败状态。后向 Euler 的成本不是“一次公式代入”,而是每步若干函数、Jacobian 与线性求解工作。

从精确状态 y(tn) 出发,前向 Euler 的一步缺陷可用Taylor 展开的积分余项写成

y(tn+1)y(tn)hnf(tn,y(tn))=tntn+1(tn+1s)y(s)ds,

因而

y(tn+1)y(tn)hnf(tn,y(tn))hn22sups[tn,tn+1]y(s).

后向公式相应有

y(tn+1)y(tn)hnf(tn+1,y(tn+1))=tntn+1(stn)y(s)ds,

并满足同样的 hn2supy/2 上界。这种写法对向量值状态不需要假定所有分量共享某个中值点。这里的 O(hn2) 是未除以步长的一步缺陷;有些教材把它除以 hn 后称为局部截断误差,记号约定必须说明。在固定终点区间上,若精确解二阶导数有界、f 对状态 Lipschitz,误差传播可得

max0nNy(tn)ynCTmaxnhn,

所以两种 Euler 方法都是全局一阶。局部 O(h2) 不能改写成全局二阶;常数 CT 还依赖时间区间、Lipschitz 常数和解的光滑性。

对标量测试方程

y=λy,z=hλ,

固定步长下前向与后向 Euler 的放大因子分别为

RFE(z)=1+z,RBE(z)=11z.

这两个有理表达式比较离散模式怎样逐步放大,不等同于误差阶。高阶准确性和离散衰减能力是两条独立坐标。

算法输入应包含 IVP、时间区间、网格、显式或隐式选择,以及隐式求解容差和预算;输出包括状态轨道或末状态、函数与 Jacobian 求值数、非线性迭代数和退出状态。固定网格在全部时间步完成后结束;遇到非有限函数值、无法表示的新时间点、隐式方程未收敛或预算耗尽时必须返回失败,而不是把最后一次迭代冒充 yn+1

直觉

前向 Euler 沿当前切线走完整一步,像用轨道起点的方向预测终点。后向 Euler 则要求终点处的切线能够从旧状态反推回这个终点,因此需要解一个自洽方程。两者都只使用一阶斜率信息,却对快速衰减模式给出完全不同的离散反馈。

减小步长通常改善截断误差,但也增加总步数、舍入累积和隐式求解次数。Euler 的价值是把这些机制暴露在最短公式中;它不是因为公式简单就适合作为所有 ODE 的默认生产求解器。

例子与边界

先看非刚性衰减

y=y,y(0)=1.

[0,1] 上取 h=1/N,前向 Euler 给

yN=(1h)N,

并随 h0 一阶趋近 e1。若 h>2,放大因子 1h 的绝对值大于 1,离散轨道反而增长;连续方程衰减不能替代对离散步长的检查。

完整刚性实验取

y=1000y,y(0)=1,h=0.003.

此时 λ=1000z=hλ=3,十步到达 T=0.03。前向 Euler 的每步因子为

RFE(3)=2,

所以

y10FE=(2)10=1024.

后向 Euler 的每步因子为

RBE(3)=11(3)=14,

从而

y10BE=(14)10=9.5367431640625×107.

精确值则是

y(0.03)=e30=9.357622968840175×1014.

显式轨道把真实衰减变成振荡爆炸;隐式轨道保持衰减,却仍比精确值大约七个数量级。这个对照同时说明两件事:前向 Euler 的步长不适合该快速模式,而“数值上稳定衰减”也不等于“在当前步长下准确”。要改善后者仍需减小步长或使用兼顾稳定性和精度的高阶方法。

后向 Euler 的鲁棒衰减还不能掩盖非线性求解失败。若每步只做一次未收敛的 Newton 更新,实际执行的已不是精确后向 Euler;代数残差必须进入总误差和退出状态。

推论与应用

Runge–Kutta 方法在一步内采集多个斜率以提高阶数,后续绝对稳定分析会把 R(z) 扩展到复平面,刚性页面则解释为何负实轴上的快速模式迫使显式方法取很小步长。本页只提供最小基准和完整实验,不把这些后续概念压成“隐式总是更好”。

可复现实验应报告 λ,h,z、步数、放大因子、数值轨道和精确参考值。只展示前十步曲线而不写纵轴尺度,或只说后向 Euler “没有发散”,都不足以判断数值答案是否可信。

参考资料
  • NIST Digital Library of Mathematical Functions, §3.7: Ordinary Differential Equations.
  • Ernst Hairer, Syvert P. Nørsett, and Gerhard Wanner, Solving Ordinary Differential Equations I: Nonstiff Problems, 2nd rev. ed., Springer, 1993.
  • Ernst Hairer and Gerhard Wanner, Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems, 2nd rev. ed., Springer, 1996.
  • Lloyd N. Trefethen, Finite Difference and Spectral Methods for Ordinary and Partial Differential Equations, unpublished text, ODE chapters.