|
Finding Roots of Polynomials by the Routh Array
EXISTING ROOT FINDING METHODS
Some of the more popular methods for finding roots of polynomials include the Newton-Raphson method, Muller’s method, Lin’s method, Bairstow’s method, the Secant method and the Bisection method [2]. Lin and Bairstow’s methods have proved to be the more popular techniques in control engineering since these methods extract complex conjugate root pairs quite easily which is of great importance in that field. The Secant and Bisection methods are generally ineffective when it comes to finding complex conjugate root pairs, while the Newton-Raphson method and Muller’s method use complex arithmetic which is awkward when using hand calculation but possible in a computer program.
|
Root pair (s) |
F(s) |
Iterations |
|
-0.776584, 0.850833 |
0.0692, -0.0002 |
6 |
|
-0.965748± 0.141695i |
-0.0003+|0.0001|i |
8 |
|
0.334024± 0.899567i |
0.0005+|0.0005|i |
6 |
|
-0.557396± 0.788376i |
0.0002+|0.0001|i |
0 |
This shows that the Routh array method found all the roots after only 20 iterations, which is quite a difference from the 38 with Bairstow’s method. This example may be quite misleading, because overall it may be that for certain polynomials Bairstow’s method may converge a bit quicker than that of the Routh array method. The only other difference in the two methods for this example, is that the pair of real roots were extracted first.
Example 5.3.2
The second polynomial considered was
F(s) = s8 - 1.746s7 + 0.402s6 + 0.049s5 + 1.2134 - 0.839s3 - 0.152s2 - 0.132s + 0.239
Again, Bairstow’s method gives the results in table 5.3.2.1.
|
u |
v |
Root pair (s) |
F(s) |
Iterations |
|
1.846 |
-0.871 |
0.92325± 0.136416i |
0.0001+|0.0001|i |
7 |
|
1.721 |
-0.952 |
0.8605± 0.459934i |
0.0001+|0.0001|i |
7 |
|
-0.818 |
-0.489 |
-0.409± 0.567202i |
-0.0003+|0.0001|i |
15 |
|
-1.003 |
-0.590 |
-0.5015± 0.581805i |
0.0003+|0.0003|i |
0 |
This shows that overall, Bairstow’s method converged after a total of 29 iterations. The accuracy of the roots is also very good. When the polynomial is used in the Routh array method with the secant method running, the following results in table 5.3.2.2 were obtained.
|
Root pair (s) |
F(s) |
Iterations |
|
0.923360± 0.136907i |
-0.0001+|0.0001|i |
7 |
|
0.860379± 0.459951i |
-0.0001+|0.0001|i |
6 |
|
-0.500000± 0.582762i |
0.0006+|0.0012|i |
2 |
|
-0.410739± 0.565140i |
0.0002+|0.0004|i |
0 |
Again, this polynomial has found all of the roots after a smaller number of iterations. For this example there was a total of only 15 iterations that were needed until all of the roots were found. Even though this example has shown that the Routh array method has converged quicker overall, it does not imply that the Routh array method is better overall. For example, it may be that the root distribution for this example may be better suited to using the Routh array method than Bairstow’s method. Nevertheless, it still shows that if this method is used properly then it can prove to be very powerful, and also quite a quick method, for finding roots of polynomials.
The last two examples have shown the Routh array method to converge quicker than that of Bairstow’s. The next example actually shows that Bairstow’s method can converge marginally quicker than the Routh array method.
Example 5.3.3
This is a degree 8 polynomial with all the roots lying within the unit circle;
F(s) = s8 - 1.806s7 + 1.247s6 - 1.016s5 + 1.425s4 - 1.228s3 + 0.857s2 - 0.898s + 0.489
The roots and the number of iterations using Bairstow’s technique are shown in table 5.3.3.1.
|
u |
v |
Root pair (s) |
F(s) |
Iterations |
|
1.867 |
-0.893 |
0.9335± 0.146893i |
0.0010+|0.0011|i |
7 |
|
-0.218 |
-0.698 |
-0.109± 0.828322i |
-0.0002+|0.0005|i |
15 |
|
1.485 |
-0.919 |
0.7425± 0.606377i |
0.0005+|0.0018|i |
6 |
|
-1.327 |
-0.853 |
-0.6635± 0.642470i |
-0.0007+|0.0006|i |
0 |
For this example, Bairstow’s method found all eight roots after a total of 28 iterations. The results when testing this polynomial using the Routh array method are given below in table 5.3.3.2.
|
Root pair (s) |
F(s) |
Iterations |
|
0.742284± 0.606883i |
-0.0002+|0.0013|i |
15 |
|
0.932567± 0.147877i |
0.0008+|0.0003|i |
7 |
|
-0.108807± 0.827776i |
0.0014+|0.0010|i |
7 |
|
-0.663044± 0.642619i |
0.0003+|0.0002|i |
0 |
This time, the Routh array method found all the roots after a total of 29 iterations. This is only slightly smaller than that gained from Bairstow’s method but it would seem to indicate that in certain cases, Bairstow’s method will work faster.
CONCLUSIONS
What this chapter has shown is that the Routh array method is a potentially powerful way of finding roots of polynomials, rivalling methods such as Bairstow’s method. Some examples were studied to compare how well the Routh array method coped with certain polynomials, comparing results that had previously been obtained.
From this evidence it is seen that the Routh array method copes very well with difficuilt polynomials. The convergence rate, which is an important part of any method, also proved to be very good. This appears to be due to the "secant-type" procedure mentioned in chapter 4, being a big improvement over the "bisection" procedure used by Lucas [5].
Further, a big advantage of the Routh method over methods such as Bairstow’s and Lin’s is that it guarantees convergence once real part bounds are found. This property makes the method attractive to use.
Chapter 4 - Examples Using the Routh Array Method
|
Chapter 6- Conclusions