2.2 The method of false position

Bisection uses only the signs of \(f(a_n)\) and \(f(b_n)\). If \(|f(a_n)|\) is much smaller than \(|f(b_n)|\), the root is probably closer to \(a_n\), and the method of false position (regula falsi) uses this. It replaces the midpoint by the point where the straight line through \((a_n,f(a_n))\) and \((b_n,f(b_n))\) crosses the axis: \begin {equation} \label {eq:falsepos} p_n = b_n-f(b_n)\frac {b_n-a_n}{f(b_n)-f(a_n)} = \frac {a_nf(b_n)-b_nf(a_n)}{f(b_n)-f(a_n)}, \end {equation} and then keeps, as bisection does, the subinterval on which \(f\) changes sign.

Algorithm 2.2.1 (False position). To find a solution of \(f(x) = 0\), given \(f\) continuous on \([a,b]\) with \(f(a)f(b)<0\).

Step 1:
Set \(a_1 = a\), \(b_1 = b\), \(n = 1\).
Step 2:
While \(n\leq N\): compute \(p_n\) from (2.2).
Step 3:
If \(|p_n-p_{n-1}|<\varepsilon \) (for \(n\geq 2\)), output \(p_n\) and stop.
Step 4:
If \(\sgn f(a_n)\cdot \sgn f(p_n)>0\), set \(a_{n+1} = p_n\), \(b_{n+1} = b_n\); otherwise \(a_{n+1} = a_n\), \(b_{n+1} = p_n\). Increase \(n\) by \(1\).
Step 5:
Output “method failed” and stop.

Example 2.2.2. Apply the method of false position to \(f(x) = x^3+4x^2-10\) on \([1,2]\), and compare it with bisection.

Solution. The first step uses the chord from \((1,-5)\) to \((2,14)\): \[p_1 = 2-14\cdot \frac {2-1}{14-(-5)} = 2-\frac {14}{19} = 1.263157895,\] and \(f(p_1) = -1.6022<0\), so the new bracket is \([1.263157895, 2]\). Continuing:

\(n\) \(a_n\) \(b_n\) \(p_n\) \(|p_n-p|\)
\(1\) \(1\) \(2\) \(1.263157895\) \(1.0\times 10^{-1}\)
\(2\) \(1.263157895\) \(2\) \(1.338827839\) \(2.6\times 10^{-2}\)
\(3\) \(1.338827839\) \(2\) \(1.358546342\) \(6.7\times 10^{-3}\)
\(4\) \(1.358546342\) \(2\) \(1.363547440\) \(1.7\times 10^{-3}\)
\(5\) \(1.363547440\) \(2\) \(1.364807032\) \(4.2\times 10^{-4}\)
\(6\) \(1.364807032\) \(2\) \(1.365123718\) \(1.1\times 10^{-4}\)
\(7\) \(1.365123718\) \(2\) \(1.365203304\) \(2.7\times 10^{-5}\)
\(8\) \(1.365203304\) \(2\) \(1.365223302\) \(6.7\times 10^{-6}\)
\(9\) \(1.365223302\) \(2\) \(1.365228327\) \(1.7\times 10^{-6}\)
\(10\) \(1.365228327\) \(2\) \(1.365229590\) \(4.2\times 10^{-7}\)

After \(10\) steps the error is \(4.2\times 10^{-7}\), compared with \(9.7\times 10^{-4}\) for bisection. Two features of the table stand out: the right end point \(b_n = 2\) never changes, and each error is almost exactly a quarter of the previous one. The next theorem explains both.

