Series · ODE Foundations · Chapter 7

常微分方程(七):稳定性理论

桥梁能否扛住大风?生态系统能否从冲击中恢复?稳定性理论用 Lyapunov 函数、线性化和分岔分析回答这些问题——而且不需要解方程。

给系统轻轻一推,它会回到平衡,还是漂走,又或者干脆崩溃? 这一个问题决定了桥梁能否扛住风暴、生态系统能否从干旱中恢复、经济能否从危机中反弹。稳定性理论告诉我们答案——而且不需要解微分方程。我们将学会如何从相平面的几何图形中读出系统的命运。

本章要点

  • 三个精确定义:Lyapunov 稳定、渐近稳定、不稳定
  • Jacobian 线性化与 Hartman-Grobman 定理
  • Lyapunov 直接方法:用类能量函数证明稳定性
  • LaSalle 不变集原理处理边界情况
  • 迹-行列式平面对所有 2D 线性系统的统一分类
  • 四种典范分岔:鞍-结点、跨临界、叉型、Hopf
  • 实例:单摆、捕食模型、倒立摆控制

前置知识

  • 第六章:线性系统、特征值、相图
  • 多元微积分:偏导数、Jacobian 矩阵

先看图:六张图讲完线性系统

稳定性的本质是几何——它描述了相空间中轨迹如何流动。六张图把 2D 线性系统的全部故事讲清楚。

六种典范 2D 相图:稳定螺旋、不稳定螺旋、稳定结点、鞍点、中心、退化结点。
六种典范 2D 相图。实线是正向轨道,虚线是反向轨道。线性化的特征值决定了你看到哪幅画。

非线性系统在每个平衡点附近局部呈现同样的六种图形之一。阻尼单摆和 Lotka-Volterra 捕食模型都是绝佳例子:

阻尼单摆(左)和 Lotka-Volterra(右)轨迹叠加在向量场上。
阻尼单摆:θ 轴上稳定焦点(圆点)与鞍点(叉号)交替出现。Lotka-Volterra:闭合轨道环绕一个非双曲的中心。


稳定性的精确定义

考虑 $\mathbf{x}' = \mathbf{f}(\mathbf{x})$ 的平衡点 $\mathbf{x}^*$(满足 $\mathbf{f}(\mathbf{x}^*) = \mathbf{0}$)。

$$\|\mathbf{x}(0) - \mathbf{x}^*\| < \delta \;\Longrightarrow\; \|\mathbf{x}(t) - \mathbf{x}^*\| < \varepsilon, \;\; \forall\, t > 0.$$

直觉:附近的轨迹永远保持附近。

渐近稳定。 Lyapunov 稳定 $\mathbf{x}(t) \to \mathbf{x}^*$。 直觉:附近的轨迹不仅保持附近,最终还会回家。

不稳定。 不满足 Lyapunov 稳定。

吸引域是所有最终收敛到 $\mathbf{x}^*$ 的初值集合。渐近稳定是个局部性质——吸引域告诉你局部有多大。

为什么要两个定义? 中心(闭合轨道)是 Lyapunov 稳定但不是渐近稳定——轨迹"绕着不掉下来"。Lotka-Volterra 是经典案例。


线性化:Jacobian 方法

$$\mathbf{x}' \;\approx\; J(\mathbf{x} - \mathbf{x}^*), \qquad J_{ij} = \frac{\partial f_i}{\partial x_j}\bigg|_{\mathbf{x}^*}.$$

Hartman-Grobman 定理

若 $J$ 的所有特征值实部非零双曲平衡点),则非线性系统在 $\mathbf{x}^*$ 附近与线性系统 $\mathbf{u}' = J\mathbf{u}$ 拓扑等价

  • 所有 $\operatorname{Re}(\lambda) < 0$:渐近稳定
  • 存在 $\operatorname{Re}(\lambda) > 0$:不稳定
  • 纯虚特征值:线性化失效——必须用 Lyapunov 方法

实例:阻尼单摆

$$\theta'' + \gamma\theta' + \omega_0^2\sin\theta = 0$$
平衡点Jacobian结论
$(0,0)$ 下垂$\begin{pmatrix}0 & 1 \\ -\omega_0^2 & -\gamma\end{pmatrix}$$\gamma>0$ 时实部全负:稳定焦点
$(\pi,0)$ 倒立$\begin{pmatrix}0 & 1 \\ \omega_0^2 & -\gamma\end{pmatrix}$一个正特征值:鞍点,不稳定
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

