☰
劳斯判据不求解特征方程,快速判断高阶系统稳定性与参数稳定域
2026/10/15 23:09:39 网站建设 项目流程

做控制系统这些年,我越来越觉得,有些判断工具看着不起眼,用好了是真能救场。就拿系统稳定性来说,刚入行的时候,遇到二阶系统还好办,特征方程一对共轭复根拉出阻尼比,稳定不稳定一眼就能看出来。可系统阶数一上去,三阶、四阶、五阶,甚至还有延迟环节,这时候想快速判断系统稳定性,劳斯判据几乎是手边最顺手的那把尺子。今天就把这个工具从原理到操作再到坑点,完整聊一遍,顺便把我这些年用下来的经验也交代清楚。

劳斯判据最妙的地方在于,它不需要你真正求出特征方程的根,只要把系数按照一种固定规则排成一张表,再看第一列数字的符号变化,就能直接回答"系统稳不稳、有几个不稳的根"。对于三阶以上的高阶系统,这几乎是手算时代留给我们的最好礼物。哪怕现在各种仿真工具满天飞,真到了现场、评审、快速筛选参数的时候,手里有这套东西,心里会踏实很多。

1. 稳定性判断的老大难问题:不求解特征方程行不行

1.1 特征根的分布才是稳定性的根源

先回到最基本的道理。一个线性时不变系统稳不稳定,不是看开环增益有多大,也不是看时域响应初始长得像不像回事,而是看闭环特征方程的特征根落在哪里。系统闭环传递函数的极点,就是闭环特征方程的根。只要所有特征根都落在复平面左半平面,也就是实部全为负,系统就是渐近稳定的,给定一个输入,响应会收敛到稳态值。只要有一个根的实部为正,系统就会发散,响应直接冲出去。如果有根恰好落在虚轴上,系统会处于等幅振荡的临界状态,工程上照样不能算稳定。

所以稳定性问题本质上是一个"根的分布问题":问的是所有根是否都在左半平面。这个说法听起来简单,但真要动手验证的时候,麻烦立刻就来了。

1.2 高阶方程为什么不能依赖求根

二阶系统的特征方程是二次方程,求根公式初中生都会背;三阶以上呢?三次方程有卡尔丹公式,但用起来又繁琐又容易出错;四次方程已经复杂到没人愿意手动算;五次及以上的方程,早在两百年前就证明了没有通用的根式解。

那用数值方法求根行不行?行,但有两个问题。第一,你需要一个计算工具,比如各种数学软件,现场评审的时候不可能每换一个参数就打开软件跑一遍;第二,数值求根有个麻烦事——你怎么知道算出来的根是全部根?高阶多项式计算过程中容易丢根、出现数值病态,尤其是系数跨度大的时候,结果可能根本不可信。还有一个更实际的问题:很多时候我们需要判断的不是"某个具体的系统稳不稳",而是"某个参数在什么范围内系统才稳"。这时候如果每次求根都重新算一遍,效率低到没法看。

所以老一辈工程师才迫切需要一个能够"不求根就判断根的位置"的工具。劳斯判据正是干这个的。

1.3 劳斯判据的工作方式

劳斯判据的做法非常朴素:把特征方程的各项系数按降幂排列,然后把它们放进一个类似表格的阵列里,按照一套交叉乘除的规则往下递推。表格列完以后,只看第一列元素的符号,从正到负或者从负到正的次数,就是落在右半平面(也就是实部为正)的特征根个数。

这个思路的精妙之处在于,它把"求方程的根"这个困难问题,转化成了"做一系列有理数四则运算"这个机械问题。你不需要知道根具体长什么样,只需要通过系数之间的代数关系,间接推断出根的分布。整个过程不需要开方、不需要迭代、不需要复数运算,手算就能完成。对于四阶、五阶系统,列一张表也就几分钟的事。

