4. Routh-Hurwitz判据:代数稳定性判据的原理与步骤,Routh表的构建

稳定性这东西,说白了就是系统受到扰动后能不能自己回到平衡点。我早年做电机调速系统时,PID参数调得飞起,结果一上电就震荡,差点把电机烧了。后来才明白——先判断稳定性,再谈性能优化。Routh-Hurwitz判据,就是帮你快速判断系统是否稳定的利器,连特征根都不用求。

4.1 为什么需要代数判据?

判断系统稳定,最直接的方法是看特征根是否都在左半平面。但问题是——高阶系统的特征方程往往是一元高次方程,求根非常麻烦。你想想看,一个五阶系统,你要手动解五次方程?不现实。

Routh-Hurwitz判据的好处在于:不需要求解特征根,只需要根据特征方程的系数,通过简单的代数运算,就能判断系统是否稳定。我在项目中用过很多次,尤其是做高阶滤波器设计时,这招特别管用。

4.2 判据的基本原理

Routh-Hurwitz判据的核心思想是:通过构建一个特殊的表格(Routh表),观察表格第一列元素的符号变化,来判断特征根在复平面上的分布情况。

具体来说:

  • 系统稳定的充要条件:Routh表第一列所有元素都大于0(同号)
  • 第一列符号变化的次数 = 右半平面特征根的个数

嗯,这里要注意:这个判据只适用于线性定常系统,而且特征方程必须是有限多项式。我遇到过有人拿它去判断带纯延迟的系统,结果闹了笑话。

4.3 Routh表的构建步骤

构建Routh表其实是个体力活,但步骤很清晰。我习惯把它分成三步走:

步骤一:写出特征方程

假设系统的特征方程为:

a₀sⁿ + a₁sⁿ⁻¹ + a₂sⁿ⁻² + ... + aₙ₋₁s + aₙ = 0

其中a₀ > 0(如果a₀ < 0,两边同时乘以-1)。

步骤二:构建Routh表的前两行

第一行:从a₀开始,每隔一个系数取一个:a₀, a₂, a₄, ...
第二行:从a₁开始,每隔一个系数取一个:a₁, a₃, a₅, ...

举个例子,对于特征方程:

s⁴ + 2s³ + 3s² + 4s + 5 = 0

前两行就是:

s⁴:  1   3   5
s³:  2   4   0

步骤三:计算后续各行

从第三行开始,每个元素由前两行的元素通过交叉相乘再相除得到。公式如下:

b₁ = (a₁×a₂ - a₀×a₃) / a₁
b₂ = (a₁×a₄ - a₀×a₅) / a₁
b₃ = (a₁×a₆ - a₀×a₇) / a₁
...

以此类推,直到计算完所有行。我刚开始学的时候总觉得这公式很绕,后来发现其实就是个行列式运算,看多了就习惯了。

4.4 完整示例演示

咱们拿一个实际例子走一遍。假设特征方程为:

s⁵ + 2s⁴ + 3s³ + 6s² + 2s + 1 = 0

构建Routh表:

s⁵ 1 3 2
s⁴ 2 6 1
b₁ = (2×3 - 1×6)/2 = 0 b₂ = (2×2 - 1×1)/2 = 1.5 0
c₁ = (0×6 - 2×1.5)/0 → 特殊情况! c₂ = (0×1 - 2×0)/0

这里出现了b₁ = 0的情况,这就是Routh表构建中的特殊情况。遇到这种情况怎么办?

⚠️ 特殊情况处理:

当某行第一个元素为0,但该行还有其他非零元素时,用一个小正数ε代替0,继续计算。最后看ε趋近于0时第一列元素的符号变化。

用ε代替后继续计算:

s³:  ε    1.5    0
s²:  (ε×6 - 2×1.5)/ε = (6ε - 3)/ε → 当ε→0⁺时,结果为负无穷
s¹:  计算略
s⁰:  计算略

第一列符号变化:正→正→正→负→... 有两次符号变化,说明系统有2个右半平面极点,系统不稳定。

💡 我的经验:

遇到第一列为0的情况,别慌。我当年做飞行器控制系统时,就遇到过这种特殊情况。用ε法处理,结果判断系统不稳定,后来仿真验证确实如此。记住:特殊情况往往意味着系统临界稳定或不稳定

4.5 Routh-Hurwitz判据的完整知识体系

下面这张图是我自己总结的,把整个判据的逻辑串起来了:

Routh-Hurwitz判据知识体系 特征方程 a₀sⁿ + ... = 0 步骤1:写出特征方程,确保 a₀ > 0 步骤2:构建Routh表前两行(奇偶系数分离) 步骤3:计算后续各行(交叉相乘再相除) 判断:第一列元素是否全部 > 0? 是 → 稳定 | 否 → 不稳定(符号变化次数=右半平面根数) ⚠️ 特殊情况处理 情况1:某行首元素为0 → 用ε代替,继续计算 情况2:某行全为0 → 用辅助多项式处理

4.6 避坑指南

做了这么多年控制,Routh判据的坑我踩过不少。给你列几个常见的:

  • 系数缺失问题:特征方程中如果缺了某一项(比如s²项系数为0),千万别直接跳过。缺项意味着系数为0,Routh表里要写0,然后按特殊情况处理。
  • 整行全为0:这种情况说明系统存在对称于原点的根(比如纯虚根)。需要用上一行的系数构造辅助多项式,求导后再继续。我曾经在电力系统稳定性分析中遇到过,差点翻车。
  • 数值精度:手算时小数保留3-4位就够了。但用计算机算时,注意浮点数误差可能导致符号判断错误。
📌 核心要点总结:
  1. Routh-Hurwitz判据不需要求特征根,只靠系数就能判断稳定性
  2. Routh表第一列全部大于0 → 系统稳定
  3. 第一列符号变化次数 = 右半平面极点个数
  4. 遇到首元素为0或整行全为0时,按特殊情况处理
  5. 这个判据只适用于线性定常系统,非线性系统别乱用

说实话,Routh判据虽然古老,但非常实用。我到现在做系统设计时,还是会先用它快速扫一遍稳定性,心里有个底。毕竟,一个不稳定的系统,谈什么性能都是白搭。