Control Systems/Routh-Hurwitz Criterion

Stability Criteria
The Routh-Hurwitz stability criterion provides a simple algorithm to decide whether or not the zeros of a polynomial are all in the left half of the complex plane (such a polynomial is called at times "Hurwitz"). A Hurwitz polynomial is a key requirement for a linear continuous-time invariant to be stable (all bounded inputs produce bounded outputs).

If any of them fails - the polynomial is not stable. However, they may all hold without implying stability.
 * Necessary stability conditions: Conditions that must hold for a polynomial to be Hurwitz.
 * Sufficient stability conditions: Conditions that if met imply that the polynomial is stable. However, a polynomial may be stable without implying some or any of them.

The Routh criteria provides condition that are both necessary and sufficient for a polynomial to be Hurwitz.

Routh-Hurwitz Criteria
The Routh-Hurwitz criteria is comprised of three separate tests that must be satisfied. If any single test fails, the system is not stable and further tests need not be performed. For this reason, the tests are arranged in order from the easiest to determine to the hardest.

The Routh Hurwitz test is performed on the denominator of the transfer function, the characteristic equation. For instance, in a closed-loop transfer function with G(s) in the forward path, and H(s) in the feedback loop, we have:


 * $$T(s) = \frac{G(s)}{1 + G(s)H(s)}$$

If we simplify this equation, we will have an equation with a numerator N(s), and a denominator D(s):


 * $$T(s) = \frac{N(s)}{D(s)}$$

The Routh-Hurwitz criteria will focus on the denominator polynomial D(s).

Routh-Hurwitz Tests
Here are the three tests of the Routh-Hurwitz Criteria. For convenience, we will use N as the order of the polynomial (the value of the highest exponent of s in D(s)). The equation D(s) can be represented generally as follows:


 * $$D(s) = a_0 + a_1s + a_2s^2 + \cdots + a_Ns^N$$

We will explain the Routh array below.

The Routh's Array
The Routh array is formed by taking all the coefficients ai of D(s), and staggering them in array form. The final columns for each row should contain zeros:


 * $$\begin{matrix}s^N \\ s^{N-1} \end{matrix}

\begin{vmatrix}a_N & a_{N - 2} & \cdots & 0 \\ a_{N-1} & a_{N-3} & \cdots & 0 \end{vmatrix}$$

Therefore, if N is odd, the top row will be all the odd coefficients. If N is even, the top row will be all the even coefficients. We can fill in the remainder of the Routh Array as follows:


 * $$\begin{matrix}s^N \\ s^{N-1} \\ \\  \\ s^0 \end{matrix}

\begin{vmatrix}a_N & a_{N - 2} & \cdots & 0 \\ a_{N-1} & a_{N-3} & \cdots & 0 \\ b_{N-1} & b_{N-3} & \cdots \\ c_{N-1} & c_{N-3} & \cdots \\ \cdots \end{vmatrix}$$

Now, we can define all our b, c, and other coefficients, until we reach row s0. To fill them in, we use the following formulae:


 * $$b_{N-1} = \frac{-1}{a_{N-1}}\begin{vmatrix}a_N & a_{N-2} \\ a_{N-1} & a_{N-3}\end{vmatrix}$$

And


 * $$b_{N-3} = \frac{-1}{a_{N-1}}\begin{vmatrix}a_N & a_{N-4} \\ a_{N-1} & a_{N-5}\end{vmatrix}$$

For each row that we are computing, we call the left-most element in the row directly above it the pivot element. For instance, in row b, the pivot element is aN-1, and in row c, the pivot element is bN-1 and so on and so forth until we reach the bottom of the array.

To obtain any element, we negate the determinant of the following matrix, and divide by the pivot element:


 * $$\begin{vmatrix}k & m \\ l & n \end{vmatrix}$$

Where:
 * k is the left-most element two rows above the current row.
 * l is the pivot element.
 * m is the element two rows up, and one column to the right of the current element.
 * n is the element one row up, and one column to the right of the current element.

In terms of k l m n, our equation is:


 * $$v = \frac{(lm) - (kn)}{l}$$

Special Case: Row of All Zeros
If, while calculating our Routh-Hurwitz, we obtain a row of all zeros, we do not stop, but can actually learn more information about our system.

If we have a row of all zeros, the row directly above it is known as the Auxiliary Polynomial, and can be very helpful. The roots of the auxiliary polynomial give us the precise locations of complex conjugate roots that lie on the j&omega; axis. However, one important point to notice is that if there are repeated roots on the j&omega; axis, the system is actually unstable. Therefore, we must use the auxiliary polynomial to determine whether the roots are repeated or not.

The auxiliary equation is to be differentiated with respect to s and the coefficients of this equation replaces the all zero row. Routh array can be further calculated using these new values.

Special Case: Zero in the First Column
In this special case, there is a zero in the first column of the Routh Array, but the other elements of that row are non-zero. Like the above case, we can replace the zero with a small variable epsilon (&epsilon;) and use that variable to continue our calculations. After we have constructed the entire array, we can take the limit as epsilon approaches zero to get our final values. If the sign coefficient above the (&epsilon;) is the same as below it, this indicates a pure imaginary root.