我最早学的时候觉得这只是一个考试技巧,后来在项目里要做参数整定,才知道这东西的实用价值。某次调一个四阶位置伺服回路,增益参数一改,响应就开始抖,当时就是靠劳斯判据快速圈出了增益的稳定范围,省了不知道多少次来回试凑。

2. 劳斯表的列法与判读:一次彻底搞懂

2.1 表头怎么排

假设闭环特征方程是降幂排列的n次多项式:

a_n * s^n + a_(n-1) * s^(n-1) + ... + a_1 * s + a_0 = 0

记住一点:系数必须从最高次到最低次排好,中间缺哪一项就补0,绝对不能跳过。很多人在这一步就翻车了,后面我会专门讲。

劳斯表第一行放最高次项开始、隔一个取一个的系数,第二行放次高次项开始、同样隔一个取一个的系数。拿四阶方程举例:

a4*s^4 + a3*s^3 + a2*s^2 + a1*s + a0 = 0

第一行(s^4行):a4, a2, a0 第二行(s^3行):a3, a1, 0

注意,如果方程缺项,比如a1=0,那第二行的中间位置要老老实实写0,不能空着。补齐之后,表的总行数是n+1行,从s^n一直排到s^0。

2.2 从第三行开始交叉运算

从第三行开始,每一行的每一个元素都由它上面两行对应位置的元素交叉乘除得到。规则是固定的,以s^2行的第一个元素为例,需要用到s^3行的第一个元素a3、第二个元素a1,以及s^4行的a4:

(s^2行第一个) = (a3 * a2 - a4 * a1) / a3

这里要注意分子是"上行第一列乘以上一行第二列"减去"本行上面那行第一列乘以上上行的第二列"?不对,我重新说清楚。标准的计算是:当前要计算这一行的第一个元素时,取紧挨着的上一行的第一列和当前行上方两行的第一列交叉相乘:

更直观的记忆方式:分子是"上一行的第一列乘以上上行第二列,减去上上行第一列乘以上一行第二列",分母是上一行的第一列。用符号写就是:

b1 = (a3 * a2 - a4 * a1) / a3

后面的元素同理,比如s^2行的第二个元素:

b2 = (a3 * a0 - a4 * 0) / a3

之后每一行都按这个规律递推,直到排到s^0行为止。s^0行通常只有一个元素,就是最后计算出来的常数。

2.3 第一列变号次数等于右半平面根数

表列完以后,把第一列所有元素从上往下看一遍,不需要管绝对值大小,只看符号。每出现一次符号变化,比如从正变负,或者从负变正,就代表有一个特征根位于右半平面。如果第一列元素全部为正(假设最高次系数为正),那就说明所有特征根都在左半平面,系统稳定。

这里有个容易混淆的点:符号变化的次数是"变化次数"还是"负号个数"?答案是变化次数。比如第一列是正、正、负、正,那变化次数是2,不稳定根个数是2。一个负号会被数两次:从正变负一次,从负变正又一次。我见过不少初学者数成1,然后跟仿真结果对不上,回头检查才发现是数错了。

3. 两个必须单独处理的特殊行:首列为零与全零行

前面说的是正常情况下劳斯表的列法。但实际工程中,特征方程的系数千奇百怪,劳斯表在递推过程中会遇到两种特殊情况。这两种情况如果不先处理,表就没法继续往下列。几乎所有劳斯判据相关的翻车事故,都集中在这两处。

3.1 首列为零:ε替代法与乘因子法

第一种情况是,某一行的第一个元素算出来是0,但该行后面还有其他非零元素。比如特征方程:

s^3 - 3s + 2 = 0

注意这个方程缺了s^2项,所以要补0。列劳斯表:

行第1列第2列
s^31-3
s^202
s^1??
s^0??

s^2行的第一个元素是0,但第二个元素是2,这时不能直接用0做分母,否则算到下一行就崩了。

标准做法是引入一个无穷小的正数ε,把0替换掉,然后照常计算。换句话说,s^2行变成:ε, 2。接下来:

