ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

李雅普诺夫第二方法详解:从V函数构造到非线性系统稳定性分析

李雅普诺夫第二方法详解:从V函数构造到非线性系统稳定性分析 1. 为什么搞控制的人迟早要回来学李雅普诺夫第二方法1.1 从一道“解不出来”的方程说起你第一次接触到李雅普诺夫第二方法大概率是在《自动控制原理》或者《现代控制理论》的课本里。当时你可能和我一样心里犯嘀咕前面学传递函数、劳斯判据、奈奎斯特判据不是已经能判断稳定性了吗为什么还要引入一个更抽象的、需要“猜”函数的办法这个疑惑本身没问题但只有真正做过非线性系统的分析和设计才会理解李雅普诺夫第二方法也叫直接法是无法绕开的基础工具。我见过不少做机器人控制、电力电子、飞行器制导的工程师工作三五年后又把老课本翻出来重新啃这一章。原因很简单真实系统几乎都是非线性的而经典的频域法在线性系统上非常漂亮一碰到非线性就捉襟见肘。劳斯判据只看特征方程系数奈奎斯特判据需要频率特性一旦系统里有饱和、死区、摩擦、间隙这些非线性环节这些工具要么不适用要么只能做“局部线性化”得到一个近似结论。而你真正想知道的是在初始状态偏离平衡点比较远的时候系统还能不能拉回来这时候李雅普诺夫第二方法就派上用场了。它既能处理线性系统也能处理非线性系统还能处理时变系统更重要的是它不需要求解微分方程只需要构造一个标量函数然后分析这个函数沿系统轨线的变化趋势。这就是它被称为“直接法”的原因——直接绕过求解从“能量”的角度判断稳定性。1.2 第二方法的核心思想能量视角李雅普诺夫第二方法的物理直觉可以用一个很生活化的场景来理解。想象你手里端着一杯咖啡站在颠簸的公交车上。咖啡液面如果总是能回到水平状态说明这个平衡是稳定的如果晃两下就洒出来那就是不稳定的。再换个角度你把一个小球放在一个碗里小球滚来滚去但因为重力势能在碗底最低摩擦在消耗能量小球最终会停在碗底。如果你把碗倒扣过来小球在顶部随便轻轻一碰就会滚下去永远回不来。李雅普诺夫第二方法的精髓就是把“系统状态是否收敛到平衡点”这个问题转换成“某个标量函数是否随时间衰减”的问题。这个标量函数就是所谓的V函数候选李雅普诺夫函数它可以理解为系统的一种广义能量比如机械系统里可以取动能加势能电路系统里可以取电容储能加电感储能一般的数学系统可以取状态的二次型组合。如果这个广义能量始终大于等于零等于零只在平衡点并且它沿着系统状态的演化路径严格单调下降那么状态就必然收敛到平衡点。这就像小球在碗里总能量一直在减少又没有别的能量来源那它最终只能停在最低点。在后面你会看到这套思想不需要解微分方程只需要做两件事构造V函数然后计算它对时间的导数并判断符号。这听起来很简单但难点恰恰在“构造V函数”这一步上。它没有通法更像是一门手艺需要经验、技巧有时候还得靠一点运气。1.3 这篇博文适合谁、解决什么问题这篇博文的读者可能是正在准备考研的本科生可能是被导师丢了一个非线性课题的研究生也可能是在工程中遇到稳定性问题、想系统地补一补理论基础的工程师。无论你属于哪一类我希望能帮你解决三个问题第一把李雅普诺夫第二方法的数学条件讲明白让你知道定理背后的直觉而不是死记硬背第二手把手带你做几道典型例题把“选V函数”这个看似玄学的环节拆开让你看到里面的套路第三把我自己踩过的坑、常见的错误和应对技巧都梳理出来让你少走弯路。我尽量用通俗的语言讲但也不会回避必要的数学表达式。毕竟这是控制理论完全绕开公式是不可能的。我会把每个公式都解释清楚它“在说什么”而不是让它孤零零地摆在那里。2. 理论基础稳定性的定义与三大判据2.1 先搞清楚四种稳定性到底在说什么在真正动手做题之前必须把“稳定性”这个概念本身弄清楚。很多初学者做题做错不是不会算V函数的导数而是根本没搞清题目问的是“哪一档”的稳定。李雅普诺夫意义下的稳定性主要分四档稳定、渐近稳定、全局渐近稳定、不稳定。首先是“稳定”也叫李雅普诺夫意义下的稳定。它的含义是只要初始状态离平衡点足够近系统状态之后就能始终保持在一个给定的范围内。打个比方你推了一下秋千秋千会一直小幅度晃动但不会越晃越远——虽然没有停下来的意思但它始终在你划定的范围里这就叫稳定。其次是“渐近稳定”。它比“稳定”强一档要求系统状态不仅不跑远而且要随着时间推移最终收敛到平衡点。还是秋千的例子推了一下之后秋千的摆动幅度越来越小最后静止在最低点这就叫渐近稳定。工程上我们最关心的往往是渐近稳定因为一个系统如果只能保证“不跑远”却永远在振荡很多时候是不能满足实际要求的。再次是“全局渐近稳定”。它强调的是无论初始状态在哪里系统都能收敛到平衡点。这对应工程上的“大范围稳定性”。很多非线性系统只能保证在平衡点附近渐近稳定初始状态稍微远一点就可能发散这就不是全局渐近稳定。最后是“不稳定”。这个最好理解初始状态不管离平衡点多近总会有轨线跑出给定范围。值得注意的是“不稳定”不等于“发散”系统可能只是振荡出去回不来也可能是指数爆炸。这四种定义在教材上都是用ε-δ语言严格表述的。我在教学中发现初学者最容易犯的错误是把“稳定”和“渐近稳定”混为一谈。做题时一定要先看清楚题目问的是哪一种。2.2 主定理V函数和它导数的符号条件李雅普诺夫第二方法的主定理是判断上面几种稳定性的有力工具。假设我们要研究系统[ \dot{x}f(x),\quad f(0)0 ]在平衡点 (x0) 处的稳定性。这里的 (x) 是n维状态向量(f(x)) 是n维向量函数。我们需要找到一个标量函数 (V(x))它满足以下条件第一个条件是 (V(x)) 是正定函数。意思是 (V(0)0)而且对任意 (x\neq 0)都有 (V(x)0)。从几何上看V函数的等值线是一圈一圈包围原点的闭合曲面有点像等高线地形图上的“盆地”。第二个关键对象是V函数沿着系统轨线的导数记作 (\dot{V}(x))。根据链式法则[ \dot{V}(x)\frac{\partial V}{\partial x}\cdot f(x)\sum_{i1}^{n}\frac{\partial V}{\partial x_i}f_i(x) ]不需要真正求解微分方程只需要把这个表达式算出来然后判断符号就能得到结论。具体的判据如下如果 (V(x)) 正定且 (\dot{V}(x)) 半负定即 (\dot{V}(x)\leq 0)那么系统在平衡点是稳定的如果 (V(x)) 正定且 (\dot{V}(x)) 负定即 (\dot{V}(x)0) 对所有 (x\neq 0) 成立那么系统在平衡点是渐近稳定的如果 (V(x)) 正定、径向无界即当 (|x|\to\infty) 时 (V(x)\to\infty)且 (\dot{V}(x)) 负定那么系统是全局渐近稳定的如果 (\dot{V}(x)) 正定那么系统是不稳定的。你看整个判断过程就像在做一道“符号判断题”先确认V函数正定再计算V函数的导数最后看导数是负定、半负定还是正定。整个过程不需要求解方程这是第二方法最大的优势。2.3 副定理的意义克拉索夫斯基定理和变量梯度法主定理虽然清楚但真正操作起来最大的困难是怎么找到那个V函数对线性系统这个问题的答案是现成的那就是二次型 (V(x)x^TPx)其中 (P) 是正定对称矩阵。问题就转化为求解李雅普诺夫方程[ A^TPPA-Q ]其中 (Q) 是一个我们预先给定的正定对称矩阵。只要能找到正定的 (P)系统就是渐近稳定的。这个办法在线性系统里几乎是“一套一个准”后面的例题里我会完整演算。但对非线性系统就没有统一的构造方法了。实践中最常用的是“反向设计”的思路先假设V函数是某种形式比如二次型加高次项然后把 (\dot{V}) 算出来根据 “想让它是负定的” 这个目标反推V函数里的待定系数。这就是“变量梯度法”的基本思想我后面会单独用一个子章节讲。另一个常用的辅助定理是克拉索夫斯基定理如果系统雅可比矩阵的对称部分负定那么可以取 (V(x)f^T(x)f(x)) 作为李雅普诺夫函数。这个定理的好处是V函数的构造是机械的缺点是条件偏保守——很多系统用别的方法能找到V函数但不满足克拉索夫斯基条件。3. 核心实操V函数到底怎么找3.1 线性系统李雅普诺夫方程是唯一的通行证我做例题讲解的时候一定会先让学生把线性系统的李雅普诺夫方程练熟。原因在于非线性系统的分析常常是先在线性化系统上做初步判断再用非线性V函数做严格证明而线性化系统对应的V函数构造是最标准的操作。对于线性定常系统 (\dot{x}Ax)我们取V函数为二次型[ V(x)x^TPx ]其中 (P) 是正定对称矩阵。对 (V(x)) 沿系统轨线求导[ \dot{V}(x)\dot{x}^TPxx^TP\dot{x}x^T(A^TPPA)x ]要让 (\dot{V}(x)) 负定一个充分条件是存在正定矩阵 (Q)使得[ A^TPPA-Q ]这叫李雅普诺夫方程。实际操作时一般先取 (QI)单位阵解出 (P)再验证 (P) 是否正定。如果 (P) 正定就说明系统渐近稳定而且V函数就是 (Vx^TPx)。如果解出的 (P) 不正定那也不能立刻断言系统不稳定——有可能是 (Q) 选得不合适换一个 (Q) 再试一次才下结论。解李雅普诺夫方程时有两种路数。手算时把 (P) 的元素设为未知数展开方程得到一个线性方程组解出来即可。用计算机时Python的control库里有lyap函数MATLAB里有lyap函数直接调用就行非常方便。但我建议手算至少做一遍因为展开过程能帮你体会为什么矩阵方程会等价于线性方程组这对理解P矩阵的结构有帮助。3.2 非线性系统的试探法从机械能到二次型非线性系统找V函数最常用、最容易上手的是“试探法”也叫“能量型V函数”方法。第一步看系统有没有物理背景。如果系统是机械系统可以尝试取V函数为系统的总能量动能加势能。比如单摆系统 (\ddot{\theta}a\dot{\theta}b\sin\theta0)自然的V函数就是 (V\frac{1}{2}\dot{\theta}^2b(1-\cos\theta))。如果系统是电路系统就取电感和电容的储能之和。这种从物理意义出发的V函数往往效果很好。第二步如果看不出物理背景就用“二次型加积分项”的形式去凑。很多非线性项来自某个标量函数的梯度这时候如果能先对非线性项做积分再把积分结果并入V函数往往就能构造出一个正定的V函数。第三步加高次项调节符号。比如 (\dot{x}-xx^3) 这类系统纯二次型 (Vx^2) 的导数是 (\dot{V}-2x^22x^4)在 (|x|) 较大的时候会变正说明这个V函数只能证明局部性质。如果改成 (Vx^2)想证明全局性质需要换思路或者分析局部范围。试探法的核心原则是构造出来的V函数的导数最好能自然地出现负号。所谓“自然”意思是当系统方程里有某种“阻尼项”或“耗散项”时把它带进V函数的导数里就能得到负定的贡献。比如方程右边有一个 (-x^3) 项它对应的贡献就是 (-2x^4)这个负数项就是你的朋友。3.3 变量梯度法一套可以照着做的流程变量梯度法是试探法的进阶版本质上是把“猜V函数”的过程变成“猜梯度”的过程。我们设V函数的梯度是一个待定向量 (g(x)\nabla V(x))那么V函数可以通过梯度做线积分得到[ V(x)\int_0^x g(s)\cdot ds ]要让线积分结果与路径无关梯度必须满足旋度条件即雅可比矩阵 (\frac{\partial g}{\partial x}) 是对称的。实际操作中我们把 (g(x)) 设成某种简单的形式比如[ g(x)\begin{bmatrix} a_{11}x_1a_{12}x_2\cdots\ a_{21}x_1a_{22}x_2\cdots\ \vdots \end{bmatrix} ]这里的系数可以是状态变量的函数但在最简版本里我们先取常数。然后做两件事一是利用旋度条件确定系数之间的关系二是让 (\dot{V}g^T(x)f(x)) 尽可能负定。这个方法的优点是流程清晰缺点是计算量偏大。我在实际做题时变量梯度法主要用于处理那些“一眼看不出V函数”的二阶非线性系统。对于考研和面试来说掌握到能处理二阶系统的程度就足够了。3.4 一个判断正定性的常用工具箱无论用什么方法构造V函数最后都要验证它是否正定。这里我列几个常用工具二次型正定的判定二次型 (x^TPx) 正定当且仅当P的各阶顺序主子式都大于零西尔维斯特判据。多项式正定的判定比如验证 (V(x)x_1^2x_2^2x_1^4) 是否正定可以分别讨论(x_1^2x_1^4) 对任意 (x_1) 非负且只有 (x_10) 时为零(x_2^2) 也非负所以总体正定。径向无界的判定当 (|x|\to\infty) 时(V(x)\to\infty)这个条件要单独验证。最容易漏掉的就是它。我见过不少学生V函数选了半天导数也负定了结果最后发现V函数不是正定的白算一通。所以验证正定性这步千万别跳过。4. 典型例题逐题演算跟着走一遍就明白了4.1 例题一线性定常系统的稳定性判定先看一个最简单的线性系统目的是让大家熟悉李雅普诺夫方程的标准流程。设系统状态方程为[ \dot{x}_1-x_12x_2 ] [ \dot{x}_2-3x_2 ]写成矩阵形式 (\dot{x}Ax)其中[ A\begin{bmatrix} -1 2\ 0 -3 \end{bmatrix} ]第一步取 (QI)设 (P\begin{bmatrix}p_{11} p_{12}\ p_{12} p_{22}\end{bmatrix})代入李雅普诺夫方程 (A^TPPA-I)。先把方程展开。(A^TP) 是[ A^TP\begin{bmatrix} -1 0\ 2 -3 \end{bmatrix}\begin{bmatrix} p_{11} p_{12}\ p_{12} p_{22} \end{bmatrix}\begin{bmatrix} -p_{11} -p_{12}\ 2p_{11}-3p_{12} 2p_{12}-3p_{22} \end{bmatrix} ](PA) 是[ PA\begin{bmatrix} p_{11} p_{12}\ p_{12} p_{22} \end{bmatrix}\begin{bmatrix} -1 2\ 0 -3 \end{bmatrix}\begin{bmatrix} -p_{11} 2p_{11}-3p_{12}\ -p_{12} 2p_{12}-3p_{22} \end{bmatrix} ]两者相加得到[ A^TPPA\begin{bmatrix} -2p_{11} 2p_{11}-4p_{12}\ 2p_{11}-4p_{12} 4p_{12}-6p_{22} \end{bmatrix} ]让它等于 (-I)得到三个独立方程[ -2p_{11}-1 \Rightarrow p_{11}0.5 ] [ 2p_{11}-4p_{12}0 \Rightarrow 0.5-2p_{12}0 \Rightarrow p_{12}0.25 ] [ 4p_{12}-6p_{22}-1 \Rightarrow 1-6p_{22}-1 \Rightarrow p_{22}\frac{1}{3} ]所以[ P\begin{bmatrix} 0.5 0.25\ 0.25 0.3333 \end{bmatrix} ]验证正定性一阶主子式 (0.50)二阶主子式 (0.5\times0.3333-0.25^2\approx0.1667-0.06250.10420)所以P正定。结论该系统是渐近稳定的。这道题的经验是取 (QI) 是最省事的默认选择但如果你对解出的P不满意可以换Q再试。心里要清楚P的结果依赖于Q的选取但正定性结论在理论上与Q的具体选取无关。4.2 例题二非线性系统的局部稳定性分析现在看一个非线性系统[ \dot{x}_1x_2 ] [ \dot{x}_2-x_1-x_2x_1^3 ]系统在原点有平衡点。我们先试着用李雅普诺夫第二方法分析原点的稳定性。一个自然的V函数选择是“动能加势能”形式的推广[ V(x)\frac{1}{2}x_1^2\frac{1}{2}x_2^2 ]这其实就是最简单的二次型。对时间求导用链式法则[ \dot{V}x_1\dot{x}_1x_2\dot{x}_2x_1x_2x_2(-x_1-x_2x_1^3) ]整理一下(x_1x_2) 和 (-x_1x_2) 正好抵消[ \dot{V}-x_2^2x_1^3x_2 ]这个结果不是负定的因为第二项 (x_1^3x_2) 的符号不确定。当 (|x_1|) 不大时(x_1^3x_2) 相比 (-x_2^2) 是小量所以在一个足够小的邻域内 (\dot{V}0) 可能成立。但严格证明需要更精细的分析。这提示我们这个V函数只能证明“局部渐近稳定”而且需要估计出邻域大小。怎么做呢关键在于把 (\dot{V}) 改写成方便定号的形式[ \dot{V}-x_2^2(1-x_1^3\cdot\frac{x_1}{x_2}\text{???}) ]这个改写不对。我们换一个思路把 (\dot{V}) 看成关于 (x_2) 的二次多项式加一个交叉项会比较麻烦。更常用的处理方式是先预估一个邻域比如假设 (|x_1|0.5)那么 (|x_1^3x_2|\leq0.125|x_2|)。并不能由此判断 (x_1^3x_2) 能被 (-x_2^2) 盖过因为对很小的 (x_2)(-x_2^2) 是二阶小量而 (x_1^3x_2) 是一阶小量。所以这个V函数不够好。我们换一个思路把非线性项“吸收”进V函数里。受 (x_1^3) 项的启发可以尝试[ V(x)\frac{1}{2}x_2^2\frac{1}{4}x_1^4 ]来替代原来V函数中的 (\frac{1}{2}x_1^2)。此时[ \dot{V}x_2\dot{x}_2x_1^3\dot{x}_1x_2(-x_1-x_2x_1^3)x_1^3x_2 ]展开后[ \dot{V}-x_1x_2-x_2^2x_1^3x_2x_1^3x_2-x_2^2-x_1x_22x_1^3x_2 ]仍然有交叉项。这时候需要一点技巧对二次型 (-x_2^2-x_1x_2)其矩阵形式是[ \begin{bmatrix} 0 -\frac12\ -\frac12 -1 \end{bmatrix} ]这个矩阵是不定的。所以又不行。这恰恰说明找V函数确实需要试错。我们不妨改得更大胆一点直接取[ V(x)\frac{1}{2}x_2^2\frac{1}{2}x_1^2-\frac{1}{4}x_1^4 ]注意这个函数在 (x_1) 附近不是全局正定的但在原点附近是正定的因为在 (|x_1|) 足够小时 (\frac12x_1^2) 占主导。计算[ \dot{V}x_2\dot{x}_2x_1\dot{x}_1-x_1^3\dot{x}_1x_2(-x_1-x_2x_1^3)(x_1-x_1^3)x_2 ]整理[ \dot{V}-x_1x_2-x_2^2x_1^3x_2x_1x_2-x_1^3x_2-x_2^2 ]这下漂亮了。(\dot{V}-x_2^2\leq0) 是半负定只能证明稳定要证明渐近稳定还需要额外论证。这里可以用LaSalle不变集定理(\dot{V}0) 意味着 (x_20)代入系统方程 (x_20\Rightarrow\dot{x}_10\Rightarrow x_1) 为常数而 (\dot{x}_2-x_1x_1^3)。要让 (x_2) 保持为零必须 (\dot{x}_20)即 (-x_1x_1^30)解得 (x_10) 或 (x_1\pm1)。在原点的邻域内(\pm1) 不在讨论范围内所以原点附近的最大不变集只有原点本身。因此系统在原点处渐近稳定。这道题值得反复揣摩。它展示了几个很重要的技巧一是通过修改V函数的高次项来让导数“变干净”二是半负定不代表没戏配合LaSalle不变集定理就能升级为渐近稳定三是V函数不必全局正定只在一个邻域内正定也可以得到局部结论。4.3 例题三全局渐近稳定的完整证明再来看一个可以证明全局渐近稳定的系统[ \dot{x}_1x_2-x_1(x_1^2x_2^2) ] [ \dot{x}_2-x_1-x_2(x_1^2x_2^2) ]这个系统的形式很像一个旋转加阻尼的组合。我们直接取[ V(x)x_1^2x_2^2 ]计算导数[ \dot{V}2x_1\dot{x}_12x_2\dot{x}_22x_1[x_2-x_1(x_1^2x_2^2)]2x_2[-x_1-x_2(x_1^2x_2^2)] ]展开[ \dot{V}2x_1x_2-2x_1^2(x_1^2x_2^2)-2x_1x_2-2x_2^2(x_1^2x_2^2) ]交叉项 (2x_1x_2) 和 (-2x_1x_2) 正好抵消得到[ \dot{V}-2(x_1^2x_2^2)^2 ]从这个式子可以看出一件很有意思的事平方和项 ((x_1^2x_2^2)) 是正数它的平方也正数前面再乘一个 (-2)所以 (\dot{V}) 对任意非零状态都是严格小于零的。再加上 (V(x)x_1^2x_2^2) 正定且径向无界因此原点是全局渐近稳定平衡点。这道题的启示是当系统方程里的非线性项恰好乘以状态本身时用 (Vx_1^2x_2^2) 往往能直接消掉交叉项得到漂亮的负定结果。这也是一种做题直觉看到系统的“旋转项”如 (x_2) 在 (\dot{x}_1) 里(-x_1) 在 (\dot{x}_2) 里和“阻尼项”如 (-x_1(x_1^2x_2^2))取 (Vx_1^2x_2^2) 就是顺理成章的选择。4.4 例题四含参数系统的稳定性边界最后看一个含参数的例子这类问题在工作中更常见。考虑系统[ \dot{x}-axx^3 ]其中参数 (a) 可以取不同值。我们来分析不同 (a) 下的稳定性。先看 (a0)。取 (Vx^2)计算[ \dot{V}2x(-axx^3)-2ax^22x^4 ]当 (a0) 时在 (|x|\sqrt{a}) 的范围内(-2ax^2) 占主导(\dot{V}0)所以原点是局部渐近稳定的。但如果 (|x|\sqrt{a})(\dot{V}) 可能变正这说明V函数只能证明局部结论系统并不是全局渐近稳定的。再看 (a0)。系统变成 (\dot{x}x^3)取 (Vx^2)则 (\dot{V}2x^40)系统不稳定。当 (a0) 时(\dot{x}-axx^3)其中 (-ax) 项变成了正的反馈系统显然不稳定。用V函数检验(\dot{V}-2ax^22x^4)第一项为正整体符号不能保证负定不稳定。这道题的价值在于它明确展示了参数对稳定性的影响(a) 从正变到负系统的稳定性从“局部渐近稳定”退化为“不稳定”临界点在 (a0)。在工程里这种参数临界值常常对应系统失稳的边界分析清楚它对设计控制器非常关键。5. 常见问题与排查技巧实录5.1 选了半天V函数导数就是不定号怎么办这是所有初学者最头疼的问题。我的建议是按照以下几个层次依次排查第一检查V函数是否正定。如果V函数本身就不是正定的后面算导数都是白算。用西尔维斯特判据或者直接观察表达式确认 (V(0)0) 且 (V(x)0)。第二检查计算过程是否有误。很多人算 (\dot{V}x_2^2x_1x_2) 之后看不出符号于是怀疑系统不稳但我让学生重新算一遍经常发现是展开时某项符号写错了。建议每一步都慢一点尤其是链式法则里对多个变量求导的部分。第三如果计算无误但符号不定多半是V函数选得不对。可以尝试给 (V) 增加高次项或者调整系数。一个很常见的套路是把二次型 (x^TPx) 换成 (x^TPxx_1^4x_2^4)有时候非线性项会因此被“吃掉”。第四如果实在找不到定号的V函数可以尝试将问题转化为线性化系统的李雅普诺夫方程求解先得到局部稳定性的结论。线性化判据虽然只适用于原点附近的局部性质但往往能给出一个初步判断。5.2 导数半负定能不能判断渐近稳定这是最高频的问题。(\dot{V}\leq0) 只能说明V函数不增加系统状态在等值面里徘徊但不能保证收敛到原点。最经典的例子是 (\dot{x}_1x_2,\dot{x}_2-x_1)取 (Vx_1^2x_2^2)则 (\dot{V}0)系统做无阻尼振荡永远不会收敛到原点。想要从半负定升级到渐近稳定有两个办法。第一个办法是用LaSalle不变集定理前面例题二已经演示过。核心步骤是求出 (\dot{V}0) 的集合再找出这个集合中的最大不变集如果最大不变集只包含原点那么系统就是渐近稳定的。第二个办法是补充径向无界条件再引入其他论证。需要注意LaSalle定理针对的是自治系统。对于非自治系统时变系统需要用Barbalat引理或直接换成能满足负定条件的V函数不能机械套用。5.3 这些常见的V函数构造误区误区一认为V函数必须取成二次型。对非线性系统二次型常常不够用需要引入高次项、交叉项甚至积分项。误区二认为V函数是唯一的。实际上一个系统可以有无数个V函数只要能正定且导数定号都可以用。不同V函数给出的稳定性结论可能覆盖不同的范围。误区三忽略“径向无界”条件。全局渐近稳定必须要求 (V(x)\to\infty)当 (|x|\to\infty)。很多人在原点附近证明了渐近稳定就想当然地推广到全局这是不严谨的。例题四中 (Vx^2) 确实径向无界但导数只在局部负定所以也只是局部结论。误区四把“导数负定”和“导数半负定”混为一谈。负定意味着除原点外导数严格为负半负定允许在某些非零状态导数为零。前者直接推出渐近稳定后者需要额外分析。6. 把这些方法串起来用的个人体会最后再分享一点我实际做问题时的体会。李雅普诺夫第二方法看起来是纯粹的理论工具但它的思想其实贯穿在几乎所有现代控制方法中。无论是自适应控制、滑模控制还是非线性控制的常用设计方法最后都绕不开稳定性证明而稳定性证明的数学工具几乎都是李雅普诺夫第二方法及其变体。也就是说你今天花时间把V函数构造的基本功练扎实未来读论文、设计控制器时都会受益。在实际工程中我通常不会追求一个“完美的V函数”而是先用线性化方法快速评估系统在平衡点附近的稳定性再针对需要严格保证的工况用李雅普诺夫方法给出形式化的证明。这里的V函数有时候直接从物理能量出发有时候是试出来的甚至有时候是从一组常见的候选函数里搜索出来的。重要的是理解每一步操作在做什么而不是背下某个特定系统的V函数。如果要在所有技巧里挑一个最值得提醒的点我会选这个解完李雅普诺夫方程或者算出V函数导数之后一定要回头检查V函数本身的条件。很多看似复杂的证明错误根源不是求导或者符号分析而是V函数在定义域内根本没有正定性。这种低级错误一旦犯过往往能在实际设计和审核中影响结论方向所以养成先验证V函数基本性质的习惯是非常值得的。
返回列表