Minimum polynomial extrapolation

From HandWiki

In mathematics, minimum polynomial extrapolation is a sequence transformation used for convergence acceleration of vector sequences, due to Cabay and Jackson.[1] While Aitken's method is the most famous, it often fails for vector sequences. An effective method for vector sequences is the minimum polynomial extrapolation. It is usually phrased in terms of the fixed point iteration:

[math]\displaystyle{ x_{k+1}=f(x_k). }[/math]

Given iterates [math]\displaystyle{ x_1, x_2, ..., x_k }[/math] in [math]\displaystyle{ \mathbb R^n }[/math], one constructs the [math]\displaystyle{ n \times (k-1) }[/math] matrix [math]\displaystyle{ U=(x_2-x_1, x_3-x_2, ..., x_k-x_{k-1}) }[/math] whose columns are the [math]\displaystyle{ k-1 }[/math] differences. Then, one computes the vector [math]\displaystyle{ c=-U^+ (x_{k+1}-x_k) }[/math] where [math]\displaystyle{ U^+ }[/math] denotes the Moore–Penrose pseudoinverse of [math]\displaystyle{ U }[/math]. The number 1 is then appended to the end of [math]\displaystyle{ c }[/math], and the extrapolated limit is

[math]\displaystyle{ s={ X c \over \sum_{i=1}^k c_i }, }[/math]

where [math]\displaystyle{ X=(x_2, x_3, ..., x_{k+1}) }[/math] is the matrix whose columns are the [math]\displaystyle{ k }[/math] iterates starting at 2.

The following 4 line MATLAB code segment implements the MPE algorithm:

U = x(:, 2:end - 1) - x(:, 1:end - 2);
c = - pinv(U) * (x(:, end) - x(:, end - 1));
c(end + 1, 1) = 1;
s = (x(:, 2:end) * c) / sum(c);

References

  1. Cabay, S.; Jackson, L.W. (1976), "A polynomial extrapolation method for finding limits and antilimits of vector sequences", SIAM Journal on Numerical Analysis 13 (5): 734–752, doi:10.1137/0713060, Bibcode1976SJNA...13..734C