C202: Zeros of a Real Polynomial

Author(s): H.-H. Umstätter Library: MATHLIB
Submitter: K.S. Kölbig Submitted: 07.06.1992
Language: Fortran Revised:

Subroutine subprogram RMULLZ and DMULLZ compute the zeros of the polynomial

displaymath97

of degree n with real coefficients tex2html_wrap_inline101 and tex2html_wrap_inline103 .

On computers other than CDC or Cray, only the double-precision version DMULLZ is available. On CDC and Cray computers, only the single-precision version RMULLZ is available.

Structure:

SUBROUTINE subprograms
User Entry Names : RMULLZ, DMULLZ
Files Referenced: Unit 6
External References: MTLMTR, ABEND

Usage:

For tex2html_wrap_inline105 (type REAL), tex2html_wrap_inline107 (type DOUBLE PRECISION),

    CALL tMULLZ(A,N,MAXIT,Z)
A
(type according to t) One-dimensional array of dimension (0:d), where tex2html_wrap_inline109 , containing the coefficients tex2html_wrap_inline111 .
N
(INTEGER) The degree n.
MAXIT
(INTEGER) The maximum number of iterations permitted.
Z
(COMPLEX for tex2html_wrap_inline115 , COMPLEX*16 for tex2html_wrap_inline117 ) One-dimensional array of length tex2html_wrap_inline119 . On exit, tex2html_wrap_inline121 contains an approximation to the zero tex2html_wrap_inline123 , listed in roughly decreasing order of tex2html_wrap_inline125 .

Method:

The method of Muller (see Ref. 1) is used. This is based on iterated inverse quadratic interpolation followed by deflation to remove each zero as found.

Accuracy:

For well-conditioned polynomials (i.e. polynomials whose zeros are not unduly sensitive to small errors in the coefficients), the relative error of a computed zero of multiplicity m is of order tex2html_wrap_inline129 where d is the machine precision expressed in decimal digits. For m>1, the m approximations to the single multiple zero are uniformly distributed on a small circle of radius of order tex2html_wrap_inline137 around the exact zero. Therefore, if the polynomial is well-conditioned, the true value of the multiple zero will be close to the centre tex2html_wrap_inline139 of this circle.

Error handling:

Error C202.1: tex2html_wrap_inline141 .
Error C202.2: The number of iterations exceeds MAXIT.
In both cases, a message is written on Unit 6, unless subroutine MTLSET (N002) has been called. If the number of iterations exceeds MAXIT, those zeros which have not been found are set to tex2html_wrap_inline143 .

Notes:

For difficult cases which lead to too many iterations the following transformations may be applied, singly or together, to obtain a better-conditioned polynomial:

  1. Reverse the order of the coefficients to obtain a polynomial whose zeros are tex2html_wrap_inline145 .
  2. If the zeros tex2html_wrap_inline147 are clustered, or are too unsymmetrically positioned with respect to the origin, compute by synthetic division (see Ref. 3) the coefficients of the polynomial whose argument is tex2html_wrap_inline149 , where tex2html_wrap_inline151 is the arithmetic mean of the zeros. The mean of the zeros of this new polynomial is situated at the origin, which is where the subprogram starts searching. Then, provided tex2html_wrap_inline153 for most i, tex2html_wrap_inline157 will be more accurate zeros.

References:

  1. D.E. Muller, A method for solving algebraic equations using an automatic computer, MTAC (later renamed Math. Comp.) 10 (1956) 208-215.
  2. J.W. Daniel, Correcting approximations to multiple roots of polynomials, Numer. Math. 9 (1966) 99-102.
  3. F.B. Hildebrand, Introduction to numerical analysis, McGraw-Hill, New York (1956), Section 10.9.
tex2html_wrap_inline159

Michel Goossens Tue Jun 4 20:35:50 METDST 1996