第三章 李雅普诺夫稳定性理论在非线性系统中的应用

说实话,我刚入行那会儿,对李雅普诺夫理论是有点发怵的。

为什么?因为教科书上全是数学推导,什么正定函数、负定导数,看得人头晕。但后来我发现,这东西说白了就是一套判断系统「会不会跑飞」的工具。你想想看,我们做控制,最怕什么?最怕系统不稳定,输出乱跳,甚至炸机。

李雅普诺夫理论,就是帮你提前判断——这个非线性系统,到底稳不稳。

3.1 为什么非线性系统需要专门的稳定性分析?

线性系统有成熟的判据,比如劳斯判据、奈奎斯特图。但非线性系统不一样。我在项目中遇到过好几次,明明线性化模型算出来是稳定的,实际一跑就发散。

为什么会这样?

因为非线性系统有它自己的脾气。比如:

  • 多平衡点:一个系统可能有多个稳定点,你落在哪个点,取决于初始状态
  • 极限环:系统可能不收敛到固定点,而是在一个环上振荡
  • 混沌:对初始条件极度敏感,稍微差一点,轨迹就完全不同

所以,我们需要一套不依赖线性化的工具。李雅普诺夫直接法,就是干这个的。

3.2 李雅普诺夫稳定性的基本概念

先理清几个关键定义。我个人习惯把它们分成三个层次:

稳定性类型 通俗理解 工程意义
李雅普诺夫意义下稳定 系统状态不会跑太远 系统不会炸,但可能有小振荡
渐近稳定 系统最终回到平衡点 这是我们最想要的结果
大范围渐近稳定 不管初始状态在哪,都能回来 全局稳定,鲁棒性最强

嗯,这里要注意:大范围渐近稳定在工程中很难保证。我做过一个机械臂项目,理论上全局稳定,但实际因为摩擦和间隙,某些角度下就是会抖。所以别太迷信理论上的「全局」二字。

3.3 李雅普诺夫直接法——核心思想

直接法的思路其实很朴素:

找一个能量函数 V(x),如果这个能量一直在减小,那系统最终就会停在能量最低点。

数学上就是两条:

  1. V(x) 是正定的(能量大于0,只在平衡点为0)
  2. V̇(x) 是负定的(能量一直在减少)

就这么简单。但难点在于——V(x) 怎么找?

我刚开始学的时候,总觉得这像玄学。后来做多了才发现,其实有套路可循。

3.4 实战中常用的李雅普诺夫函数构造方法

这里分享几个我常用的方法,都是实战中验证过的:

3.4.1 二次型函数法

最经典的形式:V(x) = xᵀPx

其中 P 是正定对称矩阵。对于线性系统,解李雅普诺夫方程就能得到 P。对于非线性系统,我一般先做线性化,用线性化的 P 作为初值,再手动调整。

% 一个简单的例子:二阶非线性系统
% dx1/dt = x2
% dx2/dt = -x1 - x2^3

% 我习惯先试二次型 V = 0.5*x1^2 + 0.5*x2^2
% 求导后得到 V̇ = -x2^4
% 这个 V̇ 是半负定的,只能证明稳定,不是渐近稳定

% 改进:加交叉项 V = 0.5*x1^2 + 0.5*x2^2 + a*x1*x2
% 选择合适的 a 可以让 V̇ 变成负定
我的经验:二次型函数对「弱非线性」系统效果很好。如果非线性项很强,二次型往往不够用,需要引入更高次的项。

3.4.2 变量梯度法

这个方法我用的不多,但遇到复杂系统时很管用。思路是:

  1. 假设 V̇ 是一个负定函数
  2. 反推 V 的梯度
  3. 积分得到 V

说白了,就是「先定结果,再找原因」。我在一个磁悬浮项目中用过一次,效果不错,但计算量比较大。

3.4.3 物理能量法

这是我最推荐的方法。如果你对系统的物理意义理解得深,直接用系统的真实能量作为 V(x)。

比如:

  • 机械系统:动能 + 势能
  • 电路系统:电感储能 + 电容储能
  • 热力系统:熵

这样做的好处是:V(x) 有明确的物理意义,调试时容易理解。

避坑指南:我曾经在一个液压伺服系统中直接用物理能量做 V(x),结果发现因为摩擦耗散没建模,V̇ 算出来是正的。后来加了摩擦项的补偿,才得到正确的结论。所以,用物理能量法时,一定要确认你的模型包含了所有耗散环节。

3.5 李雅普诺夫稳定性分析的核心逻辑

为了让你更直观地理解整个分析流程,我画了一张图:

李雅普诺夫稳定性分析流程图 步骤1:建立非线性系统模型 步骤2:确定平衡点并坐标变换 步骤3:构造李雅普诺夫函数 V(x) 二次型法 物理能量法 步骤4:计算 V̇(x) 并判断符号 步骤5:根据 V̇ 符号判断稳定性 V̇负定→渐近稳定 V̇正定→不稳定 若V̇半负定:需进一步用LaSalle不变集定理

3.6 一个完整的实战案例

拿我做过的一个单摆控制来说吧。单摆的模型是:

ml²θ̈ + bθ̇ + mgl·sin(θ) = u

其中:
- θ 是摆角
- b 是阻尼系数
- u 是控制力矩

我的目标是设计一个控制器,让单摆稳定在 θ=0。

第一步:选 V(x)

我直接用物理能量:

V = 0.5*ml²*θ̇² + mgl*(1 - cos(θ))

第一项是动能,第二项是势能(相对于最低点)

第二步:算 V̇

V̇ = ml²θ̇·θ̈ + mgl·sin(θ)·θ̇
   = θ̇·(u - bθ̇ - mgl·sin(θ)) + mgl·sin(θ)·θ̇
   = θ̇·u - bθ̇²

第三步:设计控制律

为了让 V̇ 负定,我取 u = -kθ̇,则:

V̇ = -(b + k)θ̇² ≤ 0

嗯,这里要注意:V̇ 是半负定的(只含 θ̇,不含 θ)。

所以只能证明稳定,不能证明渐近稳定。那怎么办?

用 LaSalle 不变集定理。分析发现,V̇=0 时 θ̇=0,代入原方程得到 θ=0。所以系统确实是渐近稳定的。

核心要点:李雅普诺夫直接法不是万能的,但它给了我们一个系统性的框架。实战中,我一般先用二次型试水,不行再换物理能量法。如果还不行,那就用变量梯度法硬算。

3.7 避坑指南与实战建议

最后,分享几个我踩过的坑:

  • 别死磕正定性:有时候 V 在局部是正定的就够了,不一定非要全局正定
  • V̇ 的符号判断要小心:我吃过一次亏,算出来 V̇ 是负的,但实际系统在振荡。后来发现是数值计算误差导致的误判
  • 多试试不同的 V:没有万能公式,多试几种构造方法,总有一款适合你
  • 结合仿真验证:理论分析完了,一定要跑仿真。我见过太多理论稳定但仿真发散的情况

李雅普诺夫理论,说白了就是一把尺子。用好了,能帮你省下大量调试时间。用不好,那就是一堆数学符号。关键在于多练、多试、多总结。


公众号:蓝海资料掘金营,微信deep3321