Newtonsche Interpolationsformel
Donnerstag 13. Dezember 2007 von
Simon Praetorius
In einem
anderen Artikel habe ich die Interpolation nach dem Verfahren von Neville-Aitken betrachtet. Es wird verwendet, wenn man das Interpolations-Polynom nur an wenigen Stellen auswerten will. Benötigt man allerdings die Auswertung an vielen Stellen, empfiehlt es sich einen anderen Ansatz zu wählen.
Ein Polynom, das in der
Newtonschen Darstellung gegeben ist, kann schnell mittels modifiziertem Hornerschema ausgewertet werden. Die Newtonschen Darstellung sieht folgendermaßen aus:
| p(x) = c0 + c1(x - x0) + c2(x - x0)(x - x1) + ... + cn(x - x0)(x - x1)...(x - xn-1) = | n ∑ i=0 | (ci ⋅ | i-1 ∏ j=0 | (x - xj)) |
Zur Berechnung der
ci werden sogenannte
Dividiert Differenzen benutzt:
| f[xk,xk+j] := | f[xk+1,xk+j] - f[xk,xk+j-1] xk+j - xk | |
Die
ci ergeben sich dann als
c0 = f[x0], ci = f[x0, xi]. Diese Koeffizienten kann man sehr gut in einem Tabellenschema darstellen und damit auch berechnen:
Die Methode der Dividierten Differenzen zur Berechnung der
ci wird auch als Steigungsschema bezeichnet. In Matlab sieht der Algorithmus dann wie folgt aus:
matlab Code
- function c = koeffizienten(f,s)
- % Steigungsschema zur Berechnung der Koeffizienten c_i
- c = f(s);
- n = length(s);
- for(i=2:n)
- for(k=n:-1:i)
- c(k) = (c(k)-c(k-1)) / (s(k)-s(k-i+1));
- end
- end
- end
-
- function y = polynom(x,s,c)
- % Auswertung des Polynoms mit den Koeffizienten c_i durch modifiziertes Hornerschema
- y = c(n);
- for(k=n-1:-1:1)
- y = c(k)+(x-s(k)).*y;
- end
- end