李雅普诺夫第二方法精讲:不求解微分方程判定系统稳定性
2026/9/18 1:38:29 网站建设 项目流程

刚入行做控制的时候,我在调一套机械臂关节伺服,仿真里PD参数调好后,位置误差曲线很快收敛到零,看起来很漂亮。但评审会上前辈问了一个让我记到现在的问题:你凭什么说这个闭环是稳定的?我当时只能把仿真图递过去,他摇摇头说,仿真只证明了你跑的那条轨迹没问题,不能证明系统本身稳定。真正能回答这个问题的工具,就是李雅普诺夫第二方法,也就是直接法。它不需要求解系统的微分方程,而是通过构造一个类似“能量”的标量函数V(x),观察它沿系统轨迹的变化趋势来判定稳定性。这篇文章不打算堆公式定义,我会从第二方法的核心直觉讲起,把正定函数、沿轨导数、稳定性分级、LaSalle不变集定理这些概念逐一拆开,配四道完整例题,再分享几类构造V函数的工程方法和踩坑经验,适合刚学非线性控制、在复习自动控制原理,或者需要在工程评审里做严格稳定性论证的工程师。

1. 先回答一个工程直觉问题:为什么仿真收敛不能证明系统稳定

1.1 第一方法(线性化)的成立条件和两个软肋

很多人在学校最早接触的稳定性判定,是李雅普诺夫第一方法,也就是间接法。它的核心思路很简单:在平衡点附近把非线性系统线性化,然后看雅可比矩阵的特征值实部。如果所有特征值实部都小于零,就说系统局部渐近稳定。

这个方法是有效的,Hartman-Grobman定理保证,在双曲平衡点附近,非线性流形和线性化系统的流形拓扑等价。但它在工程上一直让我不太安心,原因有二。

第一个软肋是临界情形。只要某个特征值实部恰好为零,线性化的结论就作废了,稳定性由更高阶的非线性项决定。比如系统ẋ = -x³,线性化后是ẋ = 0,特征值在虚轴上,可实际系统到处收敛于零。反过来系统ẋ = x³,同样线性化为零,实际轨迹却会发散。这种情况在工程里不罕见,机械臂接近奇异位形时,线性化雅可比矩阵就经常出现近零特征值,只靠线性化判断容易翻车。

第二个软肋更现实:局部性。线性化给出的“渐近稳定”只覆盖平衡点周围一个很小很小的邻域,它不告诉你这个邻域到底有多大。可工程上最想知道的事情恰恰是,给定多大的初始偏差,系统还能拉回来。你去问线性化分析,它只能沉默。所以真正做产品级控制器验证时,我基本不会只依赖第一方法,必须配一个能给出定量结论的工具。

1.2 第二方法的核心直觉:不求解轨迹,只盯能量

第二方法的出发点,是一种非常物理化的直觉:如果一个系统是稳定的,那么它的某种“广义能量”在运动过程中应该不能自发增加。单摆没有阻尼时,总机械能守恒,摆来摆去但不会停下来,这对应“稳定但不渐近收敛”;一旦加入阻尼,能量沿着运动轨迹不断损耗,摆最终停在最低点,这就是“渐近稳定”。

这个直觉的神奇之处在于,它根本不需要解微分方程。你只需要构造一个标量函数V(x),它在原点处为零、在原点以外的考察区域内为正,然后计算它沿着系统轨迹的时间导数。只要这个导数非正,就说明V在衰减,系统状态被“压”在一族不断缩小的等值面里,不会跑远;如果导数是严格负的,那么V一路下降,轨迹必然被推向V的最小值点,也就是原点。

这就是李雅普诺夫第二方法——或者叫直接法——的全部框架。它把复杂的微分方程定性分析,装进了一个标量函数的单调性判断里。对非线性系统来说,这一招尤其好用,因为解非线性方程几乎不可能,但找一个正定函数并求导数,手算也能完成。

这里需要停顿一下,强调一个我后来带新人时常提醒的点。很多人把V̇ < 0当成“证明稳定”的终点,其实漏了前提:V本身必须正定。V正定保证原点是V的“洼地”,V̇负定保证轨迹一直在往洼地走。两个条件缺一不可。后面例题里你会看到,V选择不当会让整个证明失效,而且错误经常藏在V的正定性检查上。

1.3 第二方法能站住脚的深层原因:拓扑与比较函数

