aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--buch/papers/ellfilter/main.tex370
-rw-r--r--buch/papers/ellfilter/packages.tex3
-rw-r--r--buch/papers/ellfilter/python/chebychef.py65
-rw-r--r--buch/papers/ellfilter/python/elliptic.py316
-rw-r--r--buch/papers/ellfilter/python/elliptic2.py78
-rw-r--r--buch/papers/ellfilter/references.bib32
-rw-r--r--buch/papers/ellfilter/teil0.tex28
-rw-r--r--buch/papers/ellfilter/teil1.tex90
-rw-r--r--buch/papers/ellfilter/teil2.tex64
-rw-r--r--buch/papers/ellfilter/teil3.tex64
-rw-r--r--buch/papers/ellfilter/tikz/arccos.tikz.tex97
-rw-r--r--buch/papers/ellfilter/tikz/arccos2.tikz.tex46
12 files changed, 1084 insertions, 169 deletions
diff --git a/buch/papers/ellfilter/main.tex b/buch/papers/ellfilter/main.tex
index 26aaec1..29ebf7a 100644
--- a/buch/papers/ellfilter/main.tex
+++ b/buch/papers/ellfilter/main.tex
@@ -8,29 +8,361 @@
\begin{refsection}
\chapterauthor{Nicolas Tobler}
-Ein paar Hinweise für die korrekte Formatierung des Textes
-\begin{itemize}
-\item
-Absätze werden gebildet, indem man eine Leerzeile einfügt.
-Die Verwendung von \verb+\\+ ist nur in Tabellen und Arrays gestattet.
-\item
-Die explizite Platzierung von Bildern ist nicht erlaubt, entsprechende
-Optionen werden gelöscht.
-Verwenden Sie Labels und Verweise, um auf Bilder hinzuweisen.
-\item
-Beginnen Sie jeden Satz auf einer neuen Zeile.
-Damit ermöglichen Sie dem Versionsverwaltungssysteme, Änderungen
-in verschiedenen Sätzen von verschiedenen Autoren ohne Konflikt
-anzuwenden.
-\item
-Bilden Sie auch für Formeln kurze Zeilen, einerseits der besseren
-Übersicht wegen, aber auch um GIT die Arbeit zu erleichtern.
-\end{itemize}
+
+\section{Einleitung}
+
+Lineare filter
+
+Filter, Signalverarbeitung
+
+
+Der womöglich wichtigste Filtertyp ist das Tiefpassfilter.
+Dieses soll im Durchlassbereich unter der Grenzfrequenz $\Omega_p$ unverstärkt durchlassen und alle anderen Frequenzen vollständig auslöschen.
+
+Bei der Implementierung von Filtern
+
+
+In der Elektrotechnik führen Schaltungen mit linearen Bauelementen wie Kondensatoren, Spulen und Widerständen immer zu linearen zeitinvarianten Systemen (LTI-System von englich \textit{time-invariant system}).
+Die Übertragungsfunktion im Frequenzbereich $|H(\Omega)|$ eines solchen Systems ist dabei immer eine rationale Funktion, also eine Division von zwei Polynomen.
+Die Polynome habe dabei immer reelle oder komplex-konjugierte Nullstellen.
+
+
+\begin{equation} \label{ellfilter:eq:h_omega}
+ | H(\Omega)|^2 = \frac{1}{1 + \varepsilon_p^2 F_N^2(w)}, \quad w=\frac{\Omega}{\Omega_p}
+\end{equation}
+
+$\Omega = 2 \pi f$ ist die analoge Frequenz
+
+
+% Linear filter
+Damit das Filter implementierbar und stabil ist, muss $H(\Omega)^2$ eine rationale Funktion sein, deren Nullstellen und Pole auf der linken Halbebene liegen.
+
+$N \in \mathbb{N} $ gibt dabei die Ordnung des Filters vor, also die maximale Anzahl Pole oder Nullstellen.
+
+% In \eqref{ellfilter:eq:h_omega} wird $F_N(w)$ so verzogen, dass $F_N(w) \forall |w| < 1$
+
+
+Damit ein Filter die Passband Kondition erfüllt muss $|F_N(w)| \leq 1 \forall |w| \leq 1$ und für $|w| \geq 1$ sollte die Funktion möglichst schnell divergieren.
+Eine einfaches Polynom, dass das erfüllt, erhalten wir wenn $F_N(w) = w^N$.
+Tatsächlich erhalten wir damit das Butterworth Filter, wie in Abbildung \ref{ellfilter:fig:butterworth} ersichtlich.
+\begin{figure}
+ \centering
+ \includegraphics[scale=1]{papers/ellfilter/python/F_N_butterworth.pdf}
+ \caption{$F_N$ für Butterworth filter. Der grüne Bereich definiert die erlaubten Werte für alle $F_N$-Funktionen.}
+ \label{ellfilter:fig:butterworth}
+\end{figure}
+
+wenn $F_N(w)$ eine rationale Funktion ist, ist auch $H(\Omega)$ eine rationale Funktion und daher ein lineares Filter. %proof?
+
+\begin{align}
+ F_N(w) & =
+ \begin{cases}
+ w^N & \text{Butterworth} \\
+ T_N(w) & \text{Tschebyscheff, Typ 1} \\
+ [k_1 T_N (k^{-1} w^{-1})]^{-1} & \text{Tschebyscheff, Typ 2} \\
+ R_N(w) & \text{Elliptisch (Cauer)} \\
+ \end{cases}
+\end{align}
+
+Mit der Ausnahme vom Butterworth filter sind alle Filter nach speziellen Funktionen benannt.
+Alle diese Filter sind optimal für unterschiedliche Anwendungsgebiete.
+Das Butterworth-Filter, zum Beispiel, ist maximal flach im Durchlassbereich.
+Das Tschebyscheff-1 Filter sind maximal steil für eine definierte Welligkeit im Durchlassbereich, währendem es im Sperrbereich monoton abfallend ist.
+Es scheint so als sind gewisse Eigenschaften dieser speziellen Funktionen verantwortlich für die Optimalität dieser Filter.
+
+\section{Tschebyscheff-Filter}
+
+Als Einstieg betrachent Wir das Tschebyscheff-Filter, welches sehr verwand ist mit dem elliptischen Filter.
+Genauer ausgedrückt sind die Tschebyscheff-1 und -2 Fitler ein Spezialfall davon.
+
+Der Name des Filters deutet schon an, dass die Tschebyschff-Polynome $T_N$ relevant sind für das Filter:
+\begin{align}
+ T_{0}(x)&=1\\
+ T_{1}(x)&=x\\
+ T_{2}(x)&=2x^{2}-1\\
+ T_{3}(x)&=4x^{3}-3x\\
+ T_{n+1}(x)&=2x~T_{n}(x)-T_{n-1}(x).
+\end{align}
+Bemerkenswert ist, dass die Polynome im Intervall $[-1, 1]$ mit der Trigonometrischen Funktion
+\begin{equation} \label{ellfilter:eq:chebychef_polynomials}
+ T_N(w) = \cos \left( N \cos^{-1}(w) \right)
+\end{equation}
+übereinstimmt.
+Abbildung \ref{ellfilter:fig:chebychef_polynomials} zeigt einige Tschebyscheff-Polynome.
+\begin{figure}
+ \centering
+ \includegraphics[scale=1]{papers/ellfilter/python/F_N_chebychev2.pdf}
+ \caption{Die Tschebyscheff-Polynome $C_N$.}
+ \label{ellfilter:fig:chebychef_polynomials}
+\end{figure}
+Da der Kosinus begrenzt zwischen $-1$ und $1$ ist, sind auch die Tschebyscheff-Polynome begrenzt.
+Geht man aber über das Intervall $[-1, 1]$ hinaus, divergieren die Funktionen mit zunehmender Ordnung immer steiler gegen $\pm \infty$.
+Diese Eigenschaft ist sehr nützlich für ein Filter.
+Wenn wir die Tschebyscheff-Polynome quadrieren, passen sie perfekt in die Voraussetzungen für Filterfunktionen, wie es Abbildung \ref{ellfiter:fig:chebychef} demonstriert.
+\begin{figure}
+ \centering
+ \includegraphics[scale=1]{papers/ellfilter/python/F_N_chebychev.pdf}
+ \caption{Die Tschebyscheff-Polynome füllen den erlaubten Bereich besser, und erhalten dadurch eine steilere Flanke im Sperrbereich.}
+ \label{ellfiter:fig:chebychef}
+\end{figure}
+
+
+Die analytische Fortsetzung von \eqref{ellfilter:eq:chebychef_polynomials} über das Intervall $[-1,1]$ hinaus stimmt mit den Polynomen überein, wie es zu erwarten ist.
+Die genauere Betrachtung wird uns dann helfen die elliptischen Filter zu verstehen.
+
+\begin{equation}
+ \cos^{-1}(x)
+ =
+ \int_{0}^{x}
+ \frac{
+ dz
+ }{
+ \sqrt{
+ 1-z^2
+ }
+ }
+\end{equation} %TOdO is it minus dz?
+
+\begin{equation}
+ \frac{
+ 1
+ }{
+ \sqrt{
+ 1-z^2
+ }
+ }
+ \in \mathbb{R}
+ \quad
+ \forall
+ \quad
+ -1 \leq z \leq 1
+\end{equation}
+Wenn $|z|$ über 1 hinausgeht, wird der Term unter der Wurzel negativ.
+Durch die Quadratwurzel entstehen zwei Reinkomplexe Lösungen
+\begin{equation}
+ \frac{
+ 1
+ }{
+ \sqrt{
+ 1-z^2
+ }
+ }
+ = i \xi \quad | \quad \xi \in \mathbb{R}
+ \quad
+ \forall
+ \quad
+ z \leq -1 \cup z \geq 1
+\end{equation}
+
+\begin{figure}
+ \centering
+ \input{papers/ellfilter/tikz/arccos.tikz.tex}
+ \caption{Die Funktion $z = \cos^{-1}(w)$ dargestellt in der komplexen ebene.}
+ \label{ellfilter:fig:arccos}
+\end{figure}
+
+
+
+\begin{figure}
+ \centering
+ \input{papers/ellfilter/tikz/arccos2.tikz.tex}
+ \caption{
+ $z$-Ebene der Tschebyscheff-Funktion.
+ Je grösser die Ordnung $N$ gewählt wird, desto mehr Nullstellen werden hat das Tschebyscheff-Polynom.
+ }
+ % \label{ellfilter:fig:arccos}
+\end{figure}
+
+
+
+
+
+% Analytische Fortsetzung
+
+
+
+\section{Jacobische elliptische Funktionen}
+
+
+Für das elliptische Filter, wird statt der für das Tschebyscheff-Filter benutzen Kreis-Trigonometrie die elliptischen Funktionen gebraucht.
+Der begriff elliptische Funktion wird für sehr viele Funktionen gebraucht, daher ist es hier wichtig zu erwähnen, dass es ausschliesslich um die Jacobischen elliptischen Funktionen geht.
+
+Im Wesentlichen erweitern die Jacobi elliptischen Funktionen die trigonometrische Funktionen für Ellipsen.
+
+%TODO $z$ or $u$ for parameter?
+
+neu zwei parameter
+$sn(z, k)$
+$z$ ist das winkelargument
+Im Kreis ist der Radius für alle Winkel konstant, bei Ellipsen ändert sich das.
+Dies hat zur Folge, dass bei einer Ellipse die Kreisbodenstrecke nicht linear zum Winkel verläuft.
+Darum kann hier nicht der gewohnte Winkel verwendet werden.
+An deren stelle kommt der parameter $k$ zum Einsatz, welcher durch das elliptische Integral erster Art
+\begin{equation}
+ z
+ =
+ F(\phi, k)
+ =
+ \int_{0}^{\phi}
+ \frac{
+ d\theta
+ }{
+ \sqrt{
+ 1-k^2 \sin^2 \theta
+ }
+ }
+\end{equation}
+mit dem Winkel $\phi$ in Verbindung liegt.
+
+
+
+
+Dabei wird das vollständige und unvollständige Elliptische integral unterschieden.
+Beim vollständigen Integral
+\begin{equation}
+ K(k)
+ =
+ \int_{0}^{\pi / 2}
+ \frac{
+ d\theta
+ }{
+ \sqrt{
+ 1-k^2 \sin^2 \theta
+ }
+ }
+\end{equation}
+wird über ein viertel Ellipsenbogen integriert also bis $\phi=\pi/2$.
+
+Die Jacobischen elliptischen Funktionen können mit der inversen Funktion
+\begin{equation}
+ \phi = F^{-1}(z, k)
+\end{equation}
+definiert werden. Dabei ist zu beachten dass nur das $z$ Argument der Funktion invertiert wird also
+\begin{equation}
+ z = F(\phi, k)
+ \Leftrightarrow
+ \phi = F^{-1}(z, k).
+\end{equation}
+Mithilfe von $F^{-1}$ kann $sn^{-1}$ mit dem Elliptischen integral dargestellt werden:
+\begin{equation}
+ \sin(\phi)
+ =
+ \sin \left( F^{-1}(z, k) \right)
+ =
+ \sn(u, k)
+\end{equation}
+
+\begin{align}
+ \sn^{-1}(w, k)
+ & =
+ \int_{0}^{\phi}
+ \frac{
+ d\theta
+ }{
+ \sqrt{
+ 1-k^2 \sin^2 \theta
+ }
+ },
+ \quad
+ \phi = \sin^{-1}(w)
+ \\
+ & =
+ \int_{0}^{w}
+ \frac{
+ dt
+ }{
+ \sqrt{
+ (1-t^2)(1-k^2 t^2)
+ }
+ }
+\end{align}
+
+Beim $\cos^{-1}(x)$ haben wir gesehen, dass die analytische Fortsetzung bei $x < -1$ und $x > 1$ rechtwinklig in die Komplexen zahlen wandert.
+Wenn man das gleiche mit $\sn^{-1}(w, k)$ macht, erkennt man zwei interessante Stellen.
+Die erste ist die gleiche wie beim $\cos^{-1}(x)$ nämlich bei $t = \pm 1$.
+Der erste Term unter der Wurzel wird dann negativ, während der zweite noch positiv ist, da $k \leq 1$.
+\begin{equation}
+ \frac{
+ 1
+ }{
+ \sqrt{
+ (1-t^2)(1-k^2 t^2)
+ }
+ }
+ \in \mathbb{R}
+ \quad \forall \quad
+ -1 \leq t \leq 1
+\end{equation}
+Die zweite stelle passiert wenn beide Faktoren unter der Wurzel negativ werden, was bei $t = 1/k$ der Fall ist.
+
+
+
+
+Funktion in relle und komplexe Richtung periodisch
+
+In der reellen Richtung ist sie $4K(k)$-periodisch und in der imaginären Richtung $4K^\prime(k)$-periodisch.
+
+
+
+%TODO sn^{-1} grafik
+
+
+\section{Elliptische rationale Funktionen}
+
+
+\begin{equation}
+ R_N(\xi, w) = \cd \left(N~f_1(\xi)~\cd^{-1}(w, 1/\xi), f_2(\xi)\right)
+\end{equation}
+\begin{equation}
+ R_N(\xi, w) = \cd (N~u K_1, k_1), \quad w= \cd(uK, k)
+\end{equation}
+
+
+sieht ähnlich aus wie die trigonometrische darstellung der Tschebyschef-Polynome
+
+der Ordnungszahl $N$ kommt auch als Faktor for
+
+%TODO cd^{-1} grafik mit
+
+
+\subsection{Degree Equation}
+
+Der $cd^{-1}$ Term muss so verzogen werden, dass die umgebene $cd$ funktion die nullstellen und pole trifft.
+Dies trifft ein wenn die Degree Equation erfüllt ist.
+
+\begin{equation}
+ N \frac{K^\prime}{K} = \frac{K^\prime_1}{K_1}
+\end{equation}
+
+
+Leider ist das lösen dieser Gleichung nicht trivial.
+Die Rechnung wird in \ref{ellfilter:bib:orfanidis} im Detail angeschaut.
+
+
+\subsection{Polynome?}
+
+Bei den Tschebyscheff-Polynomen haben wir gesehen, dass die Trigonometrische Formel zu einfachen Polynomen umgewandelt werden kann.
+Im gegensatz zum $\cos^{-1}$ hat der $\cd^{-1}$ nicht nur Nullstellen sondern auch Pole.
+Somit entstehen bei den elliptischen rationalen Funktionen, wie es der name auch deutet, rationale Funktionen, also ein Bruch von zwei Polynomen.
+
+
+
+
+\begin{figure}
+ \centering
+ \includegraphics[scale=1]{papers/ellfilter/python/F_N_elliptic.pdf}
+ \caption{$F_N$ für ein elliptischs filter.}
+ \label{ellfilter:fig:elliptic}
+\end{figure}
+
+
+
+
\input{papers/ellfilter/teil0.tex}
\input{papers/ellfilter/teil1.tex}
\input{papers/ellfilter/teil2.tex}
\input{papers/ellfilter/teil3.tex}
-\printbibliography[heading=subbibliography]
+% \printbibliography[heading=subbibliography]
\end{refsection}
diff --git a/buch/papers/ellfilter/packages.tex b/buch/papers/ellfilter/packages.tex
index c94db34..8045a1a 100644
--- a/buch/papers/ellfilter/packages.tex
+++ b/buch/papers/ellfilter/packages.tex
@@ -8,3 +8,6 @@
% following example
%\usepackage{packagename}
+
+\DeclareMathOperator{\sn}{\text{sn}}
+\DeclareMathOperator{\cd}{\text{cd}}
diff --git a/buch/papers/ellfilter/python/chebychef.py b/buch/papers/ellfilter/python/chebychef.py
new file mode 100644
index 0000000..a278989
--- /dev/null
+++ b/buch/papers/ellfilter/python/chebychef.py
@@ -0,0 +1,65 @@
+# %%
+
+import matplotlib.pyplot as plt
+import scipy.signal
+import numpy as np
+
+
+order = 5
+passband_ripple_db = 1
+omega_c = 1000
+
+a, b = scipy.signal.cheby1(
+ order,
+ passband_ripple_db,
+ omega_c,
+ btype='low',
+ analog=True,
+ output='ba',
+ fs=None,
+)
+
+w, mag, phase = scipy.signal.bode((a, b), w=np.linspace(0,2000,256))
+f, axs = plt.subplots(2,1, sharex=True)
+axs[0].plot(w, 10**(mag/20))
+axs[0].set_ylabel("$|H(\omega)| /$ db")
+axs[0].grid(True, "both")
+axs[1].plot(w, phase)
+axs[1].set_ylabel(r"$arg H (\omega) / $ deg")
+axs[1].grid(True, "both")
+axs[1].set_xlim([0, 2000])
+axs[1].set_xlabel("$\omega$")
+plt.show()
+
+
+# %% Cheychev filter F_N plot
+
+w = np.linspace(-1.1,1.1, 1000)
+plt.figure(figsize=(5.5,2))
+for N in [3,6,11]:
+ # F_N = np.cos(N * np.arccos(w))
+ F_N = scipy.special.eval_chebyt(N, w)
+ plt.plot(w, F_N, label=f"$N={N}$")
+plt.xlim([-1.2,1.2])
+plt.ylim([-2,2])
+plt.grid()
+plt.xlabel("$w$")
+plt.ylabel("$C_N(w)$")
+plt.legend()
+plt.savefig("F_N_chebychev2.pdf")
+plt.show()
+
+# %% Build Chebychev polynomials
+
+N = 11
+
+zeros = (np.arange(N)+0.5) * np.pi
+zeros = np.cos(zeros/N)
+
+x = np.linspace(-1.2,1.2,1000)
+y = np.prod(x[:, None] - zeros[None, :], axis=-1)*2**(N-1)
+
+plt.plot(x, y)
+plt.ylim([-1,1])
+plt.grid()
+plt.show()
diff --git a/buch/papers/ellfilter/python/elliptic.py b/buch/papers/ellfilter/python/elliptic.py
new file mode 100644
index 0000000..9f209e9
--- /dev/null
+++ b/buch/papers/ellfilter/python/elliptic.py
@@ -0,0 +1,316 @@
+
+# %%
+
+import scipy.special
+import scipyx as spx
+import numpy as np
+import matplotlib.pyplot as plt
+import matplotlib
+from matplotlib.patches import Rectangle
+
+matplotlib.rcParams.update({
+ "pgf.texsystem": "pdflatex",
+ 'font.family': 'serif',
+ 'font.size': 9,
+ 'text.usetex': True,
+ 'pgf.rcfonts': False,
+})
+
+def last_color():
+ plt.gca().lines[-1].get_color()
+
+# %% Buttwerworth filter F_N plot
+
+w = np.linspace(0,1.5, 100)
+plt.figure(figsize=(4,2.5))
+
+for N in range(1,5):
+ F_N = w**N
+ plt.plot(w, F_N**2, label=f"$N={N}$")
+plt.gca().add_patch(Rectangle(
+ (0, 0),
+ 1, 1,
+ fc ='green',
+ alpha=0.2,
+ lw = 10,
+))
+plt.gca().add_patch(Rectangle(
+ (1, 1),
+ 0.5, 1,
+ fc ='green',
+ alpha=0.2,
+ lw = 10,
+))
+plt.xlim([0,1.5])
+plt.ylim([0,2])
+plt.grid()
+plt.xlabel("$w$")
+plt.ylabel("$F^2_N(w)$")
+plt.legend()
+plt.savefig("F_N_butterworth.pdf")
+plt.show()
+
+# %% Cheychev filter F_N plot
+
+w = np.linspace(0,1.5, 100)
+
+plt.figure(figsize=(4,2.5))
+for N in range(1,5):
+ # F_N = np.cos(N * np.arccos(w))
+ F_N = scipy.special.eval_chebyt(N, w)
+ plt.plot(w, F_N**2, label=f"$N={N}$")
+plt.gca().add_patch(Rectangle(
+ (0, 0),
+ 1, 1,
+ fc ='green',
+ alpha=0.2,
+ lw = 10,
+))
+plt.gca().add_patch(Rectangle(
+ (1, 1),
+ 0.5, 1,
+ fc ='green',
+ alpha=0.2,
+ lw = 10,
+))
+plt.xlim([0,1.5])
+plt.ylim([0,2])
+plt.grid()
+plt.xlabel("$w$")
+plt.ylabel("$F^2_N(w)$")
+plt.legend()
+plt.savefig("F_N_chebychev.pdf")
+plt.show()
+
+# %% define elliptic functions
+
+def ell_int(k):
+ """ Calculate K(k) """
+ m = k**2
+ return scipy.special.ellipk(m)
+
+def sn(z, k):
+ return spx.ellipj(z, k**2)[0]
+
+def cn(z, k):
+ return spx.ellipj(z, k**2)[1]
+
+def dn(z, k):
+ return spx.ellipj(z, k**2)[2]
+
+def cd(z, k):
+ sn, cn, dn, ph = spx.ellipj(z, k**2)
+ return cn / dn
+
+# https://mathworld.wolfram.com/JacobiEllipticFunctions.html eq 3-8
+
+def sn_inv(z, k):
+ m = k**2
+ return scipy.special.ellipkinc(np.arcsin(z), m)
+
+def cn_inv(z, k):
+ m = k**2
+ return scipy.special.ellipkinc(np.arccos(z), m)
+
+def dn_inv(z, k):
+ m = k**2
+ x = np.sqrt((1-z**2) / k**2)
+ return scipy.special.ellipkinc(np.arcsin(x), m)
+
+def cd_inv(z, k):
+ m = k**2
+ x = np.sqrt(((m - 1) * z**2) / (m*z**2 - 1))
+ return scipy.special.ellipkinc(np.arccos(x), m)
+
+
+k = 0.8
+z = 0.5
+
+assert np.allclose(sn_inv(sn(z ,k), k), z)
+assert np.allclose(cn_inv(cn(z ,k), k), z)
+assert np.allclose(dn_inv(dn(z ,k), k), z)
+assert np.allclose(cd_inv(cd(z ,k), k), z)
+
+# %% plot arcsin
+
+def lattice(a1, b1, c1, a2, b2, c2):
+ r1 = np.logspace(a1, b1, c1)
+ x1 = np.concatenate((-np.flip(r1), [0], r1), axis=0)
+ x1 = x1.astype(np.complex128)
+ r2 = np.logspace(a2, b2, c2)
+ x2 = np.concatenate((-np.flip(r2), [0], r2), axis=0)
+ x2 = x2.astype(np.complex128)
+ x = (x1[:, None] + (x2[None, :] * 1j))
+ return x
+
+plt.figure(figsize=(12,12))
+y = np.arcsin(lattice(-1,6,1000, -1,5,10))
+plt.plot(np.real(y), np.imag(y), "-", color="red", lw=0.5)
+y = np.arcsin(lattice(-1,6,10, -1,5,100)).T
+plt.plot(np.real(y), np.imag(y), "-", color="red", lw=0.5)
+y = np.arcsin(lattice(-1,6,10, -1,5,10))
+plt.plot(np.real(y), np.imag(y), ".", color="red", lw=0.5)
+plt.show()
+
+# %% plot cd^-1 TODO complex cd^-1 missing
+
+
+r = np.logspace(-1,8, 50)
+
+
+
+x = np.concatenate((-np.flip(r), [0], r), axis=0)
+y = cd_inv(x, 0.99)
+
+plt.figure(figsize=(12,12))
+plt.plot(np.real(y), np.imag(y), "-")
+plt.show()
+
+# %%plot cd
+plt.figure(figsize=(10,6))
+z = np.linspace(-4,4, 500)
+for k in [0, 0.9, 0.99, 0.999, 0.99999]:
+ w = cd(z*ell_int(k), k)
+ plt.plot(z, w, label=f"$k={k}$")
+plt.grid()
+plt.legend()
+# plt.xlim([-4,4])
+plt.xlabel("$u$")
+plt.ylabel("$cd(uK, k)$")
+plt.show()
+
+# %% Test ????
+
+N = 5
+k = 0.9
+k1 = k**N
+
+assert np.allclose(k**(-N), k1**(-1))
+
+K = ell_int(k)
+Kp = ell_int(np.sqrt(1-k**2))
+
+K1 = ell_int(k1)
+Kp1 = ell_int(np.sqrt(1-k1**2))
+
+print(Kp * (K1 / K) * N, Kp1)
+
+
+# %%
+
+
+k = 0.9
+k_prim = np.sqrt(1 - k**2)
+K = ell_int(k)
+Kp = ell_int(k_prim)
+
+print(K, Kp)
+
+zs = [
+ 0 + (K + 0j) * np.linspace(0,1,25),
+ K + (Kp*1j) * np.linspace(0,1,25),
+ (K + Kp*1j) + (-K) * np.linspace(0,1,25),
+]
+
+
+for z in zs:
+ plt.plot(np.real(z), np.imag(z))
+plt.show()
+
+
+
+for z in zs:
+ w = cd(z, k)
+ plt.plot(np.real(w), np.imag(w))
+plt.show()
+
+
+
+
+
+# %%
+
+for i in range(10):
+ x = np.linspace(i*1,i*1+1,10, dtype=np.complex64)
+ w = np.arccos(x)
+
+ x2 = np.cos(w)
+ x4 = np.cos(w+ 2*np.pi)
+ x3 = np.cos(np.conj(w))
+
+ assert np.allclose(x2, x4, rtol=0.001, atol=1e-5)
+
+ assert np.allclose(x2, x3)
+ assert np.allclose(x2, x, rtol=0.001, atol=1e-5)
+
+ plt.plot(np.real(w), np.imag(w), ".-")
+
+for i in range(10):
+ x = -np.linspace(i*1,i*1+1,100, dtype=np.complex64)
+ w = np.arccos(x)
+ plt.plot(np.real(w), np.imag(w), ".-")
+
+plt.grid()
+plt.show()
+
+
+
+
+# %%
+
+plt.plot(omega, np.abs(G))
+plt.show()
+
+
+def cd_inv(u, m):
+ return K(1/2) - F(np.arcsin())
+
+def K(m):
+ return scipy.special.ellipk(m)
+
+def L(n, xi):
+ return 1 #TODO
+
+def R(n, xi, x):
+ cn(n*K(1/L(n, xi))/K(1/xi) * cd_inv(x, 1/xi, 1/L(n, xi)))
+
+epsilon = 0.1
+n = 3
+omega = np.linspace(0, np.pi, 1000)
+omega_0 = 1
+xi = 1.1
+
+G = 1 / np.sqrt(1 + epsilon**2 * R(n, xi, omega/omega_0)**2)
+
+
+plt.plot(omega, np.abs(G))
+plt.show()
+
+
+
+# %% Chebychef
+
+epsilon = 0.5
+omega = np.linspace(0, np.pi, 1000)
+omega_0 = 1
+n = 4
+
+def chebychef_poly(n, x):
+ x = x.astype(np.complex64)
+ y = np.cos(n* np.arccos(x))
+ return np.real(y)
+
+F_omega = chebychef_poly
+
+for n in (1,2,3,4):
+ plt.plot(omega, F_omega(n, omega/omega_0)**2)
+plt.ylim([0,5])
+plt.xlim([0,1.5])
+plt.grid()
+plt.show()
+
+for n in (1,2,3,4):
+ G = 1 / np.sqrt(1 + epsilon**2 * F_omega(n, omega/omega_0)**2)
+ plt.plot(omega, np.abs(G))
+plt.grid()
+plt.show()
diff --git a/buch/papers/ellfilter/python/elliptic2.py b/buch/papers/ellfilter/python/elliptic2.py
new file mode 100644
index 0000000..92fefd9
--- /dev/null
+++ b/buch/papers/ellfilter/python/elliptic2.py
@@ -0,0 +1,78 @@
+# %%
+
+import matplotlib.pyplot as plt
+import scipy.signal
+import numpy as np
+import matplotlib
+from matplotlib.patches import Rectangle
+
+
+def ellip_filter(N):
+
+ order = N
+ passband_ripple_db = 3
+ stopband_attenuation_db = 20
+ omega_c = 1000
+
+ a, b = scipy.signal.ellip(
+ order,
+ passband_ripple_db,
+ stopband_attenuation_db,
+ omega_c,
+ btype='low',
+ analog=True,
+ output='ba',
+ fs=None
+ )
+
+ w, mag_db, phase = scipy.signal.bode((a, b), w=np.linspace(0*omega_c,2*omega_c, 4000))
+
+ mag = 10**(mag_db/20)
+
+ passband_ripple = 10**(-passband_ripple_db/20)
+ epsilon2 = (1/passband_ripple)**2 - 1
+
+ FN2 = ((1/mag**2) - 1)
+
+ return w/omega_c, FN2 / epsilon2
+
+
+plt.figure(figsize=(4,2.5))
+
+for N in [5]:
+ w, FN2 = ellip_filter(N)
+ plt.semilogy(w, FN2, label=f"$N={N}$")
+
+plt.gca().add_patch(Rectangle(
+ (0, 0),
+ 1, 1,
+ fc ='green',
+ alpha=0.2,
+ lw = 10,
+))
+plt.gca().add_patch(Rectangle(
+ (1, 1),
+ 0.01, 1e2-1,
+ fc ='green',
+ alpha=0.2,
+ lw = 10,
+))
+
+plt.gca().add_patch(Rectangle(
+ (1.01, 100),
+ 1, 1e6,
+ fc ='green',
+ alpha=0.2,
+ lw = 10,
+))
+plt.xlim([0,2])
+plt.ylim([1e-4,1e6])
+plt.grid()
+plt.xlabel("$w$")
+plt.ylabel("$F^2_N(w)$")
+plt.legend()
+plt.savefig("F_N_elliptic.pdf")
+plt.show()
+
+
+
diff --git a/buch/papers/ellfilter/references.bib b/buch/papers/ellfilter/references.bib
index 81b3577..2b873af 100644
--- a/buch/papers/ellfilter/references.bib
+++ b/buch/papers/ellfilter/references.bib
@@ -4,32 +4,10 @@
% (c) 2020 Autor, Hochschule Rapperswil
%
-@online{ellfilter:bibtex,
- title = {BibTeX},
- url = {https://de.wikipedia.org/wiki/BibTeX},
- date = {2020-02-06},
- year = {2020},
- month = {2},
- day = {6}
-}
-
-@book{ellfilter:numerical-analysis,
- title = {Numerical Analysis},
- author = {David Kincaid and Ward Cheney},
- publisher = {American Mathematical Society},
- year = {2002},
- isbn = {978-8-8218-4788-6},
- inseries = {Pure and applied undegraduate texts},
- volume = {2}
-}
-
-@article{ellfilter:mendezmueller,
- author = { Tabea Méndez and Andreas Müller },
- title = { Noncommutative harmonic analysis and image registration },
- journal = { Appl. Comput. Harmon. Anal.},
- year = 2019,
- volume = 47,
- pages = {607--627},
- url = {https://doi.org/10.1016/j.acha.2017.11.004}
+@online{ellfilter:bib:orfanidis,
+ author = { Sophocles J. Orfanidis},
+ title = { LECTURE NOTES ON ELLIPTIC FILTER DESIGN },
+ year = 2006,
+ url = {https://www.ece.rutgers.edu/~orfanidi/ece521/notes.pdf}
}
diff --git a/buch/papers/ellfilter/teil0.tex b/buch/papers/ellfilter/teil0.tex
index fd04ba9..6204bc0 100644
--- a/buch/papers/ellfilter/teil0.tex
+++ b/buch/papers/ellfilter/teil0.tex
@@ -3,20 +3,20 @@
%
% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
%
-\section{Teil 0\label{ellfilter:section:teil0}}
-\rhead{Teil 0}
-Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
-nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
-erat, sed diam voluptua \cite{ellfilter:bibtex}.
-At vero eos et accusam et justo duo dolores et ea rebum.
-Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
-dolor sit amet.
+% \section{Teil 0\label{ellfilter:section:teil0}}
+% \rhead{Teil 0}
+% Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
+% nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
+% erat, sed diam voluptua \cite{ellfilter:bibtex}.
+% At vero eos et accusam et justo duo dolores et ea rebum.
+% Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
+% dolor sit amet.
-Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
-nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
-erat, sed diam voluptua.
-At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
-kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
-amet.
+% Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
+% nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
+% erat, sed diam voluptua.
+% At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
+% kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
+% amet.
diff --git a/buch/papers/ellfilter/teil1.tex b/buch/papers/ellfilter/teil1.tex
index 7e62a2f..4760473 100644
--- a/buch/papers/ellfilter/teil1.tex
+++ b/buch/papers/ellfilter/teil1.tex
@@ -3,53 +3,53 @@
%
% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
%
-\section{Teil 1
-\label{ellfilter:section:teil1}}
-\rhead{Problemstellung}
-Sed ut perspiciatis unde omnis iste natus error sit voluptatem
-accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
-quae ab illo inventore veritatis et quasi architecto beatae vitae
-dicta sunt explicabo.
-Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit
-aut fugit, sed quia consequuntur magni dolores eos qui ratione
-voluptatem sequi nesciunt
-\begin{equation}
-\int_a^b x^2\, dx
-=
-\left[ \frac13 x^3 \right]_a^b
-=
-\frac{b^3-a^3}3.
-\label{ellfilter:equation1}
-\end{equation}
-Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
-consectetur, adipisci velit, sed quia non numquam eius modi tempora
-incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
+% \section{Teil 1
+% \label{ellfilter:section:teil1}}
+% \rhead{Problemstellung}
+% Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+% accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
+% quae ab illo inventore veritatis et quasi architecto beatae vitae
+% dicta sunt explicabo.
+% Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit
+% aut fugit, sed quia consequuntur magni dolores eos qui ratione
+% voluptatem sequi nesciunt
+% \begin{equation}
+% \int_a^b x^2\, dx
+% =
+% \left[ \frac13 x^3 \right]_a^b
+% =
+% \frac{b^3-a^3}3.
+% \label{ellfilter:equation1}
+% \end{equation}
+% Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
+% consectetur, adipisci velit, sed quia non numquam eius modi tempora
+% incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
-Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis
-suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
-Quis autem vel eum iure reprehenderit qui in ea voluptate velit
-esse quam nihil molestiae consequatur, vel illum qui dolorem eum
-fugiat quo voluptas nulla pariatur?
+% Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis
+% suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
+% Quis autem vel eum iure reprehenderit qui in ea voluptate velit
+% esse quam nihil molestiae consequatur, vel illum qui dolorem eum
+% fugiat quo voluptas nulla pariatur?
-\subsection{De finibus bonorum et malorum
-\label{ellfilter:subsection:finibus}}
-At vero eos et accusamus et iusto odio dignissimos ducimus qui
-blanditiis praesentium voluptatum deleniti atque corrupti quos
-dolores et quas molestias excepturi sint occaecati cupiditate non
-provident, similique sunt in culpa qui officia deserunt mollitia
-animi, id est laborum et dolorum fuga \eqref{000tempmlate:equation1}.
+% \subsection{De finibus bonorum et malorum
+% \label{ellfilter:subsection:finibus}}
+% At vero eos et accusamus et iusto odio dignissimos ducimus qui
+% blanditiis praesentium voluptatum deleniti atque corrupti quos
+% dolores et quas molestias excepturi sint occaecati cupiditate non
+% provident, similique sunt in culpa qui officia deserunt mollitia
+% animi, id est laborum et dolorum fuga \eqref{000tempmlate:equation1}.
-Et harum quidem rerum facilis est et expedita distinctio
-\ref{ellfilter:section:loesung}.
-Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil
-impedit quo minus id quod maxime placeat facere possimus, omnis
-voluptas assumenda est, omnis dolor repellendus
-\ref{ellfilter:section:folgerung}.
-Temporibus autem quibusdam et aut officiis debitis aut rerum
-necessitatibus saepe eveniet ut et voluptates repudiandae sint et
-molestiae non recusandae.
-Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis
-voluptatibus maiores alias consequatur aut perferendis doloribus
-asperiores repellat.
+% Et harum quidem rerum facilis est et expedita distinctio
+% \ref{ellfilter:section:loesung}.
+% Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil
+% impedit quo minus id quod maxime placeat facere possimus, omnis
+% voluptas assumenda est, omnis dolor repellendus
+% \ref{ellfilter:section:folgerung}.
+% Temporibus autem quibusdam et aut officiis debitis aut rerum
+% necessitatibus saepe eveniet ut et voluptates repudiandae sint et
+% molestiae non recusandae.
+% Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis
+% voluptatibus maiores alias consequatur aut perferendis doloribus
+% asperiores repellat.
diff --git a/buch/papers/ellfilter/teil2.tex b/buch/papers/ellfilter/teil2.tex
index 71fdc6d..39dd5d7 100644
--- a/buch/papers/ellfilter/teil2.tex
+++ b/buch/papers/ellfilter/teil2.tex
@@ -3,38 +3,38 @@
%
% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
%
-\section{Teil 2
-\label{ellfilter:section:teil2}}
-\rhead{Teil 2}
-Sed ut perspiciatis unde omnis iste natus error sit voluptatem
-accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
-quae ab illo inventore veritatis et quasi architecto beatae vitae
-dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit
-aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
-eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam
-est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
-velit, sed quia non numquam eius modi tempora incidunt ut labore
-et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima
-veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam,
-nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure
-reprehenderit qui in ea voluptate velit esse quam nihil molestiae
-consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
-pariatur?
+% \section{Teil 2
+% \label{ellfilter:section:teil2}}
+% \rhead{Teil 2}
+% Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+% accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
+% quae ab illo inventore veritatis et quasi architecto beatae vitae
+% dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit
+% aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
+% eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam
+% est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
+% velit, sed quia non numquam eius modi tempora incidunt ut labore
+% et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima
+% veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam,
+% nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure
+% reprehenderit qui in ea voluptate velit esse quam nihil molestiae
+% consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+% pariatur?
-\subsection{De finibus bonorum et malorum
-\label{ellfilter:subsection:bonorum}}
-At vero eos et accusamus et iusto odio dignissimos ducimus qui
-blanditiis praesentium voluptatum deleniti atque corrupti quos
-dolores et quas molestias excepturi sint occaecati cupiditate non
-provident, similique sunt in culpa qui officia deserunt mollitia
-animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis
-est et expedita distinctio. Nam libero tempore, cum soluta nobis
-est eligendi optio cumque nihil impedit quo minus id quod maxime
-placeat facere possimus, omnis voluptas assumenda est, omnis dolor
-repellendus. Temporibus autem quibusdam et aut officiis debitis aut
-rerum necessitatibus saepe eveniet ut et voluptates repudiandae
-sint et molestiae non recusandae. Itaque earum rerum hic tenetur a
-sapiente delectus, ut aut reiciendis voluptatibus maiores alias
-consequatur aut perferendis doloribus asperiores repellat.
+% \subsection{De finibus bonorum et malorum
+% \label{ellfilter:subsection:bonorum}}
+% At vero eos et accusamus et iusto odio dignissimos ducimus qui
+% blanditiis praesentium voluptatum deleniti atque corrupti quos
+% dolores et quas molestias excepturi sint occaecati cupiditate non
+% provident, similique sunt in culpa qui officia deserunt mollitia
+% animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis
+% est et expedita distinctio. Nam libero tempore, cum soluta nobis
+% est eligendi optio cumque nihil impedit quo minus id quod maxime
+% placeat facere possimus, omnis voluptas assumenda est, omnis dolor
+% repellendus. Temporibus autem quibusdam et aut officiis debitis aut
+% rerum necessitatibus saepe eveniet ut et voluptates repudiandae
+% sint et molestiae non recusandae. Itaque earum rerum hic tenetur a
+% sapiente delectus, ut aut reiciendis voluptatibus maiores alias
+% consequatur aut perferendis doloribus asperiores repellat.
diff --git a/buch/papers/ellfilter/teil3.tex b/buch/papers/ellfilter/teil3.tex
index 79a5f3d..dad96ad 100644
--- a/buch/papers/ellfilter/teil3.tex
+++ b/buch/papers/ellfilter/teil3.tex
@@ -3,38 +3,38 @@
%
% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
%
-\section{Teil 3
-\label{ellfilter:section:teil3}}
-\rhead{Teil 3}
-Sed ut perspiciatis unde omnis iste natus error sit voluptatem
-accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
-quae ab illo inventore veritatis et quasi architecto beatae vitae
-dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit
-aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
-eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam
-est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
-velit, sed quia non numquam eius modi tempora incidunt ut labore
-et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima
-veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam,
-nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure
-reprehenderit qui in ea voluptate velit esse quam nihil molestiae
-consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
-pariatur?
+% \section{Teil 3
+% \label{ellfilter:section:teil3}}
+% \rhead{Teil 3}
+% Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+% accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
+% quae ab illo inventore veritatis et quasi architecto beatae vitae
+% dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit
+% aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
+% eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam
+% est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
+% velit, sed quia non numquam eius modi tempora incidunt ut labore
+% et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima
+% veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam,
+% nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure
+% reprehenderit qui in ea voluptate velit esse quam nihil molestiae
+% consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+% pariatur?
-\subsection{De finibus bonorum et malorum
-\label{ellfilter:subsection:malorum}}
-At vero eos et accusamus et iusto odio dignissimos ducimus qui
-blanditiis praesentium voluptatum deleniti atque corrupti quos
-dolores et quas molestias excepturi sint occaecati cupiditate non
-provident, similique sunt in culpa qui officia deserunt mollitia
-animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis
-est et expedita distinctio. Nam libero tempore, cum soluta nobis
-est eligendi optio cumque nihil impedit quo minus id quod maxime
-placeat facere possimus, omnis voluptas assumenda est, omnis dolor
-repellendus. Temporibus autem quibusdam et aut officiis debitis aut
-rerum necessitatibus saepe eveniet ut et voluptates repudiandae
-sint et molestiae non recusandae. Itaque earum rerum hic tenetur a
-sapiente delectus, ut aut reiciendis voluptatibus maiores alias
-consequatur aut perferendis doloribus asperiores repellat.
+% \subsection{De finibus bonorum et malorum
+% \label{ellfilter:subsection:malorum}}
+% At vero eos et accusamus et iusto odio dignissimos ducimus qui
+% blanditiis praesentium voluptatum deleniti atque corrupti quos
+% dolores et quas molestias excepturi sint occaecati cupiditate non
+% provident, similique sunt in culpa qui officia deserunt mollitia
+% animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis
+% est et expedita distinctio. Nam libero tempore, cum soluta nobis
+% est eligendi optio cumque nihil impedit quo minus id quod maxime
+% placeat facere possimus, omnis voluptas assumenda est, omnis dolor
+% repellendus. Temporibus autem quibusdam et aut officiis debitis aut
+% rerum necessitatibus saepe eveniet ut et voluptates repudiandae
+% sint et molestiae non recusandae. Itaque earum rerum hic tenetur a
+% sapiente delectus, ut aut reiciendis voluptatibus maiores alias
+% consequatur aut perferendis doloribus asperiores repellat.
diff --git a/buch/papers/ellfilter/tikz/arccos.tikz.tex b/buch/papers/ellfilter/tikz/arccos.tikz.tex
new file mode 100644
index 0000000..2bdcc2d
--- /dev/null
+++ b/buch/papers/ellfilter/tikz/arccos.tikz.tex
@@ -0,0 +1,97 @@
+\begin{tikzpicture}[>=stealth', auto, node distance=2cm, scale=1.2]
+
+
+ \draw[gray, ->] (0,-2) -- (0,2) node[anchor=south]{Im $z$};
+ \draw[gray, ->] (-5,0) -- (5,0) node[anchor=west]{Re $z$};
+
+ \begin{scope}
+ \draw[thick, ->, orange] (-1, 0) -- (0,0);
+ \draw[thick, ->, darkgreen] (0, 0) -- (0,1.5);
+ \draw[thick, ->, darkgreen] (0, 0) -- (0,-1.5);
+ \draw[thick, ->, orange] (1, 0) -- (0,0);
+ \draw[thick, ->, red] (2, 0) -- (1,0);
+ \draw[thick, ->, blue] (2,1.5) -- (2, 0);
+ \draw[thick, ->, blue] (2,-1.5) -- (2, 0);
+ \draw[thick, ->, red] (2, 0) -- (3,0);
+
+ \node[anchor=south west] at (0,1.5) {$\infty$};
+ \node[anchor=south west] at (0,-1.5) {$\infty$};
+ \node[anchor=south west] at (0,0) {$1$};
+ \node[anchor=south] at (1,0) {$0$};
+ \node[anchor=south west] at (2,0) {$-1$};
+ \node[anchor=south west] at (2,1.5) {$-\infty$};
+ \node[anchor=south west] at (2,-1.5) {$-\infty$};
+ \node[anchor=south west] at (3,0) {$0$};
+ \end{scope}
+
+ \begin{scope}[xshift=4cm]
+ \draw[thick, ->, orange] (-1, 0) -- (0,0);
+ \draw[thick, ->, darkgreen] (0, 0) -- (0,1.5);
+ \draw[thick, ->, darkgreen] (0, 0) -- (0,-1.5);
+ % \draw[thick, ->, orange] (1, 0) -- (0,0);
+ % \draw[thick, ->, red] (2, 0) -- (1,0);
+ % \draw[thick, ->, blue] (2,1.5) -- (2, 0);
+ % \draw[thick, ->, blue] (2,-1.5) -- (2, 0);
+ % \draw[thick, ->, red] (2, 0) -- (3,0);
+
+ \node[anchor=south west] at (0,1.5) {$\infty$};
+ \node[anchor=south west] at (0,-1.5) {$\infty$};
+ \node[anchor=south west] at (0,0) {$1$};
+ % \node[anchor=south] at (1,0) {$0$};
+ % \node[anchor=south west] at (2,0) {$-1$};
+ % \node[anchor=south west] at (2,1.5) {$-\infty$};
+ % \node[anchor=south west] at (2,-1.5) {$-\infty$};
+ % \node[anchor=south west] at (3,0) {$0$};
+ \end{scope}
+
+ \begin{scope}[xshift=-4cm]
+ % \draw[thick, ->, orange] (-1, 0) -- (0,0);
+ \draw[thick, ->, darkgreen] (0, 0) -- (0,1.5);
+ \draw[thick, ->, darkgreen] (0, 0) -- (0,-1.5);
+ \draw[thick, ->, orange] (1, 0) -- (0,0);
+ \draw[thick, ->, red] (2, 0) -- (1,0);
+ \draw[thick, ->, blue] (2,1.5) -- (2, 0);
+ \draw[thick, ->, blue] (2,-1.5) -- (2, 0);
+ \draw[thick, ->, red] (2, 0) -- (3,0);
+
+ \node[anchor=south west] at (0,1.5) {$\infty$};
+ \node[anchor=south west] at (0,-1.5) {$\infty$};
+ \node[anchor=south west] at (0,0) {$1$};
+ \node[anchor=south] at (1,0) {$0$};
+ \node[anchor=south west] at (2,0) {$-1$};
+ \node[anchor=south west] at (2,1.5) {$-\infty$};
+ \node[anchor=south west] at (2,-1.5) {$-\infty$};
+ \node[anchor=south west] at (3,0) {$0$};
+ \end{scope}
+
+ \node[gray, anchor=north west] at (-4,0) {$-2\pi$};
+ \node[gray, anchor=north west] at (-2,0) {$-\pi$};
+ \node[gray, anchor=north west] at (0,0) {$0$};
+ \node[gray, anchor=north west] at (2,0) {$\pi$};
+ \node[gray, anchor=north west] at (4,0) {$2\pi$};
+
+
+ \node[gray, anchor=south east] at (0,-1.5) {$-\infty$};
+ \node[gray, anchor=south east] at (0, 0) {$0$};
+ \node[gray, anchor=south east] at (0, 1.5) {$\infty$};
+
+
+
+ \begin{scope}[yshift=-2.5cm]
+
+ \draw[gray, ->] (-5,0) -- (5,0) node[anchor=west]{$w$};
+
+ \draw[thick, ->, blue] (-4, 0) -- (-2, 0);
+ \draw[thick, ->, red] (-2, 0) -- (0, 0);
+ \draw[thick, ->, orange] (0, 0) -- (2, 0);
+ \draw[thick, ->, darkgreen] (2, 0) -- (4, 0);
+
+ \node[anchor=south] at (-4,0) {$-\infty$};
+ \node[anchor=south] at (-2,0) {$-1$};
+ \node[anchor=south] at (0,0) {$0$};
+ \node[anchor=south] at (2,0) {$1$};
+ \node[anchor=south] at (4,0) {$\infty$};
+
+ \end{scope}
+
+\end{tikzpicture} \ No newline at end of file
diff --git a/buch/papers/ellfilter/tikz/arccos2.tikz.tex b/buch/papers/ellfilter/tikz/arccos2.tikz.tex
new file mode 100644
index 0000000..dcf02fd
--- /dev/null
+++ b/buch/papers/ellfilter/tikz/arccos2.tikz.tex
@@ -0,0 +1,46 @@
+\begin{tikzpicture}[>=stealth', auto, node distance=2cm, scale=1.2]
+
+ \tikzstyle{zero} = [draw, circle, inner sep =0, minimum height=0.15cm]
+
+ \tikzset{pole/.style={cross out, draw=black, minimum size=(0.15cm-\pgflinewidth), inner sep=0pt, outer sep=0pt}}
+
+ \begin{scope}[xscale=0.5]
+
+ \draw[gray, ->] (0,-2) -- (0,2) node[anchor=south]{Im $z$};
+ \draw[gray, ->] (-10,0) -- (10,0) node[anchor=west]{Re $z$};
+
+ \begin{scope}
+
+ \draw[>->, line width=0.05, thick, blue] (2, 1.5) -- (2,0.05) -- node[anchor=south, pos=0.5]{$N=1$} (0.1,0.05) -- (0.1,1.5);
+ \draw[>->, line width=0.05, thick, orange] (4, 1.5) -- (4,0) -- node[anchor=south, pos=0.25]{$N=2$} (0,0) -- (0,1.5);
+ \draw[>->, line width=0.05, thick, red] (6, 1.5) -- (6,-0.05) -- node[anchor=south, pos=0.1666]{$N=3$} (-0.1,-0.05) -- (-0.1,1.5);
+
+
+ \node[zero] at (-7,0) {};
+ \node[zero] at (-5,0) {};
+ \node[zero] at (-3,0) {};
+ \node[zero] at (-1,0) {};
+ \node[zero] at (1,0) {};
+ \node[zero] at (3,0) {};
+ \node[zero] at (5,0) {};
+ \node[zero] at (7,0) {};
+
+
+ \end{scope}
+
+ \node[gray, anchor=north] at (-8,0) {$-4\pi$};
+ \node[gray, anchor=north] at (-6,0) {$-3\pi$};
+ \node[gray, anchor=north] at (-4,0) {$-2\pi$};
+ \node[gray, anchor=north] at (-2,0) {$-\pi$};
+ \node[gray, anchor=north] at (2,0) {$\pi$};
+ \node[gray, anchor=north] at (4,0) {$2\pi$};
+ \node[gray, anchor=north] at (6,0) {$3\pi$};
+ \node[gray, anchor=north] at (8,0) {$4\pi$};
+
+
+ \node[gray, anchor=east] at (0,-1.5) {$-\infty$};
+ \node[gray, anchor=east] at (0, 1.5) {$\infty$};
+
+ \end{scope}
+
+\end{tikzpicture} \ No newline at end of file