You are on page 1of 5

Lab Report No#09

Objectives:
Routh- Hurwitz Criterion and Stability of Control Systems
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 time
invariant to be stable (all bounded inputs produce bounded outputs).
Necessary stability conditions
Conditions that must hold for a polynomial to be Hurwitz.If any of them fails - the polynomial is
not stable. However, they may all hold without implying stability.
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)=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)=N(s)/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)=a0+a1s+a2s2+.+aNsN-1

Rule 1
All the coefficients ai must be present (non-zero)
Rule 2
All the coefficients ai must be positive (equivalently all of them must be negative, with no sign
change).
Rule 3
If Rule 1 and Rule 2 are both satisfied, then form a Routh array from the coefficients ai. There
is one pole in the right-hand s-plane for every sign change of the members in the first column of
the Routh array (any sign changes, therefore, mean the system is unstable).
The Routh 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:

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:

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:

And

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:

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:

Figure. Completed Routh Table

The number of roots of the polynomial that are in the right half-plane is equal to the number of
sign changes in the first column of Routh table.
If routh table has a row of zeros then it means it has imaginary poles lying on imaginary axis.
Example 1:
Use the MATLAB m file Routh.m given to you in lab to generate the routh table of the
following TF. Find the number of poles in the left half-plane, the right half-plane, and on the jv-
axis for the system of Figure:

First, find the closed-loop transfer function as:

Routh.m
%In this program you must give your system coefficients and the Routh-
%Hurwitz table would be shown clc
clear
num=[0 0 0 0 200];
den=[1 6 11 6 200];
r=den; m=length(r); n=round(m/2); q=1;
k=0;
for p = 1:length(r) if rem(p,2)==0
even(k)=r(p);
else
odd(q)=r(p);
k=k+1;
q=q+1;

end
end
a=zeros(m,n);
if m/2 ~= round(m/2) even(n)=0;
end a(1,:)=odd;
a(2,:)=even; if a(2,1)==0
a(2,1)=0.01;
end
for i=3:m
for j=1:n-1
x=a(i-1,1);
if x==0
x=0.01;
end
a(i,j)=((a(i-1,1)*a(i-2,j+1))-(a(i-2,1)*a(i-1,j+1)))/x;
if a(i,:)==0
order=(m-i+1); c=0;

d=1;
for j=1:n-1
a(i,j)=(order-c)*(a(i-1,d)); d=d+1;
c=c+2;
end
end
if a(i,1)==0
a(i,1)=0.01;
end
end
Right_poles=0; for i=1:m-1
if sign(a(i,1))*sign(a(i+1,1))==-1 Right_poles=Right_poles+1;
end
end
fprintf('\n Routh-Hurwitz Table:\n') a
fprintf('\n Number Of Right Poles =%2.0f\n',Right_poles)
reply = input('Do You Need Roots of System? Y/N ', 's');
ROOTS=roots(r);
fprintf('\n Given Polynomials Coefficients Roots :\n') ROOTS
else end

Example 2:
Given the unity feedback system:

1. Find the range of K for stability.

2. Find the frequency of oscillation when the system is marginally stable.

Where frequency of oscillation is determined by observing the imaginary parts of the poles. Its

Code:
K=[0:0.001:200];
for i=1:length(K);
deng=conv([1 -4 8],[1 3]);
numg=[0 K(i) 2*K(i) 0];
dent=numg+deng;
R=roots(dent);
A=real(R);
B=max(A); if B<0
R K=K(i)
break end end

Conclusion:
The following experiment concludes that 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 time invariant to be stable (all bounded inputs produce
bounded outputs).