]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] bug behoben
authorPeter Schaefer <schaeferpm@gmail.com>
Wed, 26 Jun 2013 17:56:11 +0000 (19:56 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Wed, 26 Jun 2013 17:56:11 +0000 (19:56 +0200)
[doc] Fehler ausgebessert
[doc] Abschätzung angepasst

doc/doc.bib
doc/doc.pdf
doc/doc.tex
src/compute.m

index 3e41d10be14c15961c46a5e6bce6146d5809721e..e4db4ed684b3146eb66b75c8cf617e6411fe0c6c 100644 (file)
   timestamp = {2013.02.11}
 }
 
-@INCOLLECTION{stb:fem,
-  author = {Steinbach, Olaf},
-  title = {{Randelemente}},
-  booktitle = {{Numerische N{\"a}herungsverfahren f{\"u}r elliptische Randwertprobleme}},
-  publisher = {Vieweg+Teubner Verlag},
+@BOOK{stb:fem,
+  title = {{Numerische N{\"a}herungsverfahren f{\"u}r elliptische Randwertprobleme}},
+  publisher = {Teubner \& Springer Vieweg},
   year = {2003},
+  author = {Steinbach, Olaf},
   pages = {212--225},
   doi = {10.1007/978-3-322-80054-1_10},
   isbn = {978-3-519-00436-3},
index 776043004e4107fe82810f18beb33191f8c4414a..d5c16d2b9418da0fc78b9e1c5d26fded1a48d362 100644 (file)
Binary files a/doc/doc.pdf and b/doc/doc.pdf differ
index 0a62d94f4df115f8614f06d6a64e645859c5e551..10530dbd777b84761da76df616cf4cb363980728 100644 (file)
@@ -500,7 +500,7 @@ durch benutzen von Chebyshev-Knoten minimieren \cite[Definition 1.22]{pla:nummat
 Durch affine Transformation der Chebyshev-Knoten \cite[Theorem 1.25]{pla:nummat} ergibt sich die Fehlerabschätzung
 \begin{align*}
   \norm{u-\I_pu}_{\infty,[0,1]}
-  &\leq  \frac{4^{-p}}{  (p+1)!}\norm{u^{(p+1)}}_{\infty,[0,1]}
+  &\leq  \frac{4^{-p}}{  (p+1)!}\norm{u^{(p+1)}}_{\infty,[0,1]}
   \quad \text{ für alle }u \in \C^{p+1}([0,1])
 \end{align*}
 für Chebyshev-Polynome.\\
@@ -669,7 +669,7 @@ für die Einheitsvektoren mit dem Skalarprodukt $(\cdot)$ vereinfachen wir den G
 % \end{equation}
 wobei auch hier wieder auf die richtige Indizierung geachtet werden muss.\\
 Des Weiteren bestehen die ersten Ableitungen nur aus einem Skalar und dem asymptotisch glatten Kern $\partial_{\ell}\kappa(g(\lambda))$, weshalb wir die Kettenregel beliebig oft anwenden können.
-Mithilfe der Funktion $t_{jk} : \N^4 \rightarrow \N^6$ erhalten wir abschließend für Multiindex $\alpha \in \N_0^4$ die partiellen Ableitungen % $\partial^{\alpha} (\kappa \circ g)(\lambda)$
+Mithilfe der Funktion $t_{jk} : \N^4 \rightarrow \N^6$ erhalten wir abschließend für einen Multiindex $\alpha \in \N_0^4$ die partiellen Ableitungen % $\partial^{\alpha} (\kappa \circ g)(\lambda)$
 \begin{align*}
   \partial^\alpha (\kappa \circ g)(\lambda) &= a^{\alpha_1} b^{\alpha_2} \tilde a^{\alpha_3} \tilde b^{\alpha_4} \partial^{t_{jk}(\alpha)}\kappa(g(\lambda)).
 \end{align*}
@@ -771,8 +771,12 @@ und für den durch die Gauss-Quadratur von $A_{jk}$ zum Grad $p$ entstehenden Te
 \end{align*}
 die Abschätzung
 \begin{align}
-  \abs{A_{jk} - (A_p)_{jk}}&\leq \tilde C_{\zeta_Q,j,k}\Lambda_{2p+1}^4 2(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}
+  \abs{A_{jk} - (A_p)_{jk}}&\leq \tilde C_{\zeta_Q,j,k}\Lambda_{2p+1}^4 2(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}.
 \end{align}
+Weiterhin gilt für die Konstante  $\tilde C_{\zeta_Q,j,k}$
+  \begin{align*}
+    \tilde C_{\zeta_Q,j,k} & \leq 8 e \frac{c_1}{(c_2 \zeta_Q)^s} \max\{ \diam(T_j) , \diam(T_k)\}^{2-s} \left( 1 + \frac{2}{c_2\zeta_Q} \right)\sqrt{\abs{T_j}\abs{T_k}}.
+  \end{align*}
 \end{sat}
 
 
@@ -795,18 +799,20 @@ Mithilfe von Satz \ref{thm:sem:pol:V} für den Grad $2p+1$ erhalten wir die Beha
   &\leq \abs{T_j}\abs{T_k} C_{\zeta_Q,j,k}\Lambda_{2p+1}^42(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}\\
   &= \tilde C_{\zeta_Q,j,k}\Lambda_{2p+1}^4 2(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}.
 \end{align*}
-\end{beweis}
 
 \noindent
   Da die Konstante $\tilde C_{\zeta_Q,j,k}$ durch die Netzverfeinerung, aufgrund der Distanz sehr groß werden könnte, untersuchen wir sie an dieser Stelle noch einmal etwas genauer.
  Mithilfe der folgenden Abschätzung für $\zeta_Q$-zulässige Rechtecke $T_j,T_k$
   \begin{align*}
-    \tilde C_{\zeta_Q,j,k} & = 2^3 e \frac{c_1 \abs{T_j}\abs{T_k}}{(c_2 \dist(T_j,T_k))^s}\left( 1 + \frac{2}{c_2\zeta_Q} \right)\\
-    & \leq 2^3 e \frac{c_1 \abs{T_j}\abs{T_k}}{(c_2 \zeta_Q \max\{ \diam(T_j) , \diam(T_k)\})^s} \left( 1 + \frac{2}{c_2\zeta_Q} \right)\\
-    & \leq 2^3 e \frac{c_1 \max\{ \diam(T_j) , \diam(T_k)\}^4}{(c_2 \zeta_Q \max\{ \diam(T_j) , \diam(T_k)\})^s} \left( 1 + \frac{2}{c_2\zeta_Q} \right)\\
-    & = 2^3 e \frac{c_1}{(c_2 \zeta_Q)^s} \max\{ \diam(T_j) , \diam(T_k)\}^{4-s} \left( 1 + \frac{2}{c_2\zeta_Q} \right),
+    \tilde C_{\zeta_Q,j,k} & = 8 e \frac{c_1 \abs{T_j}\abs{T_k}}{(c_2 \dist(T_j,T_k))^s}\left( 1 + \frac{2}{c_2\zeta_Q} \right)\\
+    & \leq 8 e \frac{c_1 \abs{T_j}\abs{T_k}}{(c_2 \zeta_Q \max\{ \diam(T_j) , \diam(T_k)\})^s} \left( 1 + \frac{2}{c_2\zeta_Q} \right)
+    \\
+    & \leq 8 e \frac{c_1 \max\{ \diam(T_j) , \diam(T_k)\}^2}{(c_2 \zeta_Q \max\{ \diam(T_j) , \diam(T_k)\})^s} \left( 1 + \frac{2}{c_2\zeta_Q} \right)\sqrt{\abs{T_j}\abs{T_k}}\\
+    & = 8 e \frac{c_1}{(c_2 \zeta_Q)^s} \max\{ \diam(T_j) , \diam(T_k)\}^{2-s} \left( 1 + \frac{2}{c_2\zeta_Q} \right)\sqrt{\abs{T_j}\abs{T_k}}
+    ,
   \end{align*}
-  welche unabhängig von der im Netz auftretenden Distanzen ist, können wir also eine gute Aussage über die Stabilität der Zulässigkeitsbedingung im Zuge der Netzverfeinerung treffen, sofern $s<4$. Für das Modellproblem \eqref{math:gal:kap+} gilt beispielsweise $s=1$.
+  welche unabhängig von der im Netz auftretenden Distanzen ist, können wir also eine gute Aussage über die Stabilität der Zulässigkeitsbedingung im Zuge der Netzverfeinerung treffen, sofern $s<2$. Für das Modellproblem \eqref{math:gal:kap+} gilt beispielsweise $s=1$.
+\end{beweis}
 
 
 
@@ -847,17 +853,22 @@ Wir wollen nun zeigen, dass die approximierende Matrix bezüglich der Frobenius-
   \end{align*}
   und sei $A_p$ die $A$ approximierende Matrix gemäß Definition \ref{thm:sem:quad:AV}. Dann gilt
   \begin{align*}
-    \norm{A-A_p}_F \leq n \max_{j=1,\ldots,n} \max_{k=1,\ldots,n} \tilde C_{\zeta_Q,j,k}\Lambda_{2p+1}^4 2(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}.
+    \norm{A-A_p}_F &\leq  8 e\frac{c_1(c_2\zeta_Q+2)}{(c_2\zeta_Q)^{s+1}}\Lambda_{2p+1}^4 \frac{2(p+1)}{\left(1+c_2\zeta_Q\right)^{2(p+1)}} \max_{j,k=1,\ldots,n} \frac{\abs{\T}}{\max\{\diam(T_j),\diam(T_k)\}^{s-2}}.
   \end{align*}
 \end{sat}
 
 
 \begin{beweis} Betrachten wir zunächst die Differenz zwischen $A$ und $A_p$ in einem festen Eintrag $(A-A_p)_{jk}$. Sind $T_j$ und $T_k$ unzulässig, ist die Differenz laut Definition $0$ und die Abschätzung mit $\tilde C_{\zeta_Q,j,k} = 0$ erfüllt. Sind $T_j$ und $T_k$ hingegen zulässig, können wir Satz \ref{thm:sem:quad:V} anwenden. Damit erhalten wir
 \begin{align*}
-  \norm{A-A_p}_F^2 &= \sum_{j,k=1}^n (A_{jk} - (A_p)_{jk})^2\\
-  &\leq \sum_{j,k=1}^n \left(\tilde C_{\zeta_Q,j,k}\Lambda_{2p+1}^4 2(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}\right)^2\\
-  &\leq \sum_{j,k=1}^n \max_{j=1,\ldots,n} \max_{k=1,\ldots,n} \left(\tilde C_{\zeta_Q,j,k}\Lambda_{2p+1}^4 2(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}\right)^2\\
-  &= n^2 \max_{j=1,\ldots,n} \max_{k=1,\ldots,n} \left(\tilde C_{\zeta_Q,j,k}\Lambda_{2p+1}^4 2(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}\right)^2.
+  &\norm{A-A_p}_F^2 = \sum_{j,k=1}^n (A_{jk} - (A_p)_{jk})^2
+  \\
+  &\leq \sum_{j,k=1}^n \left(\tilde C_{\zeta_Q,j,k}\Lambda_{2p+1}^4 2(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}\right)^2
+  \\
+  &\leq \sum_{j,k=1}^n \left( 8 e\frac{c_1\sqrt{\abs{T_j}\abs{T_k}}}{c_2^s\zeta_Q^s\max\{\diam(T_j),\diam(T_k)\}^{s-2}} \left(1+\frac{2}{c_2\zeta_Q} \right) \Lambda_{2p+1}^4 2(p+1)\left(1+c_2\zeta_Q\right)^{-2(p+1)}\right)^2
+  \\
+  &= \left( 8 e \frac{c_1}{c_2^s\zeta_Q^s} \left(1+\frac{2}{c_2\zeta_Q} \right)  \Lambda_{2p+1}^4 \frac{2(p+1)}{\left(1+c_2\zeta_Q\right)^{2(p+1)}}\right)^2 \sum_{j,k=1}^n \frac{\abs{T_j}\abs{T_k}}{\max\{\diam(T_j),\diam(T_k)\}^{2s-4}}
+  \\
+  &\leq \left( 8 e \frac{c_1(c_2\zeta_Q+2)}{(c_2\zeta_Q)^{s+1}} \Lambda_{2p+1}^4 \frac{2(p+1)}{\left(1+c_2\zeta_Q\right)^{2(p+1)}}\right)^2  \max_{j,k=1,\ldots,n} \frac{\abs{\T}^2}{\max\{\diam(T_j),\diam(T_k)\}^{2s-4}}.
 \end{align*}
 Durch Ziehen der Wurzel auf beiden Seiten, folgt dann die Behauptung.
 \end{beweis}
@@ -924,7 +935,7 @@ wobei $\gamma_j(\lambda_1,\lambda_2) \in T_j$ sei. Daher sind die Voraussetzunge
 \begin{sat}\label{thm:sem:quad:E}
 Seien $T_j,T_k$ zwei $\zeta_E$-zulässige Rechtecke, wobei $\diam(T_j) \leq \diam(T_k)$ sei    , mit zugehörigen Parametrisierungen $\gamma_j,\gamma_k$. Sei weiterhin $\kappa : \R^3\times\R^3\to \R : (\bs x, \bs y) \mapsto \kappa(\bs x,\bs y)$ eine asymptotisch glatte Kernfunktion mit Konstanten $c_1,c_2,s$. Sei
 \begin{align}\label{math:sem:zetaE:c}
-   \tilde C_{\zeta_E,j,k}&:=2^3e\frac{c_1\abs{T_j}}{(c_2\dist(T_j,T_k))^s} \left(1+\frac{\sqrt 2}{c_2\zeta_E} \right).
+   \tilde C_{\zeta_E,j,k}&:=8e\frac{c_1\abs{T_j}}{(c_2\dist(T_j,T_k))^s} \left(1+\frac{\sqrt 2}{c_2\zeta_E} \right) = \abs{T_j} C_{\zeta_E,j,k}.
 \end{align}
 Dann gilt für das Integral
 \begin{align}
@@ -964,6 +975,19 @@ Mithilfe von Satz \ref{thm:sem:pol:E} für den Grad $2p+1$ erhalten wir die Beha
   &\leq \abs{T_j}C_{\zeta_E,j,k}\Lambda^2_{2p+1} 2(p+1)\left(1+ \sqrt 2 c_2\zeta_E\right)^{-2(p+1)}\\
   &= \tilde C_{\zeta_E,j,k}\Lambda^2_{2p+1} 2(p+1)\left(1+ \sqrt 2 c_2\zeta_E\right)^{-2(p+1)}.
 \end{align*}
+
+\noindent
+Da die Konstante $\tilde C_{\zeta_E,j,k}$ durch die Netzverfeinerung, aufgrund der Distanz sehr groß werden könnte, untersuchen wir sie an dieser Stelle noch einmal etwas genauer.
+Mithilfe der folgenden Abschätzung für $\zeta_E$-zulässige Rechtecke $T_j,T_k$
+  \begin{align*}
+    \tilde C_{\zeta_E,j,k} & = 8 e \frac{c_1 \abs{T_j}}{(c_2 \dist(T_j,T_k))^s}\left( 1 + \frac{\sqrt{2}}{c_2\zeta_E} \right)\\
+    & \leq 8 e \frac{c_1 \abs{T_j}\abs{T_k}}{\abs{T_k}(c_2 \zeta_E \min\{ \diam(T_j) , \diam(T_k)\})^s} \left( 1 + \frac{\sqrt{2}}{c_2\zeta_E} \right)
+    \\
+    & \leq 8 e \frac{c_1 \max\{ \diam(T_j) , \diam(T_k)\}^2}{\abs{T_k}(c_2 \zeta_E \min\{ \diam(T_j) , \diam(T_k)\})^s} \left( 1 + \frac{\sqrt{2}}{c_2\zeta_E} \right)\sqrt{\abs{T_j}\abs{T_k}}\\
+    & = 8 e \frac{c_1}{(c_2 \zeta_E)^s} \min\{ \diam(T_j) , \diam(T_k)\}^{2-s} \left( 1 + \frac{\sqrt{2}}{c_2\zeta_E} \right)\sqrt{\abs{T_j}\abs{T_k}}
+    ,
+  \end{align*}
+  welche unabhängig von der im Netz auftretenden Distanzen ist, können wir also eine gute Aussage über die Stabilität der Zulässigkeitsbedingung im Zuge der Netzverfeinerung treffen, sofern $s<4$. Für das Modellproblem \eqref{math:gal:kap+} gilt beispielsweise $s=1$.
 \end{beweis}
 
 
@@ -1104,7 +1128,7 @@ g(-3/2;y;x;\lambda) &= \frac{y-x}{\lambda^2}\{(y-x)^2+\lambda^2\}^{-1/2},
 \end{align*}
 welche alle in \cite[Seite 2-3]{mai:3dbem} bewiesen wurden.
 \end{lem}
-Hierbei wollen wir darauf hinweisen, dass wir für $p=-1$ nicht die in \cite[Seite 3]{mai:3dbem} vorgeschlagene falsche Formel verwenden, sondern die selbst hergeleitete. Mithilfe von Substitution durch $z = \frac{y-x}{\abs{\lambda}}$ und $dz = \frac 1 {\abs{\lambda}} dy$ gilt
+Da die Stammfunktion für $p=-1$ in \cite[Seite 3]{mai:3dbem} falsch ist verwenden wir die hier hergeleitete. Mithilfe von Substitution durch $z = \frac{y-x}{\abs{\lambda}}$ und $dz = \frac 1 {\abs{\lambda}} dy$ gilt
 \begin{align*}
 \int \frac 1 {(x-y)^2 +\lambda^2} dy &=  \int \frac 1 {\lambda^2((\frac{y-x}{\abs{\lambda}})^2 +1)} dy
 = \frac 1 {\abs{\lambda}} \int \frac 1 {z^2+1} dz\\
@@ -1320,15 +1344,15 @@ Dabei werden wir wichtige Schritte anhand des Codes und kleinen Beispielen hervo
  
 \subsection{Datenstruktur}\label{sec:implement:daten}
 Für die Implementierung in \Matlab~und \Cpp~werden wir eine einheitliche Datenstruktur einführen. 
-Die für die Partition $\T_{\ell} = \{T_1\ldots T_N\}$ benötigten Knoten $\K_{\ell} = \{k_1\ldots k_M\}$ stellen wir in einer $M \times 3$ Matrix $COO$ dar. Dabei enthält die $j$-te Zeile die Koordinaten des Knoten $C_j$, d.h. :
+Die für die Partition $\T_{\ell} = \{T_1\ldots T_N\}$ benötigten Knoten $\K_{\ell} = \{\bs k_1\ldots \bs k_M\}$ stellen wir in einer $M \times 3$ Matrix $COO$ dar. Dabei enthält die $j$-te Zeile die Koordinaten des Knoten $\bs k_j$, d.h. :
 \begin{align}
-COO[j,1:3] = k_j := (x_j,y_j,z_j)^{T} \text{ wobei } x_j,y_j,z_j \in \R.
+COO[j,1:3] = \bs k_j := (x_j,y_j,z_j)^{T} \text{ wobei } x_j,y_j,z_j \in \R.
 \end{align}
-Die Elemente $\T_{\ell}$ werden wir ebenfalls zeilenweise in einer $N \times 4$ Matrix $ELE$ abspeichern. Dabei soll die $i$-te Zeile den Indizes der Knoten $\{k_j,k_k,k_{\ell},k_m\}$ des Elements $T_i$ entsprechen, also:
+Die Elemente $\T_{\ell}$ werden wir ebenfalls zeilenweise in einer $N \times 4$ Matrix $ELE$ abspeichern. Dabei soll die $i$-te Zeile den Indizes der Knoten $\{\bs k_j,\bs k_k,\bs k_{\ell},\bs k_m\}$ des Elements $T_i$ entsprechen, also:
 \begin{align}
 ELE[i,1:4] = T_i := (j,k,\ell,m).
 \end{align}
-Die Knoten ordnen wir gegen den Uhrzeigersinn an und der Knoten $C_j$ sei der Punkt $\bs v$ aus Definition \ref{thm:def:T}.
+Die Knoten ordnen wir gegen den Uhrzeigersinn an und der Knoten $\bs k_j$ sei der Punkt $\bs v$ aus Definition \ref{thm:def:T}.
 
 \noindent
 Für die bessere Handhabung der Elemente beim Verfeinern der Partition, müssen wir auch die Nachbarschaftsrelationen geeignet abspeichern. 
@@ -1337,7 +1361,7 @@ Wir legen also eine $M \times 8$ Matrix für die Indizes der Nachbarelemente an,
 \begin{align}
 NEI[i,1:8] = N_i := (n_1,\ldots,n_8)
 \end{align}
-Offensichtlich ist $i \notin N_i$. Wir wollen uns aber noch genauer eine geeignete Anordnung für die Nachbarelemente überlegen. Hierbei bezeichnen wir die Seite $[j,k]$ eines Elements als Seite 1 und gegen den Uhrzeigersinn alle weiteren $[k,l], [l,m]$ und $[m,j]$ mit 2,3,4. Für den einfacheren Zugriff auf die Elemente einer Seite $s \in \{1,2,3,4\}$ seien die Nachbarelemente zur Seite $s$ unter den Indizes $n_s$ und $n_{s+4}$ abgespeichert. Die Nachbarelemente $\{T_{n_s}, T_{n_{s+4}}\}$ liegen also an der Seite $s$ des Elements. Für Seiten die nur einen Nachbarn $T_{n_s}$ besitzen, setzen wir $n_{s+4}=0$ und für Seiten mit keinem Nachbarn setzen wir $n_s = n_{s+4} = 0$. Daraus folgt unmittelbar, dass für $n_s =0$ auch $n_{s+4} = 0$ gilt, die Seite $s$ also keine Nachbarelemente besitzt und umgekehrt folgt aus $n_{s+4} \neq 0$ auch $n_s \neq 0$, womit die Seite $s$ genau zwei Nachbarelemente hat.
+Offensichtlich ist $i \notin N_i$. Wir wollen uns aber noch genauer eine geeignete Anordnung für die Nachbarelemente überlegen. Hierbei bezeichnen wir die Seite $[j,k]$ eines Elements als Seite 1 und gegen den Uhrzeigersinn alle weiteren $[k,\ell], [\ell,m]$ und $[m,j]$ mit 2,3,4. Für den einfacheren Zugriff auf die Elemente einer Seite $s \in \{1,2,3,4\}$ seien die Nachbarelemente zur Seite $s$ unter den Indizes $n_s$ und $n_{s+4}$ abgespeichert. Die Nachbarelemente $\{T_{n_s}, T_{n_{s+4}}\}$ liegen also an der Seite $s$ des Elements. Für Seiten die nur einen Nachbarn $T_{n_s}$ besitzen, setzen wir $n_{s+4}=0$ und für Seiten mit keinem Nachbarn setzen wir $n_s = n_{s+4} = 0$. Daraus folgt unmittelbar, dass für $n_s =0$ auch $n_{s+4} = 0$ gilt, die Seite $s$ also keine Nachbarelemente besitzt und umgekehrt folgt aus $n_{s+4} \neq 0$ auch $n_s \neq 0$, womit die Seite $s$ genau zwei Nachbarelemente hat.
 (Siehe Abbildung \ref{exmpl13:nei:part})
 \begin{figure}[ht]
 \centering
@@ -1375,7 +1399,7 @@ Da wir im weiteren Verlauf sowohl adaptive also auch anisotrope Netzverfeinerung
 \item halbe Teilung in zwei gleich große vertikal getrennte Elemente
 \item halbe Teilung in zwei gleich große horizontal getrennte Elemente
 \end{enumerate}
-Zusätzlich wurde auch Typ 5 belegt, welcher als Ergebnis eine volle Teilung vom Typ 2 ausführt, diese aber schrittweise durch eine Teilung vom Typ 3 und anschließend durch jeweils eine Typ 4 Teilung. Aus Sicherheitsgründen wird auch jede vierte Teilung vom Typ 2 durch eine Typ 5 Teilung ausgeführt, da sonst kurzzeitig Seiten mit mehr als zwei Elementen auftreten könnten.
+Zusätzlich wurde auch Typ 5 belegt, welcher als Ergebnis eine volle Teilung vom Typ 2 ausführt, diese aber schrittweise durch eine Teilung vom Typ 3 und anschließend durch jeweils eine Typ 4 Teilung. In der Implementierung wird auch jede vierte Teilung vom Typ 2 durch eine Typ 5 Teilung ausgeführt, da sonst kurzzeitig Seiten mit mehr als zwei Nachbarn auftreten könnten.
 
 \noindent
 Damit jedem Element $T_i$ eine Teilungsart zugeordnet werden kann, haben wir einen Mar\-kierungs\-vektor $marked \in \{1,2,3,4,5\}^M$ eingeführt. Dabei entspricht $marked_i$ der Art der Teilung für das Element $T_i$. Um isotrope und auch uniforme Teilungen zu erleichtern, kann statt dem Vektor $marked$ auch nur ein Skalar übergeben werden $marked \in \{1,2\dots5\}$, wodurch jedes Element mit der gewählten Art verfeinert wird.
@@ -1607,10 +1631,10 @@ Im adaptiven Algorithmus werden wir die Elemente abhängig vom Fehlerschätzer $
   \begin{align*}
     \theta \sum_{T\in T_{\ell}} \tilde \mu_{\ell}(T)^2 &\leq \sum_{ T\in M_{\ell}} \tilde \mu_{\ell}(T)^2.
   \end{align*}
-  \todo{Um die Symmetrie des Netzes zu erhalten, bestimme weiterhin für feste Konstante $\vartheta \in (0,1)$ die kleinste Teilmenge $\tilde M_{\ell} \subseteq T_{\ell}\backslash M_{\ell}$ für die gilt
+  Um die Symmetrie des Netzes zu erhalten, bestimme weiterhin für feste Konstante $\vartheta \in (0,1)$ die kleinste Teilmenge $\tilde M_{\ell} \subseteq T_{\ell}\backslash M_{\ell}$ für die gilt
   \begin{align*}
     \vartheta \sum_{T\in M_{\ell}} \tilde \mu_{\ell}(T)^2 &< \sum_{T\in \tilde M_{\ell}} \tilde \mu_{\ell}(T)^2.
-  \end{align*}}
+  \end{align*}
   Die Menge der markierten Elemente ist dann gegeben durch $M_{\ell} \cup \tilde M_{\ell}$.
 \end{defi}
 Im Folgenden werden wir $\vartheta = 10^{-2}$ wählen.
@@ -1667,7 +1691,7 @@ implementiert die Definitionen zum Bestimmen der Markierung. Hierbei seien die E
 
 
 \subsection{Adaptivität}
-Mithilfe der oben Definierten Funktionen ist es uns nun möglich den Ablauf der Berechnungen zusammen zu fassen.
+Mithilfe der oben definierten Funktionen ist es uns nun möglich den Ablauf der Berechnungen zusammen zu fassen.
 \begin{alg}[Adaptives Verfahren]\label{alg:adapt} Sei $\theta,\nu \in (0,1)$ fest gewählt und das Startnetz $\T_{\ell}$ gegeben.
 \begin{enumerate}
 \renewcommand{\theenumi}{(\roman{enumi})}
@@ -1772,9 +1796,7 @@ Anhand der \figLineC[] farbenen Linien, also der "`adaptiv anisotropen"' Strateg
 Um auch die Stabilität der drei Strategien untersuchen zu können, sehen wir in der Abbildung \ref{fig:2DQuad:verfeinern:cond} die Konditionszahlen der Matrix $\hat V_{\ell}$ in Abhängigkeit der Elementanzahl. Für die "`uniforme"' Strategie in \figLineA[] erkennen wir sehr gute Konditionszahlen, wissen aber, dass auch der Fehler der Galerkin-Lösung nur langsam gegen 0 konvergiert. Die Konditionszahlen der "`adaptiv anisotropen"' Strategie in \figLineC[] wachsen hingegen am schnellsten und steigen bei etwa 3000 Elementen sogar sprunghaft an. 
 
 \noindent
-\todo{
-Weiterhin können wir in Abbildung \ref{fig:2DQuad:verfeinern:time} die benötigte Rechenzeit für einen Berechnungsschritt ablesen. In einem Berechnungsschritt wird die Matrix $\hat V_{\ell}$ und $V_{\ell}$ aufgestellt und die Galerkin-Lösung inklusive aller Fehlerschätzer berechnet. Hierbei fällt auf, dass die Wahl der Strategie keinen Einfluss auf die benötigte Rechenzeit hat, sondern nur die Anzahl der Elemente. Für die Berechnung mit 3000 Elementen benötigen alle drei Strategien etwa $10^4$ Sekunden, was fast drei Stunden entspricht.
-}
+Weiterhin können wir in Abbildung \ref{fig:2DQuad:verfeinern:time} die benötigte Rechenzeit für einen Berechnungsschritt ablesen. In einem Berechnungsschritt wird die Matrix $\hat V_{\ell}$ und $V_{\ell}$ aufgestellt und die Galerkin-Lösung inklusive aller Fehlerschätzer berechnet. Hierbei fällt auf, dass die Wahl der Strategie keinen Einfluss auf die benötigte Rechenzeit hat, sondern nur die Anzahl der Elemente. Für die Berechnung mit 3000 Elementen benötigen alle drei Strategien etwa $100$ Sekunden, was etwa zwei Minuten entspricht.
 
 \noindent
 Diese Ergebnisse zeigen also, dass die "`adaptiv anisotrope"' Strategie die beste Konvergenzrate aufweist, wir dafür jedoch eine schlechtere Konditionszahl der Matrix in Kauf nehmen müssen. Dies ist letztendlich auf die Größe und Form der Elemente zurückzuführen. An dieser Stelle wollen wir noch zusätzlich Abbildung \ref{fig:mesh:2DQuad:steps} betrachten, welche das "`adaptiv anisotrop"' verfeinerte Netz nach 12 Schritten darstellt. Denn hier erkennen wir sehr gut, dass diese Strategie das Netz insbesondere an den Singularitäten verfeinert.
@@ -1869,8 +1891,7 @@ In Abbildung \ref{fig:2DQuad:sem:err} haben wir die Ergebnisse des Fehlers gegen
 In Abbildung \ref{fig:2DQuad:sem:cond} vergleichen wir noch einmal die Konditionszahlen der $\hat V_{\ell}$ Matrix für die verschiedenen Strategien. Auch hier wurde die \figErr[e] Grenzlinie bei etwa 2000 Elementen eingezeichnet. Anhand der Linie in \figLineA[] erkennen wir deutlich, dass ab der 2000 Elemente Grenze die Konditionszahlen für die analytische Berechnung sprunghaft gegenüber den Konditionszahlen der beiden Quadraturen in \figLineB[] und \figLineC[] ansteigen. Wir erkennen an dieser Stelle aber auch, dass die Kondtionszahlen der "`analytischen"' Berechnung schon ab 1000 Elementen von den Quadraturen geringfügig abweichen und damit auf eine ungünstige Berechnung hindeuten.
 
 \noindent
-\todo{
-Weiterhin wollen wir noch einmal die Laufzeit der drei Strategien in Abbildung \ref{fig:2DQuad:sem:time} betrachten. Gemessen wurde die Zeit eines Berechnungsschritts, welches wieder das Aufstellen der Matrizen und Lösen des Gleichungssystems beinhaltet. Hier erkennen wir, dass sich die Laufzeiten der drei Strategien nur minimal voneinander unterscheiden. Für fast $10^4$ Elemente benötigen alle drei Berechnungsarten etwa $4*10^4$ Sekunden, was etwa elf Stunden entspricht. Da die Rechenzeit zum Aufstellen im Vergleich der Quadraturgrade wesentlich kürzer ist, können wir daraus schließen, dass die meiste Rechenzeit beim Lösen und Berechnen der Konditionszahlen verloren geht.}
+Weiterhin wollen wir noch einmal die Laufzeit der drei Strategien in Abbildung \ref{fig:2DQuad:sem:time} betrachten. Gemessen wurde die Zeit eines Berechnungsschritts, welches wieder das Aufstellen der Matrizen und Lösen des Gleichungssystems beinhaltet. Hier erkennen wir, dass sich die Laufzeiten der drei Strategien nur minimal voneinander unterscheiden. Für fast $10^4$ Elemente benötigen alle drei Berechnungsarten etwa $10^3$ Sekunden, was etwa 20 Minuten entspricht.
 
 \noindent
 Die Ergebnisse zeigen, dass wir durch Gauss-Quadratur über das kleinere Element auf $\zeta_E$-zulässigen Elementen bis an die Speichergrenze stabil rechnen können und es nicht nötig ist, alle Integrale durch Quadratur zu ersetzen. Weiterhin nimmt die Art der Berechnung von $\hat V_{\ell}$ kaum Einfluss auf die Laufzeit.
@@ -2023,7 +2044,7 @@ for(int i=0;i<GAUSS_SIZE[3];++i)
  \subsection[Matlab]{\Matlab}
  Hier wollen wir alle \Matlab-Funktionen für den adaptiven Algorithmus \ref{alg:adapt} vorstellen. Funktionen, die lediglich zum Erstellen von Grafiken und zum Testen dienen, werden wir hier nicht zeigen.
   \subsubsection{compute.m}\label{code:compute}
-  Diese Funktion implementiert im Wesentlichen den Algorithmus \ref{alg:adapt}. Nachdem das Startnetz aus der Datei \lstinline!file! geladen wurde, werden \lstinline!times! $\in\N$ Verfeinerungsschritte durchgeführt. Sollte \lstinline!times! größer als 40 sein, wird nicht nach 40 Schritten abgebrochen sondern nachdem die Elementanzahl \lstinline!times! vom Netz $\T_{\ell}$ erreicht wurde. Die Berechnungsarten werden über den Vektor \lstinline!typ! $\in\{1,2,3,4\}^n$ bestimmt. Hierbei werden in jedem Verfeinerungsschritt alle $n$ Berechnungsarten aus \lstinline!typ!  auf dem selben Netz durchgeführt. \lstinline!zeta! ist ein Array, welcher zu den $n$ Berechnungsarten den entsprechenden $\zeta=(p,\zeta_Q,\zeta_E)$ Vektor enthält. Zum Steuern des Verfeinern-Algorithmus \ref{alg:refine} dienen die Parameter \lstinline!theta,nu! $\in[0,1]$ und über den Parameter \lstinline!vcon! $\in\{0,1\}$ kann die Vorkonditionierung der $A$ Matrix eingeschaltet werden. Das neue Netz $\T_{\ell+1}$ wird durch die letzte 
+  Diese Funktion implementiert im Wesentlichen den Algorithmus \ref{alg:adapt}. Nachdem das Startnetz aus der Datei \lstinline!file! geladen wurde, werden \lstinline!times! $\in\N$ Verfeinerungsschritte durchgeführt. Sollte \lstinline!times! größer als 40 sein, wird nicht nach 40 Schritten abgebrochen, sondern nachdem die Elementanzahl \lstinline!times! vom Netz $\T_{\ell}$ erreicht wurde. Die Berechnungsarten werden über den Vektor \lstinline!typ! $\in\{1,2,3,4\}^n$ bestimmt. Hierbei werden in jedem Verfeinerungsschritt alle $n$ Berechnungsarten aus \lstinline!typ!  auf dem selben Netz durchgeführt. \lstinline!zeta! ist ein Array, welcher zu den $n$ Berechnungsarten den entsprechenden $\zeta=(p,\zeta_Q,\zeta_E)$ Vektor enthält. Zum Steuern des Verfeinern-Algorithmus \ref{alg:refine} dienen die Parameter \lstinline!theta,nu! $\in[0,1]$ und über den Parameter \lstinline!vcon! $\in\{0,1\}$ kann die Vorkonditionierung der $A$ Matrix eingeschaltet werden. Das neue Netz $\T_{\ell+1}$ wird durch die letzte 
 Berechnungsart bestimmt. Zurückgegeben wird die Matrix \lstinline!data!, in der alle wichtigen Auswertungen gespeichert sind.
   Die folgende Zeile 
 \begin{lstlisting}[language=M,numbers=none]
index b0455b496735b75f3b270ccc5dfa6dfe1f729d6d..564b81070d1176d85f42aee759f2e92ac907961e 100644 (file)
@@ -70,7 +70,8 @@ for j = 1:times
   %alle MatrixBrechenungsArten mit dem selben Netz berechnen
   for i = 1:length(typ)
     start_time = toc;
-    disp([num2str(size(elements,1)) ' : ' t2str(toc) ' ->' num2str(i)])
+    disp([ '[' num2str(j) ',' num2str(i) '] ' ...
+      num2str(size(elements,1)) ' : ' t2str(toc) ' ->' num2str(typ(i))])
     %Matrix aufbauen -> MEX
     V_fine = mex_build_V(coo_fine,ele_fine,zeta{i},typ(i));
     build_time = toc;
@@ -182,10 +183,10 @@ for j = 1:times
     eta = abs(xe_fine-xe);
      
     end_time = toc - start_time;
-    disp(['Relative Zeit ' num2str(100*(build_time - start_time)/end_time)...
-      '% absolute Zeit '  t2str(build_time - start_time)]);
+    disp(['Relative Zeit ' num2str(100*(build_time - start_time)/end_time)...
+      '% absolute Zeit '  t2str(build_time - start_time)]);
     time_build = build_time - start_time;
-    time_sovle = solve_time - build_time;
+    time_solve = solve_time - build_time;
     
     dataS = [dataS ...
         typ(i) ... berechnet mit Typ