Serie 8

Werbung
MNEU – Mathematik: Numerik für Energie- und Umwelttechnik
Dr. Christoph Kirsch
Herbstsemester 2014
ZHAW Winterthur
Serie 8
Aufgabe 1 :
Schreiben Sie die MATLAB-Codezeilen aus Kap. 4.1.1 der Vorlesung in zwei
MATLAB-Skripts PolyDiff.m bzw. SplineDiff.m. Erzeugen Sie dann für die 10
Stützstellen
0
1
2
3
4
5
6
7
8
9
i
xi −0.929 −0.216 0.312 0.358 0.486 0.516 0.584 0.698 0.868 0.919
die Stützwerte yi = f (xi ), i = 0, 1, . . . , 9, für die Funktionen
q
a) f (x) := 1 + sin2 (x),
b) f (x) :=
x2 + 3x − 1
.
2x3 − 4x2 − 30x + 72
Nähern Sie jede dieser Funktionen sowie ihre ersten beiden Ableitungen im Intervall [−2, 2] mit dem Interpolationspolynom p ∈ P9 bzw. mit dem interpolierenden
kubischen not-a-knot-Spline s sowie deren Ableitungen an. Zeichnen Sie jeweils die
Graphen von f (j) , p(j) , s(j) , j = 0, 1, 2, im Intervall [−2, 2].
Hinweis: Zur Berechnung der exakten Ableitungen von f verwenden Sie eine symbolische Variable sowie den MATLAB-Befehl diff. Zur Auswertung verwenden Sie die
MATLAB-Befehle subs und eval.
Aufgabe 2 :
a) Schreiben Sie eine MATLAB-Funktion y = f(x), die für eine beliebige Eingabe
x den Funktionswert y = f (x) := ex ln(x) ausgibt. Dies ist die “black box”Funktion, die wir in den folgenden Aufgaben zur numerischen Differenziation
aufrufen werden. Speichern Sie diese Funktion in einer Datei f.m.
b) Schreiben Sie eine MATLAB-Funktion [dp,dm,d0] = Df(x,h), die für eine gegebene Stelle x und eine Schrittweite h > 0 die Ableitung f 0 (x) mit den Differenzenquotienten D+ f (x; h), D− f (x; h) und D0 f (x; h) annähert und die drei Werte
ausgibt. Dazu soll die Funktion Df die Funktion f aus a) aufrufen. Speichern Sie
Ihre Funktion in einer Datei Df.m.
c) Für die Funktion f aus a), berechnen Sie die Ableitung f 0 (3) = (ln(3) + 1) e3 ln(3)
näherungsweise mit der Funktion Df. Verwenden Sie dazu die Schrittweiten hi :=
2−i , und berechnen Sie D± f (3; hi ) sowie
0D0 f (3; hi ), i = 0, 1, . . . , 30. Zeichnen
(3;hi ) Sie den relativen Fehler Erel (3; hi ) := f (3)−Df
gegen hi in einer loglogf 0 (3)
Skala. Überzeugen Sie sich von der Konvergenzordnung 1 für die einseitigen
Differenzenquotienten D± f und von der Konvergenzordnung 2 für den zentralen
Differenzenquotienten D0 f .
1
d) Was ist jeweils das grösstmögliche hi , damit Erel (3; hi ) ≤ 10−6 gilt?
Aufgabe 3 :
a) Ändern Sie Ihre MATLAB-Funktion
aus Aufgabe 2a ab, so dass die Funktion
2
2
f (x) := ln sin (x + 4x + ln(x)) an beliebigen Stellen x ausgewertet wird.
b) Verwenden Sie Ihre MATLAB-Funktion aus Aufgabe 2b, um die Ableitung von
f an der Stelle x = 1 näherungsweise mit Differenzenquotienten zu bestimmen.
Verwenden Sie wieder die Schrittweiten hi = 2−i und berechnen Sie D± f (1; hi )
und D0 f (1; hi ), i = 0, 1, . . . , 20.
c) Berechnen Sie die Zahlen
Df (1; hi ) − Df (1; hi−1 ) 1
,
ln pi :=
ln(2)
Df (1; hi+1 ) − Df (1; hi ) i = 1, . . . , 19.
Überzeugen Sie sich davon, dass für genügend grosse Werte von i gilt: pi ' 1
für die einseitigen Differenzenquotienten D± f und pi ' 2 für den zentralen
Differenzenquotienten D0 f .
Bemerkung: Mit diesen Zahlen kann die Konvergenzordnung eines Verfahrens
zur numerischen Berechnung der Ableitung “experimentell” bestimmt werden,
ohne dass die Ableitung von f bekannt sein muss.
Aufgabe 4 :
a) Zeigen Sie mit Hilfe der Taylor-Formel, dass
−3f (x) + 4f (x + h) − f (x + 2h)
= f 0 (x) + O(h2 ), h → 0,
2h
3f (x) − 4f (x − h) + f (x − 2h)
= f 0 (x) + O(h2 ), h → 0.
2h
Diese einseitigen Differenzenquotienten sind nützlich, um die Ableitung einer
Funktion f am Rand ihres Definitionsbereichs zu berechnen.
b) Schreiben Sie eine MATLAB-Funktion d = Dfall(a,b,N) um die Ableitung ei, i = 0, 1, . . . , N , N ∈ N,
ner Funktion f an den Stellen xi := a + ih, h := b−a
N
näherungsweise zu berechnen. Verwenden Sie zur Approximation an den Stellen
x1 , x2 , . . . , xN −1 zentrale Differenzenquotienten D0 f (xi , h) und an den Stellen
x0 , xN die einseitigen Differenzenquotienten aus a). Die Funktion Dfall soll wieder die “black box”-Funktion f aus Aufgabe 2a aufrufen. Speichern Sie diese
Funktion in einer Datei Dfall.m.
c) Verwenden Sie Ihre MATLAB-Funktion aus b), um für die Funktion f aus Aufgabe 2a und N = 10i , i = 1, . . . , 6, die Ableitung f 0 (x) = (ln(x) + 1)ex ln(x) im
Intervall [1, 3] näherungsweise zu berechnen. Speichern Sie die exakten Werte
der Ableitung in einem Vektor dex, und berechnen Sie den maximalen absoluten
Fehler max(abs(dex-d)) für jedes N . Zeichnen Sie den maximalen absoluten
Fehler gegen N in einer loglog-Skala und überzeugen Sie sich davon, dass er sich
verhält wie O(N −2 ), N → ∞.
Vorlesungswebseite: http://home.zhaw.ch/~kirs/MNEU
2
Herunterladen