(Control Theory : Classical Control : Routh stability criterion)
Ok, I designed a simple controller to regulate the motion of this simple machine so that it can operate smoothly. Will it actually work or will the machine shake itself to pieces?
The Routh stability criterion is a way of determining whether a given
feedback system, as modelled by a transfer function (in the frequency domain), is "asymptotically stable". That is to say, according to the Lyapunov concept of stability, that the output and all internal variables never become unbounded and they go to zero as time goes to infinity for
sufficiently small initial conditions. This occurs when all the poles (roots) pi of the system's characteristic equation strictly lie in the left half of the complex plane (LHP): Re{pi} < 0. The beauty of this technique is that you don't actually have to solve for the roots of the nth-order characteristic polynomial, which can be quite difficult for higher-order systems to say the least.
As one would suspect, this technique comes from classical control design and was much more useful before the availability of modern mathematical software, but it can still be handy for determining the ranges of coefficients for system stability, especially in symbolic form. These days, its use is probably limited to university courses in control systems.
Before we get into the actual math (or at least what engineers call "math" ;), I should mention that this test is sometimes referred to as the Routh-Hurwitz Stability Criterion, since equivalent tests were proposed independently by Edward Routh in 1874 and Adolf Hurwitz in 1895. This writeup covers Routh's version (by the way, I've always heard "Routh" pronounced "Rowth" like the American pronunciation of "router", not "Rooth").
Method
Given a closed-loop transfer function (see Black's formula) in the s-domain for a linear time-invariant (LTI) feedback system, the characteristic equation shows up as its denominator:
B(s) b0sm + b1sm-1 + ... + bm
G(s) = ---- = --------------------------
A(s) sn + a1sn-1 + ... + an
Characteristic equation: p(s) = A(s) = sn + a1sn-1 + ... + an = 0
The first step is to begin to construct the Routh array by arranging the coefficients of the characteristic polynomial in two rows, beginning with the first and second coefficients followed by the even-numbered and odd-numbered coefficients respectively, like so:
sn : 1 a2 a4 ...
sn-1 : a1 a3 a5 ...
The table is then completed with a bit of calculation as follows (the
following 'b' is unrelated to the 'b' in the transfer function shown above):
sn : 1 a2 a4 ...
sn-1 : a1 a3 a5 ...
sn-2 : b1 b2 b3 ...
sn-3 : c1 c2 c3 ...
... : ...
Where
det[1 a2; a1 a3] a1*a2 - a3
b1 = - ---------------- = ----------
a1 a1
det[1 a4; a1 a5] a1*a4 - a5
b2 = - ---------------- = ----------
a1 a1
det[1 a6; a1 a7] a1*a6 - a7
b3 = - ---------------- = ----------
a1 a1
det[a1 a3; b1 b2] b1*a3 - a1*b2
c1 = - ---------------- = --------------
b1 b1
det[a1 a5; b1 b3] b1*a5 - a1*b3
c2 = - ---------------- = --------------
b1 b1
det[a1 a7; b1 b4] b1*a7 - a1*b4
c3 = - ---------------- = --------------
b1 b1
Once you've completed the table, you then look at the first column and count the number of sign changes (e.g. +, -, + = 2 changes). Each sign change counts as one pole in the right half of the complex plane (RHP) and, as mentioned earlier, poles in the RHP make the system unstable! Therefore, you want all the elements in the first column to be positive and if you get that, your poles are safely in the LHP and your system will be stable.
This technique is probably a bit easier to understand with a simple example:
p(s) = s4 + 2s3 + 3s2 - 4s + 5
+--------
s4 | 1 3 5
s3 | 2 4 0
s2 |b1 b2
s1 |c1
s0 |d1
b1 = -det[1 3; 2 4]/2 = 1
b2 = -det[1 5; 2 0]/2 = 5
c1 = -det[2 4; 1 5]/1 = -6
d1 = -det[1 5; -6 0]/-6 = 5
(b3 = c2 = c3 = d2 = d3 = 0 by inspection; trailing zeros are normally not
written in the Routh array since we just care about the first column)
+--------
s4 | 1 3 5
s3 | 2 4 0
s2 | 1 5
s1 |-6
s0 | 5
2 sign changes => system has 2 poles in the RHP => system is unstable
Special Cases
Ah, but there's always a catch, isn't there? There are two special cases that have to be considered:
- A zero in the first column: replace it with a small positive
constant ε > 0. Continue your calculations as before and then apply
the stability criterion by taking the limit as ε → 0.
- A zero row: take the derivative of the preceding row's
polynomial to obtain an "auxiliary polynomial" and enter its
coefficients in the current row. After completing the Routh array,
repeat the whole process for the auxiliary polynomial with a new (smaller)
Routh array and count the total number of sign changes between them both.
For discrete-time systems (i.e. those implementable on a computer), please
see the technique outlined under Jury stability criterion.
REFERENCES
Franklin, G.F., J.D. Powell, A. Emami-Naeini. Feedback Control of Dynamic Systems, 3rd ed. Addison-Wesley, 1994.
ECE311S lecture notes, University of Toronto