Fachbereich C Prof. Dr. Michael Günther Dominik Gräser, B.Sc. SoS 2014 Praktikum zu Einführung in die Numerische Mathematik Programmieraufgabe 3 P3 Dividierte Differenzen Gesucht ist die Lösung des gewöhnlichen Polynom-Interpolationsproblems, d.h. ein Polynom p(x), welches durch die paarweise verschiedenen Punktpaare (xi , yi ) ∈ IR2 verläuft. Zur Bestimmung der Koeffizienten sollen die dividierten Differenzen verwendet werden. Die anschließende Auswertung soll mit dem Hornerschema erfolgen. a) Dividierte Differenzen Schreiben Sie ein MATLAB-Programm divdiff.m, dass die Koeffizienten des Interpolationspolynoms in der Newton-Basis bestimmt. Dabei sollen die Stützstellen x = (xi ) und Funktionswerte y = (yi ) vektoriell übergeben werden. Benutzen Sie dazu folgenden Programmkopf (die Länge des Vektors x erhält man mit length(x)): function a=divdiff(x,y) % function a=divdiff(x,y) % x Stuetzstellen % y Funktionswerte an den Stuetzstellen % a Polynomkoeffizienten (dividierte Differenzen) ... b) Hornerschema Schreiben Sie ein Programm hornausw.m, dass das Interpolationspolynom mit dem Hornerschema an der Stelle ξ auswertet. Verwenden Sie dabei die Terme (x − xi ) als Faktoren. Es soll mit folgenden Zeilen beginnen: function f=hornausw(x,a,xi) % function f=hornausw(x,a,xi) % % x Stuetzstellen des Polynoms % a Polynomkoeffizienten aus dividierten Differenzen % xi Stelle, wo das Interpolationspolynom ausgewertet wird, das % Ergebnis steht in f ... c) Beispiele Bestimmen Sie die Polynomkoeffizienten zur Approximation der folgenden Funktionen mit den jeweils drei angegebenen Stützstellenvariationen: 1) y(x) = cos(7x) mit Stützstellen i) xi = −1 + i · 0.25, i = 0, . . . , 8, 11 , − 34 , − 41 , 0, 41 , 34 , 11 , 1,(hyperbolische Stützstellen) ii) xi = −1, − 12 12 iii) Tschebyscheffknoten mit n = 8“ (9 Knoten), ” 2) y(x) = tanh(10x) mit Stützstellen i) xi = −1 + i · 0.4, i = 0, . . . , 5, ii) xi = −1, − 65 , − 31 , 13 , 65 , 1, (hyp.) iii) Tschebyscheffknoten mit n = 5“ (6 Knoten), ” 1 3) y(x) = 1+25x 2 mit Stützstellen i) xi = −1 + i · 0.2, i = 0, . . . , 10, ii) xi = − 65 + 51 , − 56 + 14 , − 65 + 31 , − 56 + 12 , − 65 +1, 0, 56 −1, 65 − 12 , 56 − 13 , 65 − 41 , 1, iii) Tschebyscheffknoten mit n = 10“ (11 Knoten). ” Zeichnen Sie anschließend die Werte des Interpolationspolynoms zusammen mit der exakten Funktion auf dem Intervall [−1, 1] in ein Diagramm, wobei beide an den Stellen ξi = −1 + i · 0.01, i = 1, . . . , 201 ausgewertet werden sollen. Wenn Sie wollen, können Sie auch noch die Beispielfunktion auf den an divdiff.m übergegebenen Stützstellen in dem Plot ausgeben. Insgesamt ergeben sich also 9 Plots, für jede der 3 Funktionen 3 Interpolationspolynome durch die verschieden gewählten Stützstellen. Geben Sie außerdem in einer Tabelle die globalen Fehler ||y(x) − p(x)||∞ für jede Interpolation an (Befehl norm). Welche Stützstellenwahl empfehlen Sie? Hinweis: Interpolationspolynome vom Grad k sollten Polynome vom Grad ≤ k exakt – bis auf Rechenungenauigkeit – darstellen können. Testen Sie daher ihre Interpolationspolynome zunächst an Funktionen wie y(x) = x5 und vergleichen Sie die Ergebnisse mit den exakten Werten. d) Berechnen Sie das eindeutige Interpolationspolynom vom Grad 60 durch die 61 Wertepaare (ui , Ii ), i = 0, 1, . . . , 60 aus Aufgabe P2. Plotten Sie das Ergebnis im Intervall [−0.2, 0.8], und dazu zum Vergleich die exakte kubische Funktion aus P2. Welches Ergebnis erhalten Sie, falls Sie alternativ kubische Splineinterpolation verwenden? Hierzu können Sie den MATLAB-Befehl spline.m benutzen. Abgabe in der 25. KW.