如果要稍微往深处看一眼,第二方法为什么能有这么强的结论,背后有两层支撑。

第一层是拓扑观点。V的正定等值面一族把原点层层包围,V̇≤0意味着轨迹只能从外层的等值面往内层穿,永远出不去。这等于是用一族闭曲面把状态空间“装订”起来,不需要知道轨迹具体怎么走,就知道它跑不出某个等值面。对于渐近稳定,V̇ < 0 等价于轨迹在不停地穿过更小的等值面,最后被压到原点。

第二层更精细的刻画需要用一类特殊的比较函数,就是K类函数。一个连续严格递增且满足α(0) = 0的函数α,如果满足α₁(‖x‖) ≤ V(x) ≤ α₂(‖x‖),那么V的正定性就能跟状态范数建立可量化的关系。这个概念看起来抽象,作用却很实在:它是区分普通稳定和一致稳定、甚至定量估计收敛速率的关键工具。你在论文里看到“从K类函数的角度”“输入到状态稳定”这些说法,本质上都在用它。

有了这层理解,后面的定理分级才不容易混乱。教科书上罗列的稳定、渐近稳定、全局渐近稳定等结论,并不是同一句话换了个说法,而是条件逐渐加强、结论也逐渐加强的阶梯。下面我按这个阶梯逐级拆开。

2. 判定稳定性的底层工具:正定性、V函数与沿轨导数

2.1 V(x)应该长什么样:从机械能到一般李雅普诺夫函数

先给一个实操中最好用的理解方式:V(x)就是系统状态的“能量计”。它本身必须是状态x的函数,不显含时间t,这是处理自治系统的标准设定;对于非自治系统,V往往还要显式带t,但是本文只讨论自治系统,这样V̇的定义区最简洁。

数学上正定函数的要求是三条:第一,V(0) = 0;第二,在考察的包含原点的区域D内,对任意x ≠ 0都有V(x) > 0;第三,V连续可微。看起来简单,但注意“连续可微”这个条件常被忽略。你构造一个带绝对值或者带尖角的V,在原点处不可导,V̇就不存在,整套方法立刻失效。我见过有人用V = |x₁| + x₂²做候选,因为不可导,根本没法算沿轨导数。

最经典的正定函数自然是二次型V = xᵀPx,其中P是正定对称矩阵。它的正定性可以由主子式全部为正来验证。但不要以为V一定得是二次型。V = x₁⁴ + 3x₁²x₂² + x₂⁶也是正定的,虽然它没有任何二次项。判断正定性,本质上就是判断这个函数在原点除了零点之外是否严格大于零,不限于某项次数。

从物理系统出发时,V通常就选系统的总能量。机械臂系统的总机械能、电路系统的电磁储能、热力学系统的自由能,都是天然的候选V。这就是第二方法跟物理直觉结合得最紧密的地方,也是为什么“能量法”这个名字在很多教科书里被直接拿来称呼它。

2.2 沿轨导数V̇为什么能代表系统的耗散性

有了V之后,怎么算它沿系统轨迹的变化?给定自治系统ẋ = f(x),V对时间的全导数可以写成链式法则:

V̇(x) = ∂V/∂x₁ f₁(x) + ∂V/∂x₂ f₂(x) + … + ∂V/∂xₙ fₙ(x)

在数学上更紧凑的写法是V̇ = ∇Vᵀ f(x) = L_f V(x),这里L_f V叫V关于向量场f的李导数。这个名字听起来高级,实际含义很朴素:V随着系统流一起运动时,单位时间内变化的速率。

关键的物理解读在这里。如果V̇(x) ≤ 0 对D内一切x都成立,就说明系统的“能量”在运动过程中永不增加。哪怕它某一段不降,也只是暂时持平,绝不可能自己涨回去。这样V(x(t))是有界单调非增函数,必然有极限,状态x(t)就被限制在某个紧集里,不会逃逸。

如果V̇(x) < 0,符号严格为负,那更进一层:每当状态偏离原点,V就在严格下降,没有一个非原点的地方能让能量停留。于是系统状态不断“滑”向V的极小值点,也就是原点。这里有一个我经常向前同事强调的实操判断:算完V̇之后,先别急着看全空间符号,先看它在“除了原点之外的地方”是不是严格小于零。如果某个非零状态恰好让V̇ = 0,后续必须用LaSalle不变集定理补一步,否则不能直接给出渐近稳定结论。

2.3 线性系统直接用Lyapunov方程求V的数学原理

当系统退化为线性定常系统ẋ = Ax时,V的构造有明确公式,不用瞎猜。取V = xᵀPx,其中P是待定的对称正定矩阵,把它代入沿轨导数:

V̇ = xᵀ(AᵀP + PA)x

为了让系统渐近稳定,我们希望V̇是负定的,最简单粗暴的做法是令

AᵀP + PA = -Q

其中Q是某个给定的正定对称矩阵,最常用的是Q = I。这个矩阵方程就叫李雅普诺夫方程,它是线性的,对给定的A和Q,P可以通过展开方程逐元素解出来。

为什么这个方程值得单独拿出来讲?因为对线性系统它给出的是充要条件:A的所有特征值实部为负,等价于对任意正定Q,方程都存在唯一正定解P。所以你解出一个正定的P,就等于严格证明了系统全局渐近稳定,而且V = xᵀPx还附带给出了一个二次型的能量解释。工程上用MATLAB只需要一行lyap(A', Q)或者P = lyap(A', Q),但手算一道两阶的题,能极大加深对这个过程的记忆。第4章例4我会把完整的矩阵展开过程写出来。

这里提醒一个容易踩的坑:如果A有纯虚特征值,方程仍然可能有解,但解出的P可能不正定。这对应临界稳定情形,此时第二方法只能给出“稳定”而不能给出“渐近稳定”。不要看到一个P就急着说稳,先检查P是否正定,再检查V̇是否确实是负定的,两个条件合成一条完整证据链。

3. 四个稳定性结论的适用条件:稳定、渐近稳定、全局稳定与LaSalle定理

3.1 稳定与渐近稳定之间差的那一点

“稳定”和“渐近稳定”在日常中文里听起来差不多,在控制理论里差得非常多。稳定只承诺:如果初始状态离原点足够近,那么之后所有时刻的状态都控制在一个给定的范围内。它不承诺收敛到原点,也不承诺收敛到任何地方。典型的例子就是无阻尼单摆,它在平衡点附近做等幅振荡,能量守恒,稳定但不渐近稳定,因为轨迹不会最终停在原点。

对应到V函数上,稳定对应V正定且V̇≤0。V̇只要求非正,允许它等于零在某个非零集合上一直成立。这时候系统能量不增加,但也可能不减少,轨迹就在某个等值面上打转。而渐近稳定要求在原点邻域内V̇严格负定,也就是对一切非零状态,能量都在严格下降,轨迹最终被拖回原点。

这个差别在工程里的实际意义很大。一个只稳定不渐近稳定的系统,本质上存在“持续的振荡模式”,位置误差可能一直在允许的范围内波动,但永远不为零。对需要精确定位的伺服系统来说,稳定是不够的,你必须证明渐近稳定。

3.2 全局渐近稳定:径向无界与单平衡点缺一不可

把渐近稳定的结论从局部推广到全状态空间,需要额外两个条件,这也是新手最容易掉进去的坑。

第一个条件是径向无界。定义是当‖x‖ → ∞时,V(x) → ∞。直观上,V的等值面要随着V增大而无限向外扩张,把整个状态空间都包住。如果没有这个条件,V可能只在某个有限区域内是“碗状”的,一旦初值跑出这个区域,V就不再能提供约束,系统完全可能发散。局部渐近稳定和全局渐近稳定的差距,就在V的这个“碗口”开不开到无穷远。

第二个条件经常被忽略:全局渐近稳定要求系统在整个状态空间内只有原点这一个平衡点。如果系统除了原点还有别的平衡点,比如一个三维系统同时有两个稳定的平衡点,那就不可能做到全局渐近稳定,因为从一个平衡点出发的轨迹根本不会离开,更不可能收敛到另一个。这是逻辑上的必要条件,跟V怎么选无关。

造一个例子来说明:一维系统ẋ = -x(x² - 1),它有x=0、x=±1三个平衡点。有人在原点附近取V = x²,V̇ = -2x²(x² - 1)。在|x|<1区域内V̇是负的,看起来系统渐近稳定。但如果取初值x=2,状态会被x=1这个平衡点挡住,根本回不到原点。如果当初只验证V在局部正定,没有检查全局条件,就会得出错误结论。

3.3 LaSalle不变集定理:处理V̇半负定的补救方案

