数值分析与算法设计--改进欧拉法

姜智浩 Lv5

改进欧拉法

题目

改进欧拉法求解初值问题:

$$
\begin{cases}
y’ = f(x, y) = 3x + 2y \
y(0) = 1 \
0 \le x \le 0.3,\quad h = 0.1
\end{cases}
$$


解答

点击查看答案

改进欧拉法公式

对每一步 $ n = 0,1,2,\dots $:

  1. 预测(显式欧拉一步)
    $$
    \tilde{y}_{n+1} = y_n + h , f(x_n, y_n)
    $$
  2. 校正(梯形公式)
    $$
    y_{n+1} = y_n + \frac{h}{2} \left[ f(x_n, y_n) + f(x_{n+1}, \tilde{y}_{n+1}) \right]
    $$

本质:用区间端点的斜率平均值代替单点斜率,提高精度。
精度:二阶方法,全局误差 $ O(h^2) $,比显式欧拉更准。


已知:

  • $ x_0 = 0 $, $ y_0 = 1 $
  • $ h = 0.1 $
  • $ f(x, y) = 3x + 2y $

我们计算到 $ x = 0.3 $,共 3 步。


逐步计算:


▶ 第 0 步:$ n = 0 $, $ x_0 = 0 $, $ y_0 = 1 $

  1. 预测
    $$
    \tilde{y}_1 = y_0 + h f(x_0, y_0) = 1 + 0.1 \cdot (3\cdot0 + 2\cdot1) = 1 + 0.1 \cdot 2 = 1.2
    $$

  2. 计算校正所需斜率

    • $ f(x_0, y_0) = 2 $ (已算)
    • $ f(x_1, \tilde{y}_1) = f(0.1, 1.2) = 3(0.1) + 2(1.2) = 0.3 + 2.4 = 2.7 $
  3. 校正
    $$
    y_1 = y_0 + \frac{h}{2} \left[ f(x_0, y_0) + f(x_1, \tilde{y}_1) \right]
    = 1 + \frac{0.1}{2} (2 + 2.7) = 1 + 0.05 \times 4.7 = 1 + 0.235 = \boxed{1.235}
    $$

→ $ x_1 = 0.1 $, $ y_1 = 1.235 $


▶ 第 1 步:$ n = 1 $, $ x_1 = 0.1 $, $ y_1 = 1.235 $

  1. 预测
    $$
    \tilde{y}_2 = y_1 + h f(x_1, y_1)
    = 1.235 + 0.1 \cdot \big[ 3(0.1) + 2(1.235) \big]
    = 1.235 + 0.1 \cdot (0.3 + 2.47) = 1.235 + 0.1 \cdot 2.77 = 1.235 + 0.277 = 1.512
    $$

  2. 斜率

    • $ f(x_1, y_1) = 2.77 $ (已算)
    • $ f(x_2, \tilde{y}_2) = f(0.2, 1.512) = 3(0.2) + 2(1.512) = 0.6 + 3.024 = 3.624 $
  3. 校正
    $$
    y_2 = y_1 + \frac{h}{2} \big[ f(x_1, y_1) + f(x_2, \tilde{y}_2) \big]
    = 1.235 + 0.05 \cdot (2.77 + 3.624) = 1.235 + 0.05 \cdot 6.394 = 1.235 + 0.3197 = \boxed{1.5547}
    $$

→ $ x_2 = 0.2 $, $ y_2 = 1.5547 $

(保留4位小数,后续一致)


▶ 第 2 步:$ n = 2 $, $ x_2 = 0.2 $, $ y_2 = 1.5547 $

  1. 预测
    $$
    \tilde{y}_3 = y_2 + h f(x_2, y_2)
    = 1.5547 + 0.1 \cdot \big[ 3(0.2) + 2(1.5547) \big]
    = 1.5547 + 0.1 \cdot (0.6 + 3.1094) = 1.5547 + 0.1 \cdot 3.7094 = 1.5547 + 0.37094 = 1.92564
    $$

  2. 斜率

    • $ f(x_2, y_2) = 3.7094 $
    • $ f(x_3, \tilde{y}_3) = f(0.3, 1.92564) = 3(0.3) + 2(1.92564) = 0.9 + 3.85128 = 4.75128 $
  3. 校正
    $$
    y_3 = y_2 + \frac{h}{2} \big[ f(x_2, y_2) + f(x_3, \tilde{y}_3) \big]
    = 1.5547 + 0.05 \cdot (3.7094 + 4.75128)
    = 1.5547 + 0.05 \cdot 8.46068 = 1.5547 + 0.423034 = \boxed{1.977734}
    $$

→ $ x_3 = 0.3 $, $ y_3 \approx 1.9777 $

(四舍五入到6位:1.977734)


✅ 改进欧拉法结果汇总:

$ n $ $ x_n $ 预测 $ \tilde{y}_{n+1} $ 校正 $ y_{n+1} $
0 0.0 1.2000 1.2350
1 0.1 1.5120 1.5547
2 0.2 1.9256 1.9777

最终近似解:
$$
\boxed{y(0.3) \approx 1.9777}
$$

  • Title: 数值分析与算法设计--改进欧拉法
  • Author: 姜智浩
  • Created at : 2026-01-17 11:45:14
  • Updated at : 2026-01-17 13:44:12
  • Link: https://super-213.github.io/zhihaojiang.github.io/2026/01/17/20260117数值分析与算法设计--改进欧拉法/
  • License: This work is licensed under CC BY-NC-SA 4.0.