aboutsummaryrefslogtreecommitdiffstats
path: root/vorlesungen/slides/8/wavelets
diff options
context:
space:
mode:
authorNao Pross <np@0hm.ch>2021-06-20 19:11:28 +0200
committerNao Pross <np@0hm.ch>2021-06-20 19:11:28 +0200
commit0a850778d935434519f3b3a2a522ee37dcef073b (patch)
tree88476888a1f0a47e5813595beefe50a3f525343c /vorlesungen/slides/8/wavelets
parentRestructure (diff)
parentfix paper/ifs/references.bib (diff)
downloadSeminarMatrizen-0a850778d935434519f3b3a2a522ee37dcef073b.tar.gz
SeminarMatrizen-0a850778d935434519f3b3a2a522ee37dcef073b.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'vorlesungen/slides/8/wavelets')
-rw-r--r--vorlesungen/slides/8/wavelets/Makefile8
-rw-r--r--vorlesungen/slides/8/wavelets/beispiel.tex44
-rw-r--r--vorlesungen/slides/8/wavelets/dilatation.tex62
-rw-r--r--vorlesungen/slides/8/wavelets/dilbei.tex46
-rw-r--r--vorlesungen/slides/8/wavelets/ev.m97
-rw-r--r--vorlesungen/slides/8/wavelets/fourier.tex86
-rw-r--r--vorlesungen/slides/8/wavelets/frame.tex66
-rw-r--r--vorlesungen/slides/8/wavelets/framekonstanten.tex71
-rw-r--r--vorlesungen/slides/8/wavelets/frequenzlokalisierung.tex78
-rw-r--r--vorlesungen/slides/8/wavelets/funktionen.tex78
-rw-r--r--vorlesungen/slides/8/wavelets/gundh.tex85
-rw-r--r--vorlesungen/slides/8/wavelets/laplacebasis.tex62
-rw-r--r--vorlesungen/slides/8/wavelets/lokalisierungsvergleich.tex46
-rw-r--r--vorlesungen/slides/8/wavelets/matrixdilatation.tex39
-rw-r--r--vorlesungen/slides/8/wavelets/vektoren.tex200
15 files changed, 1068 insertions, 0 deletions
diff --git a/vorlesungen/slides/8/wavelets/Makefile b/vorlesungen/slides/8/wavelets/Makefile
new file mode 100644
index 0000000..3b4a5ce
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/Makefile
@@ -0,0 +1,8 @@
+#
+# Makefile
+#
+# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+
+vektoren.tex: ev.m
+ octave ev.m
diff --git a/vorlesungen/slides/8/wavelets/beispiel.tex b/vorlesungen/slides/8/wavelets/beispiel.tex
new file mode 100644
index 0000000..dcc33d4
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/beispiel.tex
@@ -0,0 +1,44 @@
+%
+% beispiel.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\def\bild#1#2{
+\node at (0,0) [rotate=-90]
+{\includegraphics[width=#1\textwidth]{../../../SeminarWavelets/buch/papers/sgwt/images/#2}};
+}
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Wavelets auf einer Kugel}
+\vspace{-10pt}
+\begin{center}
+\begin{tikzpicture}[>=latex,thick]
+
+\only<1>{ \bild{0.6}{wavelets-phi-sphere-334.pdf} }
+
+\only<2>{ \bild{0.6}{wavelets-psi-5-sphere-334.pdf} }
+\only<3>{ \bild{0.6}{wavelets-psi-4-sphere-334.pdf} }
+\only<4>{ \bild{0.6}{wavelets-psi-3-sphere-334.pdf} }
+\only<5>{ \bild{0.6}{wavelets-psi-2-sphere-334.pdf} }
+\only<6>{ \bild{0.6}{wavelets-psi-1-sphere-334.pdf} }
+
+\only<1>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_1$}; }
+\only<2>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_2$}; }
+\only<3>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_3$}; }
+\only<4>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_4$}; }
+\only<5>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_5$}; }
+\only<6>{ \node at (-7.6,2.8) [right] {Tiefpass mit $h$}; }
+
+\only<1>{ \node at (-7.6,2) [right] {$D_{g,1/a_1}\chi_*$}; }
+\only<2>{ \node at (-7.6,2) [right] {$D_{g,1/a_2}\chi_*$}; }
+\only<3>{ \node at (-7.6,2) [right] {$D_{g,1/a_3}\chi_*$}; }
+\only<4>{ \node at (-7.6,2) [right] {$D_{g,1/a_4}\chi_*$}; }
+\only<5>{ \node at (-7.6,2) [right] {$D_{g,1/a_5}\chi_*$}; }
+\only<6>{ \node at (-7.6,2) [right] {$D_{h}\chi_*$}; }
+
+\end{tikzpicture}
+\end{center}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/dilatation.tex b/vorlesungen/slides/8/wavelets/dilatation.tex
new file mode 100644
index 0000000..881f760
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/dilatation.tex
@@ -0,0 +1,62 @@
+%
+% template.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Dilatation}
+\vspace{-20pt}
+\begin{columns}[t,onlytextwidth]
+\begin{column}{0.48\textwidth}
+\begin{block}{Dilatation in $\mathbb{R}$}
+$f\colon \mathbb{R}\to\mathbb{R}$
+Definition im Ortsraum:
+\[
+(D_af)(x)
+=
+\frac{1}{\sqrt{|a|}}
+f\biggl(\frac{x}{a}\biggr)
+\]
+\uncover<2->{%
+Dilatation im Frequenzraum:
+\[
+\widehat{D_af}(\omega)
+=
+D_{1/a}\hat{f}(\omega)
+\]}
+\uncover<3->{%
+Spektrum wird mit $1/a$ skaliert!}
+\end{block}
+\end{column}
+\begin{column}{0.48\textwidth}
+\uncover<4->{%
+\begin{block}{``Dilatation'' auf einem Graphen}
+\begin{itemize}
+\item<5-> Dilatation auf dem Graphen gibt es nicht
+\item<6-> Dilatation im Spektrum $\{\lambda_1,\dots,\lambda_n\}$ gibt es nicht
+\item<7-> ``Spektrale Dilatation'' verwenden
+\begin{enumerate}
+\item<8-> Start: $e_k$
+\item<9-> Fourier-Transformation: $\chi^te_k$
+\item<10-> Spektrum skalieren: mit
+$D_{1/a}g$ filtern
+\item<11-> Rücktransformation
+\[
+D_{g,a}e_k
+=
+\chi
+\uncover<12->{\operatorname{diag}(\tilde{D}_{1/a}g(\lambda_*))
+\chi^t e_k}
+\]
+\end{enumerate}
+\end{itemize}
+
+
+\end{block}}
+\end{column}
+\end{columns}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/dilbei.tex b/vorlesungen/slides/8/wavelets/dilbei.tex
new file mode 100644
index 0000000..fc66a0a
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/dilbei.tex
@@ -0,0 +1,46 @@
+%
+% beispiel.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\def\bild#1#2{
+\node at (0,0) [rotate=-90]
+{\includegraphics[width=#1\textwidth]{../../../SeminarWavelets/buch/papers/sgwt/images/#2}};
+}
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Wavelets einer Strecke}
+\vspace{-10pt}
+\begin{center}
+\begin{tikzpicture}[>=latex,thick]
+
+\only<1>{ \bild{0.6}{wavelets-psi-line-5-10.pdf} }
+\only<2>{ \bild{0.6}{wavelets-psi-line-4-10.pdf} }
+\only<3>{ \bild{0.6}{wavelets-psi-line-3-10.pdf} }
+\only<4>{ \bild{0.6}{wavelets-psi-line-2-10.pdf} }
+\only<5>{ \bild{0.6}{wavelets-psi-line-1-10.pdf} }
+
+\only<6>{ \bild{0.6}{wavelets-phi-line-10.pdf} }
+
+\only<1>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_1$}; }
+\only<2>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_2$}; }
+\only<3>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_3$}; }
+\only<4>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_4$}; }
+\only<5>{ \node at (-7.6,2.8) [right] {Bandpass mit $g_5$}; }
+\only<6>{ \node at (-7.6,2.8) [right] {Tiefpass mit $h$}; }
+
+
+\only<1>{ \node at (-7.6,2) [right] {$D_{g,1/a_1}\chi_*$}; }
+\only<2>{ \node at (-7.6,2) [right] {$D_{g,1/a_2}\chi_*$}; }
+\only<3>{ \node at (-7.6,2) [right] {$D_{g,1/a_3}\chi_*$}; }
+\only<4>{ \node at (-7.6,2) [right] {$D_{g,1/a_4}\chi_*$}; }
+\only<5>{ \node at (-7.6,2) [right] {$D_{g,1/a_5}\chi_*$}; }
+
+\only<6>{ \node at (-7.6,2) [right] {$D_{h}\chi_*$}; }
+
+\end{tikzpicture}
+\end{center}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/ev.m b/vorlesungen/slides/8/wavelets/ev.m
new file mode 100644
index 0000000..7f4dd55
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/ev.m
@@ -0,0 +1,97 @@
+#
+# ev.m
+#
+# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+
+L = [
+ 2, -1, 0, -1, 0;
+ -1, 4, -1, -1, -1;
+ 0, -1, 2, 0, -1;
+ -1, -1, 0, 3, -1;
+ 0, -1, -1, -1, 3
+];
+
+[v, lambda] = eig(L);
+
+function knoten(fn, wert, punkt)
+ if (wert > 0)
+ farbe = sprintf("red!%02d", round(100 * wert));
+ else
+ farbe = sprintf("blue!%02d", round(-100 * wert));
+ end
+ fprintf(fn, "\t\\fill[color=%s] %s circle[radius=0.25];\n",
+ farbe, punkt);
+ fprintf(fn, "\t\\draw %s circle[radius=0.25];\n", punkt);
+endfunction
+
+function vektor(fn, v, name, lambda)
+ fprintf(fn, "\\def\\%s{\n", name);
+ fprintf(fn, "\t\\coordinate (A) at ({0*\\a},0);\n");
+ fprintf(fn, "\t\\coordinate (B) at ({1*\\a},0);\n");
+ fprintf(fn, "\t\\coordinate (C) at ({2*\\a},0);\n");
+ fprintf(fn, "\t\\coordinate (D) at ({0.5*\\a},{-\\b});\n");
+ fprintf(fn, "\t\\coordinate (E) at ({1.5*\\a},{-\\b});\n");
+ fprintf(fn, "\t\\draw (A) -- (B);\n");
+ fprintf(fn, "\t\\draw (A) -- (D);\n");
+ fprintf(fn, "\t\\draw (B) -- (C);\n");
+ fprintf(fn, "\t\\draw (B) -- (D);\n");
+ fprintf(fn, "\t\\draw (B) -- (E);\n");
+ fprintf(fn, "\t\\draw (C) -- (E);\n");
+ fprintf(fn, "\t\\draw (D) -- (E);\n");
+ fprintf(fn, "\t\\node at (-2.8,{-0.5*\\b}) [right] {$\\lambda=%.4f$};\n",
+ round(1000 * abs(lambda)) / 10000);
+ w = v / max(abs(v));
+ knoten(fn, w(1,1), "(A)");
+ knoten(fn, w(2,1), "(B)");
+ knoten(fn, w(3,1), "(C)");
+ knoten(fn, w(4,1), "(D)");
+ knoten(fn, w(5,1), "(E)");
+ fprintf(fn, "}\n");
+endfunction
+
+function punkt(fn, x, wert)
+ fprintf(fn, "({%.4f*\\c},{%.4f*\\d})", x, wert);
+endfunction
+
+function funktion(fn, v, name, lambda)
+ fprintf(fn, "\\def\\%s{\n", name);
+ fprintf(fn, "\t\\draw[color=red,line width=1.4pt]\n\t\t");
+ punkt(fn, -2, v(1,1));
+ fprintf(fn, " --\n\t\t");
+ punkt(fn, -1, v(4,1));
+ fprintf(fn, " --\n\t\t");
+ punkt(fn, 0, v(2,1));
+ fprintf(fn, " --\n\t\t");
+ punkt(fn, 1, v(5,1));
+ fprintf(fn, " --\n\t\t");
+ punkt(fn, 2, v(3,1));
+ fprintf(fn, ";\n");
+ fprintf(fn, "\t\\draw[->] ({-2.1*\\c},0) -- ({2.1*\\c},0);\n");
+ fprintf(fn, "\t\\draw[->] (0,{-1.1*\\d}) -- (0,{1.1*\\d});\n");
+ for x = (-2:2)
+ fprintf(fn, "\t\\fill ({%d*\\c},0) circle[radius=0.05];\n", x);
+ endfor
+ fprintf(fn, "}\n");
+endfunction
+
+fn = fopen("vektoren.tex", "w");
+
+vektor(fn, v(:,1), "vnull", lambda(1,1));
+funktion(fn, v(:,1), "fnull", lambda(1,1));
+
+vektor(fn, v(:,2), "vone", lambda(2,2));
+funktion(fn, v(:,2), "fone", lambda(2,2));
+
+vektor(fn, v(:,3), "vtwo", lambda(3,3));
+funktion(fn, v(:,3), "ftwo", lambda(3,3));
+
+vektor(fn, v(:,4), "vthree", lambda(4,4));
+funktion(fn, v(:,4), "fthree", lambda(4,4));
+
+vektor(fn, v(:,5), "vfour", lambda(5,5));
+funktion(fn, v(:,5), "ffour", lambda(5,5));
+
+fclose(fn);
+
+
diff --git a/vorlesungen/slides/8/wavelets/fourier.tex b/vorlesungen/slides/8/wavelets/fourier.tex
new file mode 100644
index 0000000..3195ec8
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/fourier.tex
@@ -0,0 +1,86 @@
+%
+% fourier.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Fourier-Transformation}
+\vspace{-20pt}
+\begin{columns}[t,onlytextwidth]
+\begin{column}{0.48\textwidth}
+\begin{block}{Aufgabe}
+Gegeben: Funktion $f$ auf dem Graphen
+\\
+\uncover<2->{%
+Gesucht: Koeffizienten $\hat{f}$ der Darstellung in der Laplace-Basis}
+\end{block}
+\uncover<3->{%
+\begin{block}{Definition $\chi$-Matrix}
+Eigenwerte $0=\lambda_1<\lambda_2\le \dots \le \lambda_n$ von $L$
+\vspace{-10pt}
+\begin{center}
+\begin{tikzpicture}
+\node at (-1.9,0) [left] {$\chi=\mathstrut$};
+\node at (0,0) {$\left(\raisebox{0pt}[1.7cm][1.7cm]{\hspace{3.5cm}}\right)$};
+
+\fill[color=blue!20] (-1.7,-1.7) rectangle (-1.1,1.7);
+\draw[color=blue] (-1.7,-1.7) rectangle (-1.1,1.7);
+\node at (-1.4,0) [rotate=90] {$v_1=\mathstrut$EV zum EW $\lambda_1$\strut};
+
+\fill[color=blue!20] (-1.0,-1.7) rectangle (-0.4,1.7);
+\draw[color=blue] (-1.0,-1.7) rectangle (-0.4,1.7);
+\node at (-0.7,0) [rotate=90] {$v_2=\mathstrut$EV zum EW $\lambda_2$\strut};
+
+\fill[color=blue!20] (1.1,-1.7) rectangle (1.7,1.7);
+\draw[color=blue] (1.1,-1.7) rectangle (1.7,1.7);
+\node at (1.4,0) [rotate=90] {$v_n=\mathstrut$EV zum EW $\lambda_n$\strut};
+
+\node at (0.4,0) {$\dots$};
+
+\end{tikzpicture}
+\end{center}
+\end{block}}
+\end{column}
+\begin{column}{0.48\textwidth}
+\uncover<4->{%
+\begin{block}{Transformation}
+$L$ symmetrisch
+\\
+\uncover<5->{$\Rightarrow$
+Die Eigenvektoren von $L$ können orthonormiert gewählt werden}
+\\
+\uncover<6->{$\Rightarrow$
+Koeffizienten können durch Skalarprodukte ermittelt werden:}
+\uncover<7->{%
+\[
+\hat{f}(k)
+=
+\hat{f}(\lambda_k)
+\uncover<8->{=
+\langle v_k, f\rangle
+\quad\Rightarrow\quad
+\hat{f}}
+\uncover<9->{=
+\chi^tf}
+\]}
+\uncover<10->{%
+$\chi$ ist die {\em Fourier-Transformation}}
+\end{block}}
+\uncover<11->{%
+\begin{block}{Rücktransformation}
+Eigenvektoren orthonormiert
+\\
+\uncover<12->{$\Rightarrow$
+$\chi$ orthogonal}
+\uncover<13->{
+\[
+\chi\chi^t = I
+\]}
+\end{block}}
+\end{column}
+\end{columns}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/frame.tex b/vorlesungen/slides/8/wavelets/frame.tex
new file mode 100644
index 0000000..4d0c7d1
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/frame.tex
@@ -0,0 +1,66 @@
+%
+% template.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Graph Wavelet Frame}
+\vspace{-20pt}
+\begin{columns}[t,onlytextwidth]
+\begin{column}{0.48\textwidth}
+\begin{block}{Frame-Vektoren}
+Zu Dilatationsfaktoren $A=\{a_i\,|\,i=1,\dots,N\}$
+konstruiere das Frame
+\begin{align*}
+F=
+\{&D_he_1,\dots,D_he_n,\\
+ &Dg_1e_1,\dots,Dg_1e_n,\\
+ &Dg_2e_1,\dots,Dg_2e_n,\\
+ &\dots\\
+ &Dg_Ne_1,\dots,Dg_Ne_n\}
+\end{align*}
+\uncover<2->{Notation:
+\begin{align*}
+v_{0,k}
+&=
+D_he_k
+\\
+v_{i,k}
+&=
+Dg_ie_k
+\end{align*}}
+\end{block}
+\end{column}
+\begin{column}{0.48\textwidth}
+\uncover<3->{%
+\begin{block}{Frameoperator}
+\begin{align*}
+\mathcal{T}\colon \mathbb{R}^n\to\mathbb{R}^{nN}
+:
+v
+&\mapsto
+\begin{pmatrix}
+\uncover<4->{\langle D_he_1,v\rangle}\\
+\uncover<4->{\vdots}\\
+\uncover<4->{\langle D_he_n,v\rangle}\\
+\hline
+\uncover<5->{\langle D_{g_1}e_1,v\rangle}\\
+\uncover<5->{\vdots}\\
+\uncover<5->{\langle D_{g_1}e_n,v\rangle}\\
+\hline
+\uncover<6->{\vdots}\\
+\uncover<6->{\vdots}\\
+\hline
+\uncover<7->{\langle D_{g_N}e_1,v\rangle}\\
+\uncover<7->{\vdots}\\
+\uncover<7->{\langle D_{g_N}e_n,v\rangle}
+\end{pmatrix}
+\end{align*}
+\end{block}}
+\end{column}
+\end{columns}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/framekonstanten.tex b/vorlesungen/slides/8/wavelets/framekonstanten.tex
new file mode 100644
index 0000000..a436536
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/framekonstanten.tex
@@ -0,0 +1,71 @@
+%
+% template.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\begin{frame}[t]
+%\setlength{\abovedisplayskip}{5pt}
+%\setlength{\belowdisplayskip}{5pt}
+\frametitle{Framekonstanten}
+\vspace{-20pt}
+\begin{columns}[t,onlytextwidth]
+\begin{column}{0.48\textwidth}
+\begin{block}{Definition}
+Eine Menge $\mathcal{F}$ von Vektoren heisst ein Frame,
+falls es Konstanten $A$ und $B$ gibt derart, dass
+\[
+A\|v\|^2
+\le
+\|\mathcal{T}v\|^2
+\sum_{b\in\mathcal{F}} |\langle b,v\rangle|^2
+\le
+B\|v\|^2
+\]
+\uncover<2->{$A>0$ garantiert Invertierbarkeit}
+\end{block}
+\uncover<3->{%
+\begin{block}{$\|\mathcal{T}v\|$ für Graph-Wavelets}
+\begin{align*}
+\|\mathcal{T}v\|^2
+&=
+\sum_k |\langle D_he_k,v\rangle|^2
++
+\sum_{i,k} |\langle D_{g_i}e_k, v\rangle|^2
+\\
+&\uncover<4->{=
+\sum_k |h(\lambda_k) \hat{v}(k)|^2
++
+\sum_{k,i} |g_i(\lambda_k) \hat{v}(k)|^2}
+\end{align*}
+\end{block}}
+\end{column}
+\begin{column}{0.48\textwidth}
+\uncover<5->{%
+\begin{block}{$A$ und $B$}
+Frame-Norm-Funktion
+\begin{align*}
+f(\lambda)
+&=
+h(\lambda)
++
+\sum_i g_i(\lambda)
+\\
+&\uncover<6->{=
+h(\lambda)
++
+\sum_i g(a_i\lambda)}
+\end{align*}
+\uncover<7->{Abschätzung für Frame-Konstanten
+\begin{align*}
+A&\uncover<8->{=
+\min_{i} f(\lambda_i)}
+\\
+B&\uncover<9->{=
+\max_{i} f(\lambda_i)}
+\end{align*}}
+\end{block}}
+\end{column}
+\end{columns}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/frequenzlokalisierung.tex b/vorlesungen/slides/8/wavelets/frequenzlokalisierung.tex
new file mode 100644
index 0000000..c78e6dd
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/frequenzlokalisierung.tex
@@ -0,0 +1,78 @@
+%
+% frequenzlokalisierung.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+
+\def\kurve#1#2{
+ \draw[color=#2,line width=1.4pt]
+ plot[domain=0:6.3,samples=400]
+ ({\x},{7*\x*exp(-(\x/#1)*(\x/#1))/#1});
+}
+\definecolor{darkgreen}{rgb}{0,0.6,0}
+
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Lokalisierung}
+\vspace{-20pt}
+\begin{columns}[t,onlytextwidth]
+\begin{column}{0.48\textwidth}
+\begin{block}{Bandpass}
+Gegeben durch $g(\lambda)\ge 0$:
+\begin{align*}
+g(0) &= 0\\
+\lim_{\lambda\to\infty}g(\lambda)&= 0
+\end{align*}
+\vspace{-10pt}
+\begin{enumerate}
+\item<3-> Fourier-transformieren
+\item<4-> Amplituden mit $g(\lambda)$ multiplizieren
+\item<5-> Rücktransformieren
+\end{enumerate}
+\end{block}
+\end{column}
+\begin{column}{0.48\textwidth}
+\uncover<6->{%
+\begin{block}{Tiefpass}
+Gegeben durch $h(\lambda)\ge0$:
+\begin{align*}
+h(0) &= 1\\
+\lim_{\lambda\to\infty}h(\lambda)&= 0
+\end{align*}
+\vspace{-10pt}
+\begin{enumerate}
+\item<8-> Fourier-Transformation
+\item<9-> Amplituden mit $h(\lambda)$ multiplizieren
+\item<10-> Rücktransformation
+\end{enumerate}
+\end{block}}
+\end{column}
+\end{columns}
+\begin{center}
+\begin{tikzpicture}[>=latex,thick,scale=0.8]
+
+\uncover<2->{
+\begin{scope}[xshift=-4.5cm]
+\draw[->] (-0.1,0) -- (6.6,0) coordinate[label={$\lambda$}];
+\kurve{3}{red}
+\draw[->] (0,-0.1) -- (0,3.3);
+\end{scope}
+}
+
+\uncover<7->{
+\begin{scope}[xshift=4.5cm]
+\draw[->] (-0.1,0) -- (6.6,0) coordinate[label={$\lambda$}];
+\draw[color=darkgreen,line width=1.4pt]
+ plot[domain=0:6.3,samples=100]
+ ({\x},{3*exp(-(\x/0.5)*(\x/0.5)});
+
+\draw[->] (0,-0.1) -- (0,3.3) coordinate[label={right:$\color{darkgreen}h(\lambda)$}];
+\end{scope}
+}
+
+\end{tikzpicture}
+\end{center}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/funktionen.tex b/vorlesungen/slides/8/wavelets/funktionen.tex
new file mode 100644
index 0000000..2e3ae9b
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/funktionen.tex
@@ -0,0 +1,78 @@
+%
+% funktionen.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\def\knoten#1#2{
+ \draw #1 circle[radius=0.25];
+ \node at #1 {$#2$};
+}
+\def\kante#1#2{
+ \draw[shorten >= 0.25cm,shorten <= 0.25cm] #1 -- #2;
+}
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Funktionen auf einem Graphen}
+\vspace{-20pt}
+\begin{columns}[t,onlytextwidth]
+\begin{column}{0.48\textwidth}
+\begin{block}{Definition}
+Ein Graph $G=(V,E)$, eine Funktion auf dem Graphen ist
+\[
+f\colon V \to \mathbb{R} : v\mapsto f(v)
+\]
+Knoten: $V=\{1,\dots,n\}$
+\\
+\uncover<2->{%
+Vektorschreibweise
+\[
+f = \begin{pmatrix}
+f(1)\\f(2)\\\vdots\\f(n)
+\end{pmatrix}
+\]}
+\end{block}
+\end{column}
+\begin{column}{0.48\textwidth}
+\uncover<3->{%
+\begin{block}{Matrizen}
+Adjazenz-, Grad- und Laplace-Matrix operieren auf Funktionen auf Graphen:
+\[
+L
+=
+\begin{pmatrix*}[r]
+ 2&-1& 0&-1& 0\\
+-1& 4&-1&-1&-1\\
+ 0&-1& 2& 0&-1\\
+-1&-1& 0& 3&-1\\
+ 0&-1&-1&-1& 3\\
+\end{pmatrix*}
+\]
+\end{block}
+\begin{center}
+\begin{tikzpicture}[>=latex,thick]
+\def\a{2}
+\coordinate (A) at (0,0);
+\coordinate (B) at (\a,0);
+\coordinate (C) at ({2*\a},0);
+\coordinate (D) at ({0.5*\a},{-0.5*sqrt(3)*\a});
+\coordinate (E) at ({1.5*\a},{-0.5*sqrt(3)*\a});
+\knoten{(A)}{1}
+\knoten{(B)}{2}
+\knoten{(C)}{3}
+\knoten{(D)}{4}
+\knoten{(E)}{5}
+\kante{(A)}{(B)}
+\kante{(B)}{(C)}
+\kante{(A)}{(D)}
+\kante{(B)}{(D)}
+\kante{(B)}{(E)}
+\kante{(C)}{(E)}
+\kante{(D)}{(E)}
+\end{tikzpicture}
+\end{center}}
+\end{column}
+\end{columns}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/gundh.tex b/vorlesungen/slides/8/wavelets/gundh.tex
new file mode 100644
index 0000000..2d6c677
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/gundh.tex
@@ -0,0 +1,85 @@
+%
+% template.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\definecolor{darkgreen}{rgb}{0,0.6,0}
+
+\def\kurve#1#2{
+ \draw[color=#2,line width=1.4pt]
+ plot[domain=0:6.3,samples=400]
+ ({\x},{7*\x*exp(-(\x/#1)*(\x/#1))/#1});
+}
+
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Wavelets}
+\vspace{-20pt}
+\begin{columns}[t,onlytextwidth]
+\begin{column}{0.48\textwidth}
+\begin{block}{Mutterwavelets + Dilatation}
+Eine Menge von Dilatationsfaktoren
+\[
+A= \{a_1,a_2,\dots,a_N\}
+\]
+wählen\uncover<2->{, und mit Funktionen
+\[
+{\color{blue}g_i} = \tilde{D}_{1/a_i}{\color{red}g}
+\]
+die Standardbasisvektoren filtern}
+\end{block}
+\end{column}
+\begin{column}{0.48\textwidth}
+\uncover<5->{
+\begin{block}{Vaterwavelets}
+Tiefpass mit Funktion ${\color{darkgreen}h(\lambda)}$,
+Standardbasisvektoren mit ${\color{darkgreen}h}$ filtern:
+\[
+D_{\color{darkgreen}h}e_k
+\]
+\end{block}}
+\end{column}
+\end{columns}
+\begin{center}
+\begin{tikzpicture}[>=latex,thick]
+\begin{scope}
+
+\draw[->] (-0.1,0) -- (6.6,0) coordinate[label={$\lambda$}];
+
+\kurve{1}{red}
+\uncover<4->{
+\foreach \k in {0,...,4}{
+ \pgfmathparse{0.30*exp(ln(2)*\k)}
+ \xdef\l{\pgfmathresult}
+ \kurve{\l}{blue}
+}
+}
+
+\node[color=red] at ({0.7*1},3) [above] {$g(\lambda)$};
+\uncover<4->{
+\node[color=blue] at ({0.7*0.3*16},3) [above] {$g_i(\lambda)$};
+}
+
+\draw[->] (0,-0.1) -- (0,3.3);
+\end{scope}
+
+\begin{scope}[xshift=7cm]
+
+\uncover<6->{
+\draw[->] (-0.1,0) -- (6.6,0) coordinate[label={$\lambda$}];
+
+\draw[color=darkgreen,line width=1.4pt]
+ plot[domain=0:6.3,samples=100]
+ ({\x},{3*exp(-(\x/0.5)*(\x/0.5)});
+
+\draw[->] (0,-0.1) -- (0,3.3) coordinate[label={right:$\color{darkgreen}h(\lambda)$}];
+}
+
+\end{scope}
+
+\end{tikzpicture}
+\end{center}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/laplacebasis.tex b/vorlesungen/slides/8/wavelets/laplacebasis.tex
new file mode 100644
index 0000000..ced4c09
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/laplacebasis.tex
@@ -0,0 +1,62 @@
+%
+% template.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\def\a{2}
+\def\b{0.8}
+\def\c{1}
+\def\d{0.6}
+\input{../slides/8/wavelets/vektoren.tex}
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Laplace-Basis}
+\begin{center}
+\begin{tikzpicture}[>=latex,thick]
+
+\begin{scope}[yshift=-0.4cm,xshift=-5.5cm]
+\fnull
+\end{scope}
+
+\begin{scope}[yshift=-1.8cm,xshift=-5.5cm]
+\fone
+\end{scope}
+
+\begin{scope}[yshift=-3.2cm,xshift=-5.5cm]
+\ftwo
+\end{scope}
+
+\begin{scope}[yshift=-4.6cm,xshift=-5.5cm]
+\fthree
+\end{scope}
+
+\begin{scope}[yshift=-6.0cm,xshift=-5.5cm]
+\ffour
+\end{scope}
+
+\begin{scope}[yshift=0cm]
+\vnull
+\end{scope}
+
+\begin{scope}[yshift=-1.4cm]
+\vone
+\end{scope}
+
+\begin{scope}[yshift=-2.8cm]
+\vtwo
+\end{scope}
+
+\begin{scope}[yshift=-4.2cm]
+\vthree
+\end{scope}
+
+\begin{scope}[yshift=-5.6cm]
+\vfour
+\end{scope}
+
+\end{tikzpicture}
+\end{center}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/lokalisierungsvergleich.tex b/vorlesungen/slides/8/wavelets/lokalisierungsvergleich.tex
new file mode 100644
index 0000000..d6575d0
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/lokalisierungsvergleich.tex
@@ -0,0 +1,46 @@
+%
+% lokalisierungsvergleich.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Lokalisierung}
+\vspace{-20pt}
+\begin{columns}[t,onlytextwidth]
+\begin{column}{0.48\textwidth}
+\begin{block}{Ortsraum}
+Ortsraum$\mathstrut=V$
+\begin{itemize}
+\item<3-> Standardbasis
+\item<5-> lokalisiert in den Knoten
+\item<7-> die meisten $\hat{f}(k)$ gross
+\item<9-> vollständig delokalisiert im Frequenzraum
+\end{itemize}
+\end{block}
+\end{column}
+\begin{column}{0.48\textwidth}
+\begin{block}{Frequenzraum}
+\uncover<2->{Frequenzraum $\mathstrut=\{\lambda_1,\lambda_2,\dots,\lambda_n\}$}
+\begin{itemize}
+\item<4-> Laplace-Basis
+\item<6-> lokalisiert in den Eigenwerten
+\item<8-> die meisten Komponenten gross
+\item<10-> vollständig delokalisiert im Ortsraum
+\end{itemize}
+\end{block}
+\end{column}
+\end{columns}
+\uncover<11->{%
+\begin{block}{Plan}
+Gesucht sind Funktionen auf dem Graphen derart, die
+\begin{enumerate}
+\item<12-> in der Nähe einzelner Knoten konzentriert/lokalisiert sind und
+\item<13-> deren Fourier-Transformation in der Nähe einzelner Eigenwerte
+konzentriert/lokalisiert ist
+\end{enumerate}
+\end{block}}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/matrixdilatation.tex b/vorlesungen/slides/8/wavelets/matrixdilatation.tex
new file mode 100644
index 0000000..3536736
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/matrixdilatation.tex
@@ -0,0 +1,39 @@
+%
+% matrixdilatation.tex -- slide template
+%
+% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+%
+\bgroup
+\begin{frame}[t]
+\setlength{\abovedisplayskip}{5pt}
+\setlength{\belowdisplayskip}{5pt}
+\frametitle{Dilatation in Matrixform}
+Dilatationsfaktor $a$, skaliertes Wavelet beim Knoten $k$ mit Spektrum
+$\tilde{D}_{1/a}g$
+\begin{align*}
+D_{g,a}e_k
+&=
+\chi
+\begin{pmatrix}
+g(a\lambda_1)& 0 & \dots & 0 \\
+ 0 &g(a\lambda_2)& \dots & 0 \\
+ \vdots & \vdots & \ddots & \vdots \\
+ 0 & 0 & \dots &g(a\lambda_n)
+\end{pmatrix}
+\chi^t
+e_k
+\intertext{\uncover<2->{``verschmierter'' Standardbasisvektor am Knoten $k$}}
+\uncover<2->{D_he_k
+&=
+\chi
+\begin{pmatrix}
+h(\lambda_1)& 0 & \dots & 0 \\
+ 0 &h(\lambda_2)& \dots & 0 \\
+ \vdots & \vdots & \ddots & \vdots \\
+ 0 & 0 & \dots &h(\lambda_n)
+\end{pmatrix}
+\chi^t
+e_k}
+\end{align*}
+\end{frame}
+\egroup
diff --git a/vorlesungen/slides/8/wavelets/vektoren.tex b/vorlesungen/slides/8/wavelets/vektoren.tex
new file mode 100644
index 0000000..2315d53
--- /dev/null
+++ b/vorlesungen/slides/8/wavelets/vektoren.tex
@@ -0,0 +1,200 @@
+\def\vnull{
+ \coordinate (A) at ({0*\a},0);
+ \coordinate (B) at ({1*\a},0);
+ \coordinate (C) at ({2*\a},0);
+ \coordinate (D) at ({0.5*\a},{-\b});
+ \coordinate (E) at ({1.5*\a},{-\b});
+ \draw (A) -- (B);
+ \draw (A) -- (D);
+ \draw (B) -- (C);
+ \draw (B) -- (D);
+ \draw (B) -- (E);
+ \draw (C) -- (E);
+ \draw (D) -- (E);
+ \node at (-2.8,{-0.5*\b}) [right] {$\lambda=0.0000$};
+ \fill[color=red!100] (A) circle[radius=0.25];
+ \draw (A) circle[radius=0.25];
+ \fill[color=red!100] (B) circle[radius=0.25];
+ \draw (B) circle[radius=0.25];
+ \fill[color=red!100] (C) circle[radius=0.25];
+ \draw (C) circle[radius=0.25];
+ \fill[color=red!100] (D) circle[radius=0.25];
+ \draw (D) circle[radius=0.25];
+ \fill[color=red!100] (E) circle[radius=0.25];
+ \draw (E) circle[radius=0.25];
+}
+\def\fnull{
+ \draw[color=red,line width=1.4pt]
+ ({-2.0000*\c},{0.4472*\d}) --
+ ({-1.0000*\c},{0.4472*\d}) --
+ ({0.0000*\c},{0.4472*\d}) --
+ ({1.0000*\c},{0.4472*\d}) --
+ ({2.0000*\c},{0.4472*\d});
+ \draw[->] ({-2.1*\c},0) -- ({2.1*\c},0);
+ \draw[->] (0,{-1.1*\d}) -- (0,{1.1*\d});
+ \fill ({-2*\c},0) circle[radius=0.05];
+ \fill ({-1*\c},0) circle[radius=0.05];
+ \fill ({0*\c},0) circle[radius=0.05];
+ \fill ({1*\c},0) circle[radius=0.05];
+ \fill ({2*\c},0) circle[radius=0.05];
+}
+\def\vone{
+ \coordinate (A) at ({0*\a},0);
+ \coordinate (B) at ({1*\a},0);
+ \coordinate (C) at ({2*\a},0);
+ \coordinate (D) at ({0.5*\a},{-\b});
+ \coordinate (E) at ({1.5*\a},{-\b});
+ \draw (A) -- (B);
+ \draw (A) -- (D);
+ \draw (B) -- (C);
+ \draw (B) -- (D);
+ \draw (B) -- (E);
+ \draw (C) -- (E);
+ \draw (D) -- (E);
+ \node at (-2.8,{-0.5*\b}) [right] {$\lambda=0.1586$};
+ \fill[color=blue!100] (A) circle[radius=0.25];
+ \draw (A) circle[radius=0.25];
+ \fill[color=blue!00] (B) circle[radius=0.25];
+ \draw (B) circle[radius=0.25];
+ \fill[color=red!100] (C) circle[radius=0.25];
+ \draw (C) circle[radius=0.25];
+ \fill[color=blue!41] (D) circle[radius=0.25];
+ \draw (D) circle[radius=0.25];
+ \fill[color=red!41] (E) circle[radius=0.25];
+ \draw (E) circle[radius=0.25];
+}
+\def\fone{
+ \draw[color=red,line width=1.4pt]
+ ({-2.0000*\c},{-0.6533*\d}) --
+ ({-1.0000*\c},{-0.2706*\d}) --
+ ({0.0000*\c},{-0.0000*\d}) --
+ ({1.0000*\c},{0.2706*\d}) --
+ ({2.0000*\c},{0.6533*\d});
+ \draw[->] ({-2.1*\c},0) -- ({2.1*\c},0);
+ \draw[->] (0,{-1.1*\d}) -- (0,{1.1*\d});
+ \fill ({-2*\c},0) circle[radius=0.05];
+ \fill ({-1*\c},0) circle[radius=0.05];
+ \fill ({0*\c},0) circle[radius=0.05];
+ \fill ({1*\c},0) circle[radius=0.05];
+ \fill ({2*\c},0) circle[radius=0.05];
+}
+\def\vtwo{
+ \coordinate (A) at ({0*\a},0);
+ \coordinate (B) at ({1*\a},0);
+ \coordinate (C) at ({2*\a},0);
+ \coordinate (D) at ({0.5*\a},{-\b});
+ \coordinate (E) at ({1.5*\a},{-\b});
+ \draw (A) -- (B);
+ \draw (A) -- (D);
+ \draw (B) -- (C);
+ \draw (B) -- (D);
+ \draw (B) -- (E);
+ \draw (C) -- (E);
+ \draw (D) -- (E);
+ \node at (-2.8,{-0.5*\b}) [right] {$\lambda=0.3000$};
+ \fill[color=red!100] (A) circle[radius=0.25];
+ \draw (A) circle[radius=0.25];
+ \fill[color=blue!00] (B) circle[radius=0.25];
+ \draw (B) circle[radius=0.25];
+ \fill[color=red!100] (C) circle[radius=0.25];
+ \draw (C) circle[radius=0.25];
+ \fill[color=blue!100] (D) circle[radius=0.25];
+ \draw (D) circle[radius=0.25];
+ \fill[color=blue!100] (E) circle[radius=0.25];
+ \draw (E) circle[radius=0.25];
+}
+\def\ftwo{
+ \draw[color=red,line width=1.4pt]
+ ({-2.0000*\c},{0.5000*\d}) --
+ ({-1.0000*\c},{-0.5000*\d}) --
+ ({0.0000*\c},{-0.0000*\d}) --
+ ({1.0000*\c},{-0.5000*\d}) --
+ ({2.0000*\c},{0.5000*\d});
+ \draw[->] ({-2.1*\c},0) -- ({2.1*\c},0);
+ \draw[->] (0,{-1.1*\d}) -- (0,{1.1*\d});
+ \fill ({-2*\c},0) circle[radius=0.05];
+ \fill ({-1*\c},0) circle[radius=0.05];
+ \fill ({0*\c},0) circle[radius=0.05];
+ \fill ({1*\c},0) circle[radius=0.05];
+ \fill ({2*\c},0) circle[radius=0.05];
+}
+\def\vthree{
+ \coordinate (A) at ({0*\a},0);
+ \coordinate (B) at ({1*\a},0);
+ \coordinate (C) at ({2*\a},0);
+ \coordinate (D) at ({0.5*\a},{-\b});
+ \coordinate (E) at ({1.5*\a},{-\b});
+ \draw (A) -- (B);
+ \draw (A) -- (D);
+ \draw (B) -- (C);
+ \draw (B) -- (D);
+ \draw (B) -- (E);
+ \draw (C) -- (E);
+ \draw (D) -- (E);
+ \node at (-2.8,{-0.5*\b}) [right] {$\lambda=0.4414$};
+ \fill[color=red!41] (A) circle[radius=0.25];
+ \draw (A) circle[radius=0.25];
+ \fill[color=red!00] (B) circle[radius=0.25];
+ \draw (B) circle[radius=0.25];
+ \fill[color=blue!41] (C) circle[radius=0.25];
+ \draw (C) circle[radius=0.25];
+ \fill[color=blue!100] (D) circle[radius=0.25];
+ \draw (D) circle[radius=0.25];
+ \fill[color=red!100] (E) circle[radius=0.25];
+ \draw (E) circle[radius=0.25];
+}
+\def\fthree{
+ \draw[color=red,line width=1.4pt]
+ ({-2.0000*\c},{0.2706*\d}) --
+ ({-1.0000*\c},{-0.6533*\d}) --
+ ({0.0000*\c},{0.0000*\d}) --
+ ({1.0000*\c},{0.6533*\d}) --
+ ({2.0000*\c},{-0.2706*\d});
+ \draw[->] ({-2.1*\c},0) -- ({2.1*\c},0);
+ \draw[->] (0,{-1.1*\d}) -- (0,{1.1*\d});
+ \fill ({-2*\c},0) circle[radius=0.05];
+ \fill ({-1*\c},0) circle[radius=0.05];
+ \fill ({0*\c},0) circle[radius=0.05];
+ \fill ({1*\c},0) circle[radius=0.05];
+ \fill ({2*\c},0) circle[radius=0.05];
+}
+\def\vfour{
+ \coordinate (A) at ({0*\a},0);
+ \coordinate (B) at ({1*\a},0);
+ \coordinate (C) at ({2*\a},0);
+ \coordinate (D) at ({0.5*\a},{-\b});
+ \coordinate (E) at ({1.5*\a},{-\b});
+ \draw (A) -- (B);
+ \draw (A) -- (D);
+ \draw (B) -- (C);
+ \draw (B) -- (D);
+ \draw (B) -- (E);
+ \draw (C) -- (E);
+ \draw (D) -- (E);
+ \node at (-2.8,{-0.5*\b}) [right] {$\lambda=0.5000$};
+ \fill[color=red!25] (A) circle[radius=0.25];
+ \draw (A) circle[radius=0.25];
+ \fill[color=blue!100] (B) circle[radius=0.25];
+ \draw (B) circle[radius=0.25];
+ \fill[color=red!25] (C) circle[radius=0.25];
+ \draw (C) circle[radius=0.25];
+ \fill[color=red!25] (D) circle[radius=0.25];
+ \draw (D) circle[radius=0.25];
+ \fill[color=red!25] (E) circle[radius=0.25];
+ \draw (E) circle[radius=0.25];
+}
+\def\ffour{
+ \draw[color=red,line width=1.4pt]
+ ({-2.0000*\c},{0.2236*\d}) --
+ ({-1.0000*\c},{0.2236*\d}) --
+ ({0.0000*\c},{-0.8944*\d}) --
+ ({1.0000*\c},{0.2236*\d}) --
+ ({2.0000*\c},{0.2236*\d});
+ \draw[->] ({-2.1*\c},0) -- ({2.1*\c},0);
+ \draw[->] (0,{-1.1*\d}) -- (0,{1.1*\d});
+ \fill ({-2*\c},0) circle[radius=0.05];
+ \fill ({-1*\c},0) circle[radius=0.05];
+ \fill ({0*\c},0) circle[radius=0.05];
+ \fill ({1*\c},0) circle[radius=0.05];
+ \fill ({2*\c},0) circle[radius=0.05];
+}