Math 373 Fall 2000 Solution of exercise

Programming iteration and Steffensen's acceleration in a spreadsheet leads to the following results. The equation we are solving is

f(x) = x3 - x - 1 = 0

on the interval from 1 (where the value of the function is -1) to 2 (where the value of the function is +5). In order to have an iteration that converges to the root, it is necessary to write the equation in the form x = g(x), where g is a function whose derivative is strictly between -1 and 1 on (at least a large subinterval of) the given interval. This rules out most of the choices that can be easily computed. One choice that is allowed is
g(x) = (x + 1)1/3

Here is a list of the iterates starting from 1.
1
1.2599210499
1.3122938367
1.3223538191
1.3242687446
1.3246326253
1.3247017485
1.3247148784
1.3247173724
1.3247178462
1.3247179361
1.3247179532
1.3247179564
1.3247179571
1.3247179572
1.3247179572
The derivative of g is about 0.2 so it takes 14 steps to get 10 decimal place accuracy.

Now apply Steffensen acceleration to the same iteration. The first three steps are the same, but we follow the text in writing them in a row rather than a column. Each new row begins with the result of the extrapolation formula (essentially formula (2.11) which appears as the third expression of Step 3 of Algorithm 2.6). Knowing the answer, we see that the first extrapolation is accurate to three decimal places and the second to ten decimal places. Since the algorithm has quadratic convergence, the third extrapolation could be expected to be accurate to twenty places if we took the trouble to compute everything that accurately. In particular, the stopping condition in Step 4 is very conservative, since it means that the previous extrapolation was already good enough.

  p0 p1 p2
jump 1 1.2599210499 1.3122938367
jump 1.3255096004 1.3248683102 1.3247465157
jump 1.3247179612 1.3247179580 1.3247179574
jump 1.3247179572 1.3247179572  
One iteration in the last row shows that the desired accuracy has been reached. At this accuracy, there does not seem to be much of a saving since we have computed 11 values of the function in the Steffensen calculation. However, if all values were computed to sufficient accuracy, it would take another 14 computations to get 20 place accuracy with the linearly convergent iteration, but the 20 place versions of the numbers in the last row of the Steffensen version are 1.32471 79572 44746 02606 and 1.32471 79572 44746 02598, so we almost have the full accuracy already. Finishing this row and doing one more jump will give the required accuracy with only two more computations. I did the computations to 30 decimal places in Maple and the value after the jump was a fixed point to that accuracy. Repeating the calculation using 50 place accuracy revealed that the error was less than 10-40. Actually, Steffensen's acceleration, like Newton's method is self-correcting, so the same effect could have been found by using the last value as starting value after increasing the number of digits instead of repeating the whole calculation.


Return to section page.