Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Sander, Oliver
skript-mehrgitter
Commits
33d4594d
Commit
33d4594d
authored
Apr 28, 2021
by
Sander, Oliver
Browse files
Verbessere Abschnitt zu abstrakten Schwarz-Verfahren
parent
d996d405
Pipeline
#6256
passed with stage
in 3 minutes and 8 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
skript-mehrgitter-sander.tex
View file @
33d4594d
...
...
@@ -2405,7 +2405,7 @@ dieser Darstellung die Prolongationsoperatoren.
\chapter
{
Teilraumkorrekturverfahren
}
Wir beweisen jetzt die gitterunabhängige Konvergenz von Mehrgitterverfahren für elliptische Probleme.
Wir beweisen jetzt
wieder
die gitterunabhängige Konvergenz von Mehrgitterverfahren für elliptische Probleme.
\medskip
...
...
@@ -2471,13 +2471,16 @@ Alternativ kann man folgende Charakterisierung verwenden:
\draw
[dashed] (e) -- (P1e);
\draw
(1.766,1.43) arc[start angle=120, delta angle=90,radius=0.48];
\node
(e) [ballstyle,minimum size=0.7mm] at (1.75,1.1)
{}
;
\node
at (-2,2)
{$
X
$}
;
\node
at (-2,-0.6)
{$
X
_
1
$}
;
\end{tikzpicture}
\end{center}
Der
\glqq
Unterschied
\grqq
{}
$
e
-
Pe
$
steht senkrecht auf
$
X
_
1
$
,
bz
l
g.
\
des Skalarprodukts
$
a
(
\cdot
,
\cdot
)
$
.
bzg
l
.
\
des Skalarprodukts
$
a
(
\cdot
,
\cdot
)
$
.
\begin{lemma}
Sei
$
e
_
1
\in
X
_
1
$
und
$
e
\in
X
$
. Es gilt
...
...
@@ -2510,7 +2513,7 @@ bzlg.\ des Skalarprodukts $a(\cdot,\cdot)$.
\end{align*}
Einmal durch
$
\norm
{
e
_
1
-
e
}_
a
$
teilen gibt
\begin{equation*}
\norm
{
e
_
1-e
}_
a
\le
\norm
{
v-e
}_
a
\qquad
\forall
v
\in
V
_
1.
\norm
{
e
_
1-e
}_
a
\le
\norm
{
v-e
}_
a
\qquad
\forall
v
\in
X
_
1.
\qedhere
\end{equation*}
\end{proof}
...
...
@@ -2525,7 +2528,7 @@ alte Bekannte wieder.
Sei wieder
$
X
$
ein Vektorraum, diesmal mit:
\begin{itemize}
\item
einem Skalarprodukt
$
(
\cdot
,
\cdot
)
: X
\t
o
X
\to
\R
$
,
\item
einem Skalarprodukt
$
(
\cdot
,
\cdot
)
: X
\t
imes
X
\to
\R
$
\medskip
(
$
X
$
sei vollständig bzgl.
\
der von
$
(
\cdot
,
\cdot
)
$
induzierten Norm),
...
...
@@ -2561,10 +2564,10 @@ die $a(\cdot,\cdot)$-orthogonale Projektion.
\begin{itemize}
\item
Sei
$
u
^
*
\in
X
$
die Lösung von
$
Au
=
f
$
, und
$
u
^
k
\in
X
$
die aktuelle Iterierte eines iterativen Verfahrens
.
die aktuelle Iterierte eines iterativen Verfahrens
:
\begin{center}
\begin{tikzpicture}
\begin{tikzpicture}
[scale=1.5]
\draw
[<->] (-3,0) -- (3,0);
\draw
[<->] ( 0,-1.5) -- (0,2);
\node
at (-2,2)
{$
X
$}
;
...
...
@@ -2579,7 +2582,7 @@ die $a(\cdot,\cdot)$-orthogonale Projektion.
\draw
[dashed] (uk) -- (ustar);
\draw
[dashed,->] (uk) -- ++(-1.1,-0.55);
\node
at (
1,2
)
{$
P
_
1
(
u
^
*
-
u
^
k
)
$}
;
\node
at (
0.8,1.8
)
{$
P
_
1
(
u
^
*
-
u
^
k
)
$}
;
\end{tikzpicture}
\end{center}
...
...
@@ -2598,7 +2601,7 @@ die $a(\cdot,\cdot)$-orthogonale Projektion.
\forall
v
\in
X
_
i.
\end{align*}
\item
Vorschlag für eine bessere Approximation von
$
u
^
*
$
d
eshalb
\item
Vorschlag für eine bessere Approximation von
$
u
^
*
$
d
ann
\begin{equation*}
u
^{
k+1
}
= u
^
k + P
_
1(u
^
* - u
^
k).
\end{equation*}
...
...
@@ -2607,6 +2610,8 @@ die $a(\cdot,\cdot)$-orthogonale Projektion.
Das ganze kann natürlich nur dann zu einem konvergenten Verfahren führen,
wenn man mehrere Teilräume hat.
\medskip
Für ein Teilraumkorrekturverfahren wählen wir jetzt eine endliche Menge von Teilräumen
\begin{equation*}
X
_
i
\subset
X,
...
...
@@ -2619,6 +2624,8 @@ Für jeden Raum $X_i$ definieren wir die $a(\cdot,\cdot)$-Projektion $P_i : X \t
\qquad
\forall
v
\in
X
_
i.
\end{equation*}
Mit jeder dieser Projektionen kann man eine Korrektur
$
P
_
i
(
u
^
*
-
u
^
k
)
$
berechnen.
\medskip
...
...
@@ -2642,14 +2649,14 @@ Die jeweiligen Korrekturen kann man dann auf unterschiedliche Weise kombinieren:
&
=
u
^{
k+
\frac
{
1
}{
2
}}
+ P
_
2 (u
^
* - u
^{
k+
\frac
{
1
}{
2
}}
)
\\
&
=
u
^
k + P
_
1(u
^
* - u
^
k) + P
_
2(u
^
* - u
^
k
-
P
_
1(u
^
* - u
^
k))
\\
u
^
k + P
_
1(u
^
* - u
^
k) + P
_
2(u
^
* -
(
u
^
k
+
P
_
1(u
^
* - u
^
k))
)
\\
&
=
u
^
k + (P
_
1 + P
_
2 - P
_
2 P
_
1)(u
^
* - u
^
k).
\end{align*}
\end{itemize}
Bei mehr als zwei Teilräumen kann man beliebige Kombinationen in
b
etracht ziehen.
Bei mehr als zwei Teilräumen kann man beliebige Kombinationen in
B
etracht ziehen.
\bigskip
...
...
@@ -2666,7 +2673,9 @@ ist.
Teilraumkorrekturverfahren sind lineare iterative Verfahren, denn
\begin{equation*}
u
^{
k+1
}
= u
^
k +
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
K)(u
^
* - u
^
k) = u
^
k +
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
p)A
^{
-1
}
(f-Au
^
n).
u
^{
k+1
}
= u
^
k +
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
K)(u
^
* - u
^
k)
=
u
^
k +
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
K)A
^{
-1
}
(f-Au
^
k).
\end{equation*}
Der Vorkonditionierer ist also
$
\mathcal
{
P
}
A
^{
-
1
}$
, und die Iterationsmatrix
...
...
@@ -2677,31 +2686,268 @@ ist $I- \mathcal{P}$.
Beachte dass zur praktischen Durchführung die Matrix
$
A
^{
-
1
}$
\emph
{
nicht
}
berechnet werden muss!
\subsection
{
Das additive Schwarz-Verfahren
}
(Nach Hermann Amandus Schwarz (1843--1921), der meines Wissens nie ein
additives Verfahren betrachtet hat.)
\bigskip
Das additive Schwarz-Verfahren hat die Form
\begin{align*}
u
^{
n
+1
}
u
^{
k
+1
}
&
=
u
^
n
+
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
K) A
^{
-1
}
(f-Au
^
n
)
u
^
k
+
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
K) A
^{
-1
}
(f-Au
^
k
)
\end{align*}
mit
\begin{equation*}
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
K) = P
_
1 +
\dots
+ P
_
K
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
K) = P
_
1 +
\dots
+ P
_
K
.
\end{equation*}
Es werden also zunächst die Projektionen des aktuellen Fehlers in alle
Teilräume unabhängig voneinander berechnet, und dann aufaddiert.
\
todo
[inline]
{
Beispiel: Das Jacobi-Verfahren als additives Schwarz-Verfahren
}
\
bigskip
\subsection
{
Das multiplikative Schwarz-Verfahren
}
Als Beispiel betrachten wir den Fall
\begin{equation*}
X =
\R
^
N,
\qquad
X
_
i =
\big
\{
y
\in
\R
^
N
\;
:
\;
y
_
j = 0
\quad
\forall
j
\neq
i
\big
\}
.
\end{equation*}
Dann ist
$
A
$
eine
$
N
\times
N
$
-Matrix, und
\begin{equation*}
a(v,w) = v
^
T A w
\qquad
\forall
v,w
\in
\R
^
N.
\end{equation*}
Zu jedem Teilraum
$
X
_
i
$
definieren wir
\begin{equation*}
R
_
i
\in
\R
^{
1
\times
N
}
\qquad
R
_
i = (0,
\dots
,0,1,0,
\dots
,0).
\end{equation*}
\bigskip
Wie sieht die Projektion
$
P
_
i v
$
für ein
$
v
\in
\R
^
N
$
aus?
\medskip
Nach Definition löst
$
P
_
iv
\in
X
_
i
\subset
\R
^
N
$
die Gleichung
\begin{equation*}
a(P
_
iv,w) = a(v,w)
\qquad
\forall
w
\in
X
_
i,
\end{equation*}
bzw.
\begin{equation*}
(P
_
iv)
^
T Aw = v
^
TAw
\qquad
\forall
w
\in
X
_
i.
\end{equation*}
Da jedes
$
w
\in
X
_
i
$
die Form
$
(
0
,
\dots
,
0
,
\underbrace
{
\alpha
}_{
i
}
,
0
,
\dots
,
0
)
^
T
$
hat
ist die Gleichung äquivalent zu
\begin{equation*}
\sum
_{
j,l
}
(P
_
iv)
_
j A
_{
jl
}
w
_
l
=
\sum
_
j (P
_
iv)
_
j A
_{
ji
}
=
v
_
j A
_{
ji
}
.
\end{equation*}
Da wir aber
$
P
_
iv
$
ebenfalls in
$
X
_
i
$
suchen ist
\begin{equation*}
P
_
i v
=
(0,
\dots
,0,A
_{
ii
}^{
-1
}
v
_
i,0,
\dots
,0)
^
T
=
R
_
i
^
T A
_{
ii
}^{
-1
}
v
_
i
=
R
_
i
^
T A
_{
ii
}^{
-1
}
R
_
i v.
\end{equation*}
Ein Korrekturschritt mit nur einem Teilraum ist also
\begin{align*}
u
^{
k+1
}
&
=
u
^
k + P
_
iA
^{
-1
}
(b - A u
^
k)
\\
&
=
u
^
k + R
_
i
^
T A
_{
ii
}^{
-1
}
R
_
i A A
^{
-1
}
(b - A u
^
k)
\\
&
=
u
^
k + R
_
i
^
T A
_{
ii
}^{
-1
}
R
_
i (b - A u
^
k).
\end{align*}
Das ist gleichbedeutend mit
\begin{equation*}
u
_
i
^{
k+1
}
= u
_
i
^
k + A
_{
ii
}^{
-1
}
(b-Au
^
k)
_
i.
\end{equation*}
Für alle Teilräume zusammen:
\begin{align*}
u
^{
k+1
}
&
=
u
^
k +
\sum
_{
i=1
}^
K P
_
iA
^{
-1
}
(b - A u
^
k)
\\
&
=
u
^
k +
\sum
_{
i=1
}^
K R
_
i
^
T A
_{
ii
}^{
-1
}
R
_
i A A
^{
-1
}
(b - A u
^
k),
\end{align*}
also
\begin{align*}
u
_
1
^{
k+1
}
&
= u
_
1
^
k + A
_{
11
}^{
-1
}
(b-Au
^
k)
_
1
\\
u
_
2
^{
k+1
}
&
= u
_
2
^
k + A
_{
22
}^{
-1
}
(b-Au
^
k)
_
2
\\
&
\;
\;
\vdots
\\
u
_
K
^{
k+1
}
&
= u
_
K
^
k + A
_{
KK
}^{
-1
}
(b-Au
^
k)
_
K.
\end{align*}
Das ist das Jacobi-Verfahren.
\bigskip
Andere Teilraumzerlegungen erzeugen verwandte Verfahren:
\begin{itemize}
\item
mehrdimensionale
$
X
_
i
$
$
\longrightarrow
$
Block-Jacobi-Verfahren
\item
nicht-direkte Summen
$
\longrightarrow
$
überlappende Block-Jacobi-Verfahren
\end{itemize}
\bigskip
Zum besseren Verständnis kommt hier noch die algebraische
Darstellung von
$
P
_
i
$
für einen beliebigen Teilraum von
$
\R
^
N
$
.
\medskip
Sei
$
X
=
\R
^
N
$
,
$
X
_
1
$
Teilraum von
$
X
$
, und
$
R
\in
\R
^{
m
\in
N
}$
eine Matrix, deren Zeilen
den Raum
$
X
_
1
$
aufspannen.
\begin{lemma}
Die
$
A
$
-orthogonale Projektion von
$
X
$
auf
$
X
_
1
$
ist
\begin{equation*}
P = R
^
T(RAR
^
T)
^{
-1
}
RA.
\end{equation*}
\end{lemma}
%
\begin{proof}
Sei
$
e
\in
\R
^
N
$
. Wir wollen
$
Pe
$
berechnen.
\begin{itemize}
\item
Die Definition sagt
\begin{alignat*}
{
2
}
a(Pe,v)
&
= a(e,v)
&
\qquad
&
\forall
v
\in
X
_
1
\\
v
^
TAPe
&
= v
^
T A e
&&
\forall
v
\in
X
_
1
\end{alignat*}
Mit den gleichen (Teil-)Räumen wie eben schreibt man
\item
Jedes Element in
$
X
_
1
$
ist Linearkombination der Zeilen von
$
R
$
.
%
\item
Es gibt also ein
$
\tilde
{
e
}_
1
\in
\R
^
m
$
mit
$
R
^
T
\tilde
{
e
}_
1
=
Pe
$
,
\\
und ein
$
\tilde
{
v
}
\in
\R
^
m
$
mit
$
R
^
T
\tilde
{
v
}
=
v
$
.
%
\item
Einsetzen:
\begin{alignat*}
{
2
}
\tilde
{
v
}^
T R A R
^
T
\tilde
{
e
}_
1
&
=
\tilde
{
v
}^
T RAe
&
\qquad
&
\forall
\tilde
{
v
}
\in
\R
^
m.
\end{alignat*}
%
\item
Also
\begin{equation*}
R A R
^
T
\tilde
{
e
}_
1 = RAe
\end{equation*}
bzw.
\begin{equation*}
\tilde
{
e
}_
1 = (R A R
^
T)
^{
-1
}
RAe
\end{equation*}
%
\item
Also ist
\begin{equation*}
Pe = R
^
T
\tilde
{
e
}_
1 = R
^
T (R A R
^
T)
^{
-1
}
RAe.
\qedhere
\end{equation*}
\end{itemize}
\end{proof}
Es ist also (für dieses Beispiel)
\begin{equation*}
u
^{
n+1
}
= u
^
n +
\Big
[I-(I-B_pA)\dots(I-B_1A)\Big]
A
^{
-1
}
(f-Au
^
n)
\mathcal
{
P
}
=
\sum
_{
i=1
}^
K P
_
i
=
\sum
_{
i=1
}^
K
\Big
[ R_i^T (R_i A R_i^T)^{-1} R_i \Big]
A.
\end{equation*}
Man schreibt das häufig als
\begin{equation*}
\mathcal
{
P
}
= B
_
\text
{
add
}
A
\end{equation*}
mit
\begin{equation*}
B
_
\text
{
add
}
=
\sum
_{
i=1
}^
K
\Big
[ R_i^T (R_i A R_i^T)^{-1} R_i \Big]
.
\end{equation*}
als Teilraumkorrekturverfahren mit
\subsection
{
Das multiplikative Schwarz-Verfahren
}
Das multiplikative Schwarz-Verfahren ist
\begin{equation*}
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
p) =
I-(I-
B
_
pA
)
\dots
(I-
B
_
1
A
).
u
^{
k+1
}
= u
^
k +
\Big
[
I-(I-
P_K
)\
c
dots(I-
P
_1
)\Big]
A
^{
-1
}
(f-Au
^
k
).
\end{equation*}
Es ist also
\begin{equation}
\label
{
eq:abstract
_
multiplicative
_
schwarz
}
\mathcal
{
P
}
(P
_
1,
\dots
,P
_
K) = I-(I-P
_
K)
\dots
(I-P
_
1).
\end{equation}
\begin{lemma}
Das Polynom~
\eqref
{
eq:abstract
_
multiplicative
_
schwarz
}
entspricht dem Verfahren
\begin{align*}
u
^{
k+
\frac
{
1
}{
K
}}
&
= u
^
k + P
_
1 A
^{
-1
}
(f - Au
^
k)
\\
u
^{
k+
\frac
{
2
}{
K
}}
&
= u
^{
k+
\frac
{
1
}{
K
}}
+ P
_
2 A
^{
-1
}
(f - Au
^{
k+
\frac
{
1
}{
K
}}
)
\\
&
\;\;
\vdots
\\
u
^{
k+1
}
&
= u
^{
k+
\frac
{
K-1
}{
K
}}
+ P
_
K A
^{
-1
}
(f - Au
^{
k+
\frac
{
K-1
}{
K
}}
).
\end{align*}
\end{lemma}
\begin{proof}
Induktion über die Teilschritte.
\begin{itemize}
\item
Klar für den ersten Teilschritt.
\end{itemize}
Induktionsschritt. Annahme: Die ersten
$
K
-
1
$
Schritte entsprechen
\begin{equation*}
u
^{
k +
\frac
{
K-1
}{
K
}}
=
u
^
k + (I - (I-P
_{
K-1
}
)(I-P
_{
K-2
}
)
\cdots
(I-P
_
1)) A
^{
-1
}
(f-Au
^
k).
\end{equation*}
Dann ist
\begin{align*}
u
^{
k+1
}
&
=
u
^{
k+
\frac
{
K-1
}{
K
}}
+ P
_
K A
^{
-1
}
(f - Au
^{
k+
\frac
{
K-1
}{
K
}}
)
\\
&
=
u
^{
k+
\frac
{
K-1
}{
K
}}
+ P
_
K (u
^
* - u
^{
k+
\frac
{
K-1
}{
K
}}
)
\\
&
=
u
^
k + (I - (I-P
_{
K-1
}
)
\cdots
(I-P
_
1)) (u
^
*-u
^
k)
\\
&
\qquad
\qquad
+ P
_
K (u
^
* - u
^
k - (I - (I-P
_{
K-1
}
)
\cdots
(I-P
_
1)) (u
^
*-u
^
k))
\\
&
=
u
^
k +
\Big
[ (I - (I-P_{K-1})\cdots(I-P_1))+ P_K - P_K(I - (I-P_{K-1})\cdots(I-P_1))\Big]
(u
^
*-u
^
k)
\\
&
=
u
^
k +
\Big
[ I - (I-P_{K-1})\cdots(I-P_1) + P_K (I-P_{K-1})\cdots(I-P_1)\Big]
(u
^
*-u
^
k)
\\
&
=
u
^
k +
\Big
[ I - (I-P_K)(I-P_{K-1})\cdots(I-P_1)\Big]
(u
^
*-u
^
k).
\qedhere
\end{align*}
\end{proof}
Hier wird also immer eine Korrektur für einen Teilraum berechnet und dann
direkt angewandt.
\medskip
Für
$
X
=
\R
^
N
$
, die
$
X
_
i
$
wie oben erhält man das Gauß--Seidel-Verfahren.
\paragraph
{
Beispiel: Gauß--Seidel-Verfahren für ein 2x2-System
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment