Mo Logo [Home] [Lexikon] [Aufgaben] [Tests] [Kurse] [Begleitmaterial] [Hinweise] [Mitwirkende] [Publikationen]

Mathematik-Online-Lexikon:

Splineinterpolation mit MATLAB


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Übersicht

Ein kubischer Spline-Interpolant zu den an den Knoten $ x_k$ gegebenen Daten $ y_k$ kann in MATLAB mit dem Befehl p=spline(x,y) berechnet, und mit pt=ppval(p,t) an den Punkten $ t_j$ ausgewertet werden. Der Spline wird als Struktur gespeichert, die unter anderem in dem Feld coefs die Koeffizienten der einzelnen Polynomsegmente enthält.

Das folgende Programmsegment gibt ein Beipiel

>> x=[0:4]; y=[1,0,1,0,1];
>> p=spline(x,y)

p =

      form: 'pp'
    breaks: [0 1 2 3 4]
     coefs: [4x4 double]
    pieces: 4
     order: 4
       dim: 1

>> p.coefs

ans =

    -1     4    -4     1
    -1     1     1     0
     1    -2     0     1
     1     1    -1     0

>> t=linspace(0,4);
>> pt=ppval(p,t);
>> plot(t,pt);

\includegraphics[width=.7\moimagesize]{a_splineinterpolation_matlab_bild}

Die Polynomkoeffizienten sind zeilenweise gespeichert. Beispielsweise ist das Polynom des dritten Intervalls $ [2,3]$

$\displaystyle p(x)=1-2(x-2)^2+(x-2)^3\,.
$

Als Randbedingung wird die ,,not-a-knot``Bedingung verwendet, das heißt alle Ableitungen sind an dem ersten und letzten inneren Knoten stetig. Man erkennt dies in diesem Beispiel daran, dass der höchste Koeffizient auf den ersten und letzten beiden Intervallen gleich ist.

Alternativ dazu kann man den Datenvektor $ y$ um zwei Werte erweitern. Hat $ y$ genau zwei Einträge mehr als $ x$, so werden der erste und letzte Wert von $ y$ als Randbedingung für die Steigungen an den Enden der Kurve verwendet.

Die Auswertung kann auch unmittelbar mit dem Befehl spline erfolgen. Darüber hinaus ist die simultane Interpolation vektorwertiger Daten möglich. Beispielsweise liefert curve=spline(x,[1,0,1,0,1;0,0,2,2,1],t) mit $ x$ und $ t$ wie oben Punkte auf der nachfolgend abgebildeten Kurve.

\includegraphics[width=.4\moimagesize]{a_splineinterpolation_matlab_bild2}

[Verweise]

  automatisch erstellt am 19.  8. 2013