CPT-028
Concept
Runge-Kutta method
| id | |
|---|---|
| updated | |
| type | concept |
| name | Runge-Kutta method |
| aliases | Runge-Kutta, Runge–Kutta, RK, RK4, 龙格-库塔方法, implicit Runge-Kutta, 隐式 Runge-Kutta |
| defined-by | PPR-004 |
Definition
Runge–Kutta 方法(Runge–Kutta method, RK)是一族单步数值积分方法:把区间 \([t_k,t_{k+1}]\) 上若干中间点(级,stage)处的导数做加权组合来推进状态,
\[x_{k+1} = x_k + h\sum_{i=1}^{s} b_i f\bigl(t_k+c_i h,\ \xi_i\bigr),\qquad
\xi_i = x_k + h\sum_{j=1}^{s} a_{ij} f\bigl(t_k+c_j h,\ \xi_j\bigr)\]
系数 \((a,b,c)\) 通常写成 Butcher 表。当 \(a_{ij}\neq 0\) 且 \(j\ge i\) 时,各级 \(\xi_i\) 彼此耦合、需联立求解,称隐式(implicit) 格式;当 \(j\ge i\) 时 \(a_{ij}=0\),各级可依次显式求出,称显式(explicit) 格式。方法的精度阶由系数满足的阶条件决定。
在轨迹优化语境中有两处用法(PPR-004):
- 配点约束等价于隐式 RK:直接配点转录得到的约束,在所得非线性规划中等价于隐式 Runge–Kutta 积分格式(PPR-004 §5.2)。因此配点法的精度与稳定性可由对应 RK 格式刻画;梯形配点与 Hermite–Simpson 配点分别对应低阶与高阶的隐式格式(PPR-004 §3、§4 的阶数表述)。
- 打靶的仿真积分器:直接多重打靶用四阶 Runge–Kutta(RK4,显式)对每段轨迹做前向仿真推进状态(PPR-004 §1.1、附录 A 的 Matlab 代码库)。
Disambiguation
- 与配点法(CPT-020)的实质区分:配点法是转录方法——状态与控制进入决策变量、动力学写成节点间的缺陷约束;RK 是积分方法。二者的关系是“配点约束等价于某个隐式 RK 格式”(PPR-004 §5.2),不是同义;决策变量是否包含状态这一判据由转录方法决定,不由 RK 决定。
- 与打靶法(CPT-019)的实质区分:打靶法用积分器(如 RK4)前向仿真产生轨迹,状态不是决策变量;RK 只是其内部积分器。同一个 RK 格式可以服务打靶(仿真)或配点(缺陷约束)两种转录结构。
- 与欧拉法(Euler method)区分:欧拉法是 RK 的一级特例(单级、显式);在本库的轨迹优化语境中,“配点法”与“RK 方法”混称会丢失转录结构这一判据,故两卡分列。
关联(15)
- PPR-004 An Introduction to Trajectory Optimization: How to Do Your Own Direct Collocation
- FRM-004 Kelly(2017)直接配点轨迹优化教程的五层重建:以“连续问题→多项式样条近似→非线性规划”为主线,规范术语与约束分类(D),列出作者接受的前提(AX),重建从配点构造、插值、误差估计到网格细化与不连续性处理的论证链(AR),并分节记录作者评论与本库评论;Theorems/Evidence 层待 P3 投影回填。
- CPT-019 shooting method
- CPT-020 collocation method
- CPT-023 mesh refinement
- EX-001 直接配点法算例(最小功双积分器):梯形配点 + 松弛变量把问题变成线性规划,N=10→160 网格下目标值 0.7958→0.76405 逼近解析 bang-off-bang 解的 0.763932,状态误差约按 O(h²) 下降,切换时刻收敛到 τ≈0.381966。
- CPT-019 co-definer shooting method
- CPT-020 co-definer collocation method
- CPT-021 co-definer trajectory optimization
- CPT-022 co-definer non-linear program
- CPT-023 co-definer mesh refinement
- CPT-024 co-definer bang-bang control
- CPT-025 co-definer consistent function
- CPT-026 co-definer open-loop vs closed-loop solution
- CPT-027 co-definer slack variable