Numerik der Differentialgleichungen Herbstsemester 2016 M. Peters und J. Dölz Übungsblatt 11. Abgabe: Montag, 5.12.2016, 12 Uhr Aufgabe 1. (Maximumprinzip) Für die klassische Lösung der Randwertaufgabe −∆u = 1 in Ω, u = 0 auf ∂Ω auf einem glatt berandeten Gebiet Ω ⊂ (0, 1) × (0, 1) zeige man mit Hilfe des Maximumprinzips die Abschätzung 0 ≤ u(x) ≤ 1/8. Hinweis. Man vergleiche u mit der quadratischen Funktion 1 1 v(x, y) = x(1 − x) + y(1 − y). 4 4 Aufgabe 2. (Zentrale Differenzenquotienten) Gegeben sei das Randwertproblem y 0 (x) = f (x), x ∈ (a, b), y(a) = α, y(b) = β Berechnen Sie mit Hilfe von zentralen Differenzen Näherungswerte ui für die exakten Werte y(x) mit i = 1, 2, . . . , n − 1, x = a + ih und h := (b − a)/n. Wie lautet das resultierende Gleichungssystem Au = f ? Zeigen Sie, dass die Matrix A ∈ R(n−1)×(n−1) für gerades n singulär ist. Aufgabe 3. (Shortley-Weller-Approximation) Zeigen Sie, dass für beliebige positive Zahlen hW , hO , hN , hS die folgenden Aussagen für die Differenzenquotienten zweiter Ordnung gelten: a) Für x ∈ R und u ∈ C 3 (R) sei uZ := u(x), uW := u(x − hW ) und uO := u(x + hO ). Dann gilt uxx (x) = 2 2 2 uO − uZ + uW + O(h) hO (hO + hW ) hO hW hW (hO + hW ) mit h := max{hO , hW }. b) Für (x, y) ∈ R2 und u ∈ C 3 R2 sei uZ := u(x, y), uW := u(x − hW , y), u0 := u(x + hO , y), uN := u(x, y + hN ), uS := u(x, y − hS ). Zeigen Sie: 2 2 2 uO + uW + uS hO (hO + hW ) hW (hO + hW ) hS (hS + hN ) 2 2 2 + uN − + uZ + O(h) hN (hS + hN ) hO hW hS hN ∆u(x, y) = mit h := max{hW , hO , hN , hS }. (4 Punkte) Aufgabe 4. (Programmieraufgabe) Wir haben das Poisson-Problem auf dem Einheitsquadrat, also ∆u(x) = f (x), u(x) = 0, x ∈ Ω := (0, 1)2 , x ∈ ∂Ω, mittels finiter Differenzen mit dem 5-Punkte-Stern gelöst. In der dieser Aufgabe soll das Gebietsinnere mit (n − 1) × (n − 1) Punkten diskretisiert werden, die Schrittweite sei h = 1/n mit n ∈ N. Wir betrachten die effiziente Lösung des zugehörigen Gleichungssystems, gehen Sie hierzu wie folgt vor: a) Implementieren Sie die Funktion function y = A_mal_x(x), die das Produkt der Systemmatrix mit einem Vektor x realisiert und das Resultat auf dem Vektor y speichert. Die Systemmatrix soll hierzu nicht explizit aufgestellt werden. Außerdem sollte die Implementierung ohne die Verwendung von Schleifen erfolgen. b) Implementieren Sie nun zur Lösung des Gleichungssystems nun das CG-Verfahren function u = CG(f,tol) r = f - A_mal_x(u); d = r; omg = r(:)’ * r(:); while sqrt(omg) > tol Ad = A_mal_x(d); a = omg / (d(:)’ * Ad(:)); u = u + a * d; r = r - a * Ad; q = r(:)’ * r(:); d = r + q / omg * d; omg = q; end end c) Testen Sie Ihre Implementierung nun für f (x) = 1. Plotten Sie das Residuum in der k · k2 -Norm in jedem Rechenschritt für n = 1024 und tol = 10−6 . Wie viele Rechenschritte werden für die rechte Seite f (x) = 2π 2 sin(πx1 ) sin(πx2 ) benötigt? Wie können Sie sich dieses Verhalten erklären? Plotten Sie auch jeweils die Lösungen für n = 64 mittels surf(u,X,Y). Hinweis. Für die bessere Lösbarkeit ist es sinnvoll, das Gleichungssystem vor dem Lösen mit h zu skalieren, d.h. Ax = f ⇔ hAx = hf . (4 Punkte)