# Muller’s Method For Finding Roots of Linear and Nonlinear Equations

by admin in Math, Statistics, and Optimization , MATLAB Family , Roots of Equation on June 14, 2019**Muller’s method** is a root-finding algorithm, a numerical method for solving equations of the form *f*(*x*) = 0. It was first presented by David E. Muller in 1956. Muller’s method is based on the secant method, which constructs at every iteration a line through two points on the graph of *f*. Instead, Muller’s method uses three points, constructs the parabola through these three points, and takes the intersection of the *x*-axis with the parabola to be the next approximation.

### Example On Using This Code

**Input**

f =@(x) x - 5; % Equation we interest to solve N = 1e6; % Number of iterations err = eps; % Accuracy x(1) = rand(1,1); % Initial Value x0 x(2) = rand(1,1); % Initial Value x1 x(3) = rand(1,1); % Initial Value x2

**Output**

Root X = 5 , F(x) = 0 , # Iterations = 3

### Contents

- Recurrence relation
- Speed of convergence
- Generalizations and related methods
- References

### Recurrence Relation

Muller’s method is a recursive method which generates an approximation of the root ξ of *f* at each iteration. Starting with the three initial values *x*_{0}, *x*_{−1} and *x*_{−2}, the first iteration calculates the first approximation *x*_{1}, the second iteration calculates the second approximation *x*_{2}, the third iteration calculates the third approximation *x*_{3}, etc. Hence the *k*^{th}iteration generates approximation *x*_{k}. Each iteration takes as input the last three generated approximations and the value of *f* at these approximations. Hence the *k*^{th} iteration takes as input the values *x*_{k-1}, *x*_{k-2} and *x*_{k-3} and the function values *f*(*x*_{k-1}), *f*(*x*_{k-2}) and *f*(*x*_{k-3}). The approximation *x*_{k} is calculated as follows.

A parabola *y*_{k}(*x*) is constructed which goes through the three points (*x*_{k-1}, *f*(*x*_{k-1})), (*x*_{k-2}, *f*(*x*_{k-2})) and (*x*_{k-3}, *f*(*x*_{k-3})). When written in the Newton form, *y*_{k}(*x*) is

where *f*[*x*_{k-1}, *x*_{k-2}] and *f*[*x*_{k-1}, *x*_{k-2}, *x*_{k-3}] denote divided differences. This can be rewritten as

where

The next iterate *x*_{k} is now given as the solution closest to *x*_{k-1} of the quadratic equation *y*_{k}(*x*) = 0. This yields the recurrence relation

In this formula, the sign should be chosen such that the denominator is as large as possible in magnitude. We do not use the standard formula for solving quadratic equations because that may lead to loss of significance.

Note that *x*_{k} can be complex, even if the previous iterates were 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.

### Speed of Convergence

The order of convergence of Muller’s method is approximately 1.84. This can be compared with 1.62 for the secant method and 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.

More precisely, if ξ denotes a single root of *f* (so *f*(ξ) = 0 and *f*‘(ξ) ≠ 0), *f* is three times continuously differentiable, and the initial guesses *x*_{0}, *x*_{1}, and *x*_{2} are taken sufficiently close to ξ, then the iterates satisfy

where μ ≈ 1.84 is the positive solution of

.

Muller’s method fits a parabola, i.e. a second-order polynomial, to the last three obtained points *f*(*x*_{k-1}), *f*(*x*_{k-2}) and *f*(*x*_{k-3}) in each iteration. One can generalize this and fit a polynomial *p*_{k,m}(*x*) of degree *m* to the last *m*+1 points in the *k*^{th} iteration. Our parabola *y*_{k} is written as *p*_{k,2} in this notation. The degree *m* must be 1 or larger. The next approximation *x*_{k} is now one of the roots of the *p*_{k,m}, i.e. one of the solutions of *p*_{k,m}(*x*)=0. Taking *m*=1 we obtain the secant method whereas *m*=2 gives Muller’s method.

Muller calculated that the sequence {*x*_{k}} generated this way converges to the root ξ with an order μ_{m} where μ_{m} is the positive solution of.

The method is much more difficult though for *m*>2 than it is for *m*=1 or *m*=2 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 *p*_{k,m} to pick as the next approximation *x*_{k} for *m*>2.

These difficulties are overcome by Sidi’s generalized secant method which also employs the polynomial *p*_{k,m}. Instead of trying to solve *p*_{k,m}(*x*)=0, the next approximation *x*_{k} is calculated with the aid of the derivative of *p*_{k,m} at *x*_{k-1} in this method.

### References

- Muller, David E., “A Method for Solving Algebraic Equations Using an Automatic Computer,”
*Mathematical Tables and Other Aids to Computation*, 10 (1956), 208-215. JSTOR 2001916 - Atkinson, Kendall E. (1989).
*An Introduction to Numerical Analysis*, 2nd edition, Section 2.4. John Wiley & Sons, New York. ISBN 0-471-50023-2. - Burden, R. L. and Faires, J. D.
*Numerical Analysis*, 4th edition, pages 77ff. - Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). “Section 9.5.2. Muller’s Method”.
*Numerical Recipes: The Art of Scientific Computing*(3rd ed.). New York: Cambridge University Press. ISBN 978-0-521-88068-8.

Share Now!