跳转到正文

欧拉方法计算器

输入 dy/dx = f(x, y)、初始点和终点,即可用欧拉方法、改进欧拉法(Heun)或四阶龙格-库塔法求出近似解。结果包括每一步所用斜率的完整步进表、与精确解(或高精度参考值)的误差、步长减半后的变化,以及叠加在斜率场上的解曲线图像。免费,无需注册。

用 x 表示自变量,y 表示未知函数,可使用 + − * / ^ 与括号:x + y、x*y、y*(1 − y)、sin(x) − y。可用函数有 sin、cos、tan、exp、ln、sqrt 等。

若您知道精确解,请在 x 中输入它以查看真实误差;否则使用高精度的 RK4 参考解。

结果

3.1874849

y(1) 的近似值

3.4365637

精确的 y(1)

-0.249

误差

0.1

步长 h

10

步数 n

方法

yₙ₊₁ = yₙ + h·f(xₙ, yₙ):在每一步开始时沿斜率前进。整体误差与 h 成正比。

步进表

nxₙyₙk1精确值 y(xₙ)误差
001110
10.11.11.21.1103418-0.0103
20.21.221.421.2428055-0.0228
30.31.3621.6621.3997176-0.0377
40.41.52821.92821.5836494-0.0554
50.51.721022.221021.7974425-0.0764
60.61.9431222.5431222.0442376-0.101
70.72.19743422.89743422.3275054-0.13
80.82.48717763.28717762.6510819-0.164
90.92.81589543.71589543.0192062-0.203
1013.18748493.4365637-0.249

相同步长下的三种方法

方法终点处的 y误差
欧拉法3.1874849-0.249
改进欧拉法(Heun)3.4281617-0.0084
四阶龙格-库塔法3.4365595-0.00000417

步长减半(欧拉法)

nh终点处的 y误差
100.13.1874849-0.249
200.053.3065954-0.13
400.0253.3701277-0.0664
800.01253.4029699-0.0336

对欧拉法,h 减半时误差大致减半;对 Heun 方法,误差降至四分之一;对 RK4,误差降至十六分之一。

图像

  • 精确解
  • 欧拉法
dy/dx = f(x, y) 的斜率场,以及从 x = 0 到 x = 1 的 欧拉法 解00.20.40.60.81123xy

如何使用欧拉方法计算器

  1. 1. 输入方程。 用 x 和 y 写出 dy/dx = f(x, y) 的右端,例如 x + y、y*(1 - y)、sin(x) - y。
  2. 2. 给出初始条件和终点。 输入 x₀、y₀ = y(x₀),以及要求解到的 x 值。终点可以位于 x₀ 的左侧。
  3. 3. 选择步长。 输入步长 h,或切换为步数 n。若 h 不能均匀划分区间,计算器会自动调整并予以说明。
  4. 4. 选择方法并阅读表格。 每一行列出 xₙ、yₙ 以及所用的斜率。若您知道精确解,可将其输入,以查看真实误差。

三种方法

方法步进公式整体误差
欧拉法yₙ₊₁ = yₙ + h·f(xₙ, yₙ)与 h 成正比
改进欧拉法(Heun)yₙ₊₁ = yₙ + (h/2)(k₁ + k₂),其中 k₁ = f(xₙ, yₙ),k₂ = f(xₙ + h, yₙ + h·k₁)与 h² 成正比
四阶龙格-库塔法yₙ₊₁ = yₙ + (h/6)(k₁ + 2k₂ + 2k₃ + k₄)与 h⁴ 成正比

欧拉法沿每一步起点处的切线前进。Heun 方法将起点的斜率与预测终点的斜率取平均,因此也称为显式梯形法。四阶龙格-库塔法在每一步中对斜率采样四次,权重依次为 1、2、2、1。这些方法出自 Burden 与 Faires 的 Numerical Analysis 第 5 章。

示例:y′ = x + y, y(0) = 1

精确解为 y = 2eˣ − x − 1,因此 y(1) = 2e − 2 ≈ 3.4365637。取 h = 0.1 时,用欧拉法得到的前几步如下:

nxₙyₙ斜率 f(xₙ, yₙ)精确值 y(xₙ)
00111
10.11.11.21.1103418
20.21.221.421.2428055
30.31.3621.6621.3997176

例如,y₁ = 1 + 0.1 × (0 + 1) = 1.1,y₂ = 1.1 + 0.1 × (0.1 + 1.1) = 1.22。走完十步后,欧拉法得到 y(1) ≈ 3.1874849,误差为 −0.2491:结果偏小,因为真解是凸的,切线位于曲线下方。

步数 n (h)x = 1 处的欧拉误差Heun 误差RK4 误差
10 (0.1)−0.2491−0.0084−0.0000042
20 (0.05)−0.1300−0.0022−0.00000027
40 (0.025)−0.0664−0.00056−0.000000017
80 (0.0125)−0.0336−0.00014−0.0000000011

h 每减半一次,欧拉法的误差约减半,Heun 方法的误差降至四分之一,RK4 的误差降至十六分之一,与各方法的阶数预测一致。要使欧拉法的误差达到 n = 10 时 RK4 的水平,需要数十万步。

斜率场与误差

图中的短线段表示格点上的斜率 f(x, y):真解是处处与这些线段相切的曲线。数值解以折线的形式叠加在其上;若您提供了精确解,它会以虚线画在旁边。若没有精确解,误差一列将与 RK4 取至少 2,000 步得到的参考值比较,该参考值远比您在此选择的任何方法精确。有些方程会在有限时间内发散,例如 y(0) = 1 的 y′ = y²,在 x = 1 处发散;表格会在数值变为无穷大处停止。

常见问题

欧拉方法如何工作?
它逐步构造解。从点 (xₙ, yₙ) 出发,由微分方程算出斜率 f(xₙ, yₙ),然后沿该切线前进水平距离 h,得到 yₙ₊₁ = yₙ + h·f(xₙ, yₙ)。每个新点都是下一步的起点。
欧拉方法有多精确?
其每步的局部误差与 h² 成正比,但误差会在约 1/h 步中累积,因此整体误差与 h 成正比。步长减半,误差也减半。它适合用于学习,但不适合追求精度。
什么是改进欧拉法?
改进欧拉法即 Heun 方法,先用一步欧拉法预测区间的终点,再将终点处的斜率与起点的斜率取平均。这一二阶修正使整体误差与 h² 成正比(而非 h),代价是每步需要计算两次斜率。
如何选择步长?
使用减半表:不断减小 h,直到结果在您关心的位数上不再变化。欧拉法需要很小的 h,而 RK4 用大得多的 h 即可达到相同精度。刚性方程(含快速衰减分量的方程)可能迫使这些方法都使用很小的 h。
能求解二阶方程或方程组吗?
不能。本工具只求解单个一阶方程 dy/dx = f(x, y)。二阶方程可以改写为一阶方程组,但本工具不处理方程组。
为什么解会在中途停止?
数值变为无穷大。这发生在真解于有限时间内发散时,或在不稳定方程中步长过大时。表格止于最后一个有限值所在的行,提示信息会给出发生这种情况的大致 x 值。

相关工具

数学计算器中的更多工具