diff options
Diffstat (limited to 'vorlesungen/slides/8')
-rw-r--r-- | vorlesungen/slides/8/Makefile.inc | 13 | ||||
-rw-r--r-- | vorlesungen/slides/8/chapter.tex | 13 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/Makefile | 8 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/beispiel.tex | 44 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/dilatation.tex | 62 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/dilbei.tex | 46 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/ev.m | 97 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/fourier.tex | 86 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/frame.tex | 66 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/framekonstanten.tex | 71 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/frequenzlokalisierung.tex | 78 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/funktionen.tex | 78 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/gundh.tex | 85 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/laplacebasis.tex | 62 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/lokalisierungsvergleich.tex | 46 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/matrixdilatation.tex | 39 | ||||
-rw-r--r-- | vorlesungen/slides/8/wavelets/vektoren.tex | 200 |
17 files changed, 1094 insertions, 0 deletions
diff --git a/vorlesungen/slides/8/Makefile.inc b/vorlesungen/slides/8/Makefile.inc index 81f91d0..6ac5665 100644 --- a/vorlesungen/slides/8/Makefile.inc +++ b/vorlesungen/slides/8/Makefile.inc @@ -35,5 +35,18 @@ chapter8 = \ ../slides/8/subgraph.tex \ ../slides/8/chrwilf.tex \ ../slides/8/weitere.tex \ + ../slides/8/wavelets/funktionen.tex \ + ../slides/8/wavelets/laplacebasis.tex \ + ../slides/8/wavelets/vektoren.tex \ + ../slides/8/wavelets/fourier.tex \ + ../slides/8/wavelets/lokalisierungsvergleich.tex \ + ../slides/8/wavelets/frequenzlokalisierung.tex \ + ../slides/8/wavelets/dilatation.tex \ + ../slides/8/wavelets/matrixdilatation.tex \ + ../slides/8/wavelets/gundh.tex \ + ../slides/8/wavelets/dilbei.tex \ + ../slides/8/wavelets/frame.tex \ + ../slides/8/wavelets/framekonstanten.tex \ + ../slides/8/wavelets/beispiel.tex \ ../slides/8/chapter.tex diff --git a/vorlesungen/slides/8/chapter.tex b/vorlesungen/slides/8/chapter.tex index 7511e3e..69b7231 100644 --- a/vorlesungen/slides/8/chapter.tex +++ b/vorlesungen/slides/8/chapter.tex @@ -38,3 +38,16 @@ \folie{8/chrwilf.tex} \folie{8/weitere.tex} +\folie{8/wavelets/funktionen.tex} +\folie{8/wavelets/laplacebasis.tex} +\folie{8/wavelets/fourier.tex} +\folie{8/wavelets/lokalisierungsvergleich.tex} +\folie{8/wavelets/frequenzlokalisierung.tex} +\folie{8/wavelets/dilatation.tex} +\folie{8/wavelets/matrixdilatation.tex} +\folie{8/wavelets/gundh.tex} +\folie{8/wavelets/frame.tex} +\folie{8/wavelets/dilbei.tex} +\folie{8/wavelets/framekonstanten.tex} +\folie{8/wavelets/beispiel.tex} + 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]; +} |