s^1行第一个 = (ε * (-3) - 1 * 2) / ε = -3 - 2/ε

由于ε是正无穷小,2/ε趋近于正无穷,所以整个表达式趋近于负无穷,符号为负。再往下:

s^0行第一个 = (s^1行第一列 * 2 - s^2行第二列? ) / s^1行第一列

严格算:s^0行元素用的是s^1行第一列、s^1行第二列、s^2行第一列、s^2行第二列:

((-3 - 2/ε) * 2 - ε * 0) / (-3 - 2/ε) = 2

所以整个第一列是:1,ε(正),负无穷,2。符号变化了两次:从正到负一次,从负到正一次。因此系统有两个右半平面根,不稳定。事实上这个多项式可以分解为:

s^3 - 3s + 2 = (s - 1)^2 * (s + 2)

确实是两个正实根1和1,一个负实根-2,与劳斯判据给出的结论完全一致。

除了ε法,还有一种替代做法:给原特征方程乘一个因子(s + a),其中a取正数。乘进去以后,劳斯表对应行的首列不再是0,可以继续计算。这个做法的原理是引入了一个新的、位于左半平面的负实根,不会改变原有根在右半平面的个数。不过实际用起来,ε法更通用,也更容易记住,我个人推荐先掌握ε法。

3.2 全零行:辅助方程的出场

第二种情况更隐蔽:某一行的所有元素全部变成0。全零行的含义是,特征方程存在关于原点对称的根,也就是实部为零的根,或者成对出现的互为相反数的实根、共轭纯虚根,等等。

出现全零行时,不能假装没看见继续算。正确做法是:取全零行的上一行系数构造一个辅助方程,然后把辅助方程对s求导,用求导后的系数替换全零行,再继续列劳斯表。

举个例子,特征方程:

s^3 + 2s^2 + s + 2 = 0

列劳斯表到s^1行时:

行第1列第2列
s^311
s^222
s^1(2×1 - 1×2)/2 = 0(2×0 - 1×0)/2 = 0

s^1行全为0,触发全零行处理。取上一行,也就是s^2行的系数2和2,构造辅助方程:

P(s) = 2s^2 + 2 = 0

对P(s)求导:

P'(s) = 4s + 0

用系数4和0替换掉原来的全零行,得到:

行第1列第2列
s^311
s^222
s^140
s^0(4×2 - 2×0)/4 = 20

第一列为1、2、4、2,全部同号,没有符号变化,说明系统没有右半平面的根。但注意,辅助方程的根就是那些对称根:

2s^2 + 2 = 0 => s = ±j

两个纯虚根落在虚轴上。这意味着系统处于临界稳定状态,严格来说不是渐近稳定。工程上遇到这种情况,通常都按不稳定处理,因为任何微小的扰动都可能让响应变成持续振荡。

3.3 特殊情况的本质:系统里藏着对称根

为什么全零行会和对称根挂钩?从代数角度看,如果特征方程包含因子,比如(s^2 + β^2),那它对应的根就是一对纯虚根±jβ。这样的因子在劳斯表的某一行递推时,会让后续计算出现清零。辅助方程其实就是把这个隐藏因子找出来,它的根就是那些对称分布的特殊根。

常见的情况有几种:

  • 纯虚根对:±jβ,系统等幅振荡,临界稳定。
  • 关于原点对称的实根:±σ,其中正实根在右半平面,系统必然不稳定。
  • 两对更复杂的对称共轭根,比如±a ± jb,里面同样包含了右半平面的根。

所以看到全零行,第一反应不是"表坏了",而是"系统里有特殊根"。用辅助方程把特殊根挖出来,才能得到完整的稳定性结论。这个信息比劳斯表第一列本身还重要,因为它解释了系统为什么会处于临界状态。

这里另外提醒一句:如果特征方程的常数项a0为0,说明系统存在一个位于原点的根,也就是s=0的根,这本质上也是一种"对称根"(0和0互为相反数)。这种情况经常出现在含积分环节的系统中。处理办法是先提出一个s因子,对剩余低一阶的多项式继续用劳斯判据,避免直接在s^0行得出错误结论。

