]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[doc] Kapitel 4 fertig!
authorPeter Schaefer <peter.schaefer@tuwien.ac.at>
Fri, 30 Nov 2012 11:18:47 +0000 (12:18 +0100)
committerPeter Schaefer <peter.schaefer@tuwien.ac.at>
Fri, 30 Nov 2012 11:18:47 +0000 (12:18 +0100)
[src] compute mehr macht über zeta und typ
[src] sol testet Quadratur

doc/doc.pdf
doc/doc.tex
src/compute.m
src/refineQuad.m
src/test_sol.m

index 924d372de13b9ba8f2807e82cce555ca7005a59f..95070af1f0de45ef848d46328265aefd7e9c5323 100644 (file)
Binary files a/doc/doc.pdf and b/doc/doc.pdf differ
index dc3cce8f85dd6da33e7cfbd8fb1e58b1d5a5d8bc..3286aec35ad3dd42c379ff5f7546faf522ef2b81 100644 (file)
@@ -272,11 +272,11 @@ die zu $T$ zugehörige Parametrisierung.
 \begin{bem}
 Weiterhin werden wir die vier Ecken des Rechtecks
 \begin{align*}
-  \K_T&:=\{\gamma_T(x,y) ~|~ x,y \in \{0,1\}\}
+  \K_T&:=\{k = \gamma_T(x,y) ~|~ x,y \in \{0,1\}\}
 \end{align*}
 als Menge der Knoten des Rechtecks $T$ bezeichnen und als Kanten von $T$ nennen wir die Menge
 \begin{align*}
-  \E_T&:= \{[k_T, \tilde k_T] ~|~ k_T,\tilde k_T\in \K_T, k_T\neq\tilde k_T\}.
+  \E_T&:= \{e = [k_T, \tilde k_T] ~|~ k_T,\tilde k_T\in \K_T, k_T\neq\tilde k_T\}.
 \end{align*}\todo{Diagonalen sind dabei!!!}
 \end{bem}
 \begin{defi}Sei $a,b\in\R$ für $T$ definiert wie in Def. \ref{math:def:T}, dann heißt
@@ -576,7 +576,7 @@ 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}}&= \tilde C_{\zeta_Q,j,k}\Lambda_k^4(p+1)\left(1+\frac{2c_2}{\zeta_Q}\right)^{-2(p+1)}
+  \abs{A_{jk} - (A_p)_{jk}}&\leq \tilde C_{\zeta_Q,j,k}\Lambda_k^4(p+1)\left(1+\frac{2c_2}{\zeta_Q}\right)^{-2(p+1)}
 \end{align}
 \end{sat}
 \beweis Da die Gauss-Quadratur ist interpolatorisch mit dem Exaktheitsgrad $2p+1$ ist gilt:
@@ -618,11 +618,10 @@ Mithilfe von Lemma \ref{thm:sem:pol:V} erhalten wir die Behauptung
   Seien $T_j,T_k$ zwei $\zeta$ zulässige Rechtecke. Ist $\diam(T_j) \leq \diam(T_k)$ so kann Satz (\ref{thm:sem:quad:V}) angewendet werden um $A_{jk}$ zu approximieren. Im Fall $\diam(T_j) > \diam(T_k)$ können wir $A_{jk}$ approximieren indem wir mithilfe von $A_{jk} = A_{kj}$ und Satz (\ref{thm:sem:quad:V}), $A_{kj}$ berechnen.
 \end{bem}
 
-\todo{\begin{bem}
-  $\Lambda_p$ wächst für Chebyshev-Polynome im wesentlichen logarithmisch in $p$. Daher konvergiert $(A_p)_{jk}$ für wachsenden Quadraturgrad $p$ exponentiell schnell gegen $A_{jk}$
- Zusammenhang von Quadraturgrad und Konvergenz 
+\begin{bem}
+  $\Lambda_p$ wächst für Chebyshev-Polynome im wesentlichen logarithmisch in $p$. Daher konvergiert $(A_p)_{jk}$ für wachsenden Quadraturgrad $p$ exponentiell schnell gegen $A_{jk}$.
 \end{bem}
-}
+
 \subsection{Approximierende Matrix}
 
 \begin{defi} \label{thm:sem:quad:Ap}
@@ -648,7 +647,7 @@ Wir wollen nun zeigen, dass die approximierende Matrix bezüglich der Frobenius-
 \begin{align*}
   \norm{A}_F := \left( \sum_{i=1}^n\sum_{j=1}^n A_{ij}^2 \right)^{1/2} \quad \text{für} \quad A \in \R^{n \times n}.
 \end{align*}
