Lehmer–Schur algorithm

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In mathematics, the Lehmer–Schur algorithm (named after Derrick Henry Lehmer and Issai Schur) is a root-finding algorithm extending the idea of enclosing roots like in the one-dimensional bisection method to the complex plane. It uses the Schur–Cohn test to test increasingly smaller disks for the presence or absence of roots. Alternative methods like Wilf's algorithm apply different tests to differently shaped areas but keep the idea of descent by subdivision.

The Lehmer method[edit]

The Schur–Cohn test described below allows one to determine if a polynomial has no roots in the unit disk and in some cases to determine the exact number of roots. The method proposed by Lehmer test for the presence of roots of a polynomial on a collection of disks in the complex plane by applying the Schur–Cohn test to the shifted and scaled polynomial

Starting with c=0 and ρ=1, the radius in increased or decreased by factors of 2 until the annulus is found to contain roots. Then the method is recursively applied to the 8 disks with center , and initial radius (originally , which is slightly too small to cover the full annulus).

If after some recursions a small disk is found that contains only one root, this root is further approximated using Newton's method and then the polynomial is deflated by splitting off the corresponding linear factor. After that, the whole procedure is restarted.

Schur transformation of polynomials[edit]

Consider, as before, a polynomial with complex coefficients

Denote the reverse conjugate polynomial as . Then the Schur transform of is the polynomial

Since the highest degree coefficients cancel, , and the constant coefficient of is

If , then and have the same number of roots inside the unit disk and on the unit circle.
If , then has the same number of roots inside the unit disk as (and ) has outside, and both have the same number of roots on the unit circle.

This result is a consequence of Rouché's theorem.

Schur–Cohn test[edit]

Apply the Schur transform repeatedly, , let K be the first index with . Denote , and .

If for all k = 1, 2, ..., K, then has no roots inside the unit disk.
If exactly once, for , then p has roots inside the unit disk.

The first follows from the root number preserving property of the Schur transform. For the second, have no roots inside the unit disk or on the unit circle. has roots outside the unit disk, so that and thus also have the same number of roots inside the unit disk.

Variations on the subdivision idea[edit]

Wilf's global bisection algorithm[edit]

The aim of this algorithm is to find the roots of a function of one complex variable inside any rectangular region of the function's holomorphicity (i.e., analyticity).

The rectangle in question is quadrisected into four, congruent quarter rectangles. For each quarter, the image of the boundary is a curve in the complex plane. The argument principle is then applied to this path to find the winding number about the origin. Given that the function is analytic within each of these quarters, a nonzero winding number N (always an integer) identifies N zeros of the function inside the quarter in question by Rouché's theorem, each zero counted as many times as its multiplicity.

Analogously with the bisection method, the algorithm is then applied recursively to any quarter whose boundary has nonzero winding number to further refine the estimates of the zeros. The recursion is repeated until the zero-containing rectangles are either small enough that their centres give sufficiently accurate zero estimates or, alternatively, that another root-finding algorithm can be applied to the estimates to further refine them.


  • D. H. Lehmer, (April 1961), "A Machine Method for Solving Polynomial Equations", Journal of the ACM, 8 (2): 151–162, doi:10.1145/321062.321064 
  • Herbert S. Wilf (1978), "A Global Bisection Algorithm for Computing the Zeros of Polynomials in the Complex Plane", Journal of the ACM, 25 (3), doi:10.1145/322077.322084 

External links[edit]