gamma, omega0 = 0.3, 1.0
def pendulum(X, t):
    x, y = X
    return [y, -gamma*y - omega0**2*np.sin(x)]

fig, ax = plt.subplots(figsize=(10, 6))
t = np.linspace(0, 50, 2000)
for x0 in np.linspace(-3*np.pi, 3*np.pi, 15):
    for y0 in np.linspace(-3, 3, 5):
        sol = odeint(pendulum, [x0, y0], t)
        ax.plot(sol[:,0], sol[:,1], 'b-', linewidth=0.3, alpha=0.5)
ax.set_title('阻尼单摆相图')
ax.grid(True, alpha=0.3); plt.tight_layout(); plt.show()

Lyapunov 直接方法

核心思想

不解方程证明稳定性。构造一个类能量的标量函数 $V(\mathbf{x})$,证明它沿轨迹递减

要求。

  1. $V(\mathbf{x}^*) = 0$,其它地方 $V > 0$(正定)
  2. $\dot V = \nabla V \cdot \mathbf{f}(\mathbf{x}) \leq 0$ 沿轨道

稳定性定理。

$\dot V$ 的符号结论
$\dot V \leq 0$$\mathbf{x}^*$ Lyapunov 稳定
$\dot V < 0$(除 $\mathbf{x}^*$ 外)渐近稳定
$V > 0,\ \dot V > 0$不稳定(Chetaev)

几何直觉

轨迹从外向内穿越 $V$ 的等位面。由于 $V$ 在 $\mathbf{x}^*$ 处取得最小值,轨迹无法逃出小等位面,并(在严格递减条件下)一路滑到底。

Lyapunov 曲面如同碗状,轨迹滑入碗底;右图显示 V(t) 单调递减。
左:轨迹滑下碗 $V(x,y) = x^2 + \tfrac12 y^2$。右:$V$ 沿每条轨迹单调递减——这就是渐近稳定性的几何证明。

怎么找 $V$?

  • 物理能量: 力学系统的动能 + 势能
  • 二次型: $V = \mathbf{x}^T P \mathbf{x}$,其中 $P$ 满足 Lyapunov 方程 $A^T P + PA = -Q$
  • 试错: 从 $V = x^2 + y^2$ 开始,算 $\dot V$,调系数

实例:单摆能量

$$V(\theta, \omega) = \tfrac{1}{2}\omega^2 + (1 - \cos\theta), \qquad \dot V = -\gamma\omega^2 \leq 0.$$

下垂位置稳定。下面的 LaSalle 原理把它升级为渐近稳定。


LaSalle 不变集原理

有时 $\dot V \leq 0$ 但在整个集合上为零——标准 Lyapunov 只能给出稳定,给不出收敛。

定理。 设 $E = \{\mathbf{x} : \dot V = 0\}$,$M$ 是 $E$ 中的最大不变子集。每条有界轨迹都趋向 $M$。

若 $M = \{\mathbf{x}^*\}$,则 $\mathbf{x}^*$ 渐近稳定。

阻尼单摆:$\dot V = 0$ 要求 $\omega = 0$。但在 $\omega = 0$ 这条直线上动力学强迫 $\dot\omega = -\omega_0^2 \sin\theta \neq 0$(除非也满足 $\theta = 0$)。所以 $M = \{(0,0)\}$,免费得到渐近稳定。


迹-行列式分类

对 $\mathbf{x}' = A\mathbf{x}$(2D),令 $\tau = \operatorname{tr}(A)$,$\Delta = \det(A)$。则 $\lambda_{1,2} = \tfrac12(\tau \pm \sqrt{\tau^2 - 4\Delta})$。

区域类型
$\Delta < 0$鞍点
$\Delta > 0,\ \tau < 0,\ \tau^2 > 4\Delta$稳定结点
$\Delta > 0,\ \tau > 0,\ \tau^2 > 4\Delta$不稳定结点
$\Delta > 0,\ \tau < 0,\ \tau^2 < 4\Delta$稳定螺旋
$\Delta > 0,\ \tau > 0,\ \tau^2 < 4\Delta$不稳定螺旋
$\Delta > 0,\ \tau = 0$中心
$\tau^2 = 4\Delta$退化 / 反常结点

