Richardson extrapolation
|
In numerical analysis, Richardson extrapolation is a method to improve an approximation that depends on a step size.
Let A(h) be an approximation of A that depends on a positive step size h with an error formula of the form
- <math> A - A(h) = a_0h^{k_0} + a_1h^{k_1} + a_2h^{k_2} + \cdots <math>
where the ai are unknown constants and the ki are known constants such that hki > hki+1.
The exact value sought can be given by
- <math> A = A(h) + a_0h^{k_0} + a_1h^{k_1} + a_2h^{k_2} + \cdots <math>
which can be simplified with Big O notation to be
- <math> A = A(h)+ a_0h^{k_0} + O(h^{k_1}). \,\!<math>
Using the step sizes h and h / t for some t, the two formulas for A are:
- <math> A = A(h)+ a_0h^{k_0} + O(h^{k_1}) \,\!<math>
- <math> A = A\left(\frac{h}{t}\right) + a_0\left(\frac{h}{t}\right)^{k_0} + O(h^{k_1}) .<math>
Multiplying the second equation by tk0 and subtracting the first equation gives
- <math> (t^{k_0}-1)A = t^{k_0}A\left(\frac{h}{t}\right) - A(h) + O(h^{k_1}) <math>
which can be solved for A to give
- <math>A = \frac{t^{k_0}A\left(\frac{h}{t}\right) - A(h)}{t^{k_0}-1} + O(h^{k_1}) .<math>
By this process, we have achieved a better approximation of A by subtracting the largest term in the error which was O(hk0). This process can be repeated to remove more error terms to get even better approximations.
A general recurrence relation can be defined for the approximations by
- <math> A_{i+1}(h) = \frac{t^{k_i}A_i\left(\frac{h}{t}\right) - A_i(h)}{t^{k_i}-1} <math>
such that
- <math> A = A_{i+1}(h) + O(h^{k_{i+1}}) .<math>
A well-known practical use of Richardson extrapolation is Romberg integration, which applies Richardson extrapolation to the trapezium rule.
Example
Using Taylor's theorem,
- <math>f(x+h) = f(x) + f'(x)h + \frac{f''(x)}{2}h^2 + \cdots<math>
so the derivative of f(x) is given by
- <math>f'(x) = \frac{f(x+h) - f(x)}{h} - \frac{f''(x)}{2}h + \cdots.<math>
If the initial approximations of the derivative are chosen to be
- <math>A_0(h) = \frac{f(x+h) - f(x)}{h}<math>
then ki = i+1.
For t = 2, the first formula extrapolated for A would be
- <math>A = 2A_0\left(\frac{h}{2}\right) - A_0(h) + O(h^2) .<math>
For the new approximation
- <math>A_1(h) = 2A_0\left(\frac{h}{2}\right) - A_0(h) <math>
we can extrapolate again to obtain
- <math> A = \frac{4A_1\left(\frac{h}{2}\right) - A_1(h)}{3} + O(h^3) .<math>