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