Skip to content

算法Algorithm

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)=z−yn−hnf(tn+1,z)=0.

若 f(tn+1,⋅) 在整个有限维状态空间上有Lipschitz 常数 L,且 hnL<1,映射 z↦yn+hnf(tn+1,z) 是完备空间上的压缩自映射。Banach 不动点定理给出一步解的存在唯一性和简单不动点迭代的收敛。若只在局部非空闭集 D 上有该估计,还必须验证映射把 D 送回自身,才能在这个完备子空间中使用定理;Newton 等求解器可在更广条件下工作,但必须报告非线性残差、迭代上限和失败状态。后向 Euler 的成本不是“一次公式代入”,而是每步若干函数、Jacobian 与线性求解工作。

假设精确轨道在本步上属于 C2。从精确状态 y(tn) 出发,前向 Euler 的一步缺陷可用Taylor 展开的积分余项写成

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

因而

‖y(tn+1)−y(tn)−hnf(tn,y(tn))‖≤hn22sups∈[tn,tn+1]‖y″(s)‖.

后向公式代入精确轨道所得的方程残差记为 δn+1,相应有

δn+1=y(tn+1)−y(tn)−hnf(tn+1,y(tn+1))=−∫tntn+1(s−tn)y″(s)ds,

该残差满足同样的 hn2sup‖y″‖/2 上界,但它不等于精确起步后的映射缺陷。若 z=Ψtn,hn(y(tn)) 是解出的后向 Euler 新状态,令 dn+1=y(tn+1)−z,则

dn+1=δn+1+hn(f(tn+1,y(tn+1))−f(tn+1,z)),‖dn+1‖≤‖δn+1‖1−hnL.

这个界要求两状态处于上述 Lipschitz 区域且 hnL<1。固定 q<1 并限制 hnL≤q,才得到一致的 dn+1=O(hn2) 界。积分余项对向量状态逐分量成立,不需要各分量共享一个中值点。文献可能把方程残差或映射缺陷除以 hn 后称为局部截断误差,引用时应说明究竟采用哪个量。

在固定终点区间上,若精确解属于 C2、二阶导数有界,各数值状态与精确状态留在上述 Lipschitz 区域,且 hnL≤q<1,误差传播可得

max0≤n≤N‖y(tn)−yn‖≤CTmaxnhn,

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

对标量测试方程

y′=λy,z=hλ,

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

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

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

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

直觉

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

Euler 方法的逐步切线近似

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

例子与边界

先看非刚性衰减

y′=−y,y(0)=1.

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

yN=(1−h)N,

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

完整刚性实验取

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

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

RFE(−3)=−2,

所以

y10FE=(−2)10=1024.

后向 Euler 的每步因子为

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

从而

y10BE=(14)10=9.5367431640625×10−7.

精确值则是

y(0.03)=e−30=9.357622968840175×10−14.

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

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

延迟方程还需规定过去值怎样读取。连续Euler延迟方法用同一条折线进行离网格历史查询,并将原节点与平移节点合并检查连续残差。延迟长度不是整数步时,四舍五入查询位置会改变模型;连续耗散也不保证任意Euler步长下的离散衰减。

推论与应用

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

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

对 Hamilton 系统,只改变位置与动量更新的先后依赖,就得到辛 Euler 方法。它仍通常是一阶,却能保持辛结构;谐振子上的精确离散二次不变量说明,相同误差阶数也可以对应不同的长期能量行为。

参考资料
  • NIST Digital Library of Mathematical Functions, §3.7: Ordinary Differential Equations, accessed 2026.
  • 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, 1996, ODE chapters.
关系图谱10 个相邻概念 · 4 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。

类型化关系