Skip to article frontmatterSkip to article content

3.6Miscellaneous methods

#%config InlineBackend.figure_format = 'svg'
from pylab import *

The secant method approximates the function by an affine polynomial and finds the root of the polynomial. We can improve this method by constructing a quadratic polynomial approximation.

3.6.1Muller’s method

Given three initial guesses x0,x1,x2x_0, x_1, x_2, construct a quadratic polynomial p(x)p(x) such that

p(xi)=f(xi),i=0,1,2p(x_i) = f(x_i), \qquad i=0,1,2

The next approximation to the root x3x_3 is taken as the root of pp

p(x3)=0p(x_3) = 0

We can write the Newton form of the interpolating polynomial[1]

p(x)=f(x2)+(xx2)f[x2,x1]+(xx2)(xx1)f[x2,x1,x0]p(x) = f(x_2) + (x-x_2) f[x_2,x_1] + (x-x_2)(x-x_1) f[x_2,x_1,x_0]

or equivalently

p(x)=f(x2)+w(xx2)+f[x2,x1,x0](xx2)2p(x) = f(x_2) + w(x-x_2) + f[x_2,x_1,x_0](x-x_2)^2

where

w=f[x2,x1]+(x2x1)f[x2,x1,x0]=f[x2,x1]+f[x2,x0]f[x0,x1]w = f[x_2,x_1] + (x_2 - x_1) f[x_2,x_1,x_0] = f[x_2,x_1] + f[x_2,x_0] - f[x_0,x_1]

Now find the root x3x_3 that is closest to x2x_2

x3x2=w±w24f(x2)f[x2,x1,x0]2f[x2,x1,x0]x_3 - x_2 = \frac{-w \pm \sqrt{w^2 - 4f(x_2)f[x_2,x_1,x_0]}}{2f[x_2,x_1,x_0]}

We have to choose the sign in the numerator that leads to small numerator. However this can lead to loss of significant figures. We can rewrite this as

x3=x22f(x2)w±w24f(x2)f[x2,x1,x0]x_3 = x_2 - \frac{2 f(x_2)}{w \pm \sqrt{w^2 - 4 f(x_2) f[x_2,x_1,x_0]}}

Now we choose sign in denominator so that denominator is large in magnitude. We apply this algorithm recursively to obtain a sequence of iterates {xn}\{ x_n \}. If xnαx_n \to \alpha and f(α)0f'(\alpha) \ne 0, then α is a root of ff. To prove this, show that

wf(α)w \to f'(\alpha)

so that in the limit the iteration looks like

α=α2f(α)f(α)±[f(α)]24f(α)f"(α)\alpha = \alpha - \frac{2 f(\alpha)}{f'(\alpha) \pm \sqrt{[f'(\alpha)]^2 - 4 f(\alpha) f"(\alpha)}}

But f(α)0f'(\alpha) \ne 0 and so the denominator is not zero, which implies that f(α)=0f(\alpha) = 0.

The order of convergence p1.84p \approx 1.84 and is a root of

x3x2x1=0x^3 - x^2 - x -1 = 0

So this method converges faster than secant method but slower than Newton-Raphson method. Moreover

limnαxn+1αxnp=f(3)(α)6f(α)(p1)/2\lim_{n \to \infty} \frac{|\alpha - x_{n+1}|}{|\alpha - x_n|^p} = \left| \frac{f^{(3)} (\alpha)}{6f'(\alpha)} \right|^{(p-1)/2}

Muller’s method can give rise to complex roots even when starting with real initial guesses.

3.6.2Inverse quadratic interpolation

We treat xx as a function of ff, i.e., x=x(f)x = x(f). Like in Muller’s method, let us take x0,x1,x2x_0, x_1,x_2 and fi=f(xi)f_i = f(x_i), i=0,1,2i=0,1,2, but now construct an approximation

x=q(f;x0,x1,x2)x = q(f; x_0,x_1,x_2)

such that

xi=q(fi;x0,x1,x2),i=0,1,2x_i = q(f_i; x_0,x_1,x_2), \qquad i=0,1,2

Once the quadratic polynomial qq is found, we estimate the root as

x4=q(0;x0,x1,x2)x_4 = q(0; x_0,x_1,x_2)

This can be used to generate the iteration

xn+1=q(0;xn,xn1,xn2)x_{n+1} = q(0; x_n, x_{n-1}, x_{n-2})

Note that all the iterates will be real if we start with real initial guess.

3.6.3Linear fractional method

Suppose f(x)f(x) has a vertical and horizontal asymptote, e.g., f(x)=1xaf(x) = \frac{1}{x} - a. Then the secant method may not converge, see figure (xxx), where x3x_3 can go to -\infty. Instead of linear approximation, we can use a fractional approximation.

Given x0,x1,x2x_0, x_1, x_2, fit a rational polynomial

g(x)=xabxcg(x) = \frac{x - a}{bx - c}

using

g(xi)=f(xi),i=0,1,2g(x_i) = f(x_i), \qquad i=0,1,2

The solution is simplified if we shift the origin, y=xx2y = x - x_2 and

g(y)=yabyc,g(yi)=f(xi),i=0,1,2g(y) = \frac{y-a}{by-c}, \qquad g(y_i) = f(x_i), \quad i=0,1,2

The next approximation is x3=x2+ax_3 = x_2 + a.

Footnotes
  1. Problem: Show that this satisfies the interpolation conditions.