Lyapunov 理论把「系统会不会发散」翻译成「能否找到一个沿轨线递减的能量函数」:不解微分方程,用一个标量函数 的符号直接判定稳定性分级。它是非线性系统稳定性分析的通用语言,也是优化收敛性证明与强化学习稳定性分析的现成框架。
核心思想:不解方程,看能量
非线性系统 (状态空间表示 State-Space 的非线性推广)的解一般没有解析表达式——常微分方程的定性理论早已指出:与其求轨迹,不如问轨迹的渐进行为。Lyapunov 1892 年的洞见是:稳定性是能量耗散的表现。给状态空间造一个「广义能量」——正定的碗;若沿任意轨线 只降不升,轨迹就被困在碗的低处,只能滑向平衡点。
论证不依赖线性性与叠加原理,非线性、时变、离散系统通吃;对线性定常系统它退化为极点判据,与系统稳定性 Stability的 Routh–Hurwitz 路线殊途同归。
稳定性的分级定义
设平衡点已平移到原点()。
| 级别 | 定义 | 直觉 |
|---|---|---|
| Lyapunov 稳定 | : | 初值扰动不被放大 |
| 渐近稳定 | 稳定,且 | 轨迹最终回到平衡点 |
| 指数稳定 | : | 收敛速度有指数下界 |
蕴涵链:指数 ⟹ 渐近 ⟹ 稳定,逆命题均不成立:
- :渐近稳定但不指数——解按 衰减,任何指数率都兜不住
- 无阻尼摆:能量守恒,轨迹停在等能量闭轨上——稳定但不渐近
各级别还分局部(仅某邻域内成立)与全局(任意初值);渐近稳定的成立范围叫吸引域(region of attraction)。线性系统渐近稳定必全局,非线性吸引域可以有限——这条信息线性化永远给不出来。
直接法:Lyapunov 定理与 LaSalle 不变原理
直接法(第二方法):取 正定(, 时 ),沿系统轨线求导 ,只看符号:
| 条件 | 结论 |
|---|---|
| 稳定 | |
| 负定 | 渐近稳定 |
| 上行 + 径向无界() | 全局渐近稳定(Barbashin–Krasovskii 定理) |
| 且 | 指数稳定,速率 |
附加红利:若某球内 ,则含于该球的最大水平集 整个落在吸引域内—— 顺手给出吸引域的内界估计。
仅半负定时上表止步于「稳定」,LaSalle 不变原理补上最后一环:自治系统的轨迹必趋于 内的最大不变集。阻尼摆是标准示例:取总能量 ,则 只约束 ;但 的不变集还要求 ,能量不够翻顶的初值最终都落到 。
import numpy as np
def f(x): # 阻尼摆: x = [theta, omega]
return np.array([x[1], -0.5 * x[1] - np.sin(x[0])])
def V(x): # Lyapunov 函数 = 动能 + 势能
return 0.5 * x[1]**2 + 1 - np.cos(x[0])
x, dt = np.array([2.5, 0.0]), 1e-2
for _ in range(20000): # RK4 积分 200 s
k1 = f(x)
k2 = f(x + dt / 2 * k1)
k3 = f(x + dt / 2 * k2)
k4 = f(x + dt * k3)
x_new = x + dt / 6 * (k1 + 2*k2 + 2*k3 + k4)
assert V(x_new) <= V(x) + 1e-10 # V 单调不增: 每步 dV = -0.5*omega^2*dt
x = x_new
print(x) # ~[0, 0]: dV 仅半负定仍收敛到平衡点 (LaSalle)时变系统的对应工具是 Barbalat 引理: 且 有界 ⟹ 。自适应控制里大量「 半负定 + 信号有界」的论证都由它收尾。
构造 Lyapunov 函数
逆定理保证渐近稳定的系统必存在 Lyapunov 函数,但没说怎么找——构造是这门理论的艺术部分:
| 方法 | 做法 | 适用场景 |
|---|---|---|
| 能量法 | 机械/电路系统的总能量 | 有物理背景的对象 |
| 二次型试探 | , | 接近线性的系统 |
| Krasovskii 方法 | ,要求 Jacobian 处处满足 | Jacobian 一致 Hurwitz |
| 变梯度法 | 设 ,用 对称(可积条件)反解 再积分 | 低维系统手算 |
| SOS 规划 | 限定 为多项式,把 、 写成平方和条件交给 SDP 求解器 | 多项式系统,可半自动化 |
线性系统:Lyapunov 方程
取 ,沿 得 ,判稳归结为 Lyapunov 方程
定理: Hurwitz(特征值实部全负)⟺ 对任意 方程存在唯一正定解 。且指数速率有可计算下界 ——比「极点实部为负」多出一张收敛率证书。
import numpy as np
A = np.array([[0.0, 1.0], [-1.0, -0.5]]) # 阻尼摆在原点处的 Jacobian
n, Q = len(A), np.eye(2)
M = np.kron(A.T, np.eye(n)) + np.kron(np.eye(n), A.T) # 向量化: vec(A^T P + P A) = M vec(P)
P = np.linalg.solve(M, (-Q).flatten()).reshape(n, n)
print(np.linalg.eigvalsh(P)) # [1.61, 2.64] 全正 → P 正定, A 确为 Hurwitz与最优控制在同一处接轨:LQR 闭环 下,最优代价 满足 ——最优反馈天然镇定,价值函数自己就是 Lyapunov 函数(详见最优控制 Optimal Control)。
间接法:线性化
间接法(第一方法):在平衡点处取 Jacobian ,用线性近似 的结论反推原系统:
- Hurwitz ⟹ 原系统局部指数稳定
- 有右半平面特征值 ⟹ 不稳定
- 有虚轴特征值 ⟹ 无结论
临界情形的警示样本仍是 :两者 Jacobian 同为 ,稳定性却相反,线性化失效,只能回到直接法( 一行判完)。间接法本质是极点判据的局部化——线性方法在平衡点邻域内继续有效,但邻域多大(吸引域),线性化说了不算。
接口:优化收敛性证明
离散时间把 换成差分: ⟹ 几何衰减;线性情形即离散 Lyapunov 方程 ,稳定域从开左半平面换成开单位圆。
梯度下降的收敛证明是这条判据的直接套用。取 ,对 -光滑的 ,下降引理给出
时右端严格下降—— 沿迭代单调递减,这就是 Lyapunov 论证。非凸场景下 不正定,「稳定到点」退化为「收敛到驻点集」: 正是不变集,结论形态与 LaSalle 原理同构。再假设 PL 条件 ,则每步 ——PL 不等式就是优化版的指数稳定,线性收敛率即 Lyapunov 指数。momentum 更是明证:heavy-ball 写成二阶阻尼系统后,收敛证明的标准做法正是构造二维状态的 Lyapunov 函数。
接口:强化学习中的稳定性
RL 与 Lyapunov 的对应是结构性的(详见控制理论与强化学习 Control and Reinforcement Learning):
- 价值函数即 Lyapunov 函数:确定性最优控制的 Bellman 方程 沿最优闭环给出 ——一步成本 保证 cost-to-go 严格递减;LQR 是其特例
- Safe RL:学策略的同时学/验证一个 ,约束 在安全集内成立,取水平集 嵌入安全集作不变域——稳定性证书变成可优化的约束
- MPC 稳定性:终端代价充当 Lyapunov 函数 + 终端集不变性,是递归可行与闭环收敛的标准证明装置
- 自适应控制:参数更新律的设计目标就是消去 中的参数误差交叉项——整门学科的证明引擎是同一个