2 Gnu Octave |
Theoretische Grundlagen zur Interpolation |
Befehle interp1(), csape() und ppval() |
Ableitung mit ppder |
Ist eine Folge von Punkten mit streng monoton wachsenden
x-Werten gegeben (d.h. jeder x-Wert ist größer als
der vorangegangene), kann eine Kurveninterpolation durchgeführt
werden.
Dabei wird jedes Intervall zwischen 2 jeweils benachbarten Punkten
Pi und Pi+1 durch
ein Polynom dritten Grades
beschrieben.
Dieses Verfahren wird auch als "Stückweises Polynom" (engl:
piecewise polynomial, pp) bezeichnet.
Für n Punkte ergeben sich n-1 Intervalle, d.h.
n-1 Polynome. Da für jedes Polynom 4 Koeffizienten
ai, bi,
ci und di
verwendet werden, müssen insgesamt 4(n-1) Koeffizienten
bestimmt werden, hierzu werden 4(n-1) Bedingungen
(Gleichungen benötigt).
Die Koeffizienten müssen so gewählt werden, dass folgende Bedingungen erfüllt sind.
Dies ergibt bis jetzt 4n-6 Gleichungen. Die noch fehlenden zwei Gleichungen werden in Octave durch den type-Parameter des csape()-Befehls ("not-a-knot", "variational", "complete", "second") bestimmt, siehe unten.
Mit
pp = interp1(x, y, "spline", "pp");
wird für die gegebenen Vektoren mit x- und y-Koordinaten ein Spline berechnet. Zurückgegeben wird eine Struktur vom Typ pp, die u.a. Intervallgrenzen und die Polynomkoeffizienten enthält.
Mit dieser Struktur können nun mit
y = ppval(pp, x);
für einen oder mehrere x-Werte (das Argument x kann ein Skalar, ein Vektor oder eine Matrix sein) die zugehörigen y-Werte berechnet werden.
Ist das Octave-Forge-Paket "splines" installiert, kann anstelle von interp1() der Befehl
pp = csape(x, y, typ, valc);
verwendet werden.
Während die Online-Hilfe für interp1() keine Angaben macht,
wie die beiden letzten Gleichungen zur Bestimmung der
Polynomkoeffizienten gewonnen werden, kann mit dem Parameter
typ ein Spline-Typ ausgewählt werden:
Name | Bedeutung |
---|---|
not-a-knot | Am zweiten und am vorletzten Punkt ist die dritte Ableitung des linken und rechten Polynoms gleich. Dies ist die Standardeinstellung. |
variational | Natural spline. Am Anfangs- und Endpunkt ist die zweite Ableitung 0. |
complete | Das Argument valc enthält zwei Elemente: die erste Ableitung im Anfangspunkt und im Endpunkt. |
second | Das Argument valc enthält zwei Elemente: die zweite Ableitung im Anfangspunkt und im Endpunkt. |
periodic | Erste und zweite Ableitung von Anfangs- und Endpunkt sind gleich. Voraussetzung für die Nutzung von periodic ist, dass auch der y-Wert von Anfangs- und Endpunkt gleich ist. |
Die Octave-Online-Hilfe spricht keine Empfehlung für die
Verwendung eines bestimmten Spline-Types aus. Die
Scilab-Online-Hilfe empfiehlt für die analogen Funktionen
complete, wenn die erste Ableitung in Anfangs- und Endpunkt
gegeben ist, ansonsten not-a-knot.
Natural Splines (variational) sollten nur verwendet werden,
wenn sicher ist, dass die zweite Ableitung der Kurve im Anfangs-
und Endpunkt 0 ist.
Ist eine Funktion als stückweises Polynom gegeben, kann sie abgeleitet werden. Die Ableitung ergibt wieder ein stückweises Polynom. Der Grad des Ergebnispolynomes ist um 1 kleiner als der Grad des Originalpolynomes.
Mit
ppd = ppder(pp [ , m]);
wird eine Ableitung für ein stückweises Polynom gewonnen. Ohne m wird die erste Ableitung gebildet, mit m wird die m-te Ableitung gebildet.