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
60a8a89a
Commit
60a8a89a
authored
Apr 18, 2021
by
Sander, Oliver
Browse files
Verbessere die Erklärung der Mehrgittermethode
parent
7558e79c
Pipeline
#6207
passed with stage
in 5 minutes and 37 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
skript-mehrgitter-sander.tex
View file @
60a8a89a
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
\usepackage
{
overpic
}
\usepackage
{
overpic
}
\usepackage
{
graphicx
}
\usepackage
{
graphicx
}
\usepackage
{
tikz
}
\usepackage
{
tikz
}
\usepackage
{
pgfplots
}
\usepackage
{
amsfonts
}
\usepackage
{
amsfonts
}
\usepackage
{
lmodern
}
\usepackage
{
lmodern
}
...
@@ -953,6 +954,9 @@ Sei $\kappa$ die Kondition der Matrix $A$. Dann gilt nach $k$ Schritten des CG-V
...
@@ -953,6 +954,9 @@ Sei $\kappa$ die Kondition der Matrix $A$. Dann gilt nach $k$ Schritten des CG-V
\section
{
Mehrgitterverfahren: Der anschauliche Zugang
}
\section
{
Mehrgitterverfahren: Der anschauliche Zugang
}
Das Ziel ist es, einen iterativen Löser zu konstruieren, dessen Konvergenzgeschwindigkeit
nicht von der Gitterweite
$
h
$
abhängt.
\subsection
{
Glättung
}
\subsection
{
Glättung
}
Gauß--Seidel-Verfahren und Jacobi-Verfahren sind für typische Finite-Elemente-Matrizen
Gauß--Seidel-Verfahren und Jacobi-Verfahren sind für typische Finite-Elemente-Matrizen
...
@@ -962,12 +966,14 @@ extrem langsam.
...
@@ -962,12 +966,14 @@ extrem langsam.
Sie haben allerdings eine wichtige Eigenschaft, die wir uns
Sie haben allerdings eine wichtige Eigenschaft, die wir uns
für Mehrgitterverfahren zunutze machen:
für Mehrgitterverfahren zunutze machen:
\begin{itemize}
\item
Die zwei Verfahren
\emph
{
glätten
}
.
\end{itemize}
\emph
{
Beispiel:
}
Wir betrachten das Poisson-Problem
\smallskip
$
\longrightarrow
$
Die zwei Verfahren
\emph
{
glätten
}
.
\bigskip
\emph
{
Beispiel:
}
Wir betrachten wieder das Poisson-Problem
\begin{align*}
\begin{align*}
-
\Delta
u
&
= 1
\qquad
\text
{
auf
$
\Omega
$}
,
\\
-
\Delta
u
&
= 1
\qquad
\text
{
auf
$
\Omega
$}
,
\\
u
&
= 0
\qquad
\text
{
auf
$
\partial
\Omega
$
,
}
u
&
= 0
\qquad
\text
{
auf
$
\partial
\Omega
$
,
}
...
@@ -976,8 +982,9 @@ auf dem Einheitsquadrat $\Omega = (0,1)^2$.
...
@@ -976,8 +982,9 @@ auf dem Einheitsquadrat $\Omega = (0,1)^2$.
\medskip
\medskip
Hier ist die Finite-Elemente-Lösung auf einem strukturierten Dreiecksgitter
Das folgende Bild zeigt
$
u
_
h
$
, die Finite-Elemente-Lösung auf einem
mit
$
16
\times
16
\times
2
$
Elementen, dargestellt als Höhenplot:
strukturierten Dreiecksgitter mit
$
16
\times
16
\times
2
$
Elementen
und Lagrange-Elementen erster Ordnung, dargestellt als Höhenplot:
\begin{center}
\begin{center}
\includegraphics
[width=0.6\textwidth,trim=0 50 0 10]
{
gs
_
from
_
zero
_
iterate50
}
\includegraphics
[width=0.6\textwidth,trim=0 50 0 10]
{
gs
_
from
_
zero
_
iterate50
}
\end{center}
\end{center}
...
@@ -987,22 +994,6 @@ mit dem Gauß--Seidel-Verfahren zu lösen.
...
@@ -987,22 +994,6 @@ mit dem Gauß--Seidel-Verfahren zu lösen.
\bigskip
\bigskip
Eine Iteration ist:
\begin{algorithm}
[H]
\SetAlgoLined
% \caption{...}
\For
{
alle Zeilen
$
i
$}
{
\begin{equation*}
x
^{
k+1
}_
i
\longleftarrow
\frac
{
1
}{
A
_{
ii
}}
\bigg
( b
_
i -
\sum
_{
j=1
}^{
i-1
}
A
_{
ij
}
x
^{
k+1
}_
j -
\sum
_{
j=1+1
}^{
n
}
A
_{
ij
}
x
^
k
_
j
\bigg
)
\end{equation*}
}
\end{algorithm}
Als Startiterierte
$
x
^
0
$
wählen wir
$
x
^
0
=
0
\in
\R
^
n
$
.
Als Startiterierte
$
x
^
0
$
wählen wir
$
x
^
0
=
0
\in
\R
^
n
$
.
\bigskip
\bigskip
...
@@ -1015,17 +1006,17 @@ Hier sind einige der ersten Iterierten:
...
@@ -1015,17 +1006,17 @@ Hier sind einige der ersten Iterierten:
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate0
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate0
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate1
}
\\
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate1
}
\\
iterate
$
x
^
0
$
&
iterate
$
x
^
1
$
\\
$
x
^
0
$
&
$
x
^
1
$
\\
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate2
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate2
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate3
}
\\
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate3
}
\\
iterate
$
x
^
2
$
&
iterate
$
x
^
3
$
\\
$
x
^
2
$
&
$
x
^
3
$
\\
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate10
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate10
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate50
}
\\
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
zero
_
iterate50
}
\\
iterate
$
x
^{
10
}$
&
iterate
$
x
^{
50
}$
$
x
^{
10
}$
&
$
x
^{
50
}$
\end{tabular}
\end{tabular}
\end{center}
\end{center}
...
@@ -1034,7 +1025,7 @@ tatsächlich recht lange.
...
@@ -1034,7 +1025,7 @@ tatsächlich recht lange.
\bigskip
\bigskip
Jetzt wollen w
ir zeigen was wir mit
\glqq
Gauß--Seidel glättet
\grqq
{}
meinen.
W
ir zeigen was wir mit
\glqq
Gauß--Seidel glättet
\grqq
{}
meinen.
\medskip
\medskip
...
@@ -1046,17 +1037,17 @@ verrauschten Startwert an.
...
@@ -1046,17 +1037,17 @@ verrauschten Startwert an.
\includegraphics
[width=0.3\textwidth,trim=0 50 0 0]
{
gs
_
from
_
noise
_
iterate0
}
&
\includegraphics
[width=0.3\textwidth,trim=0 50 0 0]
{
gs
_
from
_
noise
_
iterate0
}
&
\includegraphics
[width=0.3\textwidth,trim=0 50 0 0]
{
gs
_
from
_
noise
_
iterate1
}
\\
\includegraphics
[width=0.3\textwidth,trim=0 50 0 0]
{
gs
_
from
_
noise
_
iterate1
}
\\
iterate
$
x
^
0
$
&
iterate
$
x
^
1
$
\\
$
x
^
0
$
&
$
x
^
1
$
\\
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
noise
_
iterate2
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
noise
_
iterate2
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
noise
_
iterate3
}
\\
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
noise
_
iterate3
}
\\
iterate
$
x
^
2
$
&
iterate
$
x
^
3
$
\\
$
x
^
2
$
&
$
x
^
3
$
\\
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
noise
_
iterate10
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
noise
_
iterate10
}
&
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
noise
_
iterate50
}
\\
\includegraphics
[width=0.3\textwidth,trim=0 100 0 0]
{
gs
_
from
_
noise
_
iterate50
}
\\
iterate
$
x
^{
10
}$
&
iterate
$
x
^{
50
}$
$
x
^{
10
}$
&
$
x
^{
50
}$
\end{tabular}
\end{tabular}
\end{center}
\end{center}
...
@@ -1069,8 +1060,26 @@ verrauschten Startwert an.
...
@@ -1069,8 +1060,26 @@ verrauschten Startwert an.
verschwunden.
verschwunden.
\end{itemize}
\end{itemize}
Das kann man sich gut vorstellen: Ein Gauß--Seidel-Schritt ersetzt den Wert
$
x
^
k
_
i
$
an einem Gitterknoten durch
\begin{equation*}
x
^{
k+1
}_
i
=
\frac
{
1
}{
A
_{
ii
}}
\bigg
( b
_
i -
\sum
_{
j=1
}^{
i-1
}
A
_{
ij
}
x
^{
k+1
}_
j -
\sum
_{
j=1+1
}^{
n
}
A
_{
ij
}
x
^
k
_
j
\bigg
).
\end{equation*}
Dabei tauchen in den Summen nur die Nachbarknoten auf.
\begin{itemize}
\item
Zumindest in diesem Modellproblem sind die entsprechenden Koeffizienten
alle gleich.
\item
$
x
^
k
_
i
$
wird also durch den Mittelwert seiner Nachbarn ersetzt.
\end{itemize}
\bigskip
So richtig überzeugend ist diese Argumentation noch nicht:
Das klingt komisch:
\begin{itemize}
\begin{itemize}
\item
Was würde passieren wenn die rechte Seite so gewählt wäre,
\item
Was würde passieren wenn die rechte Seite so gewählt wäre,
dass die Lösung des Poisson-Problems ein (festes) Rauschen wäre?
dass die Lösung des Poisson-Problems ein (festes) Rauschen wäre?
...
@@ -1086,65 +1095,84 @@ In Wirklichkeit ist es etwas anders:
...
@@ -1086,65 +1095,84 @@ In Wirklichkeit ist es etwas anders:
\item
Das Gauß--Seidel-Verfahren glättet die
\emph
{
Fehler
}
!
\item
Das Gauß--Seidel-Verfahren glättet die
\emph
{
Fehler
}
!
\end{itemize}
\end{itemize}
\missingfigure
{
Sechs Bilder mit den Fehler für die obigen Iterierten!
}
\subsection
{
Fourier-Analyse
}
\subsection
{
Fourier-Analyse
}
\label
{
sec:jacobi
_
smoother
}
\label
{
sec:jacobi
_
smoother
}
Wir untersuchen jetzt genauer, wie das Jacobi-Verfahren den Fehler glättet.
Den Glättungseffekt von Gauß--Seidel- und Jacobi-Verfahren kann man besser verstehen,
wenn man sich wieder die Eigenwerte und Eigenfunktionen von
$
A
$
und
$
I
-
CA
$
anschaut.
(Das Gauß--Seidel-Verfahren glättet besser, aber es ist auch schwieriger
\medskip
zu untersuchen. Wir lassen es hier aus.)
Wir untersuchen hier das Jacobi-Verfahren. Für das Gauß--Sidel-Verfahren geht es auch,
ist aber etwas komplizierter. Interessierte finden die Rechnung zum Beispiel bei
\citet
{
trottenberg
}
\todo
[inline]
{
Kapitelnummer!
}
Zur Erinnerung: Das gedämpfte Jacobi-Verfahren ist
Zur Erinnerung: Das gedämpfte Jacobi-Verfahren ist
\begin{equation*}
\begin{equation*}
x
^{
k+1
}
x
^{
k+1
}
=
=
(I -
\
omeg
a
D
^{
-1
}
A)x
^
k + D
^{
-1
}
b.
(I -
\
et
a
D
^{
-1
}
A)x
^
k + D
^{
-1
}
b.
\end{equation*}
\end{equation*}
Wir betrachten wieder das Modellproblem. Dort ist
Wir betrachten wieder das Modellproblem. Dort ist
\begin{equation*}
\begin{equation*}
A
_
ii =
\frac
{
4
}{
h
^
2
}
D
_
i
\colonequals
A
_
{
ii
}
=
\frac
{
4
}{
h
^
2
}
\qquad
\qquad
\text
{
für alle
$
i
=
1
,
\dots
,n
$}
,
\text
{
für alle
$
i
=
1
,
\dots
,n
$}
,
\end{equation*}
\end{equation*}
und somit
und somit
\begin{equation*}
\begin{equation*}
x
^{
k+1
}
= (I-
\
omeg
a
\frac
{
h
^
2
}{
4
}
A) x
^
k +
\frac
{
h
^
2
}{
4
}
b.
x
^{
k+1
}
= (I-
\
et
a
\frac
{
h
^
2
}{
4
}
A) x
^
k +
\frac
{
h
^
2
}{
4
}
b.
\end{equation*}
\end{equation*}
Um das Glättungsverhalten des Jacobi-Verfahrens zu verstehen berechnen wir
Um das Glättungsverhalten des Jacobi-Verfahrens zu verstehen berechnen wir
die Eigenfunktionen der Iterationsmatrix
$
I
-
\omega
\frac
{
h
^
2
}{
4
}
A
$
.
die Eigenfunktionen der Iterationsmatrix
$
I
-
\omega
\frac
{
h
^
2
}{
4
}
A
$
.
\medskip
Die Eigenfunktionen von
$
I
-
\omega
\frac
{
h
^
2
}{
4
}
A
$
sind offensichtlich
Die Eigenfunktionen von
$
I
-
\omega
\frac
{
h
^
2
}{
4
}
A
$
sind offensichtlich
die selben wie die von
$
A
$
, und zwar
die selben wie die von
$
A
$
, und zwar
\begin{equation*}
\begin{equation*}
\varphi
_
h
^{
i,j
}
\varphi
_
h
^{
\nu
,
\mu
}
=
=
\sin
i
\pi
x
\cdot
\sin
j
\pi
y.
\sin
\nu
\pi
x
\cdot
\sin
\mu
\pi
y.
\end{equation*}
\end{equation*}
Die Eigenwerte von
$
A
$
sind
Die Eigenwerte von
$
A
$
sind
\todo
[inline]
{
Fehlen noch
}
Die Eigenwerte von
$
I
-
\omega
\frac
{
h
^
2
}{
4
}
A
$
sind
\begin{equation*}
\begin{equation*}
\
chi
_
h
^{
i,j
}
\
lambda
{
\nu\mu
}
=
=
1 -
\frac
{
\omega
}{
2
}
( 2 -
\cos
i
\pi
h -
\cos
j
\pi
h)
\frac
{
4
}{
h
^
2
}
\Big
[ \sin^2\big(\frac{1}{2} \nu \pi h \big) + \sin^2\big(\frac{1}{2} \mu \pi h \big)\Big]
\qquad
\forall
1
\le
\nu
,
\mu
< n.
\end{equation*}
\end{equation*}
Die Eigenwerte von
$
I
-
\eta
\frac
{
h
^
2
}{
4
}
A
$
sind
\begin{equation*}
\chi
_
h
^{
\nu
,
\mu
}
=
1 -
\eta
\frac
{
h
^
2
}{
4
}
\lambda
^{
\nu
,
\mu
}
=
1 -
\frac
{
\eta
}{
2
}
( 2 -
\cos
\nu
\pi
h -
\cos
\mu
\pi
h)
\end{equation*}
(wegen der Rechenregel
$
2
\sin
^
2
\alpha
=
1
-
\cos
2
\alpha
$
).
\bigskip
\bigskip
Die Konvergenzgeschwindigkeit des Verfahrens wird bekanntlich durch den
Die Konvergenzgeschwindigkeit des Verfahrens wird bekanntlich durch den
Spektralradius von
$
I
-
CA
$
bestimmt, und der ist hier für alle
$
0
<
\
omeg
a
\le
1
$
Spektralradius von
$
I
-
CA
$
bestimmt, und der ist hier für alle
$
0
<
\
et
a
\le
1
$
\begin{equation*}
\begin{equation*}
\rho
(I-CA)
\rho
(I-CA)
=
=
\abs
{
\chi
_
h
^{
1,1
}}
\abs
{
\chi
_
h
^{
1,1
}}
=
=
\abs
{
1 -
\
omeg
a
(1-
\cos
\pi
h)
}
\abs
{
1 -
\
et
a
(1-
\cos
\pi
h)
}
=
=
1 - O(
\
omeg
a
h
^
2).
1 - O(
\
et
a
h
^
2).
\end{equation*}
\end{equation*}
Falls
$
\
omeg
a
\le
0
$
oder
$
\
omeg
a
>
1
$
gilt
Falls
$
\
et
a
\le
0
$
oder
$
\
et
a
>
1
$
gilt
\begin{equation*}
\begin{equation*}
\rho
(I-CA) > 1
\rho
(I-CA) > 1
\end{equation*}
\end{equation*}
...
@@ -1154,41 +1182,133 @@ Falls $\omega \le 0$ oder $\omega >1$ gilt
...
@@ -1154,41 +1182,133 @@ Falls $\omega \le 0$ oder $\omega >1$ gilt
Jetzt schreiben wir die Fehlerfortpflanzung
Jetzt schreiben wir die Fehlerfortpflanzung
\begin{equation*}
\begin{equation*}
e
^{
k+1
}
=
x
^{
k+1
}
- x
^
*
e
^{
k+1
}
\colonequals
x
^
* -
x
^{
k+1
}
=
=
(I -
\
omeg
a
\frac
{
h
^
2
}{
4
}
A)(x
^
k
- x
^
*
)
\Big
(I -
\
et
a
\frac
{
h
^
2
}{
4
}
A
\Big
)(x
^
*
- x
^
k
)
\end{equation*}
\end{equation*}
in der Eigenvektorbasis
in der Eigenvektorbasis
der Iterationsmatrix
\begin{align*}
\begin{align*}
e
^
k
e
^
k
&
=
&
=
\sum
_{
i,j
= 1
}^
n
\alpha
_{
i,j
}^
k
\cdot
\varphi
_
h
^{
i,j
}
\\
\sum
_{
\nu
,
\mu
= 1
}^
n
\alpha
_{
\nu
,
\mu
}^
k
\cdot
\varphi
_
h
^{
\nu
,
\mu
}
\\
%
%
e
^{
k+1
}
e
^{
k+1
}
&
=
&
=
(I -
\
omeg
a
\frac
{
h
^
2
}{
4
}
A) e
^
k
\Big
(I -
\
et
a
\frac
{
h
^
2
}{
4
}
A
\Big
) e
^
k
=
=
\sum
_{
i,j
= 1
}^
n
\chi
_
h
^{
i,j
}
\alpha
_{
i,j
}^
k
\cdot
\varphi
_
h
^{
i,j
}
.
\sum
_{
\nu
,
\mu
= 1
}^
n
\chi
_
h
^{
\nu
,
\mu
}
\alpha
_{
\nu
,
\mu
}^
k
\cdot
\varphi
_
h
^{
\nu
,
\mu
}
.
\end{align*}
\end{align*}
Die Eigenfunktionen sind
\glqq
hochfrequent
\grqq
{}
für große
$
i
$
,
$
j
$
,
Die Eigenfunktionen sind
\glqq
hochfrequent
\grqq
{}
für große
$
\nu
$
,
$
\mu
$
,
und
\glqq
niederfrequent
\grqq
{}
für kleine
$
i
$
,
$
j
$
.
und
\glqq
niederfrequent
\grqq
{}
für kleine
$
\nu
$
,
$
\mu
$
.
\medskip
Gleichzeitig sind die Eigenwerte für große
$
i
$
,
$
j
$
klein, und für kleine
$
i
$
,
$
j
$
, groß.
\missingfigure
{
Eigenwerte als Funktion von
$
i
$
und
$
j
$
.
}
Deshalb verschwinden die hochfrequenten Anteile des Fehlers schnell,
obwohl der Fehler insgesamt nur sehr langsam verschwindet.
\begin{center}
\begin{tabular}
{
ccc
}
\begin{tikzpicture}
[scale=0.5]
\begin{axis}
[zmin=-1,zmax=1]
\addplot
3 [surf,
samples=16,
domain=0:1,y domain=0:1
]
{
sin(deg(pi * x)) * sin(deg(pi*y))
}
;
\end{axis}
\end{tikzpicture}
&
\begin{tikzpicture}
[scale=0.5]
\begin{axis}
\addplot
3 [surf,
samples=16,
domain=0:1,y domain=0:1
]
{
sin(deg(pi * x)) * sin(deg(2*pi*y))
}
;
\end{axis}
\end{tikzpicture}
&
\begin{tikzpicture}
[scale=0.5]
\begin{axis}
\addplot
3 [surf,
samples=16,
domain=0:1,y domain=0:1
]
{
sin(deg(pi * x)) * sin(deg(3*pi*y))
}
;
\end{axis}
\end{tikzpicture}
\\
\begin{tikzpicture}
[scale=0.5]
\begin{axis}
\addplot
3 [surf,
samples=16,
domain=0:1,y domain=0:1
]
{
sin(deg(2*pi * x)) * sin(deg(pi*y))
}
;
\end{axis}
\end{tikzpicture}
&
\begin{tikzpicture}
[scale=0.5]
\begin{axis}
\addplot
3 [surf,
samples=16,
domain=0:1,y domain=0:1
]
{
sin(deg(2*pi * x)) * sin(deg(2*pi*y))
}
;
\end{axis}
\end{tikzpicture}
&
\begin{tikzpicture}
[scale=0.5]
\begin{axis}
\addplot
3 [surf,
samples=16,
domain=0:1,y domain=0:1
]
{
sin(deg(2*pi * x)) * sin(deg(3*pi*y))
}
;
\end{axis}
\end{tikzpicture}
\\
\begin{tikzpicture}
[scale=0.5]
\begin{axis}
\addplot
3 [surf,
samples=16,
domain=0:1,y domain=0:1
]
{
sin(deg(3*pi * x)) * sin(deg(pi*y))
}
;
\end{axis}
\end{tikzpicture}
&
\begin{tikzpicture}
[scale=0.5]
\begin{axis}
\addplot
3 [surf,
samples=16,
domain=0:1,y domain=0:1
]
{
sin(deg(3*pi * x)) * sin(deg(2*pi*y))
}
;
\end{axis}
\end{tikzpicture}
&
\begin{tikzpicture}
[scale=0.5]
\begin{axis}
\addplot
3 [surf,
samples=16,
domain=0:1,y domain=0:1
]
{
sin(deg(3*pi * x)) * sin(deg(3*pi*y))
}
;
\end{axis}
\end{tikzpicture}
\end{tabular}
\end{center}
\medskip
Gleichzeitig sind die Eigenwerte für große
$
\nu
$
,
$
\mu
$
klein, und für kleine
$
\nu
$
,
$
\mu
$
, groß.
\todo
[inline]
{
Noch mal nachprüfen -- das stimmt gar nicht...
}
Der folgende Plot zeigt sie für
$
\eta
=
1
$
:
\begin{center}
\begin{tikzpicture}
\begin{axis}
[colorbar]
\addplot
3 [surf,
% faceted color=blue,
samples=15,
domain=1:15,y domain=1:15
]
{
1 - 0.5*(2 - cos (deg(x*pi/16)) - cos (deg(y*pi/16)))
}
;
\end{axis}
\end{tikzpicture}
\end{center}
Deshalb verschwinden die hochfrequenten Anteile des Fehlers schnell,
obwohl der Fehler insgesamt nur sehr langsam verschwindet.
\subsection
{
Zweigitterverfahren
}
\subsection
{
Zweigitterverfahren
}
...
@@ -1196,17 +1316,22 @@ obwohl der Fehler insgesamt nur sehr langsam verschwindet.
...
@@ -1196,17 +1316,22 @@ obwohl der Fehler insgesamt nur sehr langsam verschwindet.
Die zweite wichtige Einsicht ist:
Die zweite wichtige Einsicht ist:
\begin{itemize}
\begin{itemize}
\item
Der Fehler
$
e
^
k
\colonequals
x
^
*
-
x
^
k
$
löst eine lineare Gleichung
\item
Angenommen wir haben als aktuelle Iterierte
$
x
^
k
$
. Statt der Lösung
$
x
^
*
$
könnten wir auch versuchen, den aktuellen Fehler
$
e
^
k
\colonequals
x
^
*
-
x
^
k
$
auszurechnen.
\item
Der Fehler
$
e
^
k
$
löst eine lineare Gleichung
\begin{equation*}
\begin{equation*}
A(x
^
k + e) = b
\qquad
\iff
\qquad
Ae = b - Ax
^
k
\equalscolon
r
^
k.
A(x
^
k + e) = b
\qquad
\iff
\qquad
Ae = b - Ax
^
k
\equalscolon
r
^
k.
\end{equation*}
\end{equation*}
\item
Da
$
e
^
k
$
glatt ist reicht es,
$
Ae
=
r
^
k
$
auf einem gröberen Gitter lösen.
\item
Da
$
e
^
k
$
glatt ist kann man eine gute Approximation erwarten, wenn man
die Fehlergleichung
$
Ae
=
r
^
k
$
auf einem gröberen Gitter löst.
\end{itemize}
\end{itemize}
Wir konstruieren uns deshalb ein zweites gröberes Gitter
$
\mathcal
{
T
}_
\text
{
grob
}$
so,
Wir konstruieren uns deshalb ein zweites gröberes Gitter
$
\mathcal
{
T
}_
\text
{
grob
}$
so,
dass der dazugehörige Finite-Elemente-Raum
$
V
_
h
^
\text
{
grob
}$
ein Teilraum
dass der dazugehörige Finite-Elemente-Raum
$
V
_
h
^
\text
{
grob
}$
ein Teilraum
von
$
V
_
h
^
\text
{
fein
}
=
V
_
H
$
ist.
von
$
V
_
h
^
\text
{
fein
}
=
V
_
h
$
ist.
\begin{center}
\begin{center}
\begin{tikzpicture}
[scale=0.35]
\begin{tikzpicture}
[scale=0.35]
...
@@ -1230,10 +1355,14 @@ von $V_h^\text{fein} = V_H$ ist.
...
@@ -1230,10 +1355,14 @@ von $V_h^\text{fein} = V_H$ ist.
\end{center}
\end{center}
\begin{itemize}
\begin{itemize}
\item
D
efiniere
Prolongationsoperator als die kanonische Injektion
\item
Wir d
efiniere
n eine Abbildung aus dem groben in den feinen Funktionenraum
\begin{equation*}
\begin{equation*}
P : V
_
h
^
\text
{
grob
}
\to
V
_
h
^
\text
{
fein
}
P : V
_
h
^
\text
{
grob
}
\to
V
_
h
^
\text
{
fein
}
.
\end{equation*}
\end{equation*}
Man nennt
$
P
$
den
\emph
{
Prolongationsoperator
}
.
\item
Da in diesem Beispiel die Räume geschachtelt sind nehmen wir einfach
die kanonische Injektion:
\begin{center}
\begin{center}
\includegraphics
[width=0.3\textwidth]
{
coarse
_
function
}
\includegraphics
[width=0.3\textwidth]
{
coarse
_
function
}
...
@@ -1242,37 +1371,43 @@ von $V_h^\text{fein} = V_H$ ist.
...
@@ -1242,37 +1371,43 @@ von $V_h^\text{fein} = V_H$ ist.
\end{center}
\end{center}
\end{itemize}
\end{itemize}
Mit
$
P
$
kann man Funktionen vom groben auf das feine Gitter transferieren,
Wenn
$
P
$
wie hier die kanonische Injektion ist
kann man Funktionen vom groben auf das feine Gitter transferieren,
ohne einen Fehler zu machen.
ohne einen Fehler zu machen.
\
medskip
\
subsubsection
{
Konstruktion des Grobgitterproblems
}
Um die Fehlergleichung auf dem groben Gitter lösen zu können brauchen wir
eine algebraische Darstellung.
\begin{itemize}
\begin{itemize}
\item
Genauer: Wir brauchen eine Matrix
$
A
^
H
$
und einen Vektor
$
r
^
H
$
,
der der Bilinearform
$
a
(
\cdot
,
\cdot
)
$
und dem Residuum
$
\ell
(
\cdot
)
-
a
(
u
_
h
^
k,
\cdot
)
$
auf dem groben Gitter entspricht.
\item
Natürlich können wir keine Funktion vom feinen Gitter auf das grobe Gitter
\item
Natürlich können wir keine Funktion vom feinen Gitter auf das grobe Gitter
übertragen, ohne einen Approximationsfehler zu machen.
übertragen, ohne einen Approximationsfehler zu machen.
\item
\emph
{
Aber:
}
Wir können Linearformen
$
\
ell
(
\cdot
)
: V
_
h
^
\text
{
fein
}
\to
\R
$
\item
\emph
{
Aber:
}
Wir können Linearformen
$
\
mathcal
{
L
}
(
\cdot
)
: V
_
h
^
\text
{
fein
}
\to
\R
$
auf den groben FE-Raum beschränken:
auf den groben FE-Raum beschränken:
\begin{equation*}
\begin{equation*}
\
ell
^
\text
{
grob
}
(v
_
h)
\colonequals
\
ell
^
\text
{
fein
}
(Pv
_
h)
\
mathcal
{
L
}
^
\text
{
grob
}
(v
_
h)
\colonequals
\
mathcal
{
L
}
^
\text
{
fein
}
(Pv
_
h)
\qquad
\qquad
\forall
v
_
h
\in
V
_
h
^
\text
{
grob
}
.
\forall
v
_
h
\in
V
_
h
^
\text
{
grob
}
.
\end{equation*}
\end{equation*}
\item
Das Residuum
$
r
^
k
$
ist die algebraische Darstellung so einer Linearform:
\item
Das Residuum
$
r
^
\text
{
fein
}
\colonequals
r
^
k
$
ist die algebraische Darstellung so einer Linearform:
Funktionenraum:
Im
Funktionenraum:
\begin{equation*}
\begin{equation*}
r
^
k(v
_
h)
\colonequals
\
langle
b,v
_
h
\rangle
- a(u
_
h
^
k,v
_
h)
r
^
k(v
_
h)
\colonequals
\
ell
(v
_
h)
- a(u
_
h
^
k,v
_
h)
\qquad
\qquad
\forall
v
_
h
\in
V
_
h
^
\text
{
fein
}
\forall
v
_
h
\in
V
_
h
^
\text
{
fein
}