Derivation of the Routh array
The Routh array is a tabular method permitting one to establish the stability of a system using only the coefficients of the characteristic polynomial. Central to the field of control systems design, the Routh–Hurwitz theorem and Routh array emerge by using the Euclidean algorithm and Sturm's theorem in evaluating Cauchy indices.
The Cauchy index
Given the system:
- [math]\displaystyle{ \begin{align} f(x) & {} = a_0x^n+a_1x^{n-1}+\cdots+a_n & {} \quad (1) \\ & {} = (x-r_1)(x-r_2)\cdots(x-r_n) & {} \quad (2) \\ \end{align} }[/math]
Assuming no roots of [math]\displaystyle{ f(x) = 0 }[/math] lie on the imaginary axis, and letting
- [math]\displaystyle{ N }[/math] = The number of roots of [math]\displaystyle{ f(x) = 0 }[/math] with negative real parts, and
- [math]\displaystyle{ P }[/math] = The number of roots of [math]\displaystyle{ f(x) = 0 }[/math] with positive real parts
then we have
- [math]\displaystyle{ N+P=n \quad (3) }[/math]
Expressing [math]\displaystyle{ f(x) }[/math] in polar form, we have
- [math]\displaystyle{ f(x) = \rho(x)e^{j\theta(x)} \quad (4) }[/math]
where
- [math]\displaystyle{ \rho(x) = \sqrt{\mathfrak{Re}^2[f(x)]+\mathfrak{Im}^2[f(x)]} \quad (5) }[/math]
and
- [math]\displaystyle{ \theta(x) = \tan^{-1}\big(\mathfrak{Im}[f(x)]/\mathfrak{Re}[f(x)]\big) \quad (6) }[/math]
from (2) note that
- [math]\displaystyle{ \theta(x) = \theta_{r_1}(x)+\theta_{r_2}(x)+\cdots+\theta_{r_n}(x) \quad (7) }[/math]
where
- [math]\displaystyle{ \theta_{r_i}(x) = \angle(x-r_i) \quad (8) }[/math]
Now if the ith root of [math]\displaystyle{ f(x) = 0 }[/math] has a positive real part, then (using the notation y=(RE[y],IM[y]))
- [math]\displaystyle{ \begin{align} \theta_{r_i}(x)\big|_{x=-j\infty} & = \angle(x-r_i)\big|_{x=-j\infty} \\ & = \angle(0-\mathfrak{Re}[r_i],-\infty-\mathfrak{Im}[r_i]) \\ & = \angle(-|\mathfrak{Re}[r_i]|,-\infty) \\ & = \pi + \lim_{\phi \to \infty}\tan^{-1}\phi=\frac{3\pi}{2} \quad (9)\\ \end{align} }[/math]
and
- [math]\displaystyle{ \theta_{r_i}(x)\big|_{x=j0} = \angle(-|\mathfrak{Re}[r_i]|,0) = \pi - \tan^{-1}0=\pi \quad (10) }[/math]
and
- [math]\displaystyle{ \theta_{r_i}(x)\big|_{x=j\infty} = \angle(-|\mathfrak{Re}[r_i]|,\infty) = \pi - \lim_{\phi \to \infty}\tan^{-1}\phi=\frac{\pi}{2} \quad (11) }[/math]
Similarly, if the ith root of [math]\displaystyle{ f(x)=0 }[/math] has a negative real part,
- [math]\displaystyle{ \begin{align} \theta_{r_i}(x)\big|_{x=-j\infty} & = \angle(x-r_i)\big|_{x=-j\infty} \\ & = \angle(0- \mathfrak{Re}[r_i],-\infty-\mathfrak{Im}[r_i]) \\ & = \angle(|\mathfrak{Re}[r_i]|,-\infty) \\ & = 0 - \lim_{\phi \to \infty}\tan^{1}\phi=-\frac{\pi}{2} \quad (12)\\ \end{align} }[/math]
and
- [math]\displaystyle{ \theta_{r_i}(x)\big|_{x=j0} = \angle(|\mathfrak{Re}[r_i]|,0) = \tan^{-1}0=0\, \quad (13) }[/math]
and
- [math]\displaystyle{ \theta_{r_i}(x)\big|_{x=j\infty} = \angle(|\mathfrak{Re}[r_i]|,\infty) = \lim_{\phi \to \infty}\tan^{-1}\phi=\frac{\pi}{2}\, \quad (14) }[/math]
From (9) to (11) we find that [math]\displaystyle{ \theta_{r_i}(x)\Big|_{x=-j\infty}^{x=j\infty} = -\pi }[/math] when the ith root of [math]\displaystyle{ f(x) }[/math] has a positive real part, and from (12) to (14) we find that [math]\displaystyle{ \theta_{r_i}(x)\Big|_{x=-j\infty}^{x=j\infty} = \pi }[/math] when the ith root of [math]\displaystyle{ f(x) }[/math] has a negative real part. Thus,
- [math]\displaystyle{ \theta(x)\Big|_{x=-j\infty}^{x=j\infty} = \angle(x-r_1)\Big|_{x=-j\infty}^{x=j\infty}+\angle(x-r_2)\Big|_{x=-j\infty}^{x=j\infty}+\cdots+\angle(x-r_n)\Big|_{x=-j\infty}^{x=j\infty} = \pi N - \pi P \quad (15) }[/math]
So, if we define
- [math]\displaystyle{ \Delta=\frac{1}{\pi}\theta(x)\Big|_{-j\infty}^{j\infty} \quad (16) }[/math]
then we have the relationship
- [math]\displaystyle{ N - P = \Delta \quad (17) }[/math]
and combining (3) and (17) gives us
- [math]\displaystyle{ N = \frac{n+\Delta}{2} }[/math] and [math]\displaystyle{ P = \frac{n-\Delta}{2} \quad (18) }[/math]
Therefore, given an equation of [math]\displaystyle{ f(x) }[/math] of degree [math]\displaystyle{ n }[/math] we need only evaluate this function [math]\displaystyle{ \Delta }[/math] to determine [math]\displaystyle{ N }[/math], the number of roots with negative real parts and [math]\displaystyle{ P }[/math], the number of roots with positive real parts.
Figure 1
|
[math]\displaystyle{ \tan(\theta) }[/math] versus [math]\displaystyle{ \theta }[/math]
|
In accordance with (6) and Figure 1, the graph of [math]\displaystyle{ \tan(\theta) }[/math] vs [math]\displaystyle{ \theta }[/math], varying [math]\displaystyle{ x }[/math] over an interval (a,b) where [math]\displaystyle{ \theta_a=\theta(x)|_{x=ja} }[/math] and [math]\displaystyle{ \theta_b=\theta(x)|_{x=jb} }[/math] are integer multiples of [math]\displaystyle{ \pi }[/math], this variation causing the function [math]\displaystyle{ \theta(x) }[/math] to have increased by [math]\displaystyle{ \pi }[/math], indicates that in the course of travelling from point a to point b, [math]\displaystyle{ \theta }[/math] has "jumped" from [math]\displaystyle{ +\infty }[/math] to [math]\displaystyle{ -\infty }[/math] one more time than it has jumped from [math]\displaystyle{ -\infty }[/math] to [math]\displaystyle{ +\infty }[/math]. Similarly, if we vary [math]\displaystyle{ x }[/math] over an interval (a,b) this variation causing [math]\displaystyle{ \theta(x) }[/math] to have decreased by [math]\displaystyle{ \pi }[/math], where again [math]\displaystyle{ \theta }[/math] is a multiple of [math]\displaystyle{ \pi }[/math] at both [math]\displaystyle{ x = ja }[/math] and [math]\displaystyle{ x = jb }[/math], implies that [math]\displaystyle{ \tan \theta (x) = \mathfrak{Im}[f(x)]/\mathfrak{Re}[f(x)] }[/math] has jumped from [math]\displaystyle{ -\infty }[/math] to [math]\displaystyle{ +\infty }[/math] one more time than it has jumped from [math]\displaystyle{ +\infty }[/math] to [math]\displaystyle{ -\infty }[/math] as [math]\displaystyle{ x }[/math] was varied over the said interval.
Thus, [math]\displaystyle{ \theta(x)\Big|_{-j\infty}^{j\infty} }[/math] is [math]\displaystyle{ \pi }[/math] times the difference between the number of points at which [math]\displaystyle{ \mathfrak{Im}[f(x)]/\mathfrak{Re}[f(x)] }[/math] jumps from [math]\displaystyle{ -\infty }[/math] to [math]\displaystyle{ +\infty }[/math] and the number of points at which [math]\displaystyle{ \mathfrak{Im}[f(x)]/\mathfrak{Re}[f(x)] }[/math] jumps from [math]\displaystyle{ +\infty }[/math] to [math]\displaystyle{ -\infty }[/math] as [math]\displaystyle{ x }[/math] ranges over the interval [math]\displaystyle{ (-j\infty,+j\infty\,) }[/math] provided that at [math]\displaystyle{ x=\pm j\infty }[/math], [math]\displaystyle{ \tan[\theta(x)] }[/math] is defined.
Figure 2
|
[math]\displaystyle{ -\cot(\theta) }[/math] versus [math]\displaystyle{ \theta }[/math]
|
In the case where the starting point is on an incongruity (i.e. [math]\displaystyle{ \theta_a=\pi/2 \pm i\pi }[/math], i = 0, 1, 2, ...) the ending point will be on an incongruity as well, by equation (17) (since [math]\displaystyle{ N }[/math] is an integer and [math]\displaystyle{ P }[/math] is an integer, [math]\displaystyle{ \Delta }[/math] will be an integer). In this case, we can achieve this same index (difference in positive and negative jumps) by shifting the axes of the tangent function by [math]\displaystyle{ \pi/2 }[/math], through adding [math]\displaystyle{ \pi/2 }[/math] to [math]\displaystyle{ \theta }[/math]. Thus, our index is now fully defined for any combination of coefficients in [math]\displaystyle{ f(x) }[/math] by evaluating [math]\displaystyle{ \tan[\theta]=\mathfrak{Im}[f(x)]/\mathfrak{Re}[f(x)] }[/math] over the interval (a,b) = [math]\displaystyle{ (+j\infty, -j\infty) }[/math] when our starting (and thus ending) point is not an incongruity, and by evaluating
- [math]\displaystyle{ \tan[\theta'(x)]=\tan[\theta + \pi/2] = -\cot[\theta(x)] = -\mathfrak{Re}[f(x)]/\mathfrak{Im}[f(x)] \quad (19) }[/math]
over said interval when our starting point is at an incongruity. This difference, [math]\displaystyle{ \Delta }[/math], of negative and positive jumping incongruities encountered while traversing [math]\displaystyle{ x }[/math] from [math]\displaystyle{ -j\infty }[/math] to [math]\displaystyle{ +j\infty }[/math] is called the Cauchy Index of the tangent of the phase angle, the phase angle being [math]\displaystyle{ \theta(x) }[/math] or [math]\displaystyle{ \theta'(x) }[/math], depending as [math]\displaystyle{ \theta_a }[/math] is an integer multiple of [math]\displaystyle{ \pi }[/math] or not.
The Routh criterion
To derive Routh's criterion, first we'll use a different notation to differentiate between the even and odd terms of [math]\displaystyle{ f(x) }[/math]:
- [math]\displaystyle{ f(x) = a_0x^n + b_0x^{n-1} + a_1x^{n-2} + b_1x^{n-3} + \cdots \quad (20) }[/math]
Now we have:
- [math]\displaystyle{ \begin{align} f(j\omega) & = a_0(j\omega)^n+b_0(j\omega)^{n-1}+a_1(j\omega)^{n-2}+b_1(j\omega)^{n-3}+\cdots & {} \quad (21)\\ & = a_0(j\omega)^n+a_1(j\omega)^{n-2}+a_2(j\omega)^{n-4}+\cdots & {} \quad (22)\\ & + b_0(j\omega)^{n-1}+b_1(j\omega)^{n-3}+b_2(j\omega)^{n-5}+\cdots \\ \end{align} }[/math]
Therefore, if [math]\displaystyle{ n }[/math] is even,
- [math]\displaystyle{ \begin{align} f(j\omega) & = (-1)^{n/2}\big[a_0\omega^n-a_1\omega^{n-2}+a_2\omega^{n-4}-\cdots \big] & {} \quad (23)\\ & + j(-1)^{(n/2)-1}\big[b_0\omega^{n-1}-b_1\omega^{n-3}+b_2\omega^{n-5}-\cdots \big] & {} \\ \end{align} }[/math]
and if [math]\displaystyle{ n }[/math] is odd:
- [math]\displaystyle{ \begin{align} f(j\omega) & = j(-1)^{(n-1)/2}\big[a_0\omega^n-a_1\omega^{n-2}+a_2\omega^{n-4}-\cdots \big] & {} \quad (24)\\ & + (-1)^{(n-1)/2}\big[b_0\omega^{n-1}-b_1\omega^{n-3}+b_2\omega^{n-5}-\cdots \big] & {}\\ \end{align} }[/math]
Now observe that if [math]\displaystyle{ n }[/math] is an odd integer, then by (3) [math]\displaystyle{ N+P }[/math] is odd. If [math]\displaystyle{ N+P }[/math] is an odd integer, then [math]\displaystyle{ N-P }[/math] is odd as well. Similarly, this same argument shows that when [math]\displaystyle{ n }[/math] is even, [math]\displaystyle{ N-P }[/math] will be even. Equation (15) shows that if [math]\displaystyle{ N-P }[/math] is even, [math]\displaystyle{ \theta }[/math] is an integer multiple of [math]\displaystyle{ \pi }[/math]. Therefore, [math]\displaystyle{ \tan(\theta) }[/math] is defined for [math]\displaystyle{ n }[/math] even, and is thus the proper index to use when n is even, and similarly [math]\displaystyle{ \tan(\theta') = \tan(\theta+\pi) = -\cot(\theta) }[/math] is defined for [math]\displaystyle{ n }[/math] odd, making it the proper index in this latter case.
Thus, from (6) and (23), for [math]\displaystyle{ n }[/math] even:
- [math]\displaystyle{ \Delta = I_{-\infty}^{+\infty}\frac{-\mathfrak{Im}[f(x)]}{\mathfrak{Re}[f(x)]}= I_{-\infty}^{+\infty}\frac{b_0\omega^{n-1}-b_1\omega^{n-3}+\cdots}{a_0\omega^n-a_1\omega^{n-2}+\ldots} \quad (25) }[/math]
and from (19) and (24), for [math]\displaystyle{ n }[/math] odd:
- [math]\displaystyle{ \Delta = I_{-\infty}^{+\infty}\frac{\mathfrak{Re}[f(x)]}{\mathfrak{Im}[f(x)]}= I_{-\infty}^{+\infty}\frac{b_0\omega^{n-1}-b_1\omega^{n-3}+\ldots}{a_0\omega^n-a_1\omega^{n-2}+\ldots} \quad (26) }[/math]
Lo and behold we are evaluating the same Cauchy index for both: [math]\displaystyle{ \Delta = I_{-\infty}^{+\infty}\frac{b_0\omega^{n-1}-b_1\omega^{n-3}+\ldots}{a_0\omega^n-a_1\omega^{n-2}+\ldots} \quad (27) }[/math]
Sturm's theorem
Sturm gives us a method for evaluating [math]\displaystyle{ \Delta = I_{-\infty}^{+\infty}\frac{f_2(x)}{f_1(x)} }[/math]. His theorem states as follows:
Given a sequence of polynomials [math]\displaystyle{ f_1(x),f_2(x), \dots, f_m(x) }[/math] where:
1) If [math]\displaystyle{ f_k(x) = 0 }[/math] then [math]\displaystyle{ f_{k-1}(x) \neq 0 }[/math], [math]\displaystyle{ f_{k+1}(x) \neq 0 }[/math], and [math]\displaystyle{ \operatorname{sign}[f_{k-1}(x)] = - \operatorname{sign}[f_{k+1}(x)] }[/math]
2) [math]\displaystyle{ f_m(x) \neq 0 }[/math] for [math]\displaystyle{ -\infty \lt x \lt \infty }[/math]
and we define [math]\displaystyle{ V(x) }[/math] as the number of changes of sign in the sequence [math]\displaystyle{ f_1(x),f_2(x), \dots, f_m(x) }[/math] for a fixed value of [math]\displaystyle{ x }[/math], then:
- [math]\displaystyle{ \Delta = I_{-\infty}^{+\infty}\frac{f_2(x)}{f_1(x)}= V(-\infty) - V(+\infty) \quad (28) }[/math]
A sequence satisfying these requirements is obtained using the Euclidean algorithm, which is as follows:
Starting with [math]\displaystyle{ f_1(x) }[/math] and [math]\displaystyle{ f_2(x) }[/math], and denoting the remainder of [math]\displaystyle{ f_1(x)/f_2(x) }[/math] by [math]\displaystyle{ f_3(x) }[/math] and similarly denoting the remainder of [math]\displaystyle{ f_2(x)/f_3(x) }[/math] by [math]\displaystyle{ f_4(x) }[/math], and so on, we obtain the relationships:
- [math]\displaystyle{ \begin{align} &f_1(x)= q_1(x)f_2(x) - f_3(x) \quad (29)\\ &f_2(x)= q_2(x)f_3(x) - f_4(x) \\ & \ldots \\ &f_{m-1}(x)= q_{m-1}(x)f_m(x) \\ \end{align} }[/math]
or in general
- [math]\displaystyle{ f_{k-1}(x)= q_{k-1}(x)f_k(x) - f_{k+1}(x) }[/math]
where the last non-zero remainder, [math]\displaystyle{ f_m(x) }[/math] will therefore be the highest common factor of [math]\displaystyle{ f_1(x),f_2(x), \dots, f_{m-1}(x) }[/math]. It can be observed that the sequence so constructed will satisfy the conditions of Sturm's theorem, and thus an algorithm for determining the stated index has been developed.
It is in applying Sturm's theorem (28) to (29), through the use of the Euclidean algorithm above that the Routh matrix is formed.
We get
- [math]\displaystyle{ f_3(\omega) = \frac {a_0}{b_0}f_2(\omega) - f_1(\omega) \quad (30) }[/math]
and identifying the coefficients of this remainder by [math]\displaystyle{ c_0 }[/math], [math]\displaystyle{ -c_1 }[/math], [math]\displaystyle{ c_2 }[/math], [math]\displaystyle{ -c_3 }[/math], and so forth, makes our formed remainder
- [math]\displaystyle{ f_3(\omega) = c_0\omega^{n-2} - c_1\omega^{n-4} + c_2\omega^{n-6} - \cdots \quad (31) }[/math]
where
- [math]\displaystyle{ c_0 = a_1 - \frac{a_0}{b_0}b_1 = \frac{b_0a_1 - a_0b_1}{b_0}; c_1 = a_2 - \frac{a_0}{b_0}b_2 = \frac{b_0a_2 - a_0b_2}{b_0};\ldots \quad (32) }[/math]
Continuing with the Euclidean algorithm on these new coefficients gives us
- [math]\displaystyle{ f_4(\omega) = \frac {b_0}{c_0}f_3(\omega) - f_2(\omega) \quad (33) }[/math]
where we again denote the coefficients of the remainder [math]\displaystyle{ f_4(\omega) }[/math] by [math]\displaystyle{ d_0 }[/math], [math]\displaystyle{ -d_1 }[/math], [math]\displaystyle{ d_2 }[/math], [math]\displaystyle{ -d_3 }[/math], making our formed remainder
- [math]\displaystyle{ f_4(\omega) = d_0\omega^{n-3} - d_1\omega^{n-5} + d_2\omega^{n-7} - \cdots \quad (34) }[/math]
and giving us
- [math]\displaystyle{ d_0 = b_1 - \frac{b_0}{c_0}c_1 = \frac{c_0b_1 - b_0c_1}{c_0}; d_1 = b_2 - \frac{b_0}{c_0}c_2 = \frac{c_0b_2 - b_0c_2}{c_0};\ldots \quad (35) }[/math]
The rows of the Routh array are determined exactly by this algorithm when applied to the coefficients of (20). An observation worthy of note is that in the regular case the polynomials [math]\displaystyle{ f_1(\omega) }[/math] and [math]\displaystyle{ f_2(\omega) }[/math] have as the highest common factor [math]\displaystyle{ f_{n+1}(\omega) }[/math] and thus there will be [math]\displaystyle{ n }[/math] polynomials in the chain [math]\displaystyle{ f_1(x),f_2(x), \dots, f_m(x) }[/math].
Note now, that in determining the signs of the members of the sequence of polynomials [math]\displaystyle{ f_1(x),f_2(x), \dots,f_m(x) }[/math] that at [math]\displaystyle{ \omega = \pm \infty }[/math] the dominating power of [math]\displaystyle{ \omega }[/math] will be the first term of each of these polynomials, and thus only these coefficients corresponding to the highest powers of [math]\displaystyle{ \omega }[/math] in [math]\displaystyle{ f_1(x),f_2(x), \dots }[/math], and [math]\displaystyle{ f_m(x) }[/math], which are [math]\displaystyle{ a_0 }[/math], [math]\displaystyle{ b_0 }[/math], [math]\displaystyle{ c_0 }[/math], [math]\displaystyle{ d_0 }[/math], ... determine the signs of [math]\displaystyle{ f_1(x) }[/math], [math]\displaystyle{ f_2(x) }[/math], ..., [math]\displaystyle{ f_m(x) }[/math] at [math]\displaystyle{ \omega = \pm\infty }[/math].
So we get [math]\displaystyle{ V(+\infty)=V(a_0, b_0, c_0, d_0, \dots) }[/math] that is, [math]\displaystyle{ V(+\infty) }[/math] is the number of changes of sign in the sequence [math]\displaystyle{ a_0\infty^n }[/math], [math]\displaystyle{ b_0\infty^{n-1} }[/math], [math]\displaystyle{ c_0\infty^{n-2} }[/math], ... which is the number of sign changes in the sequence [math]\displaystyle{ a_0 }[/math], [math]\displaystyle{ b_0 }[/math], [math]\displaystyle{ c_0 }[/math], [math]\displaystyle{ d_0 }[/math], ... and [math]\displaystyle{ V(-\infty)=V(a_0, -b_0, c_0, -d_0, ...) }[/math]; that is [math]\displaystyle{ V(-\infty) }[/math] is the number of changes of sign in the sequence [math]\displaystyle{ a_0(-\infty)^n }[/math], [math]\displaystyle{ b_0(-\infty)^{n-1} }[/math], [math]\displaystyle{ c_0(-\infty)^{n-2} }[/math], ... which is the number of sign changes in the sequence [math]\displaystyle{ a_0 }[/math], [math]\displaystyle{ -b_0 }[/math], [math]\displaystyle{ c_0 }[/math], [math]\displaystyle{ -d_0 }[/math], ...
Since our chain [math]\displaystyle{ a_0 }[/math], [math]\displaystyle{ b_0 }[/math], [math]\displaystyle{ c_0 }[/math], [math]\displaystyle{ d_0 }[/math], ... will have [math]\displaystyle{ n }[/math] members it is clear that [math]\displaystyle{ V(+\infty) + V(-\infty) = n }[/math] since within [math]\displaystyle{ V(a_0, b_0, c_0, d_0, \dots) }[/math] if going from [math]\displaystyle{ a_0 }[/math] to [math]\displaystyle{ b_0 }[/math] a sign change has not occurred, within [math]\displaystyle{ V(a_0, -b_0, c_0, -d_0, \dots) }[/math] going from [math]\displaystyle{ a_0 }[/math] to [math]\displaystyle{ -b_0 }[/math] one has, and likewise for all [math]\displaystyle{ n }[/math] transitions (there will be no terms equal to zero) giving us [math]\displaystyle{ n }[/math] total sign changes.
As [math]\displaystyle{ \Delta = V(-\infty) - V(+\infty) }[/math] and [math]\displaystyle{ n = V(+\infty) + V(-\infty) }[/math], and from (18) [math]\displaystyle{ P = (n - \Delta/2) }[/math], we have that [math]\displaystyle{ P = V(+\infty) = V(a_0, b_0, c_0, d_0, \dots) }[/math] and have derived Routh's theorem -
The number of roots of a real polynomial [math]\displaystyle{ f(z) }[/math] which lie in the right half plane [math]\displaystyle{ \mathfrak{Re}(r_i) \gt 0 }[/math] is equal to the number of changes of sign in the first column of the Routh scheme.
And for the stable case where [math]\displaystyle{ P = 0 }[/math] then [math]\displaystyle{ V(a_0, b_0, c_0, d_0, \dots) = 0 }[/math] by which we have Routh's famous criterion:
In order for all the roots of the polynomial [math]\displaystyle{ f(z) }[/math] to have negative real parts, it is necessary and sufficient that all of the elements in the first column of the Routh scheme be different from zero and of the same sign.
References
- Hurwitz, A., "On the Conditions under which an Equation has only Roots with Negative Real Parts", Rpt. in Selected Papers on Mathematical Trends in Control Theory, Ed. R. T. Ballman et al. New York: Dover 1964
- Routh, E. J., A Treatise on the Stability of a Given State of Motion. London: Macmillan, 1877. Rpt. in Stability of Motion, Ed. A. T. Fuller. London: Taylor & Francis, 1975
- Felix Gantmacher (J.L. Brenner translator) (1959) Applications of the Theory of Matrices, pp 177–80, New York: Interscience.
Original source: https://en.wikipedia.org/wiki/Derivation of the Routh array.
Read more |