一张图压缩了整张表:

迹-行列式平面被分隔成稳定/不稳定的螺旋、结点、鞍点、中心区域。
迹-行列式平面。抛物线 $\tau^2 = 4\Delta$ 把螺旋(上)和结点(下)分开。$\Delta$ 正半轴是中心的轨迹。


分岔:图本身在变化

慢慢拧动参数旋钮 $r$,平衡点会出生、死亡、互换稳定性。四个"标准型"涵盖了所有余维 1 的局部分岔。

四种典范分岔图:鞍-结点、跨临界、叉型、Hopf。
实绿线:稳定平衡点。虚红线:不稳定。Hopf 面板展示极限环半径 $\sqrt{\mu}$ 从零增长。

分岔类型标准型现象
鞍-结点$\dot x = r + x^2$两个平衡点在 $r = 0$ 相撞湮灭
跨临界$\dot x = rx - x^2$两个平衡点穿越彼此并交换稳定性
叉型$\dot x = rx - x^3$一个平衡点分裂为三个(对称破缺)
Hopf复特征值穿越 $i\mathbb{R}$稳定焦点失稳,极限环诞生

Hopf 是自然界一切自持振荡的来源——从心跳到变星脉动。


应用 1:Lotka-Volterra 捕食模型

$$x' = ax - bxy, \qquad y' = -cy + dxy$$$$H(x,y) = dx - c\ln x + by - a\ln y$$

保证每条轨道闭合。系统呈现周期性种群波动(图 2 右)。

应用 2:倒立摆控制

倒立平衡点是鞍点。线性反馈 $u = -K\mathbf{x}$ 把闭环特征值移到左半平面,把鞍点变成稳定焦点。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import numpy as np
from scipy.linalg import solve_continuous_are
from scipy.integrate import odeint

g, l, m, M_cart = 9.81, 0.5, 0.1, 1.0
A = np.array([[0,1,0,0],[0,0,-m*g/M_cart,0],
              [0,0,0,1],[0,0,(M_cart+m)*g/(M_cart*l),0]])
B = np.array([[0],[1/M_cart],[0],[-1/(M_cart*l)]])
Q = np.diag([10, 1, 100, 1]); R = np.array([[0.1]])
P = solve_continuous_are(A, B, Q, R)
K = np.linalg.inv(R) @ B.T @ P
print("闭环特征值:", np.linalg.eigvals(A - B @ K))

总结

概念核心要点
Lyapunov 稳定附近轨迹保持附近
渐近稳定附近轨迹收敛到平衡点
线性化Jacobian 特征值决定局部命运(双曲条件下)
Lyapunov 函数不积分就能证明稳定性的类能量函数
LaSalle 原理用不变集把 $\dot V \leq 0$ 升级为渐近稳定
迹-行列式平面一张图分类所有 2D 线性系统
分岔鞍-结点、跨临界、叉型、Hopf——图变化的四种方式

练习题

基础题。

  1. 判断稳定性:(a) $x' = -x,\ y' = -2y$;(b) $x' = y,\ y' = -\sin x - 0.5y$。
  2. 用 $V = x^2 + y^2$ 分析 $x' = -x + y^2,\ y' = -y$。
  3. 找出 $\dot x = rx - x^3$ 的所有分岔点。

进阶题。

  1. 证明总能量是阻尼单摆的 Lyapunov 函数,再用 LaSalle 推出渐近稳定。
  2. 分析 Van der Pol 振子:证明原点不稳定但存在稳定极限环。
  3. 对 Lotka-Volterra 竞争模型,推导共存与排斥的条件。

编程题。

  1. 根据迹和行列式自动分类 2D 线性系统平衡点;复现图 3。
  2. 动画演示 Hopf 分岔:扫描 $\mu$,观察极限环生长。

参考资料

  • Strogatz, Nonlinear Dynamics and Chaos, CRC Press (2015)
  • Khalil, Nonlinear Systems, Prentice Hall (2002)
  • Guckenheimer & Holmes, Nonlinear Oscillations, Dynamical Systems, and Bifurcations, Springer (1983)
  • Perko, Differential Equations and Dynamical Systems, Springer (2001)

系列导航

当前第七章:稳定性理论
下一章第八章:非线性系统与相图

Liked this piece?

Follow on GitHub for the next one — usually one a week.

GitHub