Skip to main content

An Iterated Eigenvalue Algorithm for Approximating Roots of Univariate Polynomials

01 January 2002

New Image

We present an iterative algorithm that approximates all roots of a univariate polynomial. The iteration uses floating-point eigenvalue computation of a generalized companion matrix. With some assumptions, we show that the algorithm approximates the roots within about log p/E X(P) iterations, where E is the relative error of floating-point arithmetic, p is the relative separation of the roots, and X(P) is the condition number of the polynomial. Each iteration requires an nXn floating-point eigenvalue computation, n the polynomial degree, and evaluation of the polynomial to floating-point accuracy at up to n points. We describe a careful implementation of the algorithm, including many techniques that contribute to the practical efficiency of the algorithm. On some hard examples of ill-conditioned polynomials, e.g. high-degree Wilkinson polynomials, the implementation is an order of magnitude faster than the Bini-Fiorentino implementation mpsolve.