Theorem 2.2.3. Let \(f\in C^2[a,b]\) with \(f(a)<0<f(b)\) and \(f''>0\) on \([a,b]\). Then \(f\) has exactly one root \(p\) in \((a,b)\), and the method of false position started on \([a,b]\) keeps \(b_n = b\) for every \(n\), produces increasing iterates \(a<p_1<p_2<\dots <p\), and converges to \(p\). The convergence is linear: \[\lim _{n\rightarrow \infty }\frac {p_{n+1}-p}{p_n-p} = 1-\frac {(b-p)f'(p)}{f(b)} = \lambda ,\qquad 0<\lambda <1 .\]

Proof. Uniqueness. A root exists by the Intermediate Value Theorem. If there were two roots \(p<q\) in \((a,b)\), write \(p = \theta a+(1-\theta )q\) with \(\theta \in (0,1)\). Convexity gives \(f(p)\leq \theta f(a)+(1-\theta )f(q) = \theta f(a)<0\), contradicting \(f(p) = 0\).

The right end point is fixed. Suppose \(a_n<p<b_n = b\) with \(f(a_n)<0\). Since \(f''>0\), the graph of \(f\) on \([a_n,b]\) lies below the chord joining its end points. At the point \(p_n\) where the chord is zero, therefore, \(f(p_n)<0\). So \(p_n\) lies to the left of \(p\), the sign test keeps \(b_{n+1} = b\) and moves the left end point to \(a_{n+1} = p_n\). Also \(p_n>a_n\), since the chord is negative at \(a_n\). By induction \(a<p_1<p_2<\dots <p\).

Convergence. The sequence \(\{p_n\}\) is increasing and bounded above by \(p\), so it converges to some \(q\leq p\). Since \(p_{n+1} = b-f(b)\frac {b-p_n}{f(b)-f(p_n)}\) and \(f\) is continuous, letting \(n\longrightarrow \infty \) gives \(q = b-f(b)\frac {b-q}{f(b)-f(q)}\), which simplifies to \(f(q)(b-q) = 0\). As \(q\leq p<b\), \(f(q) = 0\), and by uniqueness \(q = p\).

Rate. Write \(e_n = p_n-p\). From the second form of (2.2) with \(a_n = p_n\), \(b_n = b\), \[e_{n+1} = \frac {p_nf(b)-bf(p_n)}{f(b)-f(p_n)}-p = \frac {e_nf(b)-(b-p)f(p_n)}{f(b)-f(p_n)} .\] Dividing by \(e_n\) and using \(\frac {f(p_n)}{e_n} = \frac {f(p_n)-f(p)}{p_n-p}\longrightarrow f'(p)\) and \(f(p_n)\longrightarrow 0\), \[\frac {e_{n+1}}{e_n} = \frac {f(b)-(b-p)\frac {f(p_n)}{e_n}}{f(b)-f(p_n)}\longrightarrow \frac {f(b)-(b-p)f'(p)}{f(b)} .\] Since \(f'' > 0\), \(f'\) is increasing. By the Mean Value Theorem, \(f(p)-f(a) = f'(\zeta )(p-a)\) for some \(\zeta \in (a,p)\), so \(f'(p)>f'(\zeta ) = \frac {-f(a)}{p-a}>0\); and \(f(b) = f(b)-f(p) = f'(\eta )(b-p)\) for some \(\eta \in (p,b)\), with \(f'(\eta )>f'(p)\). Hence \(0<(b-p)f'(p)<f(b)\), and \(0<\lambda <1\). □

For the test problem, \(p = 1.36523\), \(f'(p) = 3p^2+8p = 16.51\) and \(f(2) = 14\), so \(\lambda = 1-\frac {0.63477\times 16.51}{14} = 0.2513\): exactly the ratio seen in the table. The same reasoning applies with \(f''<0\) or with \(f(a)>0\); in each case one end point stays fixed. False position is therefore usually faster than bisection when \(\lambda <\frac 12\). It can also be much slower.

Example 2.2.4. Compare bisection and false position for \(f(x) = x^{10}-1\) on \([0,1.3]\), with root \(p = 1\).

Solution. Here \(f\) is convex, \(f(1.3) = 12.79\) is large and \(f\) is very flat on most of \([0,1]\). The chords are almost horizontal, so the fixed end point \(b = 1.3\) pulls the iterates only slowly towards \(1\):

\(n\) \(1\) \(5\) \(10\) \(20\) \(40\) \(60\)
\(|p_n-1|\) \(0.906\) \(0.592\) \(0.313\) \(0.0447\) \(2.4\times 10^{-4}\) \(1.1\times 10^{-6}\)

False position needs \(52\) iterations to reach an error below \(10^{-5}\), while bisection needs \(14\). The theorem predicts the asymptotic ratio \(\lambda = 1-\frac {0.3\times 10}{12.79} = 0.765\), compared with bisection’s guaranteed factor \(\frac 12\). False position is faster only when the fixed end point is not too far from the root.

A modified method

The slowness comes from the end point that never moves. The Illinois modification removes it: whenever the same end point is retained twice in a row, the stored value of \(f\) at that end point is halved before the next chord is drawn. This tilts the chord towards the stale end point, and the next iterate usually lands on the other side of the root, so both end points move.

Example 2.2.5. Apply the Illinois modification to \(x^{10}-1\) on \([0,1.3]\) and to \(x^3+4x^2-10\) on \([1,2]\).

Solution. For \(x^{10}-1\) the iterates are \[0.0943,\ 0.1818,\ 0.3330,\ 0.5634,\ 0.8464,\ 1.0749,\ 0.9455,\ 0.9828,\ 1.0041,\ 0.99968,\ 0.9999941,\] reaching an error below \(10^{-5}\) after \(11\) iterations instead of \(52\); from the sixth step on they fall alternately on both sides of the root. For the test problem the errors after steps \(4\) to \(7\) are \(1.5\times 10^{-4}\), \(9.0\times 10^{-7}\), \(8.9\times 10^{-7}\) and \(3.9\times 10^{-13}\). The Illinois method still brackets the root at every step, so it keeps the safety of bisection, and its convergence is superlinear (of order about \(1.44\)).

Questions on this section

Stuck on something here? Ask below and it stays attached to this topic.