Blatt 11

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