Richardson extrapolation is a technique to mathematically eliminate the leading error term in a numerical approximation. Applied to the central difference formula, each level of extrapolation removes the dominant error term and raises the accuracy by two orders. With just a few function evaluations, we can achieve an approximation far more accurate than what the central difference formula alone provides.
The Central Difference Error Structure
Before deriving the extrapolation, we need to know the exact form of the error in the central difference formula. Expanding f(x+h) and f(x−h) in Taylor series:
f(x+h)=f(x)+f′(x)h+2!f′′(x)h2+3!f(3)(x)h3+4!f(4)(x)h4+5!f(5)(x)h5+O(h6)
f(x−h)=f(x)−f′(x)h+2!f′′(x)h2−3!f(3)(x)h3+4!f(4)(x)h4−5!f(5)(x)h5+O(h6)
Subtracting the two equations, the even-power terms cancel:
f(x+h)−f(x−h)=2f′(x)h+3!2f(3)(x)h3+5!2f(5)(x)h5+O(h7)
Dividing by 2h:
Dh=2hf(x+h)−f(x−h)=f′(x)+3!f(3)(x)h2+5!f(5)(x)h4+O(h6)
This shows that Dh equals the true derivative f′(x) plus an infinite series of even-power error terms. The dominant error is 3!f(3)(x)h2, which is O(h2).
Let’s derive the first level of Richardson extrapolation, denoted as Dh(1). The main idea here is to combine two estimates of the derivative to completely cancel out the leading error term—which, for the central difference, is O(h2).
We’ll start with the standard central difference formula at a step size h:
Dh=f′(x)+3!f(3)(x)h2+5!f(5)(x)h4+O(h6)
If we halve the step size to h/2, the equation becomes:
Dh/2=f′(x)+3!f(3)(x)4h2+5!f(5)(x)16h4+O(h6)
To knock out the h2 term, we can multiply the Dh/2 equation by 22 (or 4) to match the coefficients, and then subtract Dh:
4Dh/2−Dh=3f′(x)−435!f(5)(x)h4+O(h6)
Finally, dividing by 3 isolates f′(x) and gives us our new estimate, free of the h2 error:
Dh(1)=34Dh/2−Dh
With the h2 term gone, this first-level extrapolation formula is now accurate to O(h4).
Now we can take it a step further. Let’s eliminate the new leading error term, h4, to find Dh(2).
From the previous derivation, we know the exact error structure of our first-level estimate looks like this:
Dh(1)=f′(x)−415!f(5)(x)h4+O(h6)
If we evaluate this same formula using a step size of h/2, we get:
Dh/2(1)=f′(x)−415!f(5)(x)16h4+O(h6)
This time around, we need to multiply Dh/2(1) by 24 (or 16) so the h4 coefficients match up perfectly:
16Dh/2(1)=16f′(x)−415!f(5)(x)h4+O(h6)
Subtracting Dh(1) from this equation eliminates the h4 term entirely:
16Dh/2(1)−Dh(1)=15f′(x)+O(h6)
Divide by 15, and we arrive at our second-level extrapolation formula:
Dh(2)=1516Dh/2(1)−Dh(1)
By chaining these approximations together, we’ve bumped our accuracy up to O(h6).
The same elimination pattern continues at every level. To eliminate the leading h2n error term, the general step is:
Dh(n)=22n−122nDh/2(n−1)−Dh(n−1)
| Level | Formula | Accuracy |
|---|
| Base | Dh=2hf(x+h)−f(x−h) | O(h2) |
| First | Dh(1)=34Dh/2−Dh | O(h4) |
| Second | Dh(2)=1516Dh/2(1)−Dh(1) | O(h6) |
Each additional level requires one more central difference evaluation at a halved step size, and raises the accuracy order by 2.
Worked Example
Let’s put the formulas to the test with a concrete problem. We have the function f(x)=4x3−9e7x, and we want to evaluate its derivative at x=2.7 using Richardson extrapolation, specifically finding D0.2(1) and D0.2(2) to 4 significant figures.
To find our first-level extrapolation, D0.2(1), we first need two basic central difference estimates: one at our starting step size h=0.2, and another at half that step size, h=0.1.
Let’s calculate D0.2 first:
D0.2=2(0.2)f(2.7+0.2)−f(2.7−0.2)=0.4f(2.9)−f(2.5)
Plugging in the numbers gives us D0.2=−1.384×1010 (to 4 s.f.).
Now, we halve the step size to find D0.1:
D0.1=2(0.1)f(2.7+0.1)−f(2.7−0.1)=0.2f(2.8)−f(2.6)
Which evaluates to D0.1=−1.103×1010 (to 4 s.f.).
With both estimates in hand, we can blend them using our first-level extrapolation formula to knock out the O(h2) error:
D0.2(1)=34D0.1−D0.2=34(−1.103×1010)−(−1.384×1010)
=3−4.412×1010+1.384×1010=3−3.028×1010
This leaves us with a much sharper estimate:
D0.2(1)=−1.009×1010
Moving on to the second level, our goal is to compute D0.2(2), which requires eliminating the O(h4) error. The formula for this is:
D0.2(2)=1516D0.1(1)−D0.2(1)
We already figured out D0.2(1), but we’re missing D0.1(1). To get that, we have to drill down one step further and compute a raw central difference at h=0.05.
D0.05=2(0.05)f(2.7+0.05)−f(2.7−0.05)=0.1f(2.75)−f(2.65)
This comes out to D0.05=−1.038×1010 (to 4 s.f.).
Next, we combine D0.05 and D0.1 to get our missing first-level piece:
D0.1(1)=34D0.05−D0.1=34(−1.038×1010)−(−1.103×1010)
=3−4.152×1010+1.103×1010=3−3.049×1010
So, D0.1(1)=−1.016×1010.
Finally, we have everything we need. We can plug our two first-level estimates into the second-level formula:
D0.2(2)=1516(−1.016×1010)−(−1.009×1010)
=15−16.256×1010+1.009×1010=15−15.247×1010
Giving us our highly accurate final answer:
D0.2(2)=−1.016×1010
Custom Extrapolation: Non-Standard Step Ratio
Richardson extrapolation isn’t limited to the standard h and h/2 pairing. As long as we know the ratio between two step sizes, we can combine their estimates to knock out that leading h2 error term.
Let’s see how this plays out if we decide to replace h with 3h/4. We’ll start by recalling our standard central difference expansion:
Dh=f′(x)+3!f(3)(x)h2+O(h4)
If we evaluate this using a step size of 3h/4 instead, the h2 gets scaled by (3/4)2, which gives us:
D3h/4=f′(x)+3!f(3)(x)169h2+O(h4)
Our strategy remains exactly the same: we need to make the h2 coefficients match so we can subtract them away. To turn that 9/16 back into a 1, we multiply the entire D3h/4 equation by its reciprocal, 16/9:
916D3h/4=916f′(x)+3!f(3)(x)h2+O(h4)
Now, if we subtract our original Dh equation from this scaled version, the h2 terms cancel out perfectly:
916D3h/4−Dh=(916−1)f′(x)+O(h4)=97f′(x)+O(h4)
To wrap things up, we isolate f′(x) by dividing both sides by 7/9 (which is the same as multiplying the numerator and denominator of our fraction by 9). This gives us our custom extrapolation formula:
Dh(1)=716D3h/4−9Dh
And just like that, using an arbitrary step ratio, we’ve successfully derived an estimate that completely avoids the O(h2) error.