3 Praktikumsaufgabe

Werbung
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.
Herunterladen