第三章 李雅普诺夫稳定性理论在非线性系统中的应用
说实话,我刚入行那会儿,对李雅普诺夫理论是有点发怵的。
为什么?因为教科书上全是数学推导,什么正定函数、负定导数,看得人头晕。但后来我发现,这东西说白了就是一套判断系统「会不会跑飞」的工具。你想想看,我们做控制,最怕什么?最怕系统不稳定,输出乱跳,甚至炸机。
李雅普诺夫理论,就是帮你提前判断——这个非线性系统,到底稳不稳。
3.1 为什么非线性系统需要专门的稳定性分析?
线性系统有成熟的判据,比如劳斯判据、奈奎斯特图。但非线性系统不一样。我在项目中遇到过好几次,明明线性化模型算出来是稳定的,实际一跑就发散。
为什么会这样?
因为非线性系统有它自己的脾气。比如:
- 多平衡点:一个系统可能有多个稳定点,你落在哪个点,取决于初始状态
- 极限环:系统可能不收敛到固定点,而是在一个环上振荡
- 混沌:对初始条件极度敏感,稍微差一点,轨迹就完全不同
所以,我们需要一套不依赖线性化的工具。李雅普诺夫直接法,就是干这个的。
3.2 李雅普诺夫稳定性的基本概念
先理清几个关键定义。我个人习惯把它们分成三个层次:
| 稳定性类型 | 通俗理解 | 工程意义 |
|---|---|---|
| 李雅普诺夫意义下稳定 | 系统状态不会跑太远 | 系统不会炸,但可能有小振荡 |
| 渐近稳定 | 系统最终回到平衡点 | 这是我们最想要的结果 |
| 大范围渐近稳定 | 不管初始状态在哪,都能回来 | 全局稳定,鲁棒性最强 |
嗯,这里要注意:大范围渐近稳定在工程中很难保证。我做过一个机械臂项目,理论上全局稳定,但实际因为摩擦和间隙,某些角度下就是会抖。所以别太迷信理论上的「全局」二字。
3.3 李雅普诺夫直接法——核心思想
直接法的思路其实很朴素:
找一个能量函数 V(x),如果这个能量一直在减小,那系统最终就会停在能量最低点。
数学上就是两条:
- V(x) 是正定的(能量大于0,只在平衡点为0)
- 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 变量梯度法
这个方法我用的不多,但遇到复杂系统时很管用。思路是:
- 假设 V̇ 是一个负定函数
- 反推 V 的梯度
- 积分得到 V
说白了,就是「先定结果,再找原因」。我在一个磁悬浮项目中用过一次,效果不错,但计算量比较大。
3.4.3 物理能量法
这是我最推荐的方法。如果你对系统的物理意义理解得深,直接用系统的真实能量作为 V(x)。
比如:
- 机械系统:动能 + 势能
- 电路系统:电感储能 + 电容储能
- 热力系统:熵
这样做的好处是:V(x) 有明确的物理意义,调试时容易理解。
3.5 李雅普诺夫稳定性分析的核心逻辑
为了让你更直观地理解整个分析流程,我画了一张图:
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