4. 三个典型应用场景完整演示

理论说完了,实际操作才是重点。我挑三个最常碰到的场景:低阶系统快速判断、高阶系统完整推演、参数稳定域求解。每个都给出可以复算的例子。

4.1 二阶系统:一句话判断

二阶系统:

a2*s^2 + a1*s + a0 = 0 (a2 > 0)

列劳斯表:

行第1列第2列
s^2a2a0
s^1a10
s^0a00

第一列依次是a2、a1、a0,全部为正就是稳定的,也就是三个系数全部同号且非零。对于二阶系统,劳斯判据退化成一句大白话:系数全正就稳定,系数缺项或变号就不稳定。

这个结论别看简单,工程上很实用。比如一个典型的质量-弹簧-阻尼系统,特征方程系数分别对应刚度、阻尼,只要这两个物理量都是正数,系统本质上就是稳定的。阻尼一旦出现负值,比如主动控制中引入不合适的正反馈,系数变号,系统发散,劳斯判据一秒钟就能看出来。

4.2 四阶特征方程逐行算一遍

来个完整例子。假设闭环特征方程是:

s^4 + 3s^3 + 2s^2 + 3s + 5 = 0

第一步,排前两行:

行第1列第2列第3列
s^4125
s^3330

第二步,算s^2行:

b1 = (3*2 - 1*3) / 3 = (6 - 3) / 3 = 1 b2 = (3*5 - 1*0) / 3 = 15 / 3 = 5

s^2行:1, 5, 0。

第三步,算s^1行:

c1 = (1*3 - 3*5) / 1 = 3 - 15 = -12 c2 = (1*0 - 3*0) / 1 = 0

s^1行:-12, 0, 0。

第四步,算s^0行:

d1 = (-12*5 - 1*0) / (-12) = 5

第一列最终是:1,3,1,-12,5。符号变化情况:1→3(无变化),3→1(无变化),1→-12(第一次变号),-12→5(第二次变号)。总共两次变号,说明系统有两个右半平面的特征根,闭环不稳定。

如果按照这个系统去搭模型做仿真,阶跃响应一定发散。劳斯判据在几分钟内就把结论抛出来了,完全不需要去解四次方程。

4.3 参数稳定域求解:增益K的稳定范围

比"判断一个系统稳不稳"更常见的是"让系统稳定的参数范围是多少"。劳斯判据在这类问题上的优势简直是为它量身定做的。

考虑一个典型的单位负反馈系统,开环传递函数:

G(s) = K / [s*(s + 1)*(s + 2)]

闭环特征方程是:

s^3 + 3s^2 + 2s + K = 0

列劳斯表:

行第1列第2列
s^312
s^23K
s^1(32 - 1K) / 3 = (6 - K) / 30
s^0K0

为了系统稳定,第一列必须全部为正,于是得到两个不等式:

K > 0 (6 - K) / 3 > 0 => K < 6

所以K的稳定范围是0 < K < 6。当K=6时,s^1行全零,系统进入临界状态,出现等幅振荡。你可以去验证,K=6时特征方程s^3 + 3s^2 + 2s + 6 = 0有一个因式(s^2 + 2),对应一对纯虚根±j√2,系统处于临界稳定。

这种参数范围的推导,用求根法做非常痛苦:每换一个K就要重新解一次三次方程,而且很难直接看出临界点在哪里。劳斯判据把K写进表里,对第一列符号提出要求,解一组不等式就完了。经典控制理论里很多"稳定边界"的计算,都是这么来的。

5. 用劳斯判据这些年,我的几条实操心得

5.1 最容易翻车的三个地方

第一,缺项不补零。特征方程如果少了s的某次项,这一项当作0处理。很多人写系数时习惯性把缺项跳过,搞得上两行的列数对不齐,后面全乱。特征方程s^3 + 2s + 5 = 0的第一行应该是1、2,第二行是0、5,那个0必须写出来。

