【2026年7月Kimi】如何读 RK2 的布彻表
按照同样的"查说明书"方式,把 RK2 的两种常见形式拆开。你之前看到的两种 RK2(Heun 法 和 中点法)对应两张不同的布彻表。
第一种:你之前图片里的 Heun 法(改进欧拉法)
你之前看到的公式:
K1=f(tn,yn)K2=f(tn+h, yn+hK1)K=12(K1+K2)yn+1=yn+hK \begin{aligned} K_1 &= f(t_n, y_n) \\ K_2 &= f(t_n + h,\; y_n + hK_1) \\ K &= \frac{1}{2}(K_1 + K_2) \\ y_{n+1} &= y_n + hK \end{aligned} K1K2Kyn+1=f(tn,yn)=f(tn+h,yn+hK1)=21(K1+K2)=yn+hK
对应布彻表:
0001101212 \begin{array}{c|cc} \color{blue}{0} & \color{blue}{0} & 0 \\[6pt] \color{red}{1} & \color{red}{1} & 0 \\[6pt] \hline & \color{blue}{\frac{1}{2}} & \color{red}{\frac{1}{2}} \end{array} 0101210021
逐行读表
第 1 行(蓝色) → K1K_1K1
| 位置 | 数字 | 含义 |
|---|---|---|
| 最左 | 0\color{blue}{0}0 | 时间节点:在 t+0⋅h=tnt + 0\cdot h = t_nt+0⋅h=tn 采样 |
| 同行右 | 0\color{blue}{0}0 | 状态增量:yn+h⋅0=yny_n + h \cdot 0 = y_nyn+h⋅0=yn(不加增量) |
| 底行 | 12\color{blue}{\frac{1}{2}}21 | 最终权重:乘 12\frac{1}{2}21 |
→ K1=f(tn, yn)K_1 = f(t_n,\; y_n)K1=f(tn,yn)
第 2 行(红色) → K2K_2K2
| 位置 | 数字 | 含义 |
|---|---|---|
| 最左 | 1\color{red}{1}1 | 时间节点:在 tn+1⋅h=tn+ht_n + 1\cdot h = t_n+htn+1⋅h=tn+h 采样 |
| 同行右 | 1\color{red}{1}1 | 状态增量:yn+h⋅1⋅K1=yn+hK1y_n + h \cdot 1\cdot K_1 = y_n + hK_1yn+h⋅1⋅K1=yn+hK1 |
| 底行 | 12\color{red}{\frac{1}{2}}21 | 最终权重:乘 12\frac{1}{2}21 |
→ K2=f(tn+h, yn+hK1)K_2 = f(t_n+h,\; y_n + hK_1)K2=f(tn+h,yn+hK1)
底行横线下面 → 最终推进
yn+1=yn+h⋅(12K1+12K2)y_{n+1} = y_n + h \cdot \left(\color{blue}{\frac{1}{2}}K_1 + \color{red}{\frac{1}{2}}K_2\right)yn+1=yn+h⋅(21K1+21K2)
这就是你图片里的 yn+1=yn+h⋅12(K1+K2)y_{n+1} = y_n + h \cdot \frac{1}{2}(K_1+K_2)yn+1=yn+h⋅21(K1+K2)。
第二种:你第一张图里的中点法(Midpoint Method)
你第一张图看到的公式:
x∗(t+12τ)=x(t)+12τf(x(t),t)x(t+τ)=x(t)+τf(x∗(t+12τ), t+12τ) \begin{aligned} x^*(t+\tfrac{1}{2}\tau) &= x(t) + \tfrac{1}{2}\tau f(x(t),t) \\ x(t+\tau) &= x(t) + \tau f(x^*(t+\tfrac{1}{2}\tau),\; t+\tfrac{1}{2}\tau) \end{aligned} x∗(t+21τ)x(t+τ)=x(t)+21τf(x(t),t)=x(t)+τf(x∗(t+21τ),t+21τ)
对应布彻表:
0001212001 \begin{array}{c|cc} \color{blue}{0} & \color{blue}{0} & 0 \\[6pt] \color{red}{\frac{1}{2}} & \color{red}{\frac{1}{2}} & 0 \\[6pt] \hline & \color{blue}{0} & \color{red}{1} \end{array} 0210210001
逐行读表
第 1 行(蓝色) → K1K_1K1
| 位置 | 数字 | 含义 |
|---|---|---|
| 最左 | 0\color{blue}{0}0 | 在起点 ttt 采样 |
| 同行右 | 0\color{blue}{0}0 | 状态不加增量 |
| 底行 | 0\color{blue}{0}0 | 最终权重为 0(不参与最终推进) |
→ K1=f(t, x)K_1 = f(t,\; x)K1=f(t,x),但算完后直接扔掉,只用来算下一步。
第 2 行(红色) → K2K_2K2
| 位置 | 数字 | 含义 |
|---|---|---|
| 最左 | 12\color{red}{\frac{1}{2}}21 | 在 t+12τt+\frac{1}{2}\taut+21τ 采样 |
| 同行右 | 12\color{red}{\frac{1}{2}}21 | 状态增量:x+τ2K1x + \frac{\tau}{2}K_1x+2τK1 |
| 底行 | 1\color{red}{1}1 | 最终权重为 1(全部用它) |
→ K2=f(t+τ2, x+τ2K1)K_2 = f(t+\tfrac{\tau}{2},\; x + \tfrac{\tau}{2}K_1)K2=f(t+2τ,x+2τK1)
底行横线下面 → 最终推进
x(t+τ)=x(t)+τ⋅(0⋅K1+1⋅K2)=x(t)+τK2x(t+\tau) = x(t) + \tau \cdot \left(\color{blue}{0}\cdot K_1 + \color{red}{1}\cdot K_2\right) = x(t) + \tau K_2x(t+τ)=x(t)+τ⋅(0⋅K1+1⋅K2)=x(t)+τK2
对比:为什么都叫 RK2,但表不同?
| Heun 法 | 中点法 | |
|---|---|---|
| 采样位置 | 起点 + 终点 | 起点 + 中点 |
| K1K_1K1 权重 | 12\frac{1}{2}21 | 000(只当跳板) |
| K2K_2K2 权重 | 12\frac{1}{2}21 | 111(全权负责) |
| 几何直觉 | 起点斜率和终点预估斜率取平均 | 只用中点斜率推进整步 |
两者都是 2 级(2 次求 fff)、2 阶(全局误差 O(h2)O(h^2)O(h2)),所以都叫 RK2。但布彻表里的数字不同,对应不同的"采样策略"。
一句话总结读表规则
每一行 = 算一个 KiK_iKi。
最左数 = 在哪个时间点采样;
同行右边数 = 状态增量由哪些前面的 KKK 加权组成;
底行对应数 = 这个 KiK_iKi 在最终推进时占多大权重。
权重为 0 = 这个 KKK 只当"跳板",不直接参与最终推进。
更多推荐


所有评论(0)