↑ arvau

Wikipedia / Muller's method

Muller's method is a root-finding algorithm, a numerical method for solving equations of the form . It was first presented by David E. Muller in 1956.

Muller's method proceeds according to a third-order recurrence relation similar to the second-order recurrence relation of the secant method. Whereas the secant method proceeds by constructing a line through two points on the graph of corresponding to the last two iterative approximations and then uses the line's root as the next approximation at every iteration, by contrast, Muller's method uses three points corresponding to the last three iterative approximations, constructs a parabola through these three points, and then uses a root of the parabola as the next approximation at every iteration.

Derivation

and by considering the intersection of the x-axis with the parabola through and .

that passes through and . To simplify notation, define the differences

Substituting each of the three points gives

The quadratic formula as

to ensure the next iterate is closest to , giving

is determined, the process is repeated. Note that due to the radical expression in the denominator, iterates can be complex even when the previous iterates are all real. This is in contrast with other root-finding algorithms like the secant method, Sidi's generalized secant method or Newton's method, whose iterates will remain real if one starts with real numbers. Having complex iterates can be an advantage (if one is looking for complex roots) or a disadvantage (if it is known that all roots are real), depending on the problem.

Algorithm

The following pseudocode describes Muller's method for approximating a root of the equation that satisfies is a user-specified tolerance.

input: function f, initial approximations x0, x1, x2, tolerance ε, maximum iterations Nmax
for n = 0 to Nmax do
   h0 ← x1 − x0
   h1 ← x2 − x1
   δ0 ← (f(x1) − f(x0)) / h0
   δ1 ← (f(x2) − f(x1)) / h1
   a ← (δ1 − δ0) / (h1 + h0)
   b ← a·h1 + δ1
   c ← f(x2)
   if b ≥ 0 then
       denominator ← b + sqrt(b² − 4·a·c)
   else
       denominator ← b − sqrt(b² − 4·a·c)
   end if
   x3 ← x2 − 2·c / denominator
   if |x3 − x2| < ε then
       return x3
   end if
   x0 ← x1
   x1 ← x2
   x2 ← x3
end for
return x3

Example

Applying Muller's method with initial guesses gives the following approximations: on the sixth iteration.

By modifying the initial guesses, Muller's method can also generate complex solutions. Applying Muller's method again but with initial guesses gives the following approximations: on the eighth iteration.

Speed of convergence

has a root at is the order of convergence Near the root , Taylor's theorem and . Using the three consecutive iterates of Mullers method, evaluated at the root gives

which can be rearranged to give

Solving this equation gives , so the order of convergence of Muller's method is exactly the tribonacci constant. This can be compared with approximately 1.618, exactly the golden ratio, for the secant method and with exactly 2 for Newton's method. So, the secant method makes less progress per iteration than Muller's method and Newton's method makes more progress.

is three times continuously differentiable, if the initial guesses are taken sufficiently close to

is the positive solution of , the defining equation for the tribonacci constant.

Muller's method fits a parabola, i.e. a second-order polynomial, to the last three obtained points , and in each iteration. One can generalize this and fit a polynomial of degree to the last points in the -th iteration. Our parabola is written as in this notation. The degree must be 1 or larger. The next approximation is now one of the roots of the , i.e. one of the solutions of . Taking we obtain the secant method whereas gives Muller's method.

Muller calculated that the sequence generated this way converges to the root ξ with an order where is the positive solution of .

As approaches infinity the positive solution for the equation approaches 2. The method is much more difficult though for than it is for or because it is much harder to determine the roots of a polynomial of degree 3 or higher. Another problem is that there seems no prescription of which of the roots of to pick as the next approximation for .

These difficulties are overcome by Sidi's generalized secant method which also employs the polynomial . Instead of trying to solve , the next approximation is calculated with the aid of the derivative of at in this method.

See also

References

  • Atkinson, Kendall E. (1989). An Introduction to Numerical Analysis, 2nd edition, Section 2.4. John Wiley & Sons, New York. .

  • Burden, R. L. and Faires, J. D. Numerical Analysis, 4th edition, pages 77ff.

Further reading

  • A bracketing variant with global convergence: