The idea to combine the bisection method with the secant method goes back to . Suppose that one wants to solve the equation
f(
x) = 0. As with the bisection method, one needs to initialize Dekker's method with two points, say
a0 and
b0, such that
f(
a0) and
f(
b0) have opposite signs. If
f is continuous on [
a0,
b0], the
intermediate value theorem guarantees the existence of a solution between
a0 and
b0. Three points are involved in every iteration: •
bk is the current iterate, i.e., the current guess for the root of
f. •
ak is the "contrapoint", i.e., a point such that
f(
ak) and
f(
bk) have opposite signs, so the interval [
ak,
bk] contains the solution. Furthermore, |
f(
bk)| should be less than or equal to |
f(
ak)|, so that
bk is a better guess for the unknown solution than
ak. •
bk−1 is the previous iterate (for the first iteration, one sets
bk−1 =
a0). Two provisional values for the next iterate are computed. The first one is given by linear interpolation, also known as the secant method: :: s = \begin{cases} b_k - \frac{b_k-b_{k-1}}{f(b_k)-f(b_{k-1})} f(b_k), & \mbox{if } f(b_k)\neq f(b_{k-1}) \\ m & \mbox{otherwise } \end{cases} and the second one is given by the bisection method :: m = \frac{a_k+b_k}{2}. If the result of the secant method,
s, lies strictly between
bk and
m, then it becomes the next iterate (
bk+1 =
s), otherwise the midpoint is used (
bk+1 =
m). Then, the value of the new contrapoint is chosen such that
f(
ak+1) and
f(
bk+1) have opposite signs. If
f(
ak) and
f(
bk+1) have opposite signs, then the contrapoint remains the same:
ak+1 =
ak. Otherwise,
f(
bk+1) and
f(
bk) have opposite signs, so the new contrapoint becomes
ak+1 =
bk. Finally, if |
f(
ak+1)|
k+1)|, then
ak+1 is probably a better guess for the solution than
bk+1, and hence the values of
ak+1 and
bk+1 are exchanged. This ends the description of a single iteration of Dekker's method. Dekker's method performs well if the function
f is reasonably well-behaved. However, there are circumstances in which every iteration employs the secant method, but the iterates
bk converge very slowly (in particular, |
bk −
bk−1| may be arbitrarily small). Dekker's method requires far more iterations than the bisection method in this case. == Brent's method ==