Interpolation mit kubischen Splines

Beim astronomischen/naturwissenschaftlichen Programmieren trifft man gelegentlich die Aufgabenstellung, innerhalb einer gegebenen Menge von Meßwerten bestehend aus Wertepaaren (x,y) Zwischenwerte berechnen zu können (Interpolation). Im einfachsten Fall ist die Interpolation linear, d.h. man denkt sich eine gerade Linie zwischen den beiden nächsten Meßwerten zu demjenigen Punkt x, für den ein Zwischenwert berechnet werden soll und berechnet den zugehörigen y-Wert über den linearen Zusammenhang (s. rote Linien in der Abb. unten).

Ist die Meßkurve stärker gebogen, so stößt man mit der linearen Interpolation an Grenzen. Man braucht einen Algorithmus, der diese Krümmung besser berücksichtigt. Hier bieten die kubischen Splines einen interessanten Lösungsansatz.

Grundgedanke ist das Hineinlegen eines Polynoms höherer Ordnung in einen Abschnitt zwischen zwei Meßwerten. Durch die höhere Ordnung bekommt man zusätzliche Freiheitsgrade, um die Ausgleichskurve besser an die Meßwerte anschmiegen lassen zu können. In der Regel hat man nicht nur zwei, sondern viele Meßwerte. Ein Polynom dritter Ordnung S(x) = a x3 + b x2 + c x + d leistet meist schon gute Dienste.

Um über den gesamten Meßwertebereich interpolieren zu können, müssen für alle Abschnitte solche Polynome definiert werden. Je nach dem, in welchen Abschnitt der Zwischenwert zu bilden ist, wird das entsprechende Polynom ausgewählt, d.h. für eine vollständige Beschreibung werden mehrere Polynomabschnitte aneinandergesetzt. An den Übergängen (sprich: genau auf den Meßpunkten) wird gefordert, daß die Splines die gleichen Funktionswerte besitzen, also stetig ineinander übergehen, daß sie die gleich Steigung haben, also in der ersten Ableitung S'(x) Übereinstimmung, und daß sie das gleich Krümmungsverhalten aufweisen, also in der zweiten Ableitung S"(x) übereinstimmen. Anhand dieser Randbedingungen kann man für alle Abschnitte Gleichungssysteme aufstellen, die für die Parameter a, b, c und d auflösbar sind und so S(x) = a x3 + b x2 + c x + d ergeben

Eine ansprechende Herleitung der Rechenvorschrift findet sich auf einer Seite von Arndt Brünner, wo man zudem einen Online-Rechner für Splines ausprobieren kann. Ein Teil des Verfahrens ist die Lösung eines linearen Gleichungssystems. Dies kann in der Implementierung z.B. mit der Matrixbibliothek MaxLite geschehen.

Die Namensgebung Spline geht aus dem englischen Wort für Straklatte hervor (s. auch folgendes Bild in der Wikipedia). Dies führt zu einer wichtigen Eigenschaft von Splinefunktionen: sie minimieren die Krümmung.

Selbstverständlich wendet man kubische Splines genau an, wenn zu erwarten ist, daß die theoretische Kurve durch die Stützstellen verläuft oder durch sie gut angenähert wird. Verrauschte Daten sollten hingegen besser mit einem Fitalgorithmus bearbeitet werden.