工程系统里,V̇ = 0在非零集合上成立的情形太常见了,尤其是机械系统。弹簧-质量-阻尼系统用总机械能做V的时候,阻尼项只出现在速度状态上,V̇ = -cx₂²只在x₂ = 0处为零。如果速度为零但位移不为零,V̇ = 0,你没法直接得到渐近稳定结论,但工程直觉告诉我们系统最终应该会稳定下来。这里需要的正是LaSalle不变集定理。

定理的表述是这样的:如果V在某个紧的正不变集Ω上正定,V̇ ≤ 0,那么系统的轨迹最终会收敛到E = {x ∈ Ω : V̇(x) = 0}的最大不变子集M中。如果M里除了原点没有其他轨迹能停留,那么原点就是渐近稳定的。

使用这个定理有一个关键动作:拿到V̇ = 0的集合后,必须把它代回原系统方程,看有没有一条非零的完整轨迹能够一直停留在这个集合里。比如V̇ = -x₂²,令x₂ = 0且x₂恒为零,那么ẋ₂也必须恒为零,把x₂ = 0、ẋ₂ = 0代入第二个状态方程,通常能解得x₁也只能是零。这样就排除了非零轨迹停留在E里的可能,推论出渐近稳定成立。

3.4 工程中怎么选择定理层级

给你一个我在实际分析中用的决策顺序,可以当作清单:

  1. 先判断系统是不是线性定常。如果是,优先走Lyapunov方程路线,结论最强,还能量化收敛速率。
  2. 如果是非线性系统,先从物理意义找能量函数,求出V̇,看符号。
  3. V̇严格负定,且V径向无界,直接给全局渐近稳定结论。
  4. V̇只是半负定,用LaSalle定理补检查,确认V̇ = 0集合中没有非零不变轨迹。
  5. V̇有正有负,V选择失败,换候选V,或者用区域分解分别分析。
  6. 只关心某个工作点附近的稳定性,可以接受局部结论,那就不强求径向无界,但要在结论里明确说明这是局部渐近稳定,并尽量用仿真或数值方法估计吸引域范围。

这套决策顺序看起来朴素,但它能防止你在一篇论文里看到V̇≤0就直接抄结论。很多系统不是不满足LaSalle定理,而是忘了验证“最大不变集只有原点”这一步。

4. 例题实战:从线性到非线性四道完整解答

4.1 例1:二次型V直接证明全局渐近稳定

第一个例子是最典型、也最容易被误认为“太简单”的非线性系统:

ẋ₁ = x₂ - x₁(x₁² + x₂²) ẋ₂ = -x₁ - x₂(x₁² + x₂²)

直观上看,这个系统的非线性项带了一个径向“阻尼因子”ρ = x₁² + x₂²,系统有把状态往原點拽的趋势。我取候选V = x₁² + x₂²,这显然正定,且当‖x‖→∞时V→∞,径向无界。

求沿轨导数:

V̇ = 2x₁[x₂ - x₁ρ] + 2x₂[-x₁ - x₂ρ] = 2x₁x₂ - 2x₁²ρ - 2x₁x₂ - 2x₂²ρ = -2ρ(x₁² + x₂²) = -2(x₁² + x₂²)²

这个表达式在任何非零状态处都严格小于零,在原点处等于零,所以V̇负定。由Barbashin-Krasovskii定理,系统全局渐近稳定。

这道题值得注意的地方是V̇化简时交叉项2x₁x₂恰好抵消了。这种抵消不是偶然的,而是系统本身带有一个类似“旋转对称”的结构,能量法天然适配。如果系统里交叉项抵消不完全,V̇会出现不定符号,就得考虑加交叉项,这正是后面第5章要讲的技巧。

4.2 例2:弹簧-质量-阻尼系统的能量法证明

第二个例子从物理直觉出发。质量-弹簧-阻尼系统:

mẍ + cẋ + kx = 0

其中m、c、k都是正常数。令x₁ = x,x₂ = ẋ,写成状态方程:

ẋ₁ = x₂ ẋ₂ = -(k/m)x₁ - (c/m)x₂

系统总机械能是势能与动能之和:

V(x) = ½kx₁² + ½mx₂²

这个V正定且径向无界。沿轨导数:

V̇ = kx₁x₂ + mx₂[-(k/m)x₁ - (c/m)x₂] = kx₁x₂ - kx₁x₂ - cx₂² = -cx₂²

