Kapitel 3 Interpolation Die Interpolation von Funktionen oder Daten ist ein häufig auftretendes Problem sowohl in der Mathematik als auch in vielen Anwendungen Das allgemeine Problem, die sogenannte Dateninterpolation, entsteht, wenn wir eine Menge von Daten (x i,f i ) für i = 0,,n gegeben haben (zb Messwerte eines Experiments) Die Problemstellung ist nun wie folgt: Gesucht ist eine Funktion F, für die die Gleichung gilt F(x i ) = f i für i = 0,,,n (3) Ein wichtiger Spezialfall dieses Problems ist die Funktionsinterpolation: Nehmen wir an, dass wir eine reellwertige Funktion f : R R gegeben haben, die aber (zb weil keine explizite Formel bekannt ist) sehr kompliziert auszuwerten ist Ein Beispiel einer solchen Funktion ist die in der Stochastik oft benötigte Gauß-Verteilungsfunktion f(x) = 2π für die keine geschlossene Formel existiert x e y2 /2 dy, Das Ziel der Interpolation liegt nun darin, eine Funktion F(x) zu bestimmen, die leicht auszuwerten ist, und für die für vorgegebene Stützstellen x 0, x,,x n die Gleichung gilt Mit der Schreibweise F(x i ) = f(x i ) für i = 0,,,n (32) f i = f(x i ), erhalten wir hier wieder die Bedingung (3), weswegen (32) tatsächlich ein Spezialfall von (3) ist Wir werden in diesem Kapitel zum einen Verfahren zur Lösung von (3) entwickeln, die dann selbstverständlich auch auf den Spezialfall (32) anwendbar sind Die Wichtigkeit dieses Spezialfalls liegt in diesem Zusammenhang darin, dass man bei der Interpolation einer Funktion f in natürlicher Weise einen Interpolationsfehler über den Abstand zwischen f und F definieren kann, und daher ein Maß für die Güte des Verfahrens erhält Bei 37
38 KAPITEL 3 INTERPOLATION der Dateninterpolation macht dies keinen rechten Sinn, das es ja keine Funktion f gibt, bezüglich der man einen Fehler messen könnte ZumanderenwerdenwirVerfahrenbetrachten,diespeziellaufdieFunktionsapproximation (32) zugeschnitten sind, da sich bei diesen die Wahl der Stützstellen x i aus dem Verfahren ergibt, also nicht beliebig vorgegeben werden kann 3 Polynominterpolation Eine einfache aber oft sehr effektive Methode zur Interpolation ist die Wahl von F als Polynom, also als Funktion der Form P(x) = a 0 +a x+a 2 x 2 ++a m x m (33) Hierbei werden die Werte a i, i = 0,,m, die Koeffizienten des Polynoms genannt Die höchste auftretende Potenz (hier also m, falls a m 0) heißt der Grad des Polynoms Um zu betonen, dass wir hier Polynome verwenden, schreiben wir in diesem Abschnitt P statt F für die Interpolationsfunktion Den Raum der Polynome vom Grad m bezeichnen wir mit P m Dieser Funktionenraum ist ein m+-dimensionaler Vektorraum über R bzw C mit Basis B = {,x,,x m }, da Addition von Polynomen und Multiplikation mit Skalaren wieder ein Polynom des selben Grads ergeben Andere Basen dieses Vektorraums werden in den Übungen behandelt Das Problem der Polynominterpolation liegt nun darin, ein Polynom P zu bestimmen, das (3) erfüllt Zunächst einmal müssen wir uns dazu überlegen, welchen Grad das gesuchte Polynom haben soll Hier hilft uns der folgende Satz Satz 3 Sei n N und seien Daten (x i,f i ) für i = 0,,n gegeben, so dass die Stützstellen paarweise verschieden sind, dh x i x j für alle i j Dann gibt es genau ein Polynom P P n, also vom Grad n, das die Bedingung erfüllt P(x i ) = f i für i = 0,,,n Beweis: Die Koeffizienten a i des interpolierenden Polynoms erfüllen das lineare Gleichungssystem x 0 x n 0 a 0 f 0 = x n x n n a n f n Die Determinante dieser Matrix ist n n j=i+ (x j x i ) und ist damit ungleich Null, falls die x i paarweise verschieden sind Also ist die Matrix invertierbar und das Gleichungssystem besitzt eine eindeutige Lösung
3 POLYNOMINTERPOLATION 39 Für n+ gegebene Datenpunkte (x i,f i ) passt also gerade ein Polynom vom Grad n Nun ist es aus verschiedenen Gründen nicht besonders effizient, dieses lineare Gleichungssystem tatsächlich zu lösen, um die a i zu bestimmen (wir erinnern daran, dass die direkte Lösung des linearen Gleichungssystems den Aufwand der Ordnung O(n 3 ) hat) Wir betrachten daher eine andere Technik zur Berechnung des Polynoms P Beachte, dass diese das gleiche Polynom liefert, auch wenn es auf andere Art dargestellt wird 3 Lagrange-Polynome und baryzentrische Koordinaten Die Idee der Lagrange-Polynome beruht auf einer geschickten Darstellung für Polynome FürdievorgegebenenStützstellenx 0, x,x n definierenwirfüri = 0,,ndieLagrange- Polynome L i als n x x j L i (x) := x i x j j=0 j i Man rechnet leicht nach, dass diese Polynome alle vom Grad n sind, und darüberhinaus die Gleichung { für i = k L i (x k ) = 0 für i k erfüllen Mit Hilfe der L i kann man das Interpolationspolynom einfach explizit berechnen Satz 32 Seien Daten (x i,f i ) für i = 0,,n mit paarweise verschiedenen Stützstellen x i gegeben Dann ist das eindeutige Interpolationspolynom P(x) mit P(x i ) = f i gegeben durch P(x) = f i L i (x) Beweis: Offensichtlich ist die angegebene Funktion ein Polynom vom Grad n Darüberhinaus gilt P(x k ) = f i L i (x k ) = f }{{} k, also gerade die gewünschte Bedingung (3) =0 falls i k =f k falls i=k Beispiel 33 Betrachte die Daten (3, 68), (2, 6), (5, 352) Die zugehörigen Lagrange- Polynome sind gegeben durch L 0 (x) = x 2 x 5 3 2 3 5 = 2 (x 2)(x 5), L (x) = x 3 x 5 2 3 2 5 = 3 (x 3)(x 5), L 2 (x) = x 2 5 2 x 3 5 3 = 6 (x 2)(x 3)
40 KAPITEL 3 INTERPOLATION Damit erhalten wir P(x) = 68 2 (x 2)(x 5)+6 3 (x 3)(x 5)+352 6 (x 2)(x 3) Für x = 3 ergibt sich P(3) = 68 2 (3 2)(3 5) = 68, für x = 2 berechnet man P(2) = 6 3 (2 3)(2 5) = 6 und für x = 5 erhalten wir P(5) = 352 6 (5 2)(5 3) = 352 Durch Abzählen der notwendigen Operationen sieht man, dass die direkte Auswertung des Polynoms P in dieser Form den Aufwand O(n 2 ) besitzt, also deutlich effizienter als die Lösung eines linearen Gleichungssystems ist Für eine effiziente direkte Auswertung sollte man die Nenner der Lagrange-Polynome vorab berechnen und speichern, damit diese nicht bei jeder Auswertung von P erneut berechnet werden müssen Es geht aber noch effizienter, wenn wir die Auswertung der Lagrange-Polynome geschickt umformulieren Dazu schreiben wir den Zähler von als L i (x) = n j=0 j i l(x) x x i mit l(x) := x x j x i x j n x x j Den Nenner schreiben wir mittels der sogenannten baryzentrischen Koordinaten w i := n j=0 j i j=0 x i x j Dann gilt und damit P(x) = L i (x)f i = w i L i (x) = l(x) x x i w i l(x) f i = l(x) x x i w i x x i f i Beispiel 34 Betrachte wiederum die Daten (3; 68), (2; 6), (5; 352) Das zugehörige l ist gegeben durch l(x) = (x 2)(x 3)(x 5) und die w i berechnen sich zu w 0 = 3 2 w = 2 3 w 3 = 5 2 3 5 = 2, 2 5 = 3, 5 3 = 6
3 POLYNOMINTERPOLATION 4 Damit erhalten wir P(x) = l(x) ( ) 2 x 3 68+ 3 x 2 6+ 6 x 5 352 = 2 (x 2)(x 5)68+ 3 (x 3)(x 5)6+ 6 (x 2)(x 3)352, also wie zu erwarten das gleiche Polynom wie oben Um dieses Verfahren effizient zu implementieren, teilen wir die Berechnung in zwei Algorithmen auf Algorithmus 35 (Berechnung der baryzentrischen Koordinaten) Eingabe: Stützstellen x 0,,x n () für i von 0 bis n: (2) setze w i := (3) für j von 0 bis n: (4) falls j i, setze w i := w i /(x i x j ) (6) Ende der Schleifen Ausgabe: baryzentrische Koordinaten w 0,,w n Durch Abzählen der Operationen sieht man leicht, dass die Berechnung der w i gerade 2(n + )n = 2n 2 + 2n = O(n 2 ) Operationen benötigt Dies entspricht der Ordnung des Aufwandes der direkten Auswertung von P Der Trick liegt nun aber darin, die w i einmal vorab zu berechnen und die gespeicherten Werte in der Auswertung von P zu verwenden Algorithmus 36 (Auswertung des Interpolationspolynoms) Eingabe: Stützstellen x 0,,x n, Werte f 0,,f n, baryzentrische Koordinaten w 0,,w n, Auswertungsstelle x (0) setze l :=, s := 0 (Variablen für l und n () für i von 0 bis n (2) setze y := x x i w i x x i f i ) (3) falls y = 0 ist, setze P := f i und beende den Algorithmus (4) setze l := l y (5) setze s := s+w i f i /y (6) Ende der Schleife (7) Setze P := l s Ausgabe: Polynomwert P = P(x)
42 KAPITEL 3 INTERPOLATION Durch Abzählen der Operationen sieht man: die Auswertung benötigt gerade 5(n+)+ = 5n+6 = O(n) Operationen Sind also die w i einmal berechnet, so ist die Auswertung für ein gegebenes x deutlich weniger aufwändig als die direkte Auswertung von P Dies ist zb bei der grafischen Darstellung des Polynoms ein wichtiger Vorteil, da das Polynom dabei für viele verschiedene x ausgewertet werden muss 32 Fehlerabschätzungen Wir betrachten in diesem Abschnitt das Problem der Funktionsinterpolation (32) für eine gegebene Funktion f : R R Wir wollen abschätzen, wie groß der Abstand des interpolierenden Polynoms P von der Funktion f ist Hierbei bezeichnen wir mit [a,b] ein Interpolationsintervall mit der Eigenschaft, dass alle Stützstellen x i [a,b] erfüllen und wir verwenden wieder die Maximumsnorm f := sup f(x) x [a,b] Der folgende Satz gibt eine Abschätzung für den Abstand in Abhängigkeit von den Stützstellen an Hierbei bezeichnet f (k) die k-te Ableitung der Funktion f Satz 37 Sei f (n+)-mal stetig differenzierbar und sei P das Interpolationspolynom zu den paarweise verschiedenen Stützstellen x 0,,x n Dann gelten die folgenden Ausagen (i) Für alle x [a,b] gibt es ein ξ [a,b], so dass die Gleichung gilt f(x) P(x) = f(n+) (ξ) (n+)! (x x 0)(x x ) (x x n ) (ii) Für alle x [a,b] gilt die Abschätzung (iii) Es gilt die Abschätzung f(x) P(x) f (n+) (x x 0 )(x x ) (x x n ) (n+)! f P f (n+) (b a) n+ (n+)! Beweis: (i) Wähle ein x [a,b] mit x x i, i = 0,,n, und setze c = Mit diesem c definieren wir die Funktion f(x) P(x) (x x 0 ) (x x n ) (y) = f(y) P(y) c(y x 0 ) (y x n )
3 POLYNOMINTERPOLATION 43 Dann ist (y) wieder (n + )-mal stetig differenzierbar und hat (mindestens) die n + 2 Nullstellen y = x 0,,x n und y = x Wir nummerieren diese Nullstellen aufsteigend mit der Bezeichnung y (0) 0 < y (0) < < y (0) n+ Nach dem Satz von Rolle gilt: Zwischen je zwei Nullstellen der Funktion (y) liegt (mindestens) eine Nullstelle ihrer Ableitung (y) Also liegtfürjedesi = 0,,nzwischendenWerteny (0) i undy (0) i+ einwerty() i mit (y () i ) = 0, undwirerhaltenn+nullstelleny () 0 < y () < < y n () fürdieableitung (y) = () (y) Indem wir induktiv fortfahren, erhalten wir n+2 k Nullstellen y (k) 0 < y (k) < < y (k) n+ k für die Ableitung (k) und damit für k = n+ eine Nullstelle ξ = y (n+) 0 für die Funktion (n+) Da P ein Polynom vom Grad n ist, folgt P (n+) (y) 0, außerdem gilt [(y x 0 ) (y x n )] (n+) = (n+)! für alle y R Damit erhalten wir also 0 = (n+) (ξ) = f (n+) (ξ) c(n+)! = f (n+) (ξ) f (n+) (ξ) = f(x) P(x) (x x 0 ) (x x n ) (n+)! Auflösen nach f(x) P(x) liefert die Gleichung in (i) (ii) Diese Abschätzung folgt aus (i) wegen da ξ [a,b] ist f(x) P(x) (x x 0 ) (x x n ) (n+)!, f (n+) (ξ) f(x) P(x) = (n+)! (x x 0)(x x ) (x x n ) f (n+) (y) max (x x 0 )(x x ) (x x n ) y [a,b] (n+)!, (iii) Für alle x und x i aus [a,b] gilt die Abschätzung Damit erhalten wir aus (ii) also gerade die Behauptung x x i b a f P f (n+) (b a) n+, (n+)! Wir illustrieren diese Abschätzung an einem Beispiel Beispiel 38 Betrachte die Funktion f(x) = sin(x) auf dem Intervall [0,2π] Die Ableitungen von f sind f () (x) = cos(x), f (2) (x) = sin(x), f (3) (x) = cos(x), f (4) (x) = sin(x),
44 KAPITEL 3 INTERPOLATION Für alle diese Funktionen gilt f (k) (x) für alle x R Mit äquidistanten Stützstellen x i = 2πi/n ergibt sich damit die Abschätzung f(x) P(x) max f (n+) (y) (b a)n+ y [a,b] (n+)! (2π)n+ (n+)! Dieser Term konvergiert für wachsende n sehr schnell gegen 0, weswegen man schon für kleine n eine sehr gute Übereinstimmung der Funktionen erwarten kann, siehe Abbildung 3 5 5 05 05 P(x) 0 P(x) 0 05 05 5 0 2 3 4 5 6 x 5 0 2 3 4 5 6 x Abbildung 3: Links: Interpolationspolynom für 4 (links) und 8 (rechts) äquidistante Stützstellen für die Funktion f(x) = sin(x) auf [0,2π] Fügt man jedoch in Beispiel 38 weitere Stützstellen ein, beobachtet man Oszillationen am Rand des Intervalls [0,2π] (siehe Abbildung 32) trotz unser Fehlerabschätzung aus Satz 37 Dies muss ein numerischer Effekt aus, was eine Untersuchung der Kondition des Interpolationsproblems motiviert 33 Kondition In diesem Abschnitt wollen wir die Kondition der Polynominterpolation betrachten, wobei wir das Polynominterpolationsproblem für fest vorgegebene Stützstellen betrachten In diesem Fall ist die Abbildung φ : (f 0,,f n ) f i L i des Datenvektors (f 0,,f n ) auf das interpolierende Polynom P P n eine lineare Abbildung φ : R n+ P n, weshalb wir die (absolute) Kondition κ abs als induzierte Operatornorm κ abs := φ = sup f R n+ f 0 φ(f) f
3 POLYNOMINTERPOLATION 45 5 5 05 05 P(x) 0 P(x) 0 05 05 5 0 2 3 4 5 6 x 5 0 2 3 4 5 6 x Abbildung 32: Links: Interpolationspolynom für 64 (links) und 28 (rechts) äquidistante Stützstellen für die Funktion f(x) = sin(x) auf [0,2π] dieser linearen Abbildung berechnen können Diese induzierte Operatornorm ist die Erweiterung der induzierten Matrixnorm auf lineare Abbildungen, die nicht notwendigerweise durch eine Matrix definiert sind Im Gegensatz zu den linearen Gleichungssystemen verwenden wir hier die absolute Kondition, weil eine relative Definition hier keine anschauliche InterpretationbesitztAufdemPolynomraumP n verwendenwirdabeidiemaximumsnorm P := max x [a,b] P(x), des Raums der stetigen reellwertigen Funktionen C([a,b],R), wobei wir a = min,,n x i und b = max,,n x i wählen (beachte, dass wir keine Ordnung der Stützstellen x i vorausgesetzt haben) Satz 39 Seien x 0, x,, x n paarweise verschiedene Stützstellen und L i die zugehörigen Lagrange-PolynomeDannistdieabsoluteKonditiondesInterpolationsproblemsmitdiesen Stützstellen gegeben durch κ abs = Λ n := L i, wobei Λ n als Lebesgue-Konstante bezeichnet wird Beweis: Es gilt φ(f)(x) = f i L i (x) f i L i (x) f max L i (x) = f L i = f x [a,b] Λ n, für alle x [a,b], woraus φ(f) f Λ n für alle f R n+ und damit φ Λ n folgt Für die umgekehrte Richtung konstruieren wir ein g R n+ so, dass φ(g)(x ) = g L i
46 KAPITEL 3 INTERPOLATION für ein x [a,b] gilt Sei dazu x [a,b] die Stelle, an der die Funktion x n L i(x) ihr Maximum annimmt, also L i (x ) = L i = Λ n Wir wählen g R n+ als g i = sgn(l i (x )) Dann gilt g = und g i L i (x ) = L i (x ), also φ(g) φ(g)(x ) = g i L i (x ) = L i (x ) = g L i (x ) = g Λ n, weswegen φ Λ n ist Zusammen erhalten wir also die Behauptung κ abs = φ = Λ n Die Zahl Λ n hängt natürlich von der Anzahl und Lage der Stützstellen ab In der folgenden Tabelle 3 sind die Konditionen für das Intervall [,] und verschiedene Anzahlen äquidistante Stützstellen x i = + 2i/n sowie für die sogenannten Tschebyscheff-Stützstellen x i = cos[(2i+)π/(2n+2)], die wir in Abschnitt 32 näher kennen lernen werden, dargestellt n κ abs für äquidistante Stützstellen κ abs für Tschebyscheff-Stützstellen 5 3 20 0 2989 249 5 5205 273 20 098653 290 60 297 0 5 358 00 76 0 27 390 Tabelle 3: Kondition κ abs für verschiedene Stützstellen Man sieht, dass das Problem für äquidistante Stützstellen und große n sehr schlecht konditioniert ist Dies erklärt die starken Oszillationen bei numerisch erzeugten Interpolationspolynome bei großer Stützstellenanzahl, selbst wenn die zu interpolierende Funktion gutartig ist (vergleiche Abbildung 32) Wir werden daher in den nächsten Abschnitten weitere Möglichkeiten zur Interpolation betrachten, die diese Probleme umgehen, indem sie entweder besser positionierte Stützstellen verwenden oder ohne Polynome hohen Grades auskommen 32 Funktionsinterpolation und Stützstellenwahl In diesem Abschnitt beschäftigen wir uns speziell mit der Frage der Funktionsinterpolation (32) durch Polynome Wie bereits erwähnt, unterscheidet sich diese aus algorithmischer Sicht von der Dateninterpolation (3) dadurch, dass man die Stützstellen x i frei wählen kann Dies führt auf die Frage, wie man diese Stützstellen für ein gegebenenes Interpolationsintervall [a,b] optimal wählen kann Wir wollen dieses Problem lösen ohne die Kenntnis der zu interpolierenden Funktion f vorauszusetzen
32 FUNKTIONSINTERPOLATION UND STÜTZSTELLENWAHL 47 Dazu betrachten wir die Fehlerabschätzung aus Satz 37(ii) für die Funktionsinterpolation Dort haben wir die Ungleichung f(x) P(x) f (n+) (x x 0 )(x x ) (x x n ) (n+)! (34) für x [a,b] bewiesen Wir wollen nun untersuchen, wie man die Stützstellen x i wählen muss, so dass diese Fehlerschranke minimal wird Da wir hierbei kein spezielles x vorgeben wollen(dieabschätzungsollfürallexoptimalsein,alsofür f P ),bestehtdieaufgabe also darin, Stützstellen x 0,,x n zu finden, so dass der Ausdruck minimal wird max (x x 0)(x x ) (x x n ) (35) x [a,b] OBdA betrachten wir nun das Intervall [a,b] = [,], denn wenn wir auf [,] die optimalen Stützstellen x i gefunden haben, so sind die mittels x i = a + (x i + )(b a)/2 definierten Stützstellen auf [a,b] ebenfalls optimal und es gilt max (x x 0)(x x ) (x x n ) = x [a,b] ( b a 2 ) n+ max x [,] (x x 0)(x x ) (x x n ) DefinierenwirnunfürbeliebigeStützstellenx 0,,x n daspolynomr n+ (x) = (x x 0 )(x x ) (x x n ) (führender Koeffizient ist a n+ = ) Dann sind die Stützstellen x i gerade die Nullstellen von R n+ und der Ausdruck (35) ist gerade die Maximumsnorm R n+ Die Minimierung von (35) ist also äquivalent zur folgenden Problemstellung: Unter allen Polynomen R n+ vom Grad n + mit führendem Koeffizienten a n+ = finde dasjenige mit kleinster Maximumsnorm auf [,] Der folgende Satz zeigt, dass die bereits in Tabelle 3 aufgeführten Tschebyscheff-Knoten (Nullstellen der zugehörigen normierten Tschebyscheff-Polynoms) gerade das Minimum dieses Optimierungsproblems liefern Satz 30 Die Tschebyscheff-Knoten ( ) 2i+ x i = cos 2n+2 π, i = 0,,n, minimieren den Ausdruck (35) und damit die Fehlerabschätzung (34) Für die Tschebyscheff-Stützstellen x i erhält man damit in (35) max (x x 0)(x x ) (x x n ) = x [,] 2 n Für allgemeine Intervalle [a,b] ergibt sich daraus für die durch x i = a+(x i +)(b a)/2 Ein Beweis findet sich im bereits erwähnten Skript von Prof Grüne Einführung in die numerische Mathematik
48 KAPITEL 3 INTERPOLATION gegebenen transformierten Stützstellen ( ) max (x x 0)(x x ) (x x n ) = (b a)n+ b a n+ x [a,b] 2 2n+ = 2 4 Beachte, dass die Randpunkte und des Interpolationsintervalls keine Tschebyscheff- Knoten und damit keine Stützstellen sind Wir interpolieren mit dieser Methode also auch außerhalb des durch die Stützstellen definierten Intervalls Zusammenfassend kann man feststellen, dass die Tschebyscheff-Stützstellen sowohl dafür sorgen, dass das Interpolationsproblem gut konditioniert ist als auch unsere Abschätzung an den Interpolationsfehler minimieren 33 Splineinterpolation Wir haben gesehen, dass die Polynominterpolation aus Konditionsgründen problematisch ist, wenn wir viele Stützstellen gegeben haben und diese nicht wie die Tschebyscheff Stützstellen optimal gewählt sind Dies kann insbesondere bei der Dateninterpolation (3) auftreten, wenn die Stützstellen fest vorgegeben sind und nicht frei gewählt werden können Wir behandeln daher in diesem Abschnitt eine alternative Interpolationstechnik, die auch bei einer großen Anzahl von Stützstellen problemlos funktioniert Wir betrachten dazupaarweiseverschiedenestützstellenundnehmenan,dassdieseaufsteigendangeordnet sind, also x 0 < x < < x n gilt Die Grundidee der Splineinterpolation liegt darin, die interpolierende Funktion (die wir hier mit S für Spline bezeichnen) nicht global, sondern nur auf jedem Teilintervall [x i,x i+ ] als Polynom zu wählen Diese Teilpolynome sollten dabei an den Intervallgrenzen nicht beliebig sondern möglichst glatt zusammenlaufen Eine solche Funktion, die aus glatt zusammengefügten stückweisen Polynomen besteht, nennt man Spline Formal wird dies durch die folgende Definition präzisiert Definition 3 Seien x 0 < x < < x n Stützstellen und k N Eine stetige und (k )-mal stetig differenzierbare Funktion S : [x 0,x n ] R heißt Spline vom Grad k, falls S auf jedem Intervall I i = [x i,x i ] mit i =,,n durch ein Polynom P i vom Grad k gegeben ist, dh für x I i gilt S(x) = P i (x) = a i0 +a i (x x i )++a ik (x x i ) k = k a ij (x x i ) j (36) Den Raum der Splines vom Grad k zur Stützstellenmenge = {x 0,x,,x n } bezeichnen wir mit S,k j=0 Ein solcher Spline aus Definition 3 löst dann das Interpolationsproblem, falls zusätzlich die Bedingung (3) erfüllt ist, also S(x i ) = f i für alle i = 0,,n gilt Bevor wir an die Berechnung von Splines gehen, zeigen wir eine Eigenschaft des Funktionenraums S,k
33 SPLINEINTERPOLATION 49 Satz 32 Sei = {x 0,x,,x n } mit x 0 < x < < x n und k N gegeben Dann ist der Raum der Splines S,k ein k +n-dimensionaler Vektorraum über R Beweis: Sicherlich ist mit S und S 2 auch as +bs 2 für a, b R wieder ein Spline, also ist S,k ein Vektorraum Da die Splines linear von den Koeffizienten a ij abhängen, genügt es zur Berechnung der Dimension die Anzahl derfreien Parametera ij zu bestimmen Auf dem ersten Intervall I haben wir freie Wahl für P, also gibt es genau k+ freie Parameter Auf jedem weiteren Intervall I i für i 2 sind die Werte der j-ten Ableitung P (j) i (x i ) = j!a ij für j = 0,,k bereits festgelegt, da die zusammengesetzte Funktion S in x i ja stetig und k -mal stetig differenzierbar ist, es muss also a ij = P (j) i (x i )/j! für j = 0,,k gelten Daher ist hier nur noch der Koeffizient a ik frei wählbar, was auf den n verbleibenden Intervallen gerade n weitere freie Parameter ergibt, also insgesamt k+n Tatsächlichkannmanbeweisen,dassdieSpline-Koeffizientena ij linearvoneinanderabhängen, statt der im Beweis des Satzes verwendeten Koeffizienten a 0,,a k,a 2k,,a nk kann man also auch andere n+k Koeffizienten vorgeben und die übrigen daraus berechnen Von besonderer praktischer Bedeutung in vielen Anwendungen sind die kubischen Splines, also Splines vom Grad k = 3; den Grund dafür werden wir etwas später besprechen Wegen der Darstellung (36) von P i (x) und der Interpolationsbedingung (3) sind für die Splineinterpolation die Koeffizienten a i0, i =,2,,n, bereits festgelegt: a i0 = f i für i =,,n Entsprechend können wir (3) für x = x n sicherstellen, indem wir a n = f n a n0 a n2 (x n x n ) 2 a n3 (x n x n ) 3 x n x n setzen Dann haben wir insgesamt genau n+ Koeffizienten festgelegt und sichergestellt, dass die Interpolationsbedingung (3) für gegebene Daten (x i,f i ) mit x 0 < x < < x n erfüllt ist Da der Vektorraum S,3 Dimension n+3 hat, verbleiben also 2 weitere Koeffizienten, die durch geeignete Bedingungen festgelegt werden müssen, um einen eindeutigen interpolierenden Spline zu erhalten Diese werden typischerweise in Form von Randbedingungen, also Bedingungen an S oder an Ableitungen von S in den Punkten x 0 und x n formuliert: (a) S (x 0 ) = S (x n ) = 0 (b) S (x 0 ) = S (x n ) und S (x 0 ) = S (x n ) (c) S (x 0 ) = f (x 0 ) und S (x n ) = f (x n ) ( natürliche Randbedingungen ) ( periodische Randbedingungen ) ( hermite sche Randbedingungen, nur sinnvoll bei der Funktionsinterpolation) Dann gibt es genau einen kubischen Spline S S 3, der das Interpolationsproblem (3) löst und die entsprechende Randbedingung (a), (b) oder (c) erfüllt
50 KAPITEL 3 INTERPOLATION Kubische Splines werden in Anwendungen wie zb der Computergrafik bevorzugt verwendet, und wir wollen als nächstes den Grund dafür erläutern Ein Kriterium zur Wahl der Ordnung eines Splines speziell bei grafischen Anwendungen, aber auch bei klassischen Interpolationsproblemen ist, dass die Krümmung der interpolierenden Kurve möglichst klein sein soll Die Krümmung einer Kurve y(x) in einem Punkt x ist gerade gegeben durch die zweite Ableitung y (x) Die Gesamtkrümmung für alle x [x 0,x n ] kann nun auf verschiedene Arten gemessen werden, hier verwenden wir die L 2 -Norm 2 für quadratisch integrierbare Funktionen, die für g : [x 0,x n ] R durch g 2 := ( xn x 0 g 2 (x)dx gegebenistdiekrümmungeinerzweimalstetigdifferenzierbarenfunktiony : [x 0,x n ] R über dem gesamten Intervall kann also mittels y 2 gemessen werden Hierfür gilt der folgende Satz ) 2 Satz 33 Sei S : [x 0,x n ] R ein die Daten (x i,f i ), i = 0,,n interpolierender kubischer Spline, der eine der Randbedingungen (a) (c) erfüllt Sei y : [x 0,x n ] R eine zweimal stetig differenzierbare Funktion, die ebenfalls das Interpolationsproblem löst und die gleichen Randbedingungen wie S erfüllt Dann gilt S 2 y 2 Beweis: Setzen wir die offensichtliche Gleichung y = S + (y S ) in die quadrierte Norm y 2 2 ein, so folgt y 2 2 = = xn x 0 (y (x)) 2 dx xn x 0 (S (x)) 2 dx }{{} = S 2 2 S 2 2 +J xn +2 x 0 S (x)(y (x) S (x))dx }{{} =:J xn + (y (x) S (x)) 2 dx x } 0 {{} 0 Wir betrachten nun den Term J genauer Aus jeder der drei Randbedingungen folgt die Gleichung [ ] S (x)(y (x) S xn (x)) = S (x n )(y (x n ) S (x n )) S (x 0 )(y (x 0 ) S (x 0 )) = 0 (37) x=x 0 Mit partieller Integration gilt xn x 0 S (x)(y (x) S (x))dx = [ ] S (x)(y (x) S xn xn (x)) S (x)(y (x) S (x))dx x=x 0 x 0 Hierbei ist der erste Summand wegen (37) gleich Null Auf jedem Intervall I i = [x i,x i ] ist S(x) = P i (x) ein kubisches Polynom, weswegen S (x) d i konstant für x I i ist Also
33 SPLINEINTERPOLATION 5 folgt für den zweiten Summanden xn S (x)(y (x) S (x))dx = x 0 = = i= xi d i (y (x) S (x))dx x i xi d i y (x) S (x)dx x i d i [(y(x i ) y(x i ) S(x i )+S(x i )] }{{} =0,day(x i )=S(x i )undy(x i )=S(x i ) i= i= = 0 Damit erhalten wir J = 0 und folglich die Behauptung Diese Eigenschaft erklärt auch den Namen Spline: Ein Spline ist im Englischen eine dünne Holzlatte Wenn man diese so verbiegt, dass sie vorgegebenen Punkten folgt (diese also interpoliert ), so ist auch bei dieser Latte die Krümmung, die hier näherungsweise die notwendige Biegeenergie beschreibt, minimal zumindest für kleine Auslenkungen der Latte WirkommennunzurpraktischenBerechnungderSpline-KoeffizientenfürkubischeSplines HierbeigibtesverschiedeneVorgehensweisen:mankannzBdirekteinlinearesGleichungssystem für die 4n Koeffizienten a ij für i =,,n aufstellen, was aber wenig effizient ist Alternativ kann man geschickt gewählte Basis-Funktionen für den Vektorraum S,3 verwenden (sogenannte B-Splines), und S in dieser Basis berechnen; dieser Ansatz wird im Buch von Deuflhard/Hohmann beschrieben Dies führt auf ein n-dimensionales lineares Gleichungssystem mit tridiagonaler Matrix A Es werden bei diesem Verfahren allerdings nicht die Koeffizienten a ij berechnet, sondern die Koeffizienten bezüglich der B-Spline- Basis, die Auswertung von S muss demnach ebenfalls über diese Basisfunktionen erfolgen Hier stellen wir eine weitere Variante vor, mit der direkt die Koeffizienten a ij berechnet werden, so dass S über die Darstellung in Definition 3 ausgewertet werden kann, was zb der Vorgehensweise in matlab entspricht Wir kommen hierbei ebenfalls auf ein n-dimensionales lineares Gleichungssystem mit tridiagonaler Matrix A, so dass der Aufwand der Berechnung von der Ordnung O(n) ist Wir betrachten zuerst die natürlichen Randbedingungen Hierzu definieren wir zunächst die Werte f i := S (x i ) und h i := x i x i für i = 0,,n bzw i =,,n Aus der Interpolationsbedingung und der geforderten Stetigkeit der zweiten Ableitung erhält man 4 Gleichungen für die Teilpolynome P i : P i (x i ) = f i, P i (x i ) = f i, P i (x i ) = f i, P i (x i ) = f i (38) Löst man diese unter Ausnutzung der Ableitungsregeln für Polynome nach den a ij
52 KAPITEL 3 INTERPOLATION auf, so erhält man a i0 = f i a i = f i f i h i h i 6 (f i +2f i ) a i2 = f i 2 a i3 = f i f i 6h i Da die Werte h i und f i ja direkt aus den Daten verfügbar sind, müssen lediglich die Werte f i berechnet werden Da aus den natürlichen Randbedingungen sofort f 0 = 0 und f n = 0 folgt, brauchen nur die Werte f,,f n berechnet werden Beachte, dass wir in (38) bereits die Bedingungen an P i und P i in den Stützstellen verwendet haben Aus den noch nicht benutzten Gleichungen für die ersten Ableitungen erhält man nun die Gleichungen für die f i : Aus P i (x i) = P i+ (x i) erhält man a i +2a i2 (x i x i )+3a i3 (x i x i ) 2 = a i+ für i =,,n Indem man hier die Werte f i und h i gemäß den obigen Gleichungen bzw Definitionen einsetzt, erhält man h i f i +2(h i +h i+ )f i +h i+ f i+ = 6 f i+ f i 6 f i f i h i+ h i =: δ i für i =,,n Dies liefert genau n Gleichungen für die n Unbekannten f,,f n In Matrixform geschrieben erhalten wir so das Gleichungssystem 2(h +h 2 ) h 2 0 0 h 2 2(h 2 +h 3 ) h 3 f δ 0 h f 2 δ 2 3 = 0 hn f n δ n 0 0 h n 2(h n +h n ) Zur Berechnung des Interpolationssplines löst man also zunächst dieses Gleichungssystem und berechnet dann gemäß der obigen Formel die Koeffizienten a ij aus den f k Für äquidistante Stützstellen, also x k x k = h k = h für alle k =,,n, kann man beide Seiten durch h teilen, und erhält so das Gleichungssystem 4 0 0 4 0 0 4 0 0 4 f f 2 f n = δ δ 2 δ n
33 SPLINEINTERPOLATION 53 mit δ k = δ k /h, welches ein Beispiel für ein lineares Gleichungssystem mit (offensichtlich) diagonaldominanter Matrix ist Für andere Randbedingungen verändert sich dieses Gleichungssystem entsprechend ZumAbschlusswollenwirnochkurzaufdenInterpolationsfehlerbeiderSplineinterpolation eingehen Die Analyse dieses Fehlers ist recht langwierig, das Ergebnis, das wir hier ohne Beweis geben, allerdings sehr leicht darzustellen Der folgende Satz wurde von CA Hall und WW Meyer [4] bewiesen Satz 34 Sei S S,3 der interpolierende Spline einer 4 mal stetig differenzierbaren Funktion f mit hermite schen Randbedingungen und Stützstellen = {x 0,,x n } Dann gilt für h = max k (x k x k ) die Abschätzung f S 5 384 h4 f (4)