第二,全零行处理时机不对。有些人算到某一行为0,直接拿0当分母继续算,算出无穷大又不知道怎么办。我建议每算完一行先看一眼第二行是否全部为0,如果是全零行,马上停下来做辅助方程处理;如果只是首列为0、后面有非零元素,就要用ε法或乘因子法。两种情况的处理方式完全不同,混用就会出错。

第三,临界稳定当成稳定。劳斯表第一列没有变号不代表系统就一定稳定。只要过程中出现过全零行,就说明系统存在虚轴上的根,最典型的是纯虚根,系统实际上处于等幅振荡状态。你在工程里如果只看到"没有右半平面根"就说系统稳定交付了,评审的时候大概率会被问住。记住结论应该是:无右半平面根,但存在共轭纯虚根,临界稳定,工程上不可接受。

5.2 劳斯判据与根轨迹、频域判据怎么配合

劳斯判据适合回答"是/否"和"参数范围"这两类问题。但它的信息量有限,不能给出稳定裕度,也看不出参数变化时根往哪个方向移动。

根轨迹法擅长回答"参数变化时极点怎么走"。你看根轨迹图,马上能看到增益增大到某个值之后,主导极点从左侧穿越到右侧,稳定性发生翻转。但要精确求出穿越点的参数值,还得回到代数方程上去算,这时候用劳斯判据反而更直接。

频域判据,比如奈奎斯特判据、伯德图上的幅值裕度和相位裕度,回答的是"系统距离不稳定还有多远"。这是劳斯判据给不了的东西。工程上我习惯的流程是:先用劳斯判据快速圈出参数范围,再用频域分析确定在稳定范围内哪个参数值能提供足够的裕度。两者互补,不冲突。

另外一个容易被忽略的地方:劳斯判据只能用于线性时不变系统。系统里如果有明显非线性、时变参数,比如饱和、间隙、变增益,劳斯判据的前提就不成立了。当年我在某个项目里试着用劳斯判据分析一个带滞环的控制回路,算出来的结论跟仿真差很多,后来才意识到是滞环非线性破坏了线性假设。这个边界一定要清楚。

5.3 仿真时代还要手算劳斯表吗

这个问题常被学生问。现在各种仿真工具几秒钟就能算出特征根,为什么还要学一个一百多年前的手算方法?

我的看法是,劳斯判据不是用来替代仿真工具的,它是用来帮你建立"稳定性的代数直觉"的。仿真工具能告诉你结果,但不能告诉你为什么这个参数范围是稳定的、为什么临界点出现在那里。劳斯判据把稳定性和系数符号、代数不等式直接挂钩,这种联系会让你在做参数设计时形成预判,而不是跑一次仿真看一次结果。

实际工作中,劳斯判据的"低开销"优势至今很明显。调参的时候,参数一变,不需要开仿真软件,掏张纸列个表,几秒钟就能判断新参数在不在稳定范围内。开会评审的时候,对方问一句"这个增益能不能再往上调",现场没法跑仿真,但你脑子里有个劳斯表,随口就能说出临界值是多少。这种能力,在工程现场比会操作任何软件都实用。

如果实在想偷懒,一些数学工具里也有现成的劳斯表命令,用来验证手算结果是可以的。但我不建议一上来就依赖它——你自己能完整列出劳斯表并解释每一步为什么这么算,才算真正把稳定性分析的基本功练到位了。

最后分享一个我个人的小习惯:每次算完劳斯表,我会顺手把特征方程输入工具软件验证一次特征根,重点看第一列变号次数是不是真的等于右半平面根数。这不是不信任劳斯判据,而是对自己计算过程的一种复核。算久了你会发现,只要劳斯表的每一步都解释得清楚,最后的结论几乎不会出错。这种"手算+验证"的节奏,就是我用稳定分析工具多年下来最舒服的工作方式之一。

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

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

立即咨询