注意V̇只含x₂项,它是半负定而不是负定的,因为在形如(x₁, 0)的状态处,V̇ = 0,物理含义是:弹簧压缩到某一位置且速度刚好为零的那一刻,机械能不再减少,但下一刻弹簧会重新把质量块推起来,动能又会变化,所以这不是一个能停留的状态。

用LaSalle定理收尾。V̇ = 0等价于x₂ = 0,且要求x₂在整个运动过程中恒为零,则ẋ₂也必须恒为零。把这两个条件代入第二个状态方程,得到0 = -(k/m)x₁,所以x₁ = 0。于是V̇ = 0的集合里最大的不变集只有原点,系统渐近稳定。

这道题是整个第二方法里我最喜欢的一道,因为它完全复现了物理直觉:能量单调下降,掉到最低点时停下来,而且只有最低点能停住。工程上判断一个有阻尼机械系统稳不稳,先写总机械能,再求导看耗散项,这个习惯能让你在复杂模型里快速建立第一版候选V。

4.3 例3:V̇半负定情形下用LaSalle定理收尾

第三个例子换成非线性刚度系统,它的V̇同样半负定,但非线性更强:

ẋ₁ = x₂ ẋ₂ = -x₁³ - x₂

物理上可以理解为一个带线性阻尼的“三次方弹簧”系统:恢复力不是kx而是x₁³,阻尼项是-x₂。候选V仿照机械能构造,但势能项要按x₁⁴走:

V(x) = ¼x₁⁴ + ½x₂²

正定性和径向无界都满足。沿轨导数:

V̇ = x₁³x₂ + x₂(-x₁³ - x₂) = x₁³x₂ - x₁³x₂ - x₂² = -x₂²

又是半负定,只有在x₂ = 0时为零。用LaSalle定理。V̇ = 0要求x₂恒等于零,于是ẋ₂恒等于零。将x₂ = 0代入系统方程,得到0 = -x₁³ - 0,因此x₁ = 0。所以V̇ = 0集合中只有原点是完整不变集,系统全局渐近稳定。

这道题跟例2结构很像,但它有一个明显的非线性项x₁³,线性化的雅可比矩阵在原点处会退化,特征值计算容易出问题,用第一方法很难收场。第二方法却几乎不用增加工作量就解决了。这就是直接法对非线性系统的统治力所在。做题时别急着说“V̇≤0所以稳定”,一定要补LaSalle定理那一步,这一补才是完整证明。

4.4 例4:线性系统Lyapunov方程的矩阵求解全过程

第四个例子展示线性系统和Lyapunov方程的手算流程。系统:

ẋ₁ = -2x₁ + x₂ ẋ₂ = x₁ - 3x₂

矩阵形式A = [[-2, 1], [1, -3]]。令Q = I,待解方程AᵀP + PA = -I。设P = [[p, q], [q, r]](P对称,所以两个交叉项用同一个q)。

先算PA:

PA = [[p, q], [q, r]] [[-2, 1], [1, -3]] = [[-2p+q, p-3q], [-2q+r, q-3r]]

再算AᵀP。由于Aᵀ = [[-2, 1], [1, -3]],恰好和原A一样,这个矩阵是对称的,所以AᵀP和PA在数值上相等。于是AᵀP + PA = 2PA = -I,即PA = -½I。

这样展开方程更简单。逐元素比较:

-2p + q = -½ p - 3q = 0 -2q + r = 0 q - 3r = -½

由p = 3q,代入第一个方程:-6q + q = -½,即-5q = -½,所以q = 0.1,p = 0.3。由r = 2q = 0.2。带回第四个方程验算:0.1 - 0.6 = -0.5,一致。解得P = [[0.3, 0.1], [0.1, 0.2]]。

最后验证P正定:一阶主子式p = 0.3 > 0,二阶主子式det(P) = 0.3×0.2 - 0.1×0.1 = 0.06 - 0.01 = 0.05 > 0,所以P正定。于是V = 0.3x₁² + 0.2x₁x₂ + 0.2x₂²是系统的李雅普诺夫函数,沿轨导数V̇ = -x₁² - x₂²,严格负定,系统全局渐近稳定。