-\todo{Dieser Satz ist wahrscheinlich unnötig
+
 \begin{sat}
   Seien $T_1,T_2,\ldots,T_n$ Rechtecke. Sei $\kappa : \R^2\times \R^2 \to \R$ eine asymptotisch glatte Kernfunktion mit Konstanten $c_1,c_2$ und Singularitätsordung $s \geq 0$. Sei  $\tilde C_{\zeta_Q,j,k}$ wie in \eqref{math:sem:zetaQ:c}. Seien $A\in \R^{n \times n}$ eine Matrix, deren Einträge gegeben sind durch
   \begin{align*}
@@ -671,7 +670,7 @@ Wir wollen nun zeigen, dass die approximierende Matrix bezüglich der Frobenius-
   &= n^2 \max_{j=1,\ldots,n} \max_{k=1,\ldots,n} \left(\tilde C_{\zeta_Q,j,k}\Lambda_k^4(p+1)\left(1+\frac{2c_2}{\zeta_Q}\right)^{-2(p+1)}\right)^2.
 \end{align*}
 Durch ziehen der Wurzel auf beiden Seiten, folgt dann die Behauptung. \hfill$\square$
-}
+
 % \subsection{Quadratur über eine Achse}
 % \subsubsection{Quadratur}
 % \begin{defi} Seien $T_j,T_k$ Rechtecke und sei $\zeta_A > 0$ fest. Dann heißt das Paar $(T_j,T_k)$ $\zeta_A$-zulässig, genau dann wenn
@@ -787,9 +786,9 @@ Durch ziehen der Wurzel auf beiden Seiten, folgt dann die Behauptung. \hfill$\sq
 \end{itemize}
 }
 \noindent
-In diesem Abschnitt wollen wir uns mit der analytischen Berechnung der Galerkin-Matrix
+In diesem Abschnitt wollen wir uns mit der analytischen Berechnung des Integrals
 \begin{align}\label{math:analy:int}
-\frac{1}{4\pi} \int_{T_j} \int_{T_k} \frac{1}{|\bs x- \bs y|} ds_{\bs y} ds_{\bs x} \in \R^3.
+  A_{jk} = \int_{T_j} \int_{T_k} \frac{1}{|\bs x- \bs y|} ds_{\bs y} ds_{\bs x} \in \R^3.
 \end{align}
 mit zwei beschränkten, achsenorientierten Rechtecken $T_j,T_k \subseteq\R^3$ beschäftigen. Die im Folgenden auftretenden Stammfunktionen $\int f(x) dx$ werden wir der Einfachheit halber jeweils mit additiver Verschiebung $0$ schreiben.
 Dazu wollen wir \cite{mai:3dbem} folgend, zwei Stammfunktionen zitieren, welche durch das Aufspalten des Integrals \eqref{math:analy:int} auftreten werden.
@@ -833,9 +832,9 @@ Des Weiteren werden wir die Stammfunktion
 \end{align*}
 benötigen, welches sich für den den Fall $p = -3/2$ lässt als
 \begin{align*}
-  G(-3/2;y_1,y_2;x_1,x_2,0)  &= - \frac{\sqrt{(y_1-x_1)^2+(y_2-x_2)^2}}{(y_1-x_1)(y_2-x_2)} \quad \text{ für } \lambda = 0,\\
-  G(-3/2;y_1,y_2;x_1,x_2,\lambda)  &=- \frac{\sgn\{(y_1-x_1)(y_2-x_2)\}}{2|\lambda|} \quad \text{ für } \lambda \neq 0\\
-  &\cdot \arccos\left( \frac{-2(y_1-x_1)^2(y_2-x_2)^2}{\{(y_1-x_1)^2+\lambda^2\}\{(y_2-x_2)^2+\lambda^2\}} +1 \right).
+  G(-3/2;y_1,y_2;&x_1,x_2,0)  = - \frac{\sqrt{(y_1-x_1)^2+(y_2-x_2)^2}}{(y_1-x_1)(y_2-x_2)} \quad \text{ für } \lambda = 0,\\
+  G(-3/2;y_1,y_2;&x_1,x_2,\lambda)  =- \frac{\sgn\{(y_1-x_1)(y_2-x_2)\}}{2|\lambda|}  \\
+  &\cdot \arccos\left( \frac{-2(y_1-x_1)^2(y_2-x_2)^2}{\{(y_1-x_1)^2+\lambda^2\}\{(y_2-x_2)^2+\lambda^2\}} +1 \right)\quad \text{ für } \lambda \neq 0. 
 \end{align*}
 Für alle weiteren relevanten Fälle $p = -3/2 +k$ mit $k \in \N$ können wir folgende Rekursionsformel aufstellen
 \begin{align*}
@@ -922,11 +921,12 @@ Dann gilt nach \cite{mai:3dbem}
   \end{align}
 \end{lem}
 
