Spline-Interpolation

Bei der Spline-Interpolation versucht man, eine Funktion mit Hilfe von Splines zu interpolieren. Die einfachste Methode dazu ist die Verwendung von Geraden zwischen jeweils zwei benachbarten Punkten. Je mehr Punkte man nimmt und die Entfernungen zwischen diesen verkürzt, desto genauer approximiert man die gegebene Funktion. Die Extrapolation kann allerdings teilweise sehr schlecht sein. Bei der Interpolation von z. B. Messwerten muss berücksichtigt werden, dass wirklich alle Punkte einbezogen werden, d. h. so genannte Ausreißer beeinflussen das Ergebnis.

Einfacher Ansatz (Streckenzug)

Die Berechnung eines einfachen Splines als Streckenzug erfolgt auf die bekannte Weise, mit der man auch den Graphen zwischen zwei Punkten ermittelt:
s(x)=mx+bs(x) = m \cdot x + b, d.h.
s(x)=y2y1x2x1x+y1y2y1x2x1x1s(x) = \dfrac{y_2 - y_1}{x_2 - x_1} \cdot x + y_1 - \dfrac{y_2 - y_1}{x_2 - x_1} \cdot x_1 (mit m=y2y1x2x1m = \dfrac{y_2 - y_1}{x_2 - x_1} und b=y1mx1b = y_1 - m \cdot x_1)
Es ist klar, dass diese "einfachen" Spline-Polynome - wie oben angesprochen - sehr ungenau sein können. Wesentlich bessere Ergebnisse liefern kubische Spline-Polynome.

Der kubische Spline

Es soll eine Funktion ff interpoliert werden.
Hierzu unterteilt man ein Intervall [a,b][a,b] durch a=x0<x1<<xn1<xn=ba=x_0<x_1<\ldots<x_{n-1}<x_n=b und definiert die Stützstellen (xi,fi=f(xi))(x_i,f_i=f(x_i)), i=0,,ni=0,\ldots,n.
Auf jedem Teilintervall soll nun ein Polynom 3. Grades, das 2-fach stetig differenzierbar ist, angesetzt werden:
Sj(x)=aj+bj(xxj)+cj(xxj)2+dj(xxj)3S_j(x) = a_j + b_j \cdot (x - x_j) + c_j \cdot (x-x_j)^2 + d_j \cdot (x-x_j)^3 für xjxxj+1x_j\leq x\leq x_{j+1} und j=0,,n1j=0,\ldots,n-1
Um das Gleichungssystem eindeutig zu lösen werden 4n4n Bedingungen benötigt. Für jedes der nn Intervalle sind zwei Interpolationsbedigungen zu erfüllen:
Sj(xj)=fjS_j(x_j) = f_j j=0,1,,n1 j=0,1,\ldots,n-1
Sj(xj+1)=fj+1S_j(x_{j+1}) = f_{j+1} j=0,1,,n1 j=0,1,\ldots,n-1
Dadurch entstehen 2n2n Bedingungen. Weitere 2n22n-2 Bedingungen erhält man dadurch, dass der Spline an allen n2n-2 inneren Stützstellen zweimal stetig differenzierbar sein muss:
S´j(xj)=S´j+1(xj)S´_j(x_j) = S´_{j+1}(x_j) j=1,,n1j=1,\ldots,n-1
S´´j(xj)=S´´j+1(xj)S´´_j(x_j) = S´´_{j+1}(x_j) j=1,,n1 j=1,\ldots,n-1
Für die weiteren 2 Bedingungen (Randbedingungen) gibt es verschiedene Möglichkeiten, so z. B.:
  • freier Rand oder natürlicher Spline: S0(x0)=0,Sn1(xn)=0S_0''(x_0)=0,S_{n-1}''(x_n)=0
  • eingespannter Rand: S0(x0)=f0,Sn1(xn)=fnS_0'(x_0)=f_0',S_{n-1}'(x_n)=f_n' wobei f0f_0' und fnf_n' vorgegeben, normalerweise entweder durch die Ableitung der zu interpolierenden Funktion ff oder durch eine Approximation derselben.
  • periodische Randbedinung: S0(x0)=Sn1(xn),S0(x0)=Sn1(xn)S_0'(x_0)=S_{n-1}'(x_n),\, S_0''(x_0)=S_{n-1}''(x_n)
  • not-a-knot: Die äußeren drei Punkte werden je durch ein Polynom interpoliert.
Die erste Ableitung (Steigung) sieht so aus:
Sj(x)=bj+2cj(xxj)+3dj(xxj)2S_j'(x) = b_j + {2 \cdot c_j} \cdot (x-x_j) + { {3 \cdot d_j} \cdot (x-x_j)^2}.
Die zweite Ableitung (Krümmung) sieht so aus:
Sj(x)=2cj+6dj(xxj)S_j''(x) = 2 \cdot c_j + {6 \cdot d_j} \cdot (x-x_j).
 
 

Die ganzen Zahlen hat der liebe Gott geschaffen, alles andere ist Menschenwerk.

Leopold Kronecker

Copyright- und Lizenzinformationen: Diese Seite basiert dem Artikel Spline-Interpolation aus der frеiеn Enzyklοpädιe Wιkιpеdιa und stеht unter der Dοppellizеnz GNU-Lιzenz für freie Dokumentation und Crеative Commons CC-BY-SA 3.0 Unportеd (Kurzfassung). In der Wιkιpеdιa ist eine Listе dеr Autorеn des Originalartikels verfügbar. Da der Artikel geändert wurde, reicht die Angabe dieser Liste für eine lizenzkonforme Weiternutzung nicht aus!
Anbieterkеnnzeichnung: Mathеpеdιa von Тhοmas Stеιnfеld  • Dοrfplatz 25  •  17237 Blankеnsее  • Tel.: 01734332309 (Vodafone/D2)  •  Email: cο@maτhepedιa.dе