





Problem
Given a polynomial of one variable, p(x), find a value r (called a root) such that p(r) = 0.
Assumptions
This method will work for non-polynomial functions, but it is more appropriate for finding the roots of polynomials due to its ability to jump from real to complex iterates.
Tools
We will use sampling, quadratic interpolation, and iteration.
Initial Requirements
We have three initial approximation x0, x1, and x2 of the root. It would be useful if |f(x0)| > |f(x1)| > |f(x2)|, that is, the points are in descending absolute value when evaluated by f.
Iteration Process
Given three approximation xn - 2, xn - 1, and xn, can find an interpolating quadratic polynomial which passes through the points:
- (xn − 2 − xn − 1, f(xn − 2))
- (0, f(xn − 1))
- (xn − xn − 1, f(xn))
In this case, it is easiest (and numerically stable) to use the Vandermonde method to find the interpolating quadratic polynomial ax2 + bx + c:
Having found the coefficients of the interpolating polynomial, we may now choose to find the root. There are two formulae for finding the roots of a quadratic polynomial: one with the radical in the numerator, the other with the radical in the denominator:
and
Because we are assuming that the three points xn - 2, xn - 1, and xn are good approximations to the root, it follows that we want to find the root closest to these points, that is, the smallest root of the polynomial we found. The second formula is more numerically stable for finding the smallest root of a quadratic polynomial, and therefore we set:
where the sign in the denominator is equal to the sign of b.
Halting Conditions
There are three conditions which may cause the iteration process to halt (these are the same as the halting conditions for Newton's method):
- We halt if both of the following conditions are met:
- The step between successive iterates is sufficiently small, |xn + 1 - xn| < εstep, and
- The function evaluated at the point xn + 1 is sufficiently small, |f(xn + 1)| < εabs.
- If the system does not have a solution, we halt.
- If we have iterated some maximum number of times, say N, and have not met Condition 1, we halt and indicate that a solution was not found.
If we halt due to Condition 1, we state that xn + 1 is our approximation to the root.
If we halt due to either Condition 2 or 3, we may either choose a different initial approximations x0 and x1, or state that a solution may not exist.
Copyright ©2005 by Douglas Wilhelm Harder. All rights reserved.