-\todo{
+
 \subsection{Bestimmtes Integral}
+Mithilfe der Stammfunktionen $F_p$ und $F_o$ können wir nun das Integral aus \eqref{math:analy:int} für orthogonal und parrallel liegenden achsenorientierte Rechtecke $T$ und $\tilde T$ berechnen.
 \begin{align*}
  \int_T& \int_{\tilde T} \frac{1}{|x-y|} ds_y ds_x\\
-&\approx  \int_0^{k_1}\int_0^{k_2}\int_0^{\tilde k_1}\int_0^{\tilde k_2} 
+&=  \int_0^{k_1}\int_0^{k_2}\int_0^{\tilde k_1}\int_0^{\tilde k_2} 
  \dif{}{y_2} \dif{}{y_1} \dif{}{x_2} \dif{}{x_1}
   F_{p/o}(x_1,x_2,y_1,y_2) 
 dy_2 dy_1 dx_2 dx_1\\
@@ -1012,7 +1012,7 @@ dy_2 dy_1 dx_2 dx_1\\
 -
   F_{p/o}(0,0,0,0)
 \end{align*}
-}
+
 
 \clearpage
 
index cf35d7d69a57263aa17bf14347e98953ccb69ff1..343fd55c30d249755bce56639c77dc5225ce60c9 100644 (file)
@@ -24,7 +24,7 @@ if(~exist('data','var'))
 end
 kap3 = 0;
 %times mal verfeinern
-for j = 1:times  
+for j = 1:times
   if(exist('coo_fine','var'))
     old_C_fine = coo_fine;
     old_F_fine = f2s;
@@ -47,11 +47,20 @@ for j = 1:times
   %data -> ErgebnisVektor
   dataS = size(elements,1);
   
+  %zeta Vorbereiten
+  if(~iscell(zeta))
+    zeta_tmp = zeta;
+    clear zeta;
+    for i = 1:length(typ)
+      zeta{i} = zeta_tmp;
+    end
+  end
+  
   %Alle MatrixBrechenungsArten mit dem selben Netz berechnen
   for i = 1:length(typ)
     disp([num2str(size(elements,1)) ' : ' t2str(toc) ' ->' num2str(i)])
     %Matrix aufbauen -> MEX
-    V_fine = mex_build_V(coo_fine,ele_fine,zeta,typ(i));
+    V_fine = mex_build_V(coo_fine,ele_fine,zeta{i},typ(i));
     
     %Testet auf Fehlerhafte Eintraege (NaN +/-Inf)
     [r c] = find(isnan(V_fine)~=isinf(V_fine));
@@ -82,7 +91,7 @@ for j = 1:times
       sum((x_fine(f2s)'-repmat(sum(x_fine(f2s)',1)/4,4,1)).^2)' /4;
     
     %Fehlerschaetzer 2 aufbauen
-    V = mex_build_V(coordinates,elements,zeta,typ(i));
+    V = mex_build_V(coordinates,elements,zeta{i},typ(i));
     
     if(~vcon)
         x = V\b;
index 5f0b5b1e6f5a0ff7fb75ff46b890a36613361bfc..fb64a2417da648bf2753112f3c374d8f9d250185 100644 (file)
@@ -1,6 +1,6 @@
 function [coo,ele,nei,f2s,sit,err] = refineQuad(coordinates,elements,neigh,sites,typ)
 %
-%  [coordinates,elements,fa2so] = refineQuad(coordinates,elements,type)
+%  [coo,ele,nei,f2s,sit,err] = refineQuad(coordinates,elements,type)
 %
 % Verfeinert die markierten Elemente mit dem entsprechenden TYP und gibt
 % auch die F2S Beziehungen zurück. type muss von der Länge der Anzahl der
index ed26ca5ea9917e76ae504425a1ff0998be3a7849..c51340879f53d4aa7439ec1ee7d74ddd4e5d63f9 100644 (file)
@@ -9,11 +9,11 @@ mex mex_build_V.cpp slpRectangle.cpp CFLAGS="\$CFLAGS -fopenmp" CXXFLAGS="\$CXXF
 % Test ausführen
 
 %Anzahl der Schritte
-steps = 40;
+steps = 10;
 
 %Art der Berechnungen
-type = [1 3];
-zeta = [1 1 2];
+type = [2 2 2 2 2];
+zeta = {[0 2] [1 2] [2 2] [3 2] [4 2]};
 
 
 %% Quad adaptiv anisotrop
@@ -33,7 +33,7 @@ A_plots({['meshSave/' fileo int2str(steps)]},...
     [fileo ...
     int2str(steps)]);
   
-%% BLa bla
+%% Bla bla
 % compute('exmpl_2DQuad', steps, zeta, type, 0.5, 0.5, 1, 'tsAAvcon_')
 
 % %LShape adaptiv isotrop