Content deleted Content added
m General fixes and Typo fixing, typos fixed: sligthly → slightly, occurence → occurrence using AWB |
|||
Line 9:
==Overview==
The Jenkins-Traub algorithm calculates all of the roots of a [[polynomial]] with complex coefficients. The algorithm starts by checking the polynomial for the
A description can also be found in Ralston and [[Philip Rabinowitz (mathematician)|
Rabinowitz]]<ref>Ralston, A. and Rabinowitz, P. (1978), A First Course in Numerical Analysis, 2nd ed., McGraw-Hill, New York.</ref> p.
The algorithm is similar in spirit to the two-stage algorithm studied by Traub<ref>Traub, J. F. (1966), [http://links.jstor.org/sici?sici=0025-5718(196601)20%3A93%3C113%3AACOGCI%3E2.0.CO%3B2-3 A Class of Globally Convergent Iteration Functions for the Solution of Polynomial Equations], Math. Comp., 20(93), 113-138.</ref>.
Line 55:
</math>
==== Stage One: No-Shift Process ====
For <math>\lambda=0,1,\dots, M-1</math> set <math>s_\lambda=0</math>. Usually ''M=5'' is chosen for polynomials of moderate degrees up to ''n=50''. This stage is not necessary from theoretical considerations alone, but is useful in practice. It emphasizes in the ''H'' polynomials the cofactor (of the linear factor) of the smallest root.
==== Stage Two: Fixed-Shift Process ====
The shift for this stage is determined as some point close to the smallest root of the polynomial. It is quasi-randomly located on the circle with the inner root radius, which in turn is estimated as the positive solution of the equation
:<math>
Line 75:
are simultaneously met. If there was no success after some number of iterations, a different random point on the circle is tried. Typically one uses a number of 9 iterations for polynomials of moderate degree, with a doubling strategy for the case of multiple failures.
==== Stage Three: Variable-Shift Process ====
The <math>H^{(\lambda+1)}(X)</math> are now generated using the variable shifts <math>s_{\lambda},\quad\lambda=L,L+1,\dots</math> which are generated by
:<math>s_L=t_L=s- \frac{P(s)}{\bar H^{(\lambda)}(s)}</math>
Line 85:
==== Convergence ====
It can be shown that, provided ''L'' is chosen sufficiently large, ''s''<sub>
The algorithm converges for any distribution of roots, but may fail to find all roots of the polynomial. Furthermore, the convergence is
==What gives the algorithm its power?==
Line 222:
==Software and testing==
The software for the Jenkins-traub algorithm was published as Jenkins and Traub [http://portal.acm.org/citation.cfm?id=361262&coll=portal&dl=ACM Algorithm 419: Zeros of a Complex Polynomial].<ref>
The methods have been extensively tested by many people. As predicted they enjoy faster than quadratic convergence for all distributions of zeros.
However there are polynomials which can cause loss of precision as illustrated by the following example. The polynomial has all its zeros lying on two half-circles of different radii. [[James H. Wilkinson|Wilkinson]] recommends that it is desirable for stable deflation that smaller zeros be computed first. The second-stage shifts are chosen so that the zeros on the smaller half circle are found first. After deflation the polynomial with the zeros on the half circle is known to be ill-conditioned if the degree is large; see Wilkinson,<ref>Wilkinson, J. H. (1963), Rounding Errors in Algebraic Processes, Prentice Hall, Englewood Cliffs, N.J.</ref> p.
==References==
|