Aberth method
The Aberth method, or Aberth–Ehrlich method or Ehrlich–Aberth method, named after Oliver Aberth[1] and Louis W. Ehrlich,[2] is a root-finding algorithm developed in 1967 for simultaneous approximation of all the roots of a univariate polynomial. This method converges cubically, an improvement over the Durand–Kerner method, another algorithm for approximating all roots at once, which converges quadratically.[1][2] (However, both algorithms converge linearly at multiple zeros.[3])
This method is used in MPSolve, which is the reference software for approximating all roots of a polynomial to an arbitrary precision.
Description
Let [math]\displaystyle{ p(x)=p_nx^n+p_{n-1}x^{n-1}+\cdots+p_1x+p_0 }[/math] be a univariate polynomial of degree [math]\displaystyle{ n }[/math] with real or complex coefficients. Then there exist complex numbers [math]\displaystyle{ z^*_1,\,z^*_2,\dots,z^*_n }[/math], the roots of [math]\displaystyle{ p(x) }[/math], that give the factorization:
- [math]\displaystyle{ p(x)=p_n\cdot(x-z^*_1)\cdot(x-z^*_2)\cdots(x-z^*_n). }[/math]
Although those numbers are unknown, upper and lower bounds for their absolute values are computable from the coefficients of the polynomial. Now one can pick [math]\displaystyle{ n }[/math] distinct numbers in the complex plane—randomly or evenly distributed—such that their absolute values are within the same bounds. (Also, if the zeros are symmetrical, the starting points must not be exactly symmetrical along the same axis, as this can prevent convergence.)[1] A set of such numbers is called an initial approximation of the set of roots of [math]\displaystyle{ p(x) }[/math]. This approximation can be iteratively improved using the following procedure.
Let [math]\displaystyle{ z_1,\dots,z_n\in\mathbb C }[/math] be the current approximations of the zeros of [math]\displaystyle{ p(x) }[/math]. Then offset numbers [math]\displaystyle{ w_1,\dots,w_n\in\mathbb C }[/math] are computed as
- [math]\displaystyle{ w_k=\frac{\frac{p(z_k)}{p'(z_k)}}{1-\frac{p(z_k)}{p'(z_k)}\cdot \sum_{j\ne k}\frac1{z_k-z_j}}, }[/math]
where [math]\displaystyle{ p'(z_k) }[/math] is the polynomial derivative of [math]\displaystyle{ p }[/math] evaluated in the point [math]\displaystyle{ z_k }[/math].
The next set of approximations of roots of [math]\displaystyle{ p(x) }[/math] is then [math]\displaystyle{ z_1-w_1,\dots,z_n-w_n }[/math]. One can measure the quality of the current approximation by the values of the polynomial or by the size of the offsets.
Conceptually, this method uses an electrostatic analogy, modeling the approximated zeros as movable negative point charges, which converge toward the true zeros, represented by fixed positive point charges.[1] A direct application of Newton's method to each approximated zero will often cause multiple starting points to incorrectly converge to the same root. The Aberth method avoids this by also modeling the repulsive effect the movable charges have on each other. In this way, when a movable charge has converged on a zero, their charges will cancel out, so that other movable charges are no longer attracted to that location, encouraging them to converge to other "unoccupied" zeros. (Stieltjes also modeled the positions of zeros of polynomials as solutions to electrostatic problems.)
Inside the formula of the Aberth method one can find elements of Newton's method and the Durand–Kerner method. Details for an efficient implementation, esp. on the choice of good initial approximations, can be found in Bini (1996).[3]
The updates of the roots may be executed as a simultaneous Jacobi-like iteration where first all new approximations are computed from the old approximations or as a sequential Gauss–Seidel-like iteration that uses each new approximation from the time it is computed.
A very similar method is the Newton-Maehly method. It computes the zeros one after another, but instead of an explicit deflation it divides by the already acquired linear factors on the fly. The Aberth method is like the Newton-Maehly method for computing the last root while pretending you have already found the other ones.[4]
Derivation from Newton's method
The iteration formula is the univariate Newton iteration for the function
- [math]\displaystyle{ F(x)=\frac{p(x)}{\prod_{j=1;\,j\ne k}^n(x-z_j)} }[/math]
If the values [math]\displaystyle{ z_1,\dots,z_n }[/math] are already close to the roots of [math]\displaystyle{ p(x) }[/math], then the rational function [math]\displaystyle{ F(x) }[/math] is almost linear with a dominant root close to [math]\displaystyle{ z_k }[/math] and poles at [math]\displaystyle{ z_1,\dots,z_{k-1},z_{k+1},\dots,z_n }[/math] that direct the Newton iteration away from the roots of p(x) that are close to them. That is, the corresponding basins of attraction get rather small, while the root close to [math]\displaystyle{ z_k }[/math] has a wide region of attraction.
The Newton step [math]\displaystyle{ \tfrac{F(x)}{F'(x)} }[/math] in the univariate case is the reciprocal value to the logarithmic derivative
- [math]\displaystyle{ \begin{align} \frac{F'(x)}{F(x)} &= \frac{d}{dx}\ln|F(x)|\\ &= \frac{d}{dx}\big(\ln|p(x)|-\sum_{j=1;\,j\ne k}^n\ln|x-z_j|\big)\\ &= \frac{p'(x)}{p(x)}-\sum_{j=1;\,j\ne k}^n\frac1{x-z_j} \end{align} }[/math]
Thus, the new approximation is computed as
- [math]\displaystyle{ z_k'=z_k-\frac{F(z_k)}{F'(z_k)}=z_k-\frac1{\frac{p'(z_k)}{p(z_k)}-\sum_{j=1;\,j\ne k}^n\frac1{z_k-z_j}}\,, }[/math]
which is the update formula of the Aberth–Ehrlich method.
Literature
- ↑ 1.0 1.1 1.2 1.3 Aberth, Oliver (1973). "Iteration methods for finding all zeros of a polynomial simultaneously". Math. Comp. (Mathematics of Computation, Vol. 27, No. 122) 27 (122): 339–344. doi:10.2307/2005621. "Because of the obvious analogy from electrostatics, this field may be called the field of a unit plus charge ... To avoid this, we assign a unit minus charge at each sampling point. The idea here is that when a sampling point z, is near a simple zero, the field from the minus charge at z, should counteract that from the plus charge at the zero, preventing a second sampling point from converging to this zero.".
- ↑ 2.0 2.1 Ehrlich, Louis W. (1967). "A modified Newton method for polynomials". Comm. ACM 10 (2): 107–108. doi:10.1145/363067.363115.
- ↑ 3.0 3.1 Bini, Dario Andrea (1996). "Numerical computation of polynomial zeros by means of Aberth's method". Numerical Algorithms 13 (2): 179–200. doi:10.1007/BF02207694. Bibcode: 1996NuAlg..13..179B.
- ↑ Bauer, F.L.; Stoer, J. (1962). "Algorithm 105: Newton Maehly". Comm. ACM 5 (7): 387–388. doi:10.1145/368273.368423.
See also
- MPSolve A package for numerical computation of polynomial roots. Free usage for scientific purpose.
Original source: https://en.wikipedia.org/wiki/Aberth method.
Read more |