如果系统矩阵不是对称的,手算时PA和AᵀP必须分开算,我上面这个例子里两者相等属于对称矩阵的特殊福利,不要养成偷懒的习惯。实际工程里矩阵阶数一高,都是直接上lyap(A', Q),但低阶手算一次,能让你彻底明白P的每个元素从哪来、正定性验证为什么不可或缺。

5. 找不到V函数怎么办:三种工程构造法与避坑经验

5.1 二次型方案:线性系统与局部判定的首选

前面例1和例4已经展示了二次型V = xᵀPx的巨大威力。对线性定常系统,它是标准答案。对非线性系统,二次型也可以作为第一版候选,尤其是当非线性项不足以破坏二次型衰减的时候。

有一个实用的操作套路:先把非线性系统在原点线性化,算出线性部分的特征值。如果特征值实部全为负,那么线性系统李雅普诺夫方程能给出一个P,把这个P拿过来构造V = xᵀPx,再直接代入原非线性系统求V̇。很多时候V̇在原点附近仍然是负定的,因为非线性高阶项在局部的影响小于二次型的主衰减项,这样就能证明局部渐近稳定。而且用这个方法还能顺带估计一个吸引域范围:找V̇ < 0的某个等值面,把所有使V̇ ≤ 0的区域内的最大等值面包出来即可。

如果直接代入后V̇出现正定项,解决办法是给V加上适当地高次项,把这部分非线性“吸收”掉。这就是所谓“二次型+高次校正项”的思路,实践中非常高效。

5.2 变量梯度法:从梯度反推V

当猜V变得很困难时,可以反过来从梯度出发构造V,这个方法叫变量梯度法。它的操作步骤很清晰:

  1. 假设V的梯度∇V = A(x)x,其中A(x)是一个含待定参数的矩阵。
  2. 要求∇V的各分量必须满足旋度条件∂(∇V)ᵢ/∂xⱼ = ∂(∇V)ⱼ/∂xᵢ,这样沿不同路径积分出的V才能一致。
  3. 把∇V代入V̇ = (∇V)ᵀ f(x),选择参数让V̇尽可能负定(可以是严格负定,也可以是半负定配合LaSalle)。
  4. 解出参数后,沿一条路径积分V(x) = ∫₀ˣ∇V(x)·dx,通常沿坐标轴分段积分最方便。

这个方法看起来机械,实际很考验“选择A(x)结构”的经验。两阶系统可以先从对角形A(x) = diag(a₁(x), a₂(x))试起,不行再引入非对角项。它最大的价值是让V的构造变成“参数设计+条件校验”,而不是纯靠灵感拍脑袋,适合系统阶数不高的非线性分析。

5.3 Krasovskii方法:直接用系统右侧函数做候选

还有一类构造法直接使用系统右侧函数f(x)来建立V,典型代表是Krasovskii方法。它取V(x) = f(x)ᵀ f(x),也就是把速度向量本身当成“能量”来度量。沿轨导数:

V̇ = fᵀJf + fᵀJᵀf = fᵀ(J + Jᵀ)f

其中J = ∂f/∂x是系统的雅可比矩阵。如果J + Jᵀ在考察区域D内负定,那么V̇就是负定的,系统局部渐近稳定。

这个方法的优点是完全不靠物理直觉,拿到f(x)就能试。缺点是条件相当苛刻,要求J + Jᵀ负定意味着系统“处处耗散”,很多系统并不满足。推广版本是取V = fᵀWf,其中W是正定常数矩阵,条件变成JᵀW + WJ负定,这本质上是线性矩阵不等式的最早雏形。现在很多LMI工具包里做的稳定性分析,思想源头就在这。

对工程人来说,Krasovskii方法更适合给一个快速判定的“抛石问路”:如果J + Jᵀ明显有正特征值,你就知道这个候选V没戏,趁早换方向,不要在一条道上死磕。

5.4 我踩过的坑:V不唯一、半负定误判、忽略径向无界

这节专门写我实际踩过的坑,每一条都对应一次返工。

第一个坑是“V不唯一所以随便选”。事实恰恰相反,V的选择高度依赖系统结构。选对了,V̇计算三五步就干净利落;选错了,V̇里全是无法判断符号的交叉项。我早期做非线性系统分析时在V = x₁² + x₂²上死磕,代数化简做了快两页纸,符号还是不定。后来意识到这个系统本质上有“旋转+阻尼”的结构,加了交叉项2εx₁x₂之后,V̇马上就干净了。经验法则:交叉项不是修饰,而是用来消除V̇里不可判号部分的武器。

第二个坑是混淆“V̇≤0”和“渐近稳定”。只要V̇ = 0在非零集合上出现,就必须补LaSalle定理检查,否则结论不成立。我在一份技术评审意见里就见过这样的问题:报告只写“选取V = xᵀPx,求导得V̇ ≤ 0,故系统渐近稳定”,中间跳过了不变集检验。审稿人追问一句“如果状态停留在V̇ = 0的集合里怎么办”,整个逻辑链就断了。

第三个坑是忘记径向无界。局部稳定和全局稳定之间就差这一个条件,可它太容易被忽略。有一类系统在远端V虽然趋向无穷,但V̇在某个有限区域内变号,导致轨迹逃逸后能量重新上升。这种系统很可能存在一个有限吸引域,局部渐近稳定成立,全局结论不成立。所以在结论里必须写明“全局”还是“局部”,这两个词的证据要求完全不同。

第四个坑藏在符号判断里。V̇的表达式经常可以分解成好几项,有些项显然为负,有些项有正有负。新手容易抓住负的部分就下结论。正确做法是尝试给正项做不等式放缩,比如用2ab ≤ a² + b²等恒等式把正项包进负项里,只有放缩后整体仍为负,才能下结论。这一步往往是整套证明的胜负手。

6. 稳定性分析在工程设计中的真实用途

6.1 从“证明稳”到“设计稳”:控制李雅普诺夫函数

稳定性分析不只是验证,还可以直接指导控制器设计。思想很简单:如果你在构造V的同时,把控制量u当成一个自由变量纳入V̇的表达式中,那么你就能反过来“设计”u,让V̇强制变成负定。这种V叫做控制李雅普诺夫函数(CLF)。

举个例子,系统ẋ = f(x) + g(x)u,给定一个正定V,计算V̇ = L_fV + L_gV·u。只要选择u使得L_fV + L_gV·u < 0,就能保证闭环稳定。这个逻辑几乎是直接的。更妙的是Sontag公式,它给出了一种通用设计:当L_gV = 0时采用一个特殊的切换策略,当L_gV不为零时选u = -(L_fV + sqrt((L_fV)² + (L_gV)⁴))/L_gV,这样V̇就严格负定。后推设计、滑模控制这些非线性控制方法,本质上都在套这个框架。所以我建议工程师别把李雅普诺夫方法只当成“验证工具”,它更是“设计工具”。

6.2 观测器误差动力学分析

另一个高频率用途是状态观测器的误差分析。设计一个观测器时,你得到的不再是状态本身,而是状态估计,真正的状态和估计值之间的误差动态方程通常可以写成线性或非线性系统。这时候稳定性分析的对象就是误差方程。

实际项目里,我常看到观测器仿真曲线收敛得很漂亮,但没有人证明过误差动力学渐近稳定。一旦系统工作点变动或者初始误差较大,观测器发散的情况就会在实机上冒出来。正确流程是:写出误差e = x - x̂的动态方程,构造V(e),证明原点是渐近稳定的,然后把仿真当成辅助验证,而不是反过来。这个流程做完,观测器才能放心上实机。

6.3 我的实操习惯和一个小技巧

最后分享一个我个人的工作习惯。拿到一个新的非线性系统,我不会马上开始构造V,而是先做两件事:第一,用数值方法在多个初值下跑仿真,感受系统真实行为,是收敛、振荡还是发散,这能给我一个关于V的“感性预期”;第二,检查系统有没有天然的能量结构,比如机械能、拉格朗日量,如果有,直接把它当第一版候选V,分析它的V̇,通常能定位出到底哪些项在耗散能量,哪些项在注入能量。

一个小技巧是,在算V̇的时候,先不要把每一项都展到最开。保留我所谓的“结构型写法”,比如把(x₁² + x₂²)当作整体ρ来化简,往往比完全展开更容易看出符号。例1能快速化简,就是因为先把ρ作为整体保留,展开之后交叉项自己消掉了。代数展开虽然不会错,但会让符号判断变得困难。

李雅普诺夫第二方法真正的价值,不只是考试里的证明题,而是给你一种看待系统的语言:任何系统都可以问一句,它的能量函数是什么,这个能量是在增加还是在减少,这比盯着某一条仿真曲线去猜要可靠得多。我后来做每一次控制方案评审,都会要求自己的闭环逻辑里至少有一个V函数和它的V̇符号判定,这是从那次被前辈追问之后养成的习惯,也建议你试试。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询