Stability analysis using Routh-Hurwitz array
Imagine you've designed a system—it could be a cruise control for a car, a thermostat for a house, or a robot arm. The most important question you need to answer is: "Is this system stable?"
In control systems, the stability of a system is determined by the poles of its transfer function. These poles are simply the roots of the denominator polynomial of the transfer function, which we call the Characteristic Equation.
The Rule of Stability:
For a system to be stable, all the roots (poles) of its characteristic equation must have negative real parts. In other words, they must all lie in the Left-Half of the complex s-plane.
The Problem: Finding the exact roots of a high-order polynomial (e.g., $s^5 + 2s^4 + 3s^3 + ... = 0$) is difficult and time-consuming.
The Solution: The Routh-Hurwitz Criterion is a brilliant mathematical method that tells us how many roots are in the Right-Half Plane (RHP) without having to calculate them! This allows us to determine stability quickly and efficiently. The core of this method is the Routh-Hurwitz Array.
The criterion has two parts: a necessary condition and a sufficient condition.
For a system to be stable, it is necessary (but not sufficient) that:
1. All the coefficients of the characteristic equation have the same sign (usually all positive).
2. There are no missing terms (i.e., all powers of 's' from the highest down to $s^0$ are present).
If this condition fails, the system is guaranteed to be unstable, and you don't even need to build the array. You can immediately say there are roots in the RHP. However, if this condition passes, the system might be stable, and you must proceed to the next step.
The sufficient condition for stability is that all the elements in the first column of the Routh array must have the same sign.
The number of sign changes in the first column of the array is equal to the number of roots in the Right-Half Plane (RHP).
Let's learn the procedure with a general characteristic equation:
$Q(s) = an s^n + a{n-1} s^{n-1} + a{n-2} s^{n-2} + a{n-3} s^{n-3} + \dots + a_1 s + a_0 = 0$
Step 1: Set up the first two rows
The array has rows labeled by powers of 's', from the highest ($s^n$) down to $s^0$.
Example: For $Q(s) = a_4 s^4 + a_3 s^3 + a_2 s^2 + a_1 s + a_0$
| $s^4$ | $a_4$ | $a_2$ | $a_0$ |
| :---: | :---: | :---: | :---: |
| $s^3$ | $a_3$ | $a_1$ | 0 |
(Pad with zeros if you run out of coefficients in a row)
Step 2: Calculate the third row ($s^{n-2}$)
The elements of the subsequent rows are calculated using a criss-cross determinant-like formula based on the two rows immediately above.
Let's call the elements of the third row $b_1, b_2, b_3, \dots$
The formula for the elements in the $s^{n-2}$ row is:
$b_1 = \frac{a_3 \cdot a_2 - a_4 \cdot a_1}{a_3}$
$b_2 = \frac{a_3 \cdot a_0 - a_4 \cdot 0}{a_3}$
... and so on.
A visual way to remember this for $b_1$:
$b_1 = \frac{-1}{a_3} \begin{vmatrix} a_4 & a_2 \ a_3 & a_1 \end{vmatrix} = \frac{-(a_4 a_1 - a_3 a_2)}{a_3} = \frac{a_3 a_2 - a_4 a_1}{a_3}$
Step 3: Calculate all subsequent rows
You repeat the same pattern for every new row. To calculate an element, you use the two rows directly above it. The divisor is always the element in the first column of the row right above.
Step 4: Stop when you reach the $s^0$ row
The array is complete when you have calculated the value for the $s^0$ row. This row will only have one element.
Let's analyze the stability of a system with the following characteristic equation:
$Q(s) = s^3 + 6s^2 + 11s + 6 = 0$
1. Preliminary Check:
All coefficients (1, 6, 11, 6) are positive.
No missing terms ($s^3, s^2, s^1, s^0$).
The necessary condition is met. The system could* be stable. Now we build the array.
2. Construct the Array:
Rows 1 & 2:
| $s^3$ | 1 | 11 |
| :---: |:-:|:--:|
| $s^2$ | 6 | 6 |
Calculate the $s^1$ row:
Let's call the element $b_1$.
$b_1 = \frac{(6 \cdot 11) - (1 \cdot 6)}{6} = \frac{66 - 6}{6} = \frac{60}{6} = 10$
There are no more elements to calculate in this row.
| $s^3$ | 1 | 11 |
| :---: |:-:|:--:|
| $s^2$ | 6 | 6 |
| $s^1$ | 10 | 0 |
3. The Final Routh Array:
| $s^3$ | 1 | 11 |
| :---: |:-:|:--:|
| $s^2$ | 6 | 6 |
| $s^1$ | 10| 0 |
| $s^0$ | 6 | |
4. Interpret the Result:
Look at the first column: [1, 6, 10, 6].
From 1 to 6: No sign change.
From 6 to 10: No sign change.
* From 10 to 6: No sign change.
There are zero sign changes in the first column.
Conclusion: This means there are zero roots in the Right-Half Plane. The system is STABLE.
Sometimes, things don't go as smoothly. There are two special cases.
If you get a zero in the first column of a row, but other elements in that row are non-zero, you will have a division-by-zero problem when calculating the next row.
Solution: Replace the zero in the first column with a very small positive number, epsilon ($\epsilon$), and continue the calculations. Then, analyze the signs in the first column by taking the limit as $\epsilon \to 0^+$.
Example: $Q(s) = s^5 + s^4 + 2s^3 + 2s^2 + 3s + 5 = 0$
| $s^5$ | 1 | 2 | 3 |
| :---: |:-:|:-:|:-:|
| $s^4$ | 1 | 2 | 5 |
| $s^3$ | $0 \to \epsilon$ | -2| | (Calculation: (12 - 12)=0, (13 - 15)=-2)
| $s^2$ | $\frac{2\epsilon - (-2)}{\epsilon}$ | 5 | | (Limit as $\epsilon \to 0^+$ is $\frac{2}{\epsilon} \to +\infty$)
| $s^1$ | ... | | |
When you analyze the first column: $[1, 1, \epsilon, \frac{2}{\epsilon}, ... ]$.
$1 \to 1$ (no change)
$1 \to \epsilon$ (no change, since $\epsilon$ is positive)
* $\epsilon \to \frac{2}{\epsilon}$ (no change, since both are positive)
But let's look at the next term. Calculating the $s^1$ element:
$\frac{(\frac{2\epsilon+2}{\epsilon})(-2) - (\epsilon)(5)}{\frac{2\epsilon+2}{\epsilon}} \approx \frac{(2/\epsilon)(-2) - 0}{2/\epsilon} = -2$ (as $\epsilon \to 0$)
The first column would look like $[1, 1, \epsilon, +\infty, -2, ...]$. There is a sign change from $+\infty$ to $-2$. So the system is unstable.
If an entire row becomes zero, it signals a special situation: the polynomial has roots that are symmetric about the origin of the s-plane. This could mean:
Roots on the imaginary axis (e.g., $\pm j\omega$), leading to marginal stability.
Pairs of real roots with opposite signs (e.g., +2, -2), leading to instability.
Solution:
1. Go to the row just above the row of zeros. Form an "Auxiliary Polynomial," $A(s)$, using its coefficients. The powers of 's' in this polynomial will be even or odd, decreasing by 2.
2. Differentiate the auxiliary polynomial with respect to 's': $\frac{dA(s)}{ds}$.
3. Replace the row of zeros with the coefficients of the derivative $\frac{dA(s)}{ds}$.
4. Continue building the rest of the array as usual.
Example: $Q(s) = s^3 + 2s^2 + s + 2 = 0$
| $s^3$ | 1 | 1 |
| :---: |:-:|:-:|
| $s^2$ | 2 | 2 |
| $s^1$ | 0 | 0 | (Calculation: (21 - 12)=0) -> Row of Zeros!
The new array:
| $s^3$ | 1 | 1 |
| :---: |:-:|:-:|
| $s^2$ | 2 | 2 |
| $s^1$ | 4 | 0 |
Final Array:
| $s^3$ | 1 | 1 |
| :---: |:-:|:-:|
| $s^2$ | 2 | 2 |
| $s^1$ | 4 | 0 |
| $s^0$ | 2 | |
Interpretation:
First Column [1, 2, 4, 2]: There are no sign changes. This means there are no roots in the RHP.
Because we had a row of zeros, we know there are roots on the imaginary axis.
* Conclusion: The system is MARGINALLY STABLE.
Pro-Tip: The roots of the auxiliary polynomial itself ($A(s)=0$) are the symmetric roots. Here, $2s^2+2=0 \implies s^2 = -1 \implies s = \pm j1$. These are the poles on the imaginary axis, and the system will oscillate at a frequency of 1 rad/s.
| First Column of Routh Array | System Stability |
| ----------------------------------------------------------- | ------------------------------------------------- |
| No sign changes. | Stable (all poles in LHP) |
| One or more sign changes. | Unstable (number of RHP poles = sign changes) |
| A zero in the first column (replaced by $\epsilon$). | Check for sign changes with $\epsilon$. If changes exist, Unstable. |
| An entire row of zeros. | Not strictly stable. It is either Unstable or Marginally Stable. Check the rest of the array after using the auxiliary polynomial. If no further sign changes, it's Marginally Stable. If there are sign changes, it's Unstable. |