From 429329b73e6f33c2e1f5cf23178095311e10bd5a Mon Sep 17 00:00:00 2001 From: "samuel.niederer" Date: Mon, 15 Aug 2022 21:48:22 +0200 Subject: use latex style arrows --- buch/papers/kra/images/multi_mass_spring.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buch/papers/kra/images/multi_mass_spring.tex b/buch/papers/kra/images/multi_mass_spring.tex index f255cc8..f31db4c 100644 --- a/buch/papers/kra/images/multi_mass_spring.tex +++ b/buch/papers/kra/images/multi_mass_spring.tex @@ -5,7 +5,7 @@ \tikzstyle{mass}=[line width=0.6,red!30!black,fill=red!40!black!10,rounded corners=1,top color=red!40!black!20,bottom color=red!40!black!10,shading angle=20] \tikzstyle{spring}=[line width=0.8,blue!7!black!80,snake=coil,segment amplitude=5,line cap=round] -\begin{tikzpicture}[scale=2] +\begin{tikzpicture}[scale=2, >=latex] \newcommand{\ticks}[3] { % x, y coordinates -- cgit v1.2.1 From 3c5d4fdb477d6a8e13c798ec2637cb08bbd21033 Mon Sep 17 00:00:00 2001 From: "samuel.niederer" Date: Mon, 15 Aug 2022 22:15:54 +0200 Subject: use latex style arrow --- buch/papers/kra/images/phase_space.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buch/papers/kra/images/phase_space.tex b/buch/papers/kra/images/phase_space.tex index cd51ea4..be445ca 100644 --- a/buch/papers/kra/images/phase_space.tex +++ b/buch/papers/kra/images/phase_space.tex @@ -8,7 +8,7 @@ } } -\begin{tikzpicture}[scale=0.6] +\begin{tikzpicture}[scale=0.6, >=latex] % p(t=0) = 0, q(t=0) = A, max(p) = mwA \tikzmath{ \axh = 5.2; -- cgit v1.2.1 From 7741ac8b2c6ab763085df9602bf9af4cefa1ff43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Thu, 18 Aug 2022 11:35:51 +0200 Subject: Added revision remarks to source of fourier example. --- buch/papers/sturmliouville/waermeleitung_beispiel.tex | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index a72c562..fd1659f 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -5,12 +5,16 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\subsection{Wärmeleitung in einem Homogenen Stab} +\subsection{Fourierreihe als Lösung des Sturm-Liouville-Problems +(Wärmeleitung)} In diesem Abschnitt wird das Problem der Wärmeleitung in einem homogenen Stab betrachtet und wie das Sturm-Liouville-Problem bei der Beschreibung dieses physikalischen Phänomenes auftritt. +% TODO: u is dependent on 2 variables (t, x) +% TODO: mention initial conditions u(0, x) + Zunächst wird ein eindimensionaler homogener Stab der Länge $l$ und Wärmeleitkoeffizient $\kappa$ betrachtet. Es ergibt sich für das Wärmeleitungsproblem @@ -355,6 +359,9 @@ wie auch mit isolierten Enden -\frac{n^{2}\pi^{2}}{l^{2}}. \end{equation} +% TODO: infinite base vectors and fourier series +\subsubsection{TODO: Auf Anzahl Lösungen und Fourierreihe eingehen} + % % Lösung von X(x), Teil: Koeffizienten a_n und b_n mittels skalarprodukt. % @@ -642,6 +649,8 @@ ergibt. Dieses Resultat kann nun mit allen vorhergehenden Resultaten zusammengesetzt werden um die vollständige Lösung für das Stab-Problem zu erhalten. +% TODO: elaborate + \subsubsection{Lösung für einen Stab mit Enden auf konstanter Temperatur} \[ \begin{aligned} -- cgit v1.2.1 From d65bf90a7e01a26407f7891cea3831bf43029a40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Thu, 18 Aug 2022 11:48:45 +0200 Subject: Added some structure hints and subsections. --- buch/papers/sturmliouville/waermeleitung_beispiel.tex | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index fd1659f..ea84d46 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -362,6 +362,11 @@ wie auch mit isolierten Enden % TODO: infinite base vectors and fourier series \subsubsection{TODO: Auf Anzahl Lösungen und Fourierreihe eingehen} +% TODO: check ease of reading +\subsubsection{Berechnung der Koeffizienten} + +% TODO: move explanation A/B -> a_n/b_n to fourier subsection + % % Lösung von X(x), Teil: Koeffizienten a_n und b_n mittels skalarprodukt. % -- cgit v1.2.1 From 6045f3002a4dd4f214a8b4c66786a0d9916084ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Fri, 19 Aug 2022 13:40:41 +0200 Subject: Minor correction. --- buch/papers/sturmliouville/waermeleitung_beispiel.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index ea84d46..4992150 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -24,7 +24,7 @@ die partielle Differentialgleichung \frac{\partial u}{\partial t} = \kappa \frac{\partial^{2}u}{{\partial x}^{2}}, \end{equation} -wobei der Stab in diesem Fall auf der $X$-Achse im Intervall $[0,l]$ liegt. +wobei der Stab in diesem Fall auf der $x$-Achse im Intervall $[0,l]$ liegt. Da diese Differentialgleichung das Problem allgemein für einen homogenen Stab beschreibt, werden zusätzliche Bedingungen benötigt, um beispielsweise -- cgit v1.2.1 From e76aafb88c04a26d22417b65ba959cc899f00be1 Mon Sep 17 00:00:00 2001 From: haddoucher Date: Fri, 19 Aug 2022 16:00:49 +0200 Subject: Einleitung ein wenig korrigiert --- buch/papers/sturmliouville/einleitung.tex | 53 ++++++---------------- .../sturmliouville/tschebyscheff_beispiel.tex | 12 ++--- 2 files changed, 19 insertions(+), 46 deletions(-) diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index d497622..f58baf9 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -22,32 +22,24 @@ als \end{equation} geschrieben werden kann, dann wird diese Gleichung als Sturm-Liouville-Gleichung bezeichnet. \end{definition} -Alle homogene 2. Ordnung lineare gewöhnliche Differentialgleichungen können in die Form der Gleichung \ref{eq:sturm-liouville-equation} umgeformt werden. +Alle homogenen linearen gewöhnlichen Differentialgleichungen 2. Ordnung können in die Form der Gleichung \eqref{eq:sturm-liouville-equation} umgewandelt werden. \subsection{Randbedingungen\label{sub:was-ist-das-slp-randbedingungen}} -Wenn von der Funktion $y(x)$ die Werte $x$ des jeweiligen Randes des Definitionsbereiches anzunehmen sind, also +Geeignete Randbedingungen sind erforderlich, um die Lösungen einer Differentialgleichung genau zu bestimmen. +Die Sturm-Liouville-Gleichung mit homogenen Randbedingungen des dritten Typs \begin{equation} - y(a) = y(b) = 0, + \begin{aligned} + \label{eq:randbedingungen} + k_a y(a) + h_a p(a) y'(a) &= 0 \\ + k_b y(b) + h_b p(b) y'(b) &= 0. + \end{aligned} \end{equation} -so spricht man von einer Dirichlet-Randbedingung\footnote{Die Dirichlet-Randbedingung oder auch Randbedingung des ersten Typs genannt ist nach dem deutschen Mathematiker Peter Gstav Lejeune Dirichlet benannt. Sie findet Anwendung auf gewöhnliche oder patielle Differentialgleichungen und gibt mit der Bedingung die Werte an, die für die abgeleitete Lösung innerhalb der Domänengrenze gelten.}, und von einer Neumann-Randbedingung\footnote{Die Neumann-Randbedingung oder auch Randbedingung des zweiten Typs genannt, ist nach dem deutschen Mathematiker Carl Neumann benannt. Sie legt die Werte fest, die eine Lösung entlang der Domänengrenze annehmen muss, wenn eine gewöhnliche oder partielle Differentialgleichung gestellt wird.} spricht man, wenn -\begin{equation} - y'(a) = y'(b) = 0 -\end{equation} -ergibt. +ist das klassische Sturm-Liouville-Problem. -Die Sturm-Liouville-Theorie besagt, dass, wenn man die Sturm-Liouville-Gleichung mit den homogenen Randbedingungen des dritten Typs\footnote{Die Randbedingung des dritten Typs, oder Robin-Randbedingungen (benannt nach dem französischen mathematischen Analytiker und angewandten Mathematiker Victor Gustave Robin), wird genannt, wenn sie einer gewöhnlichen oder partiellen Differentialgleichung auferlegt wird, so sind die Spezifikationen einer Linearkombination der Werte einer Funktion sowie die Werte ihrer Ableitung am Rande des Bereichs} -\begin{equation} -\begin{aligned} - \label{eq:randbedingungen} - k_a y(a) + h_a p(a) y'(a) &= 0 \\ - k_b y(b) + h_b p(b) y'(b) &= 0 -\end{aligned} -\end{equation} -kombiniert, dann bekommt man das klassische Sturm-Liouville-Problem. \subsection{Eigenwertproblem} -Die Gleichungen \ref{eq:sturm-liouville-equation} hat die Form eines Eigenwertproblems -Wenn bei der Sturm-Liouville-Gleichung \ref{eq:sturm-liouville-equation} alles konstant bleibt, aber der Wert von $\lambda$ sich ändert, erhält man eine andere Eigenfunktion, weil man eine andere gewöhnliche Differentialgleichung löst; +Die Gleichungen \eqref{eq:sturm-liouville-equation} hat die Form eines Eigenwertproblems. +Wenn bei der Sturm-Liouville-Gleichung \eqref{eq:sturm-liouville-equation} alles konstant bleibt, aber der Wert von $\lambda$ sich ändert, erhält man eine andere Eigenfunktion, weil man eine andere gewöhnliche Differentialgleichung löst; der Parameter $\lambda$ wird als Eigenwert bezeichnet. Es ist genau das gleiche Prinzip wie bei den Matrizen, andere Eigenwerte ergeben andere Eigenvektoren. Es besteht eine Korrespondenz zwischen den Eigenwerten und den Eigenvektoren. @@ -67,14 +59,13 @@ Somit ergibt die Gleichung \subsection{Koeffizientenfunktionen} Die Funktionen $p(x)$, $q(x)$ und $w(x)$ werden als Koeffizientenfunktionen mit ihren freien Variablen $x$ bezeichnet. Die Funktion $w(x)$ (manchmal auch $r(x)$ genannt) wird als Gewichtsfunktion oder Dichtefunktion bezeichnet. -Es gibt zwei verschiedene Sturm-Liouville-Probleme: das reguläre Sturm-Liouville-Problem und das singuläre Sturm-Liouville-Problem. -Die Funktionen für das reguläre und das singuläre Sturm-Liouville-Problem sind nicht dieselben. +Die Eigenschaften der Koeffizientenfunktionen haben einen grossen Einfluss auf die Lösbarkeit des Sturm-Liouville-Problems. % %Kapitel mit "Das reguläre Sturm-Liouville-Problem" % -\subsection{Das reguläre Sturm-Liouville-Problem\label{sub:reguläre_sturm_liouville_problem}} +\subsection{Das reguläre oder singuläre Sturm-Liouville-Problem\label{sub:reguläre_sturm_liouville_problem}} Damit es sich um ein reguläres Sturm-Liouville-Problem handelt, müssen einige Bedingungen beachtet werden. \begin{definition} \label{def:reguläres_sturm-liouville-problem} @@ -84,30 +75,14 @@ Damit es sich um ein reguläres Sturm-Liouville-Problem handelt, müssen einige \item Die Funktionen $p(x), p'(x), q(x)$ und $w(x)$ müssen stetig und reell sein. \item sowie müssen in einem endlichen Intervall $[a,b]$ integrierbar sein. \item $p(x)$ und $w(x)$ sind $>0$. - \item Es gelten die Randbedingungen \ref{eq:randbedingungen}, wobei $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. + \item Es gelten die Randbedingungen \eqref{eq:randbedingungen}, wobei $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. \end{itemize} \end{definition} Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige Eigenschaften der Eigenfunktionen beschreiben zu können, ohne sie genau zu kennen. -% -%Kapitel mit "Das singuläre Sturm-Liouville-Problem" -% -\subsection{Das singuläre Sturm-Liouville-Problem\label{sub:singuläre_sturm_liouville_problem}} -Von einem singulären Sturm-Liouville-Problem spricht man, wenn die Bedingungen des regulärem Problem nicht erfüllt sind. -\begin{definition} - \label{def:singulär_sturm-liouville-problem} - \index{singuläres Sturm-Liouville-Problem} -Es handelt sich um ein singuläres Sturm-Liouville-Problem, wenn: - \begin{itemize} - \item wenn sein Definitionsbereich auf dem Intervall $[ \ a,b] \ $ unbeschränkt ist oder - \item wenn die Koeffizienten an den Randpunkten Singularitäten haben. - \end{itemize} -\end{definition} -Allerdings kann nur eine der Bedingungen nicht erfüllt sein, so dass es sich bereits um ein singuläres Sturm-Liouville-Problem handelt. - \begin{beispiel} Das Randwertproblem \begin{equation} diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index 3817dc0..c304632 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -41,29 +41,27 @@ ist die gleiche wie $w(x)$ und erfüllt die Bedingung. \subsubsection*{Randwertproblem} Für die Verifizierung der Randbedingungen benötigt man erneut $p(x)$. Da sich die Polynome nur auf dem Intervall $[ -1,1 ]$ orthogonal verhalten, sind $a = -1$ und $b = 1$ gesetzt. -Beim einsetzen in die Randbedingung \ref{eq:randbedingungen}, erhält man +Beim einsetzen in die Randbedingung \eqref{eq:randbedingungen}, erhält man \begin{equation} \begin{aligned} - k_a y(-1) + h_a y'(-1) &= 0 + k_a y(-1) + h_a y'(-1) &= 0\\ k_b y(-1) + h_b y'(-1) &= 0. \end{aligned} \end{equation} -Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome (siehe \label{sub:definiton_der_tschebyscheff-Polynome}). -Es gibt zwei Arten von Tschebyscheff Polynome: die erste Art $T_n(x)$ und die zweite Art $U_n(x)$. -Jedoch beachtet man in diesem Kapitel nur die Tschebyscheff Polynome erster Art (\ref{eq:tschebyscheff-polynome}). +Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome (siehe \ref{sub:definiton_der_tschebyscheff-Polynome}). Die Funktion $y(x)$ wird nun mit der Funktion $T_n(x)$ ersetzt und für die Verifizierung der Randbedingung wählt man $n=2$. Somit erhält man \begin{equation} \begin{aligned} k_a T_2(-1) + h_a T_{2}'(-1) &= k_a = 0\\ k_b T_2(1) + h_b T_{2}'(1) &= k_b = 0. -\end{aligned} + \end{aligned} \end{equation} Ähnlich wie beim Beispiel der Wärmeleitung in einem homogenen Stab kann man, damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, können beliebige $h_a \ne 0$ und $h_b \ne 0$ gewählt werden. Somit ist erneut gezeigt, dass die Randbedingungen der Tschebyscheff-Polynome auf die Sturm-Liouville-Randbedingungen erfüllt und alle daraus resultierenden Lösungen orthogonal sind. \begin{beispiel} - Die Gleichung \ref{eq:skalar-sturm-liouville} mit $y_m = T_1(x)$ und $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ ergibt + Die Gleichung \eqref{eq:skalar-sturm-liouville} mit $y_m = T_1(x)$ und $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ ergibt \[ \int_{-1}^{1} w(x) x (2x^2-1) dx = 0. \] -- cgit v1.2.1 From 89713bfdec5519956942a81e52ba11ed742730e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Fri, 19 Aug 2022 16:10:08 +0200 Subject: Commit before merging and revising all work. --- buch/papers/sturmliouville/eigenschaften.tex | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index bef8a39..7ac2d92 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -4,10 +4,19 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % + + \section{Eigenschaften von Lösungen \label{sturmliouville:section:solution-properties}} \rhead{Eigenschaften von Lösungen} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% OLD section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \section{OLD: Eigenschaften von Lösungen} +% \label{sturmliouville:section:solution-properties}} +% \rhead{Eigenschaften von Lösungen} + Im weiteren werden nun die Eigenschaften der Lösungen eines Sturm-Liouville-Problems diskutiert und aufgezeigt, wie diese Eigenschaften zustande kommen. -- cgit v1.2.1 From ceb14483a272c5e78f43baf858312d0f6d45d39b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Fri, 19 Aug 2022 16:13:05 +0200 Subject: Commiting again. (Some changes weren't captured.) --- buch/papers/sturmliouville/tschebyscheff_beispiel.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index 3817dc0..f0e6860 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -48,7 +48,7 @@ Beim einsetzen in die Randbedingung \ref{eq:randbedingungen}, erhält man k_b y(-1) + h_b y'(-1) &= 0. \end{aligned} \end{equation} -Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome (siehe \label{sub:definiton_der_tschebyscheff-Polynome}). +Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome (siehe \ref{sub:tschebyscheff-polynome}). Es gibt zwei Arten von Tschebyscheff Polynome: die erste Art $T_n(x)$ und die zweite Art $U_n(x)$. Jedoch beachtet man in diesem Kapitel nur die Tschebyscheff Polynome erster Art (\ref{eq:tschebyscheff-polynome}). Die Funktion $y(x)$ wird nun mit der Funktion $T_n(x)$ ersetzt und für die Verifizierung der Randbedingung wählt man $n=2$. -- cgit v1.2.1 From 122c15094eb58f62ff8fac3e97d85dcdd5fcddc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Fri, 19 Aug 2022 16:59:11 +0200 Subject: Reformatted code to comply with guidelines. --- buch/papers/sturmliouville/einleitung.tex | 99 ++++++++++++++-------- .../sturmliouville/tschebyscheff_beispiel.tex | 61 +++++++------ 2 files changed, 101 insertions(+), 59 deletions(-) diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index f58baf9..324fa8f 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -5,9 +5,18 @@ % \section{Was ist das Sturm-Liouville-Problem\label{sturmliouville:section:teil0}} \rhead{Einleitung} -Das Sturm-Liouville-Problem wurde benannt nach dem schweizerisch-französischen Mathematiker und Physiker Jacques Charles Fran\c{c}ois Sturm und dem französischen Mathematiker Joseph Liouville. -Gemeinsam haben sie in der mathematischen Physik die Sturm-Liouville-Theorie entwickelt und gilt für die Lösung von gewöhnlichen Differentialgleichungen, jedoch verwendet man die Theorie öfters bei der Lösung von partiellen Differentialgleichungen. -Normalerweise betrachtet man für das Strum-Liouville-Problem eine gewöhnliche Differentialgleichung 2. Ordnung, und wenn es sich um eine partielle Differentialgleichung handelt, kann man sie in mehrere gewöhnliche Differentialgleichungen umwandeln. Wie z. B. den Separationsansatz, die partielle Differentialgleichung mit mehreren Variablen. +Das Sturm-Liouville-Problem wurde benannt nach dem schweizerisch-französischen +Mathematiker und Physiker Jacques Charles Fran\c{c}ois Sturm und dem +französischen Mathematiker Joseph Liouville. +Gemeinsam haben sie in der mathematischen Physik die Sturm-Liouville-Theorie +entwickelt und gilt für die Lösung von gewöhnlichen Differentialgleichungen, +jedoch verwendet man die Theorie öfters bei der Lösung von partiellen +Differentialgleichungen. +Normalerweise betrachtet man für das Strum-Liouville-Problem eine gewöhnliche +Differentialgleichung 2. Ordnung, und wenn es sich um eine partielle +Differentialgleichung handelt, kann man sie in mehrere gewöhnliche +Differentialgleichungen umwandeln. Wie z. B. den Separationsansatz, die +partielle Differentialgleichung mit mehreren Variablen. \begin{definition} \index{Sturm-Liouville-Gleichung}% @@ -18,14 +27,21 @@ Wenn die lineare homogene Differentialgleichung als \begin{equation} \label{eq:sturm-liouville-equation} - \frac{d}{dx}\lbrack p(x) \frac{dy}{dx} \rbrack + \lbrack q(x) + \lambda w(x) \rbrack y = 0 + \frac{d}{dx}\lbrack p(x) \frac{dy}{dx} \rbrack + \lbrack q(x) + + \lambda w(x) \rbrack y + = + 0 \end{equation} -geschrieben werden kann, dann wird diese Gleichung als Sturm-Liouville-Gleichung bezeichnet. +geschrieben werden kann, dann wird diese Gleichung als Sturm-Liouville-Gleichung +bezeichnet. \end{definition} -Alle homogenen linearen gewöhnlichen Differentialgleichungen 2. Ordnung können in die Form der Gleichung \eqref{eq:sturm-liouville-equation} umgewandelt werden. +Alle homogenen linearen gewöhnlichen Differentialgleichungen 2. Ordnung können +in die Form der Gleichung \eqref{eq:sturm-liouville-equation} umgewandelt +werden. \subsection{Randbedingungen\label{sub:was-ist-das-slp-randbedingungen}} -Geeignete Randbedingungen sind erforderlich, um die Lösungen einer Differentialgleichung genau zu bestimmen. +Geeignete Randbedingungen sind erforderlich, um die Lösungen einer +Differentialgleichung genau zu bestimmen. Die Sturm-Liouville-Gleichung mit homogenen Randbedingungen des dritten Typs \begin{equation} \begin{aligned} @@ -38,17 +54,24 @@ ist das klassische Sturm-Liouville-Problem. \subsection{Eigenwertproblem} -Die Gleichungen \eqref{eq:sturm-liouville-equation} hat die Form eines Eigenwertproblems. -Wenn bei der Sturm-Liouville-Gleichung \eqref{eq:sturm-liouville-equation} alles konstant bleibt, aber der Wert von $\lambda$ sich ändert, erhält man eine andere Eigenfunktion, weil man eine andere gewöhnliche Differentialgleichung löst; +Die Gleichungen \eqref{eq:sturm-liouville-equation} hat die Form eines +Eigenwertproblems. +Wenn bei der Sturm-Liouville-Gleichung \eqref{eq:sturm-liouville-equation} alles +konstant bleibt, aber der Wert von $\lambda$ sich ändert, erhält man eine andere +Eigenfunktion, weil man eine andere gewöhnliche Differentialgleichung löst; der Parameter $\lambda$ wird als Eigenwert bezeichnet. -Es ist genau das gleiche Prinzip wie bei den Matrizen, andere Eigenwerte ergeben andere Eigenvektoren. +Es ist genau das gleiche Prinzip wie bei den Matrizen, andere Eigenwerte ergeben +andere Eigenvektoren. Es besteht eine Korrespondenz zwischen den Eigenwerten und den Eigenvektoren. Das gleiche gilt auch beim Sturm-Liouville-Problem, und zwar \begin{equation} \lambda \overset{Korrespondenz}\leftrightarrow y. \end{equation} -Die Theorie besagt, wenn $y_m$, $y_n$ Eigenfuktionen des Sturm-Liouville-Problems sind, die verschiedene Eigenwerte $\lambda_m$, $\lambda_n$ ($\lambda_m \neq \lambda_n$) entsprechen, so sind $y_m$, $y_n$ orthogonal zu y - +Die Theorie besagt, wenn $y_m$, $y_n$ Eigenfuktionen des +Sturm-Liouville-Problems sind, die verschiedene Eigenwerte $\lambda_m$, +$\lambda_n$ ($\lambda_m \neq \lambda_n$) entsprechen, so sind $y_m$, $y_n$ +orthogonal zu y - dies gilt für das Intervall (a,b). Somit ergibt die Gleichung \begin{equation} @@ -57,31 +80,38 @@ Somit ergibt die Gleichung \end{equation} \subsection{Koeffizientenfunktionen} -Die Funktionen $p(x)$, $q(x)$ und $w(x)$ werden als Koeffizientenfunktionen mit ihren freien Variablen $x$ bezeichnet. -Die Funktion $w(x)$ (manchmal auch $r(x)$ genannt) wird als Gewichtsfunktion oder Dichtefunktion bezeichnet. -Die Eigenschaften der Koeffizientenfunktionen haben einen grossen Einfluss auf die Lösbarkeit des Sturm-Liouville-Problems. +Die Funktionen $p(x)$, $q(x)$ und $w(x)$ werden als Koeffizientenfunktionen mit +ihren freien Variablen $x$ bezeichnet. +Die Funktion $w(x)$ (manchmal auch $r(x)$ genannt) wird als Gewichtsfunktion +oder Dichtefunktion bezeichnet. +Die Eigenschaften der Koeffizientenfunktionen haben einen grossen Einfluss auf +die Lösbarkeit des Sturm-Liouville-Problems. % %Kapitel mit "Das reguläre Sturm-Liouville-Problem" % -\subsection{Das reguläre oder singuläre Sturm-Liouville-Problem\label{sub:reguläre_sturm_liouville_problem}} -Damit es sich um ein reguläres Sturm-Liouville-Problem handelt, müssen einige Bedingungen beachtet werden. +\subsection{Das reguläre oder singuläre Sturm-Liouville-Problem +\label{sub:reguläre_sturm_liouville_problem}} +Damit es sich um ein reguläres Sturm-Liouville-Problem handelt, müssen einige +Bedingungen beachtet werden. \begin{definition} \label{def:reguläres_sturm-liouville-problem} \index{regläres Sturm-Liouville-Problem} Die Bedingungen für ein reguläres Sturm-Liouville-Problem sind: \begin{itemize} - \item Die Funktionen $p(x), p'(x), q(x)$ und $w(x)$ müssen stetig und reell sein. - \item sowie müssen in einem endlichen Intervall $[a,b]$ integrierbar sein. + \item Die Funktionen $p(x), p'(x), q(x)$ und $w(x)$ müssen stetig und + reell sein. + \item sowie müssen in einem endlichen Intervall $[a,b]$ integrierbar + sein. \item $p(x)$ und $w(x)$ sind $>0$. - \item Es gelten die Randbedingungen \eqref{eq:randbedingungen}, wobei $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. + \item Es gelten die Randbedingungen \eqref{eq:randbedingungen}, wobei + $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. \end{itemize} \end{definition} -Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige Eigenschaften der Eigenfunktionen beschreiben zu können, ohne sie genau zu kennen. - - - +Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige +Eigenschaften der Eigenfunktionen beschreiben zu können, ohne sie genau zu +kennen. \begin{beispiel} Das Randwertproblem @@ -92,8 +122,11 @@ Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige Eigenschaft \end{aligned} \end{equation} ist kein reguläres Sturm-Liouville-Problem. - Wenn man die Gleichung in die Sturm-Liouville Form umformen, dann ergeben die Koeffizientenfunktionen $p(x) = w(x) = x$ und $q(x) = -m^2/x$. - Schaut man jetzt die Bedingungen im Kapitel \ref{sub:reguläre_sturm_liouville_problem} an und vergleicht diese unseren Koeffizientenfunktionen, so erkennt man einige Probleme: + Wenn man die Gleichung in die Sturm-Liouville Form umformen, dann ergeben + die Koeffizientenfunktionen $p(x) = w(x) = x$ und $q(x) = -m^2/x$. + Schaut man jetzt die Bedingungen im + Kapitel~\ref{sub:reguläre_sturm_liouville_problem} an und vergleicht diese + unseren Koeffizientenfunktionen, so erkennt man einige Probleme: \begin{itemize} \item $p(x)$ und $w(x)$ sind nicht positiv, wenn $x = 0$ ist. \item $q(x)$ ist nicht kontinuierlich, wenn $x = 0$ ist. @@ -101,11 +134,11 @@ Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige Eigenschaft \end{itemize} \end{beispiel} -Verwendet man das reguläre Sturm-Liouville-Problem, obwohl eine oder beide Bedingungen nicht erfüllt sind, dann ist es schwierig zu sagen, ob die Lösung eindeutige Ergebnisse hat. -Es ist schwierig, Kriterien anzuwenden, da die Formulierungen z. B. in der Lösungsfunktion liegen. -Ähnlich wie bei der Fourier-Reihe gegenüber der Fourier-Transformation gibt es immer noch eine zugehörige Eigenfunktionsentwicklung, und zwar die Integraltransformation sowie gibt es weiterhin verallgemeinerte Eigenfunktionen. - - - - - +Verwendet man das reguläre Sturm-Liouville-Problem, obwohl eine oder beide +Bedingungen nicht erfüllt sind, dann ist es schwierig zu sagen, ob die Lösung +eindeutige Ergebnisse hat. +Es ist schwierig, Kriterien anzuwenden, da die Formulierungen z. B. in der +Lösungsfunktion liegen. +Ähnlich wie bei der Fourier-Reihe gegenüber der Fourier-Transformation gibt es +immer noch eine zugehörige Eigenfunktionsentwicklung, und zwar die +Integraltransformation sowie gibt es weiterhin verallgemeinerte Eigenfunktionen. diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index c304632..cad71d7 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -4,9 +4,11 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\subsection{Sind Tschebyscheff-Polynome orthogonal zueinander?\label{sub:tschebyscheff-polynome}} +\subsection{Sind Tschebyscheff-Polynome orthogonal zueinander? +\label{sub:tschebyscheff-polynome}} \subsubsection*{Definition der Koeffizientenfunktion} -Im Kapitel \ref{sub:beispiele_sturm_liouville_problem} sind die Koeffizientenfunktionen, die man braucht, schon aufgeliste, und zwar mit +Im Kapitel \ref{sub:beispiele_sturm_liouville_problem} sind die +Koeffizientenfunktionen, die man braucht, schon aufgeliste, und zwar mit \begin{align*} w(x) &= \frac{1}{\sqrt{1-x^2}} \\ p(x) &= \sqrt{1-x^2} \\ @@ -15,15 +17,25 @@ Im Kapitel \ref{sub:beispiele_sturm_liouville_problem} sind die Koeffizientenfun Da die Sturm-Liouville-Gleichung \begin{equation} \label{eq:sturm-liouville-equation-tscheby} - \frac{d}{dx} (\sqrt{1-x^2} \frac{dy}{dx}) + (0 + \lambda \frac{1}{\sqrt{1-x^2}}) y = 0 + \frac{d}{dx} (\sqrt{1-x^2} \frac{dy}{dx}) + + (0 + \lambda \frac{1}{\sqrt{1-x^2}}) y + = + 0 \end{equation} -nun mit den Koeffizientenfunktionen aufgestellt werden kann, bleibt die Frage, ob es sich um ein reguläres oder singuläres Sturm-Liouville-Problem handelt. +nun mit den Koeffizientenfunktionen aufgestellt werden kann, bleibt die Frage, +ob es sich um ein reguläres oder singuläres Sturm-Liouville-Problem handelt. \subsubsection*{regulär oder singulär?} -Für das reguläre Problem laut der Definition \ref{def:reguläres_sturm-liouville-problem} muss die funktion $p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und $w(x) = \frac{1}{\sqrt{1-x^2}}$ stetig und reell sein --- und sie sind es auch. -Auf dem Intervall $(-1,1)$ sind die Tschebyscheff-Polynome erster Art mit Hilfe von Hyperbelfunktionen +Für das reguläre Problem laut der +Definition~\ref{def:reguläres_sturm-liouville-problem} muss die funktion +$p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und +$w(x) = \frac{1}{\sqrt{1-x^2}}$ stetig und reell sein --- und sie sind es auch. +Auf dem Intervall $(-1,1)$ sind die Tschebyscheff-Polynome erster Art mit Hilfe +von Hyperbelfunktionen \begin{equation} - T_n(x) = \cos n (\arccos x) + T_n(x) + = + \cos n (\arccos x) \end{equation}. Für $x>1$ und $x<-1$ sehen die Polynome wie folgt aus: \begin{equation} @@ -31,7 +43,8 @@ Für $x>1$ und $x<-1$ sehen die Polynome wie folgt aus: (-1)^n \cosh (n \arccos (-x)), & x<-1 \end{array}\right. \end{equation}, jedoch ist die Orthogonalität nur auf dem Intervall $[ -1, 1]$ sichergestellt. -Die nächste Bedingung beinhaltet, dass die Funktion $p(x)$ und $w(x)>0$ sein müssen. +Die nächste Bedingung beinhaltet, dass die Funktion $p(x)$ und $w(x)>0$ sein +müssen. Die Funktion \begin{equation*} p(x)^{-1} = \frac{1}{\sqrt{1-x^2}} @@ -40,7 +53,8 @@ ist die gleiche wie $w(x)$ und erfüllt die Bedingung. \subsubsection*{Randwertproblem} Für die Verifizierung der Randbedingungen benötigt man erneut $p(x)$. -Da sich die Polynome nur auf dem Intervall $[ -1,1 ]$ orthogonal verhalten, sind $a = -1$ und $b = 1$ gesetzt. +Da sich die Polynome nur auf dem Intervall $[ -1,1 ]$ orthogonal verhalten, +sind $a = -1$ und $b = 1$ gesetzt. Beim einsetzen in die Randbedingung \eqref{eq:randbedingungen}, erhält man \begin{equation} \begin{aligned} @@ -48,8 +62,10 @@ Beim einsetzen in die Randbedingung \eqref{eq:randbedingungen}, erhält man k_b y(-1) + h_b y'(-1) &= 0. \end{aligned} \end{equation} -Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome (siehe \ref{sub:definiton_der_tschebyscheff-Polynome}). -Die Funktion $y(x)$ wird nun mit der Funktion $T_n(x)$ ersetzt und für die Verifizierung der Randbedingung wählt man $n=2$. +Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome +(siehe \ref{sub:definiton_der_tschebyscheff-Polynome}). +Die Funktion $y(x)$ wird nun mit der Funktion $T_n(x)$ ersetzt und für die +Verifizierung der Randbedingung wählt man $n=2$. Somit erhält man \begin{equation} \begin{aligned} @@ -57,24 +73,17 @@ Somit erhält man k_b T_2(1) + h_b T_{2}'(1) &= k_b = 0. \end{aligned} \end{equation} -Ähnlich wie beim Beispiel der Wärmeleitung in einem homogenen Stab kann man, damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, können beliebige $h_a \ne 0$ und $h_b \ne 0$ gewählt werden. -Somit ist erneut gezeigt, dass die Randbedingungen der Tschebyscheff-Polynome auf die Sturm-Liouville-Randbedingungen erfüllt und alle daraus resultierenden Lösungen orthogonal sind. +Ähnlich wie beim Beispiel der Wärmeleitung in einem homogenen Stab kann man, +damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, können beliebige +$h_a \ne 0$ und $h_b \ne 0$ gewählt werden. +Somit ist erneut gezeigt, dass die Randbedingungen der Tschebyscheff-Polynome +auf die Sturm-Liouville-Randbedingungen erfüllt und alle daraus resultierenden +Lösungen orthogonal sind. \begin{beispiel} - Die Gleichung \eqref{eq:skalar-sturm-liouville} mit $y_m = T_1(x)$ und $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ ergibt + Die Gleichung \eqref{eq:skalar-sturm-liouville} mit $y_m = T_1(x)$ und + $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ ergibt \[ \int_{-1}^{1} w(x) x (2x^2-1) dx = 0. \] \end{beispiel} - - - - - - - - - - - - -- cgit v1.2.1 From 8f4f84434acdf37f425df36902e1f0f9be137cc9 Mon Sep 17 00:00:00 2001 From: "samuel.niederer" Date: Fri, 19 Aug 2022 21:55:57 +0200 Subject: correct cite order --- buch/papers/kra/einleitung.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buch/papers/kra/einleitung.tex b/buch/papers/kra/einleitung.tex index cde2e66..0503742 100644 --- a/buch/papers/kra/einleitung.tex +++ b/buch/papers/kra/einleitung.tex @@ -11,4 +11,4 @@ Als Riccati Gleichung werden auch Matrixgleichungen der Form \label{kra:equation:matrixriccati} \dot{X}(t) = C + DX(t) - X(t)A -X(t)BX(t) \end{equation} -bezeichnet, welche aufgrund ihres quadratischen Terms eine gewisse Ähnlichkeit aufweisen \cite{kra:ethz} \cite{kra:riccati}. +bezeichnet, welche aufgrund ihres quadratischen Terms eine gewisse Ähnlichkeit aufweisen \cite{kra:riccati} \cite{kra:ethz}. -- cgit v1.2.1 From 51b817632fbd9633efeba81e7f457a70f74248cd Mon Sep 17 00:00:00 2001 From: "samuel.niederer" Date: Fri, 19 Aug 2022 21:56:35 +0200 Subject: correct typographic errors --- buch/papers/kra/anwendung.tex | 76 +++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/buch/papers/kra/anwendung.tex b/buch/papers/kra/anwendung.tex index 6383984..6390d4f 100644 --- a/buch/papers/kra/anwendung.tex +++ b/buch/papers/kra/anwendung.tex @@ -2,23 +2,24 @@ \rhead{Anwendung} \newcommand{\dt}[0]{\frac{d}{dt}} -Die Matrix-Riccati Differentialgleichung findet unter anderem Anwendung in der Regelungstechnik beim RQ- und RQG-Regler oder aber auch beim Kalmanfilter. -Im folgenden Abschnitt möchten wir uns an einem Beispiel anschauen wie wir mit Hilfe der Matrix-Riccati Differentialgleichung (\ref{kra:equation:matrixriccati}) ein Feder-Masse-System untersuchen können \cite{kra:riccati}. +Die Matrix-Riccati Differentialgleichung findet unter anderem Anwendung in der Regelungstechnik beim RQ- und RQG-Regler oder aber auch beim Kalman-Filter. +Im folgenden Abschnitt möchten wir uns an einem Beispiel anschauen wie wir mit Hilfe der Matrix-Riccati-Differentialgleichung (\ref{kra:equation:matrixriccati}) ein Feder-Masse-System untersuchen können \cite{kra:riccati}. \subsection{Feder-Masse-System} -Die einfachste Form eines Feder-Masse-Systems ist dargestellt in Abbildung \ref{kra:fig:simple_mass_spring}. -Es besteht aus einer reibungsfrei gelagerten Masse $m$ ,welche an eine Feder mit der Federkonstante $k$ gekoppelt ist. +Die einfachste Form eines Feder-Masse-Systems ist dargestellt in Abbildung~\ref{kra:fig:simple_mass_spring}. +Es besteht aus einer reibungsfrei gelagerten Masse $m$, welche an eine Feder mit der Federkonstante $k$ gekoppelt ist. Die im System wirkenden Kräfte teilen sich auf in die auf dem hookeschen Gesetz basierenden Rückstellkraft $F_R = k \Delta_x$ und der auf dem Aktionsprinzip basierenden Kraft $F_a = am = \ddot{x} m$. Das Kräftegleichgewicht fordert $F_R = F_a$ woraus folgt, dass \begin{equation*} - k \Delta_x = \ddot{x} m \Leftrightarrow \ddot{x} = \frac{k \Delta_x}{m} + k \Delta_x = \ddot{x} m \Leftrightarrow \ddot{x} = \frac{k \Delta_x}{m}. \end{equation*} Die Funktion die diese Differentialgleichung löst, ist die harmonische Schwingung \begin{equation} - x(t) = A \cos(\omega_0 t + \Phi), \quad \omega_0 = \sqrt{\frac{k}{m}} + x(t) = A \cos(\omega_0 t + \varphi), \quad \omega_0 = \sqrt{\frac{k}{m}}. \end{equation} \begin{figure} + \centering % move image to standalone because the physics package is % incompatible with underbrace \includegraphics{papers/kra/images/simple.pdf} @@ -27,6 +28,7 @@ Die Funktion die diese Differentialgleichung löst, ist die harmonische Schwingu \label{kra:fig:simple_mass_spring} \end{figure} \begin{figure} + \centering \input{papers/kra/images/multi_mass_spring.tex} \caption{Feder-Masse-System mit zwei Massen und drei Federn.} \label{kra:fig:multi_mass_spring} @@ -36,29 +38,29 @@ Die Funktion die diese Differentialgleichung löst, ist die harmonische Schwingu Die Bewegung der Masse $m$ kann mit Hilfe der hamiltonschen Mechanik im Phasenraum untersucht werden. Die hamiltonschen Gleichungen verwenden dafür die verallgemeinerten Ortskoordinaten $q = (q_{1}, q_{2}, ..., q_{n})$ und die verallgemeinerten Impulskoordinaten $p = (p_{1}, p_{2}, ..., p_{n})$, wobei der Impuls definiert ist als $p_k = m_k \cdot v_k$. -Liegen keine zeitabhängigen Zwangsbedingungen vor, so entspricht die Hamitlon-Funktion der Gesamtenergie des Systems \cite{kra:hamilton}. +Liegen keine zeitabhängigen Zwangsbedingungen vor, so entspricht die Hamilton-Funktion der Gesamtenergie des Systems \cite{kra:hamilton}. Im Falle des einfachen Feder-Masse-Systems, Abbildung \ref{kra:fig:simple_mass_spring}, setzt sich die Hamilton-Funktion aus kinetischer und potentieller Energie zusammen. \begin{equation} - \label{kra:harmonischer_oszillator} + \label{kra:equation:harmonischer_oszillator} \begin{split} - \mathcal{H}(q, p) &= T(p) + V(q) = E \\ - &= \underbrace{\frac{p^2}{2m}}_{E_{kin}} + \underbrace{\frac{k q^2}{2}}_{E_{pot}} + H(q, p) &= T(p) + V(q) = E \\ + &= \underbrace{\frac{p^2}{2m}}_{\displaystyle{E_{kin}}} + \underbrace{\frac{k q^2}{2}}_{\displaystyle{E_{pot}}} \end{split} \end{equation} Die Hamiltonschen Bewegungsgleichungen liefern \cite{kra:kanonischegleichungen} \begin{equation} - \label{kra:hamilton:bewegungsgleichung} - \dot{q_{k}} = \frac{\partial \mathcal{H}}{\partial p_k} + \label{kra:equation:bewegungsgleichung} + \dot{q_{k}} = \frac{\partial H}{\partial p_k} \qquad - \dot{p_{k}} = -\frac{\partial \mathcal{H}}{\partial q_k} + \dot{p_{k}} = -\frac{\partial H}{\partial q_k}, \end{equation} daraus folgt \[ \dot{q} = \frac{p}{m} \qquad - \dot{p} = -kq + \dot{p} = -kq. \] -in Matrixschreibweise erhalten wir also +In Matrixschreibweise erhalten wir also \[ \begin{pmatrix} \dot{q} \\ @@ -73,10 +75,11 @@ in Matrixschreibweise erhalten wir also q \\ p \end{pmatrix} + . \] Für das erweiterte Federmassesystem, Abbildung \ref{kra:fig:multi_mass_spring}, können wir analog vorgehen. Die kinetische Energie setzt sich nun aus den kinetischen Energien der einzelnen Massen $m_1$ und $m_2$ zusammen. -Die Potentielle Energie erhalten wir aus der Summe der kinetischen Energien der einzelnen Federn mit den Federkonstanten $k_1$, $k_c$ und $k_2$. +Die potentielle Energie erhalten wir aus der Summe der kinetischen Energien der einzelnen Federn mit den Federkonstanten $k_1$, $k_c$ und $k_2$. \begin{align*} \begin{split} T &= T_1 + T_2 \\ @@ -85,19 +88,19 @@ Die Potentielle Energie erhalten wir aus der Summe der kinetischen Energien der \\ \begin{split} V &= V_1 + V_c + V_2 \\ - &= \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2} + &= \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2}. \end{split} \end{align*} Die Hamilton-Funktion ist also \begin{align*} \begin{split} - \mathcal{H} &= T + V \\ - &= \frac{p_1^2}{2m_1} + \frac{p_2^2}{2m_2} + \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2} + H &= T + V \\ + &= \frac{p_1^2}{2m_1} + \frac{p_2^2}{2m_2} + \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2} \end{split} \end{align*} -Die Bewegungsgleichungen \ref{kra:hamilton:bewegungsgleichung} liefern +Die Bewegungsgleichungen \eqref{kra:equation:bewegungsgleichung} liefern \begin{align*} - \frac{\partial \mathcal{H}}{\partial p_k} & = \dot{q_k} + \frac{\partial H}{\partial p_k} & = \dot{q_k} \Rightarrow \left\{ \begin{alignedat}{2} @@ -106,18 +109,18 @@ Die Bewegungsgleichungen \ref{kra:hamilton:bewegungsgleichung} liefern \end{alignedat} \right. \\ - -\frac{\partial \mathcal{H}}{\partial q_k} & = \dot{p_k} + -\frac{\partial H}{\partial q_k} & = \dot{p_k} \Rightarrow \left\{ \begin{alignedat}{2} \dot{p_1} &= -(\frac{2k_1q_1}{2} - \frac{2k_c(q_2-q_1)}{2}) &&= -q_1(k_1+k_c) + q_2k_c \\ - \dot{p_1} &= -(\frac{2k_c(q_2-q_1)}{2} - \frac{2k_2q_2}{2}) &&= q_1k_c - (k_c + k_2) + \dot{p_1} &= -(\frac{2k_c(q_2-q_1)}{2} - \frac{2k_2q_2}{2}) &&= q_1k_c - (k_c + k_2). \end{alignedat} \right. \end{align*} In Matrixschreibweise erhalten wir \begin{equation} - \label{kra:hamilton:multispringmass} + \label{kra:equation:hamilton-multispringmass} \begin{pmatrix} \dot{q_1} \\ \dot{q_2} \\ @@ -153,7 +156,7 @@ In Matrixschreibweise erhalten wir \begin{pmatrix} Q \\ P \\ - \end{pmatrix} + \end{pmatrix}. \end{equation} \subsection{Phasenraum} @@ -161,22 +164,23 @@ Der Phasenraum erlaubt die eindeutige Beschreibung aller möglichen Bewegungszus Die Phasenraumdarstellung eignet sich somit sehr gut für die systematische Untersuchung der Feder-Masse-Systeme. \subsubsection{Harmonischer Oszillator} -Die Hamiltonfunktion des harmonischen Oszillators \ref{kra:harmonischer_oszillator} führt auf eine Lösung der Form +Die Hamiltonfunktion des harmonischen Oszillators \eqref{kra:equation:harmonischer_oszillator} führt auf eine Lösung der Form \begin{equation*} - q(t) = A \cos(\omega_0 T + \Phi), \quad p(t) = -m \omega_0 A \sin(\omega_0 t + \Phi) + q(t) = A \cos(\omega_0 T + \Phi), \quad p(t) = -m \omega_0 A \sin(\omega_0 t + \Phi), \end{equation*} die Phasenraumtrajektorien bilden also Ellipsen mit Zentrum $q=0, p=0$ und Halbachsen $A$ und $m \omega A$. -Abbildung \ref{kra:fig:phasenraum} zeigt Phasenraumtrajektorien mit den Energien $E_{x \in \{A, B, C, D\}}$ und verschiedenen Werten von $\omega$. +Abbildung~\ref{kra:fig:phasenraum} zeigt Phasenraumtrajektorien mit den Energien $E_{x \in \{A, B, C, D\}}$ und verschiedenen Werten von $\omega$. \begin{figure} + \centering \input{papers/kra/images/phase_space.tex} \caption{Phasenraumdarstellung des einfachen Feder-Masse-Systems.} \label{kra:fig:phasenraum} \end{figure} \subsubsection{Erweitertes Feder-Masse-System} -Wir intressieren uns nun dafür wie der Phasenwinkel $U = PQ^{-1}$ von der Zeit abhängt, +Wir interessieren uns nun dafür, wie der Phasenwinkel $U = PQ^{-1}$ von der Zeit abhängt, wir suchen also die Grösse $\Theta = \dt U$. -Ersetzten wir in der Gleichung \ref{kra:hamilton:multispringmass} die Matrix $G$ mit $\tilde{G}$ so erhalten wir +Ersetzten wir in der Gleichung \eqref{kra:equation:hamilton-multispringmass} die Matrix $G$ mit $\tilde{G}$ so erhalten wir \begin{equation} \dt \begin{pmatrix} @@ -189,13 +193,13 @@ Ersetzten wir in der Gleichung \ref{kra:hamilton:multispringmass} die Matrix $G$ A & B \\ C & D \end{pmatrix} - }_{\tilde{G}} + }_{\displaystyle{\tilde{G}}} \begin{pmatrix} Q \\ P - \end{pmatrix} + \end{pmatrix}. \end{equation} -Mit einsetzten folgt +Ausgeschrieben folgt \begin{align*} \dot{Q} = AQ + BP \\ \dot{P} = CQ + DP @@ -204,12 +208,12 @@ Mit einsetzten folgt \begin{split} \dt U &= \dot{P} Q^{-1} + P \dt Q^{-1} \\ &= (CQ + DP) Q^{-1} - P (Q^{-1} \dot{Q} Q^{-1}) \\ - &= C\underbrace{QQ^{-1}}_\text{I} + D\underbrace{PQ^{-1}}_\text{U} - P(Q^{-1} (AQ + BP) Q^{-1}) \\ - &= C + DU - \underbrace{PQ^{-1}}_\text{U}(A\underbrace{QQ^{-1}}_\text{I} + B\underbrace{PQ^{-1}}_\text{U}) \\ + &= C\underbrace{QQ^{-1}}_\text{$I$} + D\underbrace{PQ^{-1}}_\text{$U$} - P(Q^{-1} (AQ + BP) Q^{-1}) \\ + &= C + DU - \underbrace{PQ^{-1}}_\text{$U$}(A\underbrace{QQ^{-1}}_\text{$I$} + B\underbrace{PQ^{-1}}_\text{$U$}) \\ &= C + DU - UA - UBU \end{split} \end{equation} -was uns auf die Matrix-Riccati Gleichung \ref{kra:equation:matrixriccati} führt. +was uns auf die Matrix-Riccati Gleichung \eqref{kra:equation:matrixriccati} führt. % @TODO Einfluss auf anfangsbedingungen, plots? % @TODO Fazit ? -- cgit v1.2.1 From f4d8100eff505891e91729ce314d6cfd5dfcbadf Mon Sep 17 00:00:00 2001 From: "samuel.niederer" Date: Fri, 19 Aug 2022 21:57:08 +0200 Subject: apply corrections --- buch/papers/kra/loesung.tex | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/buch/papers/kra/loesung.tex b/buch/papers/kra/loesung.tex index 4e0da1c..dbbb7f6 100644 --- a/buch/papers/kra/loesung.tex +++ b/buch/papers/kra/loesung.tex @@ -7,47 +7,50 @@ Es gibt aber Spezialfälle, in denen sich die Gleichung vereinfachen lässt und Diese wollen wir im folgenden Abschnitt genauer anschauen. \subsubsection{Fall 1: Konstante Koeffizienten} -Sind die Koeffizienten $f(x), g(x), h(x)$ Konstanten, so lässt sich die DGL separieren und reduziert sich auf die Lösung des Integrals \ref{kra:equation:case1_int}. +Im Fall von konstanten Koeffizienten $f(x), g(x), h(x)$, wird die Gleichung \eqref{kra:equation:riccati} zu \begin{equation} - y' = fy^2 + gy + h + y' = fy^2 + gy + h. \end{equation} +Durch Ausschreiben des Differentialquotienten \begin{equation} \frac{dy}{dx} = fy^2 + gy + h \end{equation} +erkennt man, dass die DGL separierbar ist. Die Lösung findet man nun durch die Berechnung des Integrals \begin{equation} \label{kra:equation:case1_int} - \int \frac{dy}{fy^2 + gy + h} = \int dx + \int \frac{dy}{fy^2 + gy + h} = \int dx. \end{equation} \subsubsection{Fall 2: Bekannte spezielle Lösung} -Kennt man eine spezielle Lösung $y_p$ so kann die riccatische DGL mit Hilfe einer Substitution auf eine lineare Gleichung reduziert werden. +Kennt man eine spezielle Lösung $y_p$, so kann die riccatische DGL mit Hilfe einer Substitution auf eine lineare Gleichung reduziert werden. Wir wählen als Substitution \begin{equation} \label{kra:equation:substitution} - z = \frac{1}{y - y_p} + z = \frac{1}{y - y_p}, \end{equation} -durch Umstellen von \ref{kra:equation:substitution} folgt +durch Umstellen von \eqref{kra:equation:substitution} folgt \begin{equation} y = y_p + \frac{1}{z^2} \label{kra:equation:backsubstitution} \end{equation} \begin{equation} - y' = y_p' - \frac{1}{z^2}z' + y' = y_p' - \frac{1}{z^2}z', \end{equation} -mit Einsetzten in die DGL \ref{kra:equation:riccati} folgt +mit Einsetzten in die DGL \eqref{kra:equation:riccati} resultiert \begin{equation} y_p' - \frac{1}{z^2}z' = f(x)(y_p + \frac{1}{z}) + g(x)(y_p + \frac{1}{z})^2 + h(x) \end{equation} \begin{equation} - -z^{2}y_p' + z' = -z^2\underbrace{(y_{p}f(x) + g(x)y_p^2 + h(x))}_{y_p'} - z(f(x) + 2y_{p}g(x)) - g(x) + -z^{2}y_p' + z' = -z^2\underbrace{(y_{p}f(x) + g(x)y_p^2 + h(x))}_{\displaystyle{y_p'}} - z(f(x) + 2y_{p}g(x)) - g(x) \end{equation} -was uns direkt auf eine lineare Differentialgleichung 1.Ordnung führt. +was uns direkt auf die lineare Differentialgleichung 1. Ordnung \begin{equation} z' = -z(f(x) + 2y_{p}g(x)) - g(x) \end{equation} -Diese kann nun mit den Methoden zur Lösung von linearen Differentialgleichungen 1.Ordnung gelöst werden. -Durch die Rücksubstitution \ref{kra:equation:backsubstitution} erhält man dann die Lösung von \ref{kra:equation:riccati}. +führt. +Diese kann nun mit den Methoden zur Lösung von linearen Differentialgleichungen 1. Ordnung gelöst werden. +Durch die Rücksubstitution \eqref{kra:equation:backsubstitution} erhält man dann die Lösung von \eqref{kra:equation:riccati}. -\subsection{Matrix-Riccati Differentialgleichung} \label{kra:loesung:riccati} +\subsection{Matrix-Riccati-Differentialgleichung} \label{kra:loesung:riccati} % Lösung matrix riccati -Die Lösung der Matrix-Riccati Gleichung \ref{kra:equation:matrixriccati} erhalten wir nach \cite{kra:kalmanisae} folgendermassen +Die Lösung der Matrix-Riccati-Gleichung \ref{kra:equation:matrixriccati} erhalten wir nach \cite{kra:kalmanisae} folgendermassen \begin{equation} \label{kra:matrixriccati-solution} \begin{pmatrix} -- cgit v1.2.1 From 578b2428f3e2a1be020de0254c6e1e679aca1957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Sat, 20 Aug 2022 15:00:08 +0200 Subject: Added hints for revised structure. --- buch/papers/sturmliouville/eigenschaften.tex | 17 +++++++++++++++-- buch/papers/sturmliouville/einleitung.tex | 11 +++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 7ac2d92..6085e75 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -10,6 +10,19 @@ \label{sturmliouville:section:solution-properties}} \rhead{Eigenschaften von Lösungen} +% TODO: +% state goal +% use only what is necessary +% make sure it is easy enough to understand (sentences as shot as possible) +% -> Eigenvalue problem with matrices only +% -> prepare reader for following examples +% +% order: +% 1. Eigenvalue problems with matrices +% 2. Sturm-Liouville is an Eigenvalue prolem +% 3. Sturm-Liouville operator (selfadjacent) +% 4. Spektralsatz (brief) +% 5. Base of orthonormal functions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% OLD section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -21,7 +34,7 @@ Im weiteren werden nun die Eigenschaften der Lösungen eines Sturm-Liouville-Problems diskutiert und aufgezeigt, wie diese Eigenschaften zustande kommen. -Dazu wird der Operator $L_0$ welcher bereits in +Dazu wird der Operator $L_0$ welcher bereits in Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} betrachtet wurde, noch etwas genauer angeschaut. Es wird also im Folgenden @@ -85,7 +98,7 @@ des Sturm-Liouville-Problems orthogonal zueinander sind bezüglich des Skalarprodukts, in dem $L_0$ selbstadjungiert ist. Erfüllt also eine Differenzialgleichung die in -Abschnitt~\ref{sturmliouville:section:teil0} präsentierten Eigenschaften und +Abschnitt~\ref{sturmliouville:section:teil0} präsentierten Eigenschaften und erfüllen die Randbedingungen der Differentialgleichung die Randbedingungen des Sturm-Liouville-Problems, kann bereits geschlossen werden, dass die Lösungsfunktion des Problems eine Linearkombination aus orthogonalen diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index 324fa8f..62d9509 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -3,6 +3,17 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % + +% TODO: +% order: +% 1. State goal of showing examples in intro +% 2. Show Sturm-Liouville form +% 3. Explain boundary conditions as necessary in regards to examples +% (make singular property brief) +% +% Remove Eigenvaluedecomposition -> is discussed in properties of solutions +% Check for readability + \section{Was ist das Sturm-Liouville-Problem\label{sturmliouville:section:teil0}} \rhead{Einleitung} Das Sturm-Liouville-Problem wurde benannt nach dem schweizerisch-französischen -- cgit v1.2.1 From 59c0b79063b76b84f64203685bfdb2768a69b984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Sun, 21 Aug 2022 23:48:29 +0200 Subject: Started revised draft of solution properties. --- buch/papers/sturmliouville/eigenschaften.tex | 64 ++++++++++++++++++++++------ 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 6085e75..4ab5e62 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -5,11 +5,6 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % - -\section{Eigenschaften von Lösungen -\label{sturmliouville:section:solution-properties}} -\rhead{Eigenschaften von Lösungen} - % TODO: % state goal % use only what is necessary @@ -19,16 +14,59 @@ % % order: % 1. Eigenvalue problems with matrices -% 2. Sturm-Liouville is an Eigenvalue prolem -% 3. Sturm-Liouville operator (selfadjacent) -% 4. Spektralsatz (brief) +% 2. Sturm-Liouville is an Eigenvalue problem +% 3. Sturm-Liouville operator (self-adjacent) +% 4. Spectral theorem (brief) % 5. Base of orthonormal functions +\section{Eigenschaften von Lösungen +\label{sturmliouville:section:solution-properties}} +\rhead{Eigenschaften von Lösungen} + +Im weiteren werden nun die Eigenschaften der Lösungen eines +Sturm-Liouville-Problems diskutiert. +Im wesendlichen wird darauf eingegangen, wie die Orthogonalität der Lösungen +zustande kommt. +Dazu wird zunächst das Eigenwertproblem für Matrizen wiederholt und angeschaut +unter welchen Voraussetzungen die Lösungen orthogonal sind. +Dann wird gezeigt, dass das Sturm-Liouville-Problem auch ein Eigenwertproblem +dieser Art ist und es wird auf au die Orthogononalität der Lösungsfunktion +geschlossen. + +\subsection{Eigenwertprobleme mit Matrizen} + +Das Eigenwertprobelm +\[ + A v + = + \lambda v +\] +für die $n \times n$-Matrix $A$, dem Eigenwert $\lambda$ und dem Eigenvektor $v$ +in der linearen Algebra wird häufig im Zusammenhang mit +Matrixzerlegungen diskutiert. + +Mittels Spektralsatzes kann zum Beispiel geschlossen werden, dass wenn +\[ + + = + +\] +gilt, die Matrix A symmetrisch (und somit selbstadjungiert) ist und somit eine +Orthonormalbasis aus Eigenvektoren besitzt. +In aneren Worten: durch diese Eigenschaft ist gegeben, dass A diagonalisierbar +ist und alle Eigenvektoren orthogonal zueinander sind. + +\subsection{} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% OLD section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \section{OLD: Eigenschaften von Lösungen} -% \label{sturmliouville:section:solution-properties}} -% \rhead{Eigenschaften von Lösungen} +\iffalse + +\section{OLD: Eigenschaften von Lösungen +%\label{sturmliouville:section:solution-properties} +} +\rhead{Eigenschaften von Lösungen} Im weiteren werden nun die Eigenschaften der Lösungen eines Sturm-Liouville-Problems diskutiert und aufgezeigt, wie diese Eigenschaften @@ -102,4 +140,6 @@ Abschnitt~\ref{sturmliouville:section:teil0} präsentierten Eigenschaften und erfüllen die Randbedingungen der Differentialgleichung die Randbedingungen des Sturm-Liouville-Problems, kann bereits geschlossen werden, dass die Lösungsfunktion des Problems eine Linearkombination aus orthogonalen -Basisfunktionen ist. \ No newline at end of file +Basisfunktionen ist. + +\fi -- cgit v1.2.1 From d80e30b37d3b51fc4d47229fb3e88610fbc7a476 Mon Sep 17 00:00:00 2001 From: haddoucher Date: Mon, 22 Aug 2022 14:43:20 +0200 Subject: neuste Version --- .../070-orthogonalitaet/gaussquadratur.tex | 2 +- buch/chapters/070-orthogonalitaet/orthogonal.tex | 1 + buch/papers/0f1/images/konvergenzNegativ.pdf | Bin 18155 -> 18524 bytes buch/papers/0f1/images/konvergenzPositiv.pdf | Bin 18581 -> 18253 bytes buch/papers/0f1/listings/kettenbruchIterativ.c | 60 +- buch/papers/0f1/listings/kettenbruchRekursion.c | 60 +- buch/papers/0f1/teil0.tex | 8 +- buch/papers/0f1/teil1.tex | 23 +- buch/papers/0f1/teil2.tex | 87 +- buch/papers/0f1/teil3.tex | 33 +- buch/papers/ellfilter/einleitung.tex | 91 +- buch/papers/ellfilter/elliptic.tex | 114 +- buch/papers/ellfilter/jacobi.tex | 137 ++- .../papers/ellfilter/presentation/presentation.tex | 272 ++++- buch/papers/ellfilter/python/F_N_elliptic.pgf | 847 -------------- buch/papers/ellfilter/python/elliptic.pgf | 1219 ++++++++++++++++---- buch/papers/ellfilter/python/elliptic.py | 10 +- buch/papers/ellfilter/python/elliptic2.py | 87 +- buch/papers/ellfilter/python/k.pgf | 90 +- buch/papers/ellfilter/tikz/arccos.tikz.tex | 70 +- buch/papers/ellfilter/tikz/arccos2.tikz.tex | 59 +- buch/papers/ellfilter/tikz/cd.tikz.tex | 66 +- buch/papers/ellfilter/tikz/cd2.tikz.tex | 44 +- buch/papers/ellfilter/tikz/cd3.tikz.tex | 86 ++ .../ellfilter/tikz/elliptic_transform1.tikz.tex | 76 ++ .../ellfilter/tikz/elliptic_transform2.tikz.tex | 75 ++ buch/papers/ellfilter/tikz/filter.tikz.tex | 32 + buch/papers/ellfilter/tikz/sn.tikz.tex | 73 +- buch/papers/ellfilter/tschebyscheff.tex | 72 +- buch/papers/fm/00_modulation.tex | 15 +- buch/papers/fm/01_AM.tex | 52 +- buch/papers/fm/02_FM.tex | 62 +- buch/papers/fm/03_bessel.tex | 33 +- buch/papers/fm/Python animation/Bessel-FM.ipynb | 84 +- buch/papers/fm/Python animation/Bessel-FM.py | 72 +- buch/papers/fm/Python animation/m_t.pgf | 746 ++++++++++++ buch/papers/fm/Quellen/NaT_Skript_20210920.pdf | Bin 0 -> 5455101 bytes buch/papers/fm/main.tex | 17 +- buch/papers/kreismembran/Makefile | 4 +- buch/papers/kreismembran/images/TikzSaite.pdf | Bin 0 -> 17625 bytes buch/papers/kreismembran/images/TikzSaite.tex | 57 + buch/papers/kreismembran/references.bib | 6 + buch/papers/kreismembran/teil0.tex | 17 +- buch/papers/kreismembran/teil1.tex | 27 +- buch/papers/kreismembran/teil2.tex | 8 +- buch/papers/kreismembran/teil3.tex | 22 +- buch/papers/kreismembran/teil4.tex | 30 +- buch/papers/kugel/Makefile | 3 +- buch/papers/kugel/figures/flux.pdf | Bin 0 -> 345665 bytes buch/papers/kugel/figures/povray/Makefile | 30 + buch/papers/kugel/figures/povray/curvature.jpg | Bin 0 -> 265649 bytes buch/papers/kugel/figures/povray/curvature.maxima | 6 + buch/papers/kugel/figures/povray/curvature.png | Bin 0 -> 590402 bytes buch/papers/kugel/figures/povray/curvature.pov | 139 +++ buch/papers/kugel/figures/povray/curvgraph.m | 140 +++ buch/papers/kugel/figures/povray/spherecurve.cpp | 292 +++++ buch/papers/kugel/figures/povray/spherecurve.jpg | Bin 0 -> 171287 bytes buch/papers/kugel/figures/povray/spherecurve.m | 160 +++ .../papers/kugel/figures/povray/spherecurve.maxima | 13 + buch/papers/kugel/figures/povray/spherecurve.png | Bin 0 -> 423490 bytes buch/papers/kugel/figures/povray/spherecurve.pov | 73 ++ buch/papers/kugel/figures/tikz/Makefile | 12 + buch/papers/kugel/figures/tikz/curvature-1d.dat | 500 ++++++++ buch/papers/kugel/figures/tikz/curvature-1d.pdf | Bin 0 -> 15387 bytes buch/papers/kugel/figures/tikz/curvature-1d.py | 32 + buch/papers/kugel/figures/tikz/curvature-1d.tex | 21 + .../kugel/figures/tikz/spherical-coordinates.pdf | Bin 0 -> 40319 bytes .../kugel/figures/tikz/spherical-coordinates.tex | 99 ++ buch/papers/kugel/images/Makefile | 30 - buch/papers/kugel/images/curvature.maxima | 6 - buch/papers/kugel/images/curvature.pov | 139 --- buch/papers/kugel/images/curvgraph.m | 140 --- buch/papers/kugel/images/spherecurve.cpp | 292 ----- buch/papers/kugel/images/spherecurve.m | 160 --- buch/papers/kugel/images/spherecurve.maxima | 13 - buch/papers/kugel/images/spherecurve.pov | 73 -- buch/papers/kugel/main.tex | 1 + buch/papers/kugel/packages.tex | 10 + buch/papers/kugel/preliminaries.tex | 8 +- buch/papers/kugel/proofs.tex | 245 ++++ buch/papers/kugel/references.bib | 11 + buch/papers/kugel/spherical-harmonics.tex | 407 ++++++- buch/papers/lambertw/Bilder/Intuition.pdf | Bin 187016 -> 149406 bytes buch/papers/lambertw/Bilder/Strategie.pdf | Bin 151684 -> 148667 bytes buch/papers/lambertw/Bilder/Strategie.py | 11 +- buch/papers/lambertw/Bilder/Strategie.svg | 790 ------------- .../papers/lambertw/Bilder/VerfolgungskurveBsp.png | Bin 356399 -> 318960 bytes .../Bilder/lambertAbstandBauchgef\303\274hl.py" | 10 +- buch/papers/lambertw/Bilder/pursuerDGL.ggb | Bin 36225 -> 0 bytes buch/papers/lambertw/Bilder/pursuerDGL.svg | 1 - buch/papers/lambertw/Bilder/pursuerDGL2.ggb | Bin 21894 -> 0 bytes buch/papers/lambertw/Bilder/pursuerDGL2.pdf | Bin 21894 -> 0 bytes buch/papers/lambertw/Bilder/pursuerDGL2.png | Bin 48606 -> 0 bytes buch/papers/lambertw/Bilder/pursuerDGL2.svg | 1 - buch/papers/lambertw/teil0.tex | 10 +- buch/papers/lambertw/teil1.tex | 60 +- buch/papers/parzyl/images/Makefile | 16 + buch/papers/parzyl/images/common.inc | 64 + buch/papers/parzyl/images/halfplane.jpg | Bin 0 -> 200681 bytes buch/papers/parzyl/images/halfplane.pdf | Bin 0 -> 208606 bytes buch/papers/parzyl/images/halfplane.png | Bin 0 -> 473623 bytes buch/papers/parzyl/images/halfplane.pov | 201 ++++ buch/papers/parzyl/images/halfplane.tex | 41 + buch/papers/parzyl/img/D_plot.png | Bin 0 -> 746370 bytes buch/papers/parzyl/img/plane.pdf | Bin 0 -> 2072 bytes buch/papers/parzyl/img/v_plot.png | Bin 0 -> 648430 bytes buch/papers/parzyl/main.tex | 4 +- buch/papers/parzyl/references.bib | 33 + buch/papers/parzyl/teil0.tex | 130 ++- buch/papers/parzyl/teil1.tex | 184 ++- buch/papers/parzyl/teil2.tex | 69 +- buch/papers/parzyl/teil3.tex | 102 +- buch/papers/sturmliouville/eigenschaften.tex | 105 +- buch/papers/sturmliouville/einleitung.tex | 110 +- .../sturmliouville/tschebyscheff_beispiel.tex | 61 +- .../sturmliouville/waermeleitung_beispiel.tex | 50 +- buch/papers/transfer/main.tex | 4 +- buch/papers/transfer/packages.tex | 5 + buch/papers/transfer/references.bib | 27 +- buch/papers/transfer/teil0.tex | 242 +++- buch/papers/transfer/teil1.tex | 89 +- buch/papers/transfer/teil2.tex | 92 +- buch/papers/transfer/teil3.tex | 50 +- buch/papers/transfer/teil4.tex | 218 ++++ cover/buchcover.tex | 2 +- 125 files changed, 7016 insertions(+), 3867 deletions(-) delete mode 100644 buch/papers/ellfilter/python/F_N_elliptic.pgf create mode 100644 buch/papers/ellfilter/tikz/cd3.tikz.tex create mode 100644 buch/papers/ellfilter/tikz/elliptic_transform1.tikz.tex create mode 100644 buch/papers/ellfilter/tikz/elliptic_transform2.tikz.tex create mode 100644 buch/papers/ellfilter/tikz/filter.tikz.tex create mode 100644 buch/papers/fm/Python animation/m_t.pgf create mode 100644 buch/papers/fm/Quellen/NaT_Skript_20210920.pdf create mode 100644 buch/papers/kreismembran/images/TikzSaite.pdf create mode 100644 buch/papers/kreismembran/images/TikzSaite.tex create mode 100644 buch/papers/kugel/figures/flux.pdf create mode 100644 buch/papers/kugel/figures/povray/Makefile create mode 100644 buch/papers/kugel/figures/povray/curvature.jpg create mode 100644 buch/papers/kugel/figures/povray/curvature.maxima create mode 100644 buch/papers/kugel/figures/povray/curvature.png create mode 100644 buch/papers/kugel/figures/povray/curvature.pov create mode 100644 buch/papers/kugel/figures/povray/curvgraph.m create mode 100644 buch/papers/kugel/figures/povray/spherecurve.cpp create mode 100644 buch/papers/kugel/figures/povray/spherecurve.jpg create mode 100644 buch/papers/kugel/figures/povray/spherecurve.m create mode 100644 buch/papers/kugel/figures/povray/spherecurve.maxima create mode 100644 buch/papers/kugel/figures/povray/spherecurve.png create mode 100644 buch/papers/kugel/figures/povray/spherecurve.pov create mode 100644 buch/papers/kugel/figures/tikz/Makefile create mode 100644 buch/papers/kugel/figures/tikz/curvature-1d.dat create mode 100644 buch/papers/kugel/figures/tikz/curvature-1d.pdf create mode 100644 buch/papers/kugel/figures/tikz/curvature-1d.py create mode 100644 buch/papers/kugel/figures/tikz/curvature-1d.tex create mode 100644 buch/papers/kugel/figures/tikz/spherical-coordinates.pdf create mode 100644 buch/papers/kugel/figures/tikz/spherical-coordinates.tex delete mode 100644 buch/papers/kugel/images/Makefile delete mode 100644 buch/papers/kugel/images/curvature.maxima delete mode 100644 buch/papers/kugel/images/curvature.pov delete mode 100644 buch/papers/kugel/images/curvgraph.m delete mode 100644 buch/papers/kugel/images/spherecurve.cpp delete mode 100644 buch/papers/kugel/images/spherecurve.m delete mode 100644 buch/papers/kugel/images/spherecurve.maxima delete mode 100644 buch/papers/kugel/images/spherecurve.pov create mode 100644 buch/papers/kugel/proofs.tex delete mode 100644 buch/papers/lambertw/Bilder/Strategie.svg delete mode 100644 buch/papers/lambertw/Bilder/pursuerDGL.ggb delete mode 100644 buch/papers/lambertw/Bilder/pursuerDGL.svg delete mode 100644 buch/papers/lambertw/Bilder/pursuerDGL2.ggb delete mode 100644 buch/papers/lambertw/Bilder/pursuerDGL2.pdf delete mode 100644 buch/papers/lambertw/Bilder/pursuerDGL2.png delete mode 100644 buch/papers/lambertw/Bilder/pursuerDGL2.svg create mode 100644 buch/papers/parzyl/images/Makefile create mode 100644 buch/papers/parzyl/images/common.inc create mode 100644 buch/papers/parzyl/images/halfplane.jpg create mode 100644 buch/papers/parzyl/images/halfplane.pdf create mode 100644 buch/papers/parzyl/images/halfplane.png create mode 100644 buch/papers/parzyl/images/halfplane.pov create mode 100644 buch/papers/parzyl/images/halfplane.tex create mode 100644 buch/papers/parzyl/img/D_plot.png create mode 100644 buch/papers/parzyl/img/plane.pdf create mode 100644 buch/papers/parzyl/img/v_plot.png create mode 100644 buch/papers/transfer/teil4.tex diff --git a/buch/chapters/070-orthogonalitaet/gaussquadratur.tex b/buch/chapters/070-orthogonalitaet/gaussquadratur.tex index a5af7d2..c7dfb31 100644 --- a/buch/chapters/070-orthogonalitaet/gaussquadratur.tex +++ b/buch/chapters/070-orthogonalitaet/gaussquadratur.tex @@ -20,7 +20,7 @@ Ein solches Polynom $p(x)$ hat $n+1$ Koeffizienten, die aus dem linearen Gleichungssystem der $n+1$ Gleichungen $p(x_i)=f(x_i)$ ermittelt werden können. -Das Interpolationspolynom $p(x)$ lässt sich abera uch direkt +Das Interpolationspolynom $p(x)$ lässt sich aber auch direkt angeben. Dazu konstruiert man zuerst die Polynome \[ diff --git a/buch/chapters/070-orthogonalitaet/orthogonal.tex b/buch/chapters/070-orthogonalitaet/orthogonal.tex index df04514..793b78d 100644 --- a/buch/chapters/070-orthogonalitaet/orthogonal.tex +++ b/buch/chapters/070-orthogonalitaet/orthogonal.tex @@ -641,6 +641,7 @@ H_w f\colon(a,b) \to \mathbb{R} \;\bigg|\; \int_a^b |f(x)|^2 w(x)\,dx +<\infty \biggr\}. \] Die Funktionen $f\in H_w$ haben folgende Eigenschaften diff --git a/buch/papers/0f1/images/konvergenzNegativ.pdf b/buch/papers/0f1/images/konvergenzNegativ.pdf index 03b2ba1..07d2a44 100644 Binary files a/buch/papers/0f1/images/konvergenzNegativ.pdf and b/buch/papers/0f1/images/konvergenzNegativ.pdf differ diff --git a/buch/papers/0f1/images/konvergenzPositiv.pdf b/buch/papers/0f1/images/konvergenzPositiv.pdf index 2e45129..8e1e7e4 100644 Binary files a/buch/papers/0f1/images/konvergenzPositiv.pdf and b/buch/papers/0f1/images/konvergenzPositiv.pdf differ diff --git a/buch/papers/0f1/listings/kettenbruchIterativ.c b/buch/papers/0f1/listings/kettenbruchIterativ.c index d897b8f..3caaf43 100644 --- a/buch/papers/0f1/listings/kettenbruchIterativ.c +++ b/buch/papers/0f1/listings/kettenbruchIterativ.c @@ -1,53 +1,27 @@ /** - * @brief Calculates the Hypergeometric Function 0F1(;b;z) - * @param b0 in 0F1(;b0;z) - * @param z in 0F1(;b0;z) - * @param n number of itertions (precision) + * @brief Calculates the Hypergeometric Function 0F1(;c;z) + * @param c in 0F1(;c;z) + * @param z in 0F1(;c;z) + * @param k number of itertions (precision) * @return Result */ -static double fractionRekursion0f1(const double c, const double z, unsigned int n) +static double fractionIter0f1(const double c, const double z, unsigned int k) { //declaration double a = 0.0; double b = 0.0; - double Ak = 0.0; - double Bk = 0.0; - double Ak_1 = 0.0; - double Bk_1 = 0.0; - double Ak_2 = 0.0; - double Bk_2 = 0.0; + double abk = 0.0; + double temp = 0.0; - for (unsigned int k = 0; k <= n; ++k) + for (; k > 0; --k) { - if (k == 0) - { - a = 1.0; //a0 - //recursion fomula for A0, B0 - Ak = a; - Bk = 1.0; - } - else if (k == 1) - { - a = 1.0; //a1 - b = z/c; //b1 - //recursion fomula for A1, B1 - Ak = a * Ak_1 + b * 1.0; - Bk = a * Bk_1; - } - else - { - a = 1 + (z / (k * ((k - 1) + c)));//ak - b = -(z / (k * ((k - 1) + c))); //bk - //recursion fomula for Ak, Bk - Ak = a * Ak_1 + b * Ak_2; - Bk = a * Bk_1 + b * Bk_2; - } - //save old values - Ak_2 = Ak_1; - Bk_2 = Bk_1; - Ak_1 = Ak; - Bk_1 = Bk; + abk = z / (k * ((k - 1) + c)); //abk = ak, bk + + a = k > 1 ? (1 + abk) : 1; //a0, a1 + b = k > 1 ? -abk : abk; //b1 + + temp = b / (a + temp); //bk / (ak + last result) } - //approximation fraction - return Ak/Bk; -} + + return a + temp; //a0 + temp +} \ No newline at end of file diff --git a/buch/papers/0f1/listings/kettenbruchRekursion.c b/buch/papers/0f1/listings/kettenbruchRekursion.c index 3caaf43..d897b8f 100644 --- a/buch/papers/0f1/listings/kettenbruchRekursion.c +++ b/buch/papers/0f1/listings/kettenbruchRekursion.c @@ -1,27 +1,53 @@ /** - * @brief Calculates the Hypergeometric Function 0F1(;c;z) - * @param c in 0F1(;c;z) - * @param z in 0F1(;c;z) - * @param k number of itertions (precision) + * @brief Calculates the Hypergeometric Function 0F1(;b;z) + * @param b0 in 0F1(;b0;z) + * @param z in 0F1(;b0;z) + * @param n number of itertions (precision) * @return Result */ -static double fractionIter0f1(const double c, const double z, unsigned int k) +static double fractionRekursion0f1(const double c, const double z, unsigned int n) { //declaration double a = 0.0; double b = 0.0; - double abk = 0.0; - double temp = 0.0; + double Ak = 0.0; + double Bk = 0.0; + double Ak_1 = 0.0; + double Bk_1 = 0.0; + double Ak_2 = 0.0; + double Bk_2 = 0.0; - for (; k > 0; --k) + for (unsigned int k = 0; k <= n; ++k) { - abk = z / (k * ((k - 1) + c)); //abk = ak, bk - - a = k > 1 ? (1 + abk) : 1; //a0, a1 - b = k > 1 ? -abk : abk; //b1 - - temp = b / (a + temp); //bk / (ak + last result) + if (k == 0) + { + a = 1.0; //a0 + //recursion fomula for A0, B0 + Ak = a; + Bk = 1.0; + } + else if (k == 1) + { + a = 1.0; //a1 + b = z/c; //b1 + //recursion fomula for A1, B1 + Ak = a * Ak_1 + b * 1.0; + Bk = a * Bk_1; + } + else + { + a = 1 + (z / (k * ((k - 1) + c)));//ak + b = -(z / (k * ((k - 1) + c))); //bk + //recursion fomula for Ak, Bk + Ak = a * Ak_1 + b * Ak_2; + Bk = a * Bk_1 + b * Bk_2; + } + //save old values + Ak_2 = Ak_1; + Bk_2 = Bk_1; + Ak_1 = Ak; + Bk_1 = Bk; } - - return a + temp; //a0 + temp -} \ No newline at end of file + //approximation fraction + return Ak/Bk; +} diff --git a/buch/papers/0f1/teil0.tex b/buch/papers/0f1/teil0.tex index adccac7..335cf92 100644 --- a/buch/papers/0f1/teil0.tex +++ b/buch/papers/0f1/teil0.tex @@ -5,11 +5,11 @@ % \section{Ausgangslage\label{0f1:section:ausgangslage}} \rhead{Ausgangslage} -Die Hypergeometrische Funktion $\mathstrut_0F_1$ wird in vielen Funktionen als Basisfunktion benutzt, -zum Beispiel um die Airy Funktion zu berechnen. +Die hypergeometrische Funktion $\mathstrut_0F_1$ wird in vielen Funktionen als Basisfunktion benutzt, +zum Beispiel um die Airy-Funktion zu berechnen. In der GNU Scientific Library \cite{0f1:library-gsl} ist die Funktion $\mathstrut_0F_1$ vorhanden. -Allerdings wirft die Funktion, bei negativen Übergabenwerten wie zum Beispiel \verb+gsl_sf_hyperg_0F1(1, -1)+, eine Exception. +Allerdings wirft die Funktion bei negativen Übergabewerten wie zum Beispiel \verb+gsl_sf_hyperg_0F1(1, -1)+ eine Exception. Bei genauerer Untersuchung hat sich gezeigt, dass die Funktion je nach Betriebssystem funktioniert oder eben nicht. So kann die Funktion unter Windows fehlerfrei aufgerufen werden, beim Mac OS und Linux sind negative Übergabeparameter im Moment nicht möglich. -Ziel dieser Arbeit war es zu evaluieren, ob es mit einfachen mathematischen Operationen möglich ist, die Hypergeometrische Funktion $\mathstrut_0F_1$ zu implementieren. +Ziel dieser Arbeit war es zu evaluieren, ob es mit einfachen mathematischen Operationen möglich ist, die hypergeometrische Funktion $\mathstrut_0F_1$ zu implementieren. diff --git a/buch/papers/0f1/teil1.tex b/buch/papers/0f1/teil1.tex index f697f45..8d00f95 100644 --- a/buch/papers/0f1/teil1.tex +++ b/buch/papers/0f1/teil1.tex @@ -6,12 +6,11 @@ \section{Mathematischer Hintergrund \label{0f1:section:mathHintergrund}} \rhead{Mathematischer Hintergrund} -Basierend auf den Herleitungen des vorhergehenden Abschnittes \ref{buch:rekursion:section:hypergeometrische-funktion}, werden im nachfolgenden Abschnitt nochmals die Resultate -beschrieben. +Basierend auf den Herleitungen des Abschnittes \ref{buch:rekursion:section:hypergeometrische-funktion} werden im nachfolgenden Abschnitt nochmals die Resultate beschrieben. \subsection{Hypergeometrische Funktion \label{0f1:subsection:hypergeometrisch}} -Als Grundlage der umgesetzten Algorithmen dient die hypergeometrische Funktion $\mathstrut_0F_1$. Diese ist eine Anwendung der allgemein definierten Funktion $\mathstrut_pF_q$. +Als Grundlage der umgesetzten Algorithmen dient die hypergeometrische Funktion $\mathstrut_0F_1$. Diese ist ein Speziallfall der allgemein definierten Funktion $\mathstrut_pF_q$. \begin{definition} \label{0f1:math:qFp:def} @@ -42,7 +41,8 @@ Angewendet auf die Funktion $\mathstrut_pF_q$ ergibt sich für $\mathstrut_0F_1$ \mathstrut_0F_1 \biggl( \begin{matrix} - \\- + \text{---} + \\\ b_1 \end{matrix} ; @@ -58,9 +58,9 @@ Angewendet auf die Funktion $\mathstrut_pF_q$ ergibt sich für $\mathstrut_0F_1$ -\subsection{Airy Funktion +\subsection{Airy-Funktion \label{0f1:subsection:airy}} -Die Funktion Ai(x) und die verwandte Funktion Bi(x) werden als Airy-Funktion bezeichnet. Sie werden zur Lösung verschiedener physikalischer Probleme benutzt, wie zum Beispiel zur Lösung der Schrödinger-Gleichung \cite{0f1:wiki-airyFunktion}. +Die Funktion $\operatorname{Ai}(x)$ und die verwandte Funktion $\operatorname{Bi}(x)$ werden als Airy-Funktion bezeichnet. Sie werden zur Lösung verschiedener physikalischer Probleme benutzt, wie zum Beispiel zur Lösung der Schrödinger-Gleichung \cite{0f1:wiki-airyFunktion}. \begin{definition} \label{0f1:airy:differentialgleichung:def} @@ -69,12 +69,12 @@ Die Funktion Ai(x) und die verwandte Funktion Bi(x) werden als Airy-Funktion bez heisst die {\em Airy-Differentialgleichung}. \end{definition} -Die Airy Funktion lässt sich auf verschiedene Arten darstellen. -Als hypergeometrische Funktion berechnet, ergibt sich wie in Abschnitt \ref{buch:differentialgleichungen:section:hypergeometrisch} hergeleitet, folgende Lösungen der Airy-Differentialgleichung zu den Anfangsbedingungen $Ai(0)=1$ und $Ai'(0)=0$, sowie $Bi(0)=0$ und $Bi'(0)=0$. +Die Airy-Funktion lässt sich auf verschiedene Arten darstellen. +Als hypergeometrische Funktion berechnet, ergeben sich wie in Abschnitt \ref{buch:differentialgleichungen:section:hypergeometrisch} hergeleitet, folgende Lösungen der Airy-Differentialgleichung zu den Anfangsbedingungen $\operatorname{Ai}(0)=1$ und $\operatorname{Ai}'(0)=0$, sowie $\operatorname{Bi}(0)=0$ und $\operatorname{Bi}'(0)=1$: \begin{align} \label{0f1:airy:hypergeometrisch:eq} -Ai(x) +\operatorname{Ai}(x) =& \sum_{k=0}^\infty \frac{1}{(\frac23)_k} \frac{1}{k!}\biggl(\frac{x^3}{9}\biggr)^k @@ -83,7 +83,7 @@ Ai(x) \begin{matrix}\text{---}\\\frac23\end{matrix};\frac{x^3}{9} \biggr). \\ -Bi(x) +\operatorname{Bi}(x) =& \sum_{k=0}^\infty \frac{1}{(\frac43)_k} \frac{1}{k!}\biggl(\frac{x^3}{9}\biggr)^k @@ -95,7 +95,6 @@ x\cdot\mathstrut_0F_1\biggl( \qedhere \end{align} -Um die Stabilität der Algorithmen zu $\mathstrut_0F_1$ zu überprüfen, wird in diesem speziellem Fall die Airy Funktion $Ai(x)$ \eqref{0f1:airy:hypergeometrisch:eq} -benutzt. +Um die Stabilität der Algorithmen zu $\mathstrut_0F_1$ zu überprüfen, wird in dieser Arbeit die Airy Funktion $\operatorname{Ai}(x)$ benutzt. diff --git a/buch/papers/0f1/teil2.tex b/buch/papers/0f1/teil2.tex index 15a1c44..fdcb0fc 100644 --- a/buch/papers/0f1/teil2.tex +++ b/buch/papers/0f1/teil2.tex @@ -6,12 +6,12 @@ \section{Umsetzung \label{0f1:section:teil2}} \rhead{Umsetzung} -Zur Umsetzung wurden drei verschiedene Ansätze gewählt \cite{0f1:code}. Dabei wurde der Schwerpunkt auf die Funktionalität und eine gute Lesbarkeit des Codes gelegt. +Zur Umsetzung wurden drei verschiedene Ansätze gewählt, die in vollständiger Form auf Github \cite{0f1:code} zu finden sind. Dabei wurde der Schwerpunkt auf die Funktionalität und eine gute Lesbarkeit des Codes gelegt. Die Unterprogramme wurde jeweils, wie die GNU Scientific Library, in C geschrieben. Die Zwischenresultate wurden vom Hauptprogramm in einem CSV-File gespeichert. Anschliessen wurde mit der Matplot-Library in Python die Resultate geplottet. \subsection{Potenzreihe \label{0f1:subsection:potenzreihe}} -Die naheliegendste Lösung ist die Programmierung der Potenzreihe. Allerdings ist ein Problem dieser Umsetzung \ref{0f1:listing:potenzreihe}, dass die Fakultät im Nenner schnell grosse Werte annimmt und so der Bruch gegen Null strebt. Spätesten ab $k=167$ stösst diese Umsetzung \eqref{0f1:umsetzung:0f1:eq} an ihre Grenzen, da die Fakultät von $168$ eine Bereichsüberschreitung des \textit{double} Bereiches darstellt \cite{0f1:double}. +Die naheliegendste Lösung ist die Programmierung der Potenzreihe \begin{align} \label{0f1:umsetzung:0f1:eq} @@ -23,40 +23,84 @@ Die naheliegendste Lösung ist die Programmierung der Potenzreihe. Allerdings is \frac{1}{c} +\frac{z^1}{(c+1) \cdot 1} + \cdots - + \frac{z^{20}}{c(c+1)(c+2)\cdots(c+19) \cdot 2.4 \cdot 10^{18}} + + \frac{z^{20}}{c(c+1)(c+2)\cdots(c+19) \cdot 2.4 \cdot 10^{18}}. \end{align} \lstinputlisting[style=C,float,caption={Potenzreihe.},label={0f1:listing:potenzreihe}, firstline=59]{papers/0f1/listings/potenzreihe.c} \subsection{Kettenbruch \label{0f1:subsection:kettenbruch}} -Ein endlicher Kettenbruch ist ein Bruch der Form +Eine weitere Variante zur Berechnung von $\mathstrut_0F_1(;c;z)$ ist die Umsetzung als Kettenbruch. +Der Vorteil einer Umsetzung als Kettenbruch gegenüber der Potenzreihe ist die schnellere Konvergenz. + +\subsubsection{Grundlage} +Ein endlicher Kettenbruch \cite{0f1:wiki-kettenbruch} ist ein Bruch der Form \begin{equation*} -a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{b_3}{a_3+\cdots}}} +a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{b_3}{a_3+\cdots}}}, \end{equation*} in welchem $a_0, a_1,\dots,a_n$ und $b_1,b_2,\dots,b_n$ ganze Zahlen sind. -Die Kurzschreibweise für einen allgemeinen Kettenbruch ist + +\subsubsection{Rekursionsbeziehungen und Kettenbrüche} +Wenn es eine Relation analytischer Funktion $f_i(z)$ hat, dann gibt es einen Kettenbruch für das Verhältnis $\frac{f_i(z)}{f_{i-1}(z)}$ \cite{0f1:wiki-fraction}. +Nimmt man die Gleichung +\begin{equation*} + f_{i-1} - f_i = k_i z f_{i+1}, +\end{equation*} +wo $f_i$ analytische Funktionen sind und $i > 0$ ist, sowie $k_i$ konstant. +Ergibt sich der Zusammenhang +\begin{equation*} + \cfrac{f_i}{f_{i-1}} = \cfrac{1}{1+k_iz\cfrac{f_{i+1}}{f_i}}. +\end{equation*} +Geht man einen Schritt weiter und nimmt für $g_i = \frac{f_i}{f_{i-1}}$ an, kommt man zur Formel \begin{equation*} - a_0 + \frac{a_1|}{|b_1} + \frac{a_2|}{|b_2} + \frac{a_3|}{|b_3} + \cdots + g_i = \cfrac{1}{1+k_izg_{i+1}}. \end{equation*} -\cite{0f1:wiki-kettenbruch}. -Angewendet auf die Funktion $\mathstrut_0F_1$ bedeutet dies \cite{0f1:wiki-fraction}: +Setzt man dies nun für $g_1$ in den Bruch ein, ergibt sich \begin{equation*} + g_1 = \cfrac{f_1}{f_0} = \cfrac{1}{1+k_izg_2} = \cfrac{1}{1+\cfrac{k_1z}{1+k_2zg_3}} = \cdots +\end{equation*} +Repetiert man dies unendlich, erhält man einen Kettenbruch in der Form: +\begin{equation} + \label{0f1:math:rekursion:eq} + \cfrac{f_1}{f_0} = \cfrac{1}{1+\cfrac{k_1z}{1+\cfrac{k_2z}{1+\cfrac{k_3z}{\cdots}}}}. +\end{equation} + +\subsubsection{Rekursion für $\mathstrut_0F_1$} +Angewendet auf die Potenzreihe +\begin{equation} + \label{0f1:math:potenzreihe:0f1:eq} \mathstrut_0F_1(;c;z) = 1 + \frac{z}{c\cdot1!} + \frac{z^2}{c(c+1)\cdot2!} + \frac{z^3}{c(c+1)(c+2)\cdot3!} + \cdots +\end{equation} +kann durch Substitution bewiesen werden, dass +\begin{equation*} + \mathstrut_0F_1(;c-1;z) - \mathstrut_0F_1(;c;z) = \frac{z}{c(c-1)} \cdot \mathstrut_0F_1(;c+1;z) +\end{equation*} +eine Relation dazu ist. +Wenn man für $f_i$ und $k_i$ die Annahme +\begin{align*} + f_i =& \mathstrut_0F_1(;c+i;z)\\ + k_i =& \frac{1}{(c+i)(c+i-1)} +\end{align*} +trifft und in die Formel \eqref{0f1:math:rekursion:eq} einsetzt, erhält man: +\begin{equation*} + \cfrac{\mathstrut_0F_1(;c+1;z)}{\mathstrut_0F_1(;c;z)} = \cfrac{1}{1+\cfrac{\cfrac{z}{c(c+1)}}{1+\cfrac{\cfrac{z}{(c+1)(c+2)}}{1+\cfrac{\cfrac{z}{(c+2)(c+3)}}{\cdots}}}}. \end{equation*} -Umgeformt ergibt sich folgender Kettenbruch + +\subsubsection{Algorithmus} +Da mit obigen Formeln nur ein Verhältnis zwischen $ \frac{\mathstrut_0F_1(;c+1;z)}{\mathstrut_0F_1(;c;z)}$ berechnet wurde, braucht es weitere Relationen um $\mathstrut_0F_1(;c;z)$ zu erhalten. +So ergeben ähnliche Relationen nach Wolfram Alpha \cite{0f1:wolfram-0f1} den Kettenbruch \begin{equation} \label{0f1:math:kettenbruch:0f1:eq} \mathstrut_0F_1(;c;z) = 1 + \cfrac{\cfrac{z}{c}}{1+\cfrac{-\cfrac{z}{2(c+1)}}{1+\cfrac{z}{2(c+1)}+\cfrac{-\cfrac{z}{3(c+2)}}{1+\cfrac{z}{5(c+4)} + \cdots}}}, \end{equation} -der als Code (siehe: Listing \ref{0f1:listing:kettenbruchIterativ}) umgesetzt wurde. -\cite{0f1:wolfram-0f1} +der als Code (Listing \ref{0f1:listing:kettenbruchIterativ}) umgesetzt wurde. + \lstinputlisting[style=C,float,caption={Iterativ umgesetzter Kettenbruch.},label={0f1:listing:kettenbruchIterativ}, firstline=8]{papers/0f1/listings/kettenbruchIterativ.c} \subsection{Rekursionsformel \label{0f1:subsection:rekursionsformel}} -Wesentlich stabiler zur Berechnung eines Kettenbruches ist die Rekursionsformel. Nachfolgend wird die verkürzte Herleitung vom Kettenbruch zur Rekursionsformel aufgezeigt. Eine vollständige Schritt für Schritt Herleitung ist im Seminarbuch Numerik, im Kapitel Kettenbrüche zu finden. \cite{0f1:kettenbrueche} +Wesentlich stabiler zur Berechnung eines Kettenbruches ist die Rekursionsformel. Nachfolgend wird die verkürzte Herleitung vom Kettenbruch zur Rekursionsformel aufgezeigt. Eine vollständige Schritt für Schritt Herleitung ist im Seminarbuch Numerik, im Kapitel Kettenbrüche \cite{0f1:kettenbrueche} zu finden. \subsubsection{Herleitung} Ein Näherungsbruch in der Form @@ -68,7 +112,7 @@ lässt sich zu \cfrac{A_k}{B_k} = \cfrac{b_{k+1}}{a_{k+1} + \cfrac{p}{q}} = \frac{b_{k+1} \cdot q}{a_{k+1} \cdot q + p} \end{align*} umformen. -Dies lässt sich auch durch die folgende Matrizenschreibweise ausdrücken: +Dies lässt sich auch durch die Matrizenschreibweise \begin{equation*} \begin{pmatrix} A_k\\ @@ -88,11 +132,12 @@ Dies lässt sich auch durch die folgende Matrizenschreibweise ausdrücken: \end{pmatrix}. %\label{0f1:math:rekursionsformel:herleitung} \end{equation*} +ausdrücken. Wendet man dies nun auf den Kettenbruch in der Form \begin{equation*} \frac{A_k}{B_k} = a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{\cdots}{\cdots+\cfrac{b_{k-1}}{a_{k-1} + \cfrac{b_k}{a_k}}}}} \end{equation*} -an, ergibt sich folgende Matrixdarstellungen: +an, ergibt sich die Matrixdarstellungen: \begin{align*} \begin{pmatrix} @@ -116,7 +161,7 @@ an, ergibt sich folgende Matrixdarstellungen: \begin{pmatrix} b_k\\ a_k - \end{pmatrix} + \end{pmatrix}. \end{align*} Nach vollständiger Induktion ergibt sich für den Schritt $k$, die Matrix \begin{equation} @@ -135,15 +180,15 @@ Nach vollständiger Induktion ergibt sich für den Schritt $k$, die Matrix a_k \end{pmatrix}. \end{equation} -Und Schlussendlich kann der Näherungsbruch +Und schlussendlich kann der Näherungsbruch \[ \frac{A_k}{B_k} \] berechnet werden. -\subsubsection{Lösung} -Die Berechnung von $A_k, B_k$ \eqref{0f1:math:matrix:ende:eq} kann man auch ohne die Matrizenschreibweise aufschreiben: \cite{0f1:wiki-fraction} +\subsubsection{Algorithmus} +Die Berechnung von $A_k, B_k$ gemäss \eqref{0f1:math:matrix:ende:eq} kann man auch ohne die Matrizenschreibweise \cite{0f1:kettenbrueche} aufschreiben: \begin{itemize} \item Startbedingungen: \begin{align*} @@ -162,10 +207,10 @@ B_{k+1} &= B_{k-1} \cdot b_k + B_k \cdot a_k \end{aligned} \] \item -Näherungsbruch: \qquad$\displaystyle\frac{A_k}{B_k}$ +Näherungsbruch: \qquad$\displaystyle\frac{A_k}{B_k}$. \end{itemize} -Ein grosser Vorteil dieser Umsetzung als Rekursionsformel ist \ref{0f1:listing:kettenbruchRekursion}, dass im Vergleich zum Code \ref{0f1:listing:kettenbruchIterativ} eine Division gespart werden kann und somit weniger Rundungsfehler entstehen können. +Ein grosser Vorteil dieser Umsetzung als Rekursionsformel \eqref{0f1:listing:kettenbruchRekursion} ist, dass im Vergleich zum Code (Listing \ref{0f1:listing:kettenbruchIterativ}) eine Division gespart werden kann und somit weniger Rundungsfehler entstehen können. %Code \lstinputlisting[style=C,float,caption={Rekursionsformel für Kettenbruch.},label={0f1:listing:kettenbruchRekursion}, firstline=8]{papers/0f1/listings/kettenbruchRekursion.c} \ No newline at end of file diff --git a/buch/papers/0f1/teil3.tex b/buch/papers/0f1/teil3.tex index 72b1b21..147668a 100644 --- a/buch/papers/0f1/teil3.tex +++ b/buch/papers/0f1/teil3.tex @@ -7,58 +7,53 @@ \label{0f1:section:teil3}} \rhead{Resultate} Im Verlauf dieser Arbeit hat sich gezeigt, -das ein einfacher mathematischer Algorithmus zu implementieren gar nicht so einfach ist. +das einen einfachen mathematischen Algorithmus zu implementieren gar nicht so einfach ist. So haben alle drei umgesetzten Ansätze Probleme mit grossen negativen $z$ in der Funktion $\mathstrut_0F_1(;c;z)$. -Ebenso kann festgestellt werden, dass je grösser der Wert $z$ in $\mathstrut_0F_1(;c;z)$ wird, desto mehr weichen die berechneten Resultate von den Erwarteten ab \cite{0f1:wolfram-0f1}. +Ebenso kann festgestellt werden, dass je grösser der Wert $z$ in $\mathstrut_0F_1(;c;z)$ wird, desto mehr weichen die berechneten Resultate von den Erwarteten \cite{0f1:wolfram-0f1} ab. \subsection{Konvergenz \label{0f1:subsection:konvergenz}} -Es zeigt sich in Abbildung \ref{0f1:ausblick:plot:airy:konvergenz}, dass schon nach drei Iterationen ($k = 3$) die Funktionen schon genaue Resultate im Bereich von -2 bis 2 liefert. Ebenso kann festgestellt werden, dass der Kettenbruch schneller konvergiert und im positiven Bereich sogar mit der Referenzfunktion $Ai(x)$ übereinstimmt. Da die Rekursionsformel \ref{0f1:listing:kettenbruchRekursion} eine Abwandlung des Kettenbruches ist, verhalten sich die Funktionen in diesem Fall gleich. +Es zeigt sich in Abbildung \ref{0f1:ausblick:plot:airy:konvergenz}, dass nach drei Iterationen ($k = 3$) die Funktionen genaue Resultate im Bereich von $-2$ bis $2$ liefert. Ebenso kann festgestellt werden, dass der Kettenbruch schneller konvergiert und im positiven Bereich mit der Referenzfunktion $\operatorname{Ai}(x)$ übereinstimmt. Da die Rekursionsformel eine Abwandlung des Kettenbruches ist, verhalten sich die Funktionen in diesem Fall gleich. -Erst wenn mehrerer Iterationen gemacht werden, um die Genauigkeit zu verbessern, ist der Kettenbruch den anderen zwei Algorithmen, bezüglich Konvergenz überlegen. -Interessant ist auch, dass die Rekursionsformel nahezu gleich schnell wie die Potenzreihe konvergiert, aber sich danach einschwingt \ref{0f1:ausblick:plot:konvergenz:positiv}. Dieses Verhalten ist auch bei grösseren $z$ zu beobachten, allerdings ist dann die Differenz zwischen dem ersten lokalen Minimum von k bis zum Abbruch kleiner -\ref{0f1:ausblick:plot:konvergenz:positiv}. -Dieses Phänomen ist auf die Lösung der Rekursionsformel zurück zu führen\eqref{0f1:math:loesung:eq}. Da im Gegensatz die ganz kleinen Werte nicht zu einer Konvergenz wie beim Kettenbruch führen, sondern sich noch eine Zeit lang durch die Multiplikation aufschwingen. +Erst wenn mehrerer Iterationen gerechnet werden, ist wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, der Kettenbruch den anderen zwei Algorithmen bezüglich Konvergenz überlegen. Bei der Rekursionsformel muss beachtet werden, dass sie zwar erst nach 35 Approximationen gänzlich konvergiert, allerdings nach 27 Iterationen sich nicht mehr gross verändert. + +Ist $z$ negativ, wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies aufgrund des Vorzeichens zu alternierenden Termen. So steigt bei allen Algorithmen zuerst die Differenz zum erwarteten Endwert. Erst nach genügend Iterationen sind die Terme so klein, dass sie das Endresultat nicht mehr signifikant beeinflussen. Während die Potenzreihe zusammen mit dem Kettenbruch nach 34 Approximationen konvergiert, braucht die Rekursionsformel noch zwei Iterationen mehr. -Ist $z$ negativ wie im Abbild \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies zu einer Gegenseitigen Kompensation von negativen und positiven Termen so bricht die Rekursionsformel hier zusammen mit der Potenzreihe ab. -Die ansteigende Differenz mit anschliessender, ist aufgrund der sich alternierenden Termen mit wechselnden Vorzeichens zu erklären. \subsection{Stabilität \label{0f1:subsection:Stabilitaet}} -Verändert sich der Wert von z in $\mathstrut_0F_1(;c;z)$ gegen grössere positive Werte, wie zum Beispiel $c = 800$ liefert die Kettenbruch-Funktion \ref{0f1:listing:kettenbruchIterativ} \verb+inf+ zurück. Dies könnte durch ein Abbruchkriterien abgefangen werden. Allerdings würde das, bei grossen Werten zulasten der Genauigkeit gehen. Trotzdem könnte, je nach Anwendung, auf ein paar Nachkommastellen verzichtet werden. - -Wohingegen die Potenzreihe \eqref{0f1:listing:potenzreihe} das Problem hat, dass je mehr Terme berechnet werden, desto schneller wächst die Fakultät und irgendwann gibt es eine Bereichsüberschreitung von \verb+double+. Schlussendlich gibt das Unterprogramm das Resultat \verb+-nan(ind)+ zurück. -Die Rekursionformel \eqref{0f1:listing:kettenbruchRekursion} liefert für sehr grosse positive Werte die genausten Ergebnisse, verglichen mit der GNU Scientific Library. Wie schon vermutet ist die Rekursionsformel, im positivem Bereich, der stabilste Algorithmus. Um die Stabilität zu gewährleisten, muss wie in Abbild \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, die Iterationstiefe $k$ genug gross gewählt werden. - -Im negativem Bereich sind alle gewählten und umgesetzten Ansätze instabil. Grund dafür ist die Potenz von z, was zum Phänomen der Auslöschung führt \cite{0f1:SeminarNumerik}. Schön zu beobachten ist dies in der Abbildung \ref{0f1:ausblick:plot:airy:stabilitaet} mit der Airy-Funktion als Test. So sind sowohl der Kettenbruch, als auch die Rekursionsformel bis ungefähr $\frac{-15^3}{9}$ stabil. Dies macht auch Sinn, da beide auf der gleichen mathematischen Grundlage basieren. Danach verhält sich allerdings die Instabilität unterschiedlich. Das unterschiedliche Verhalten kann damit erklärt werden, dass beim Kettenbruch jeweils eine zusätzliche Division stattfindet. Diese Unterschiede sind auch in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} festzustellen. +Verändert sich der Wert von $z$ in $\mathstrut_0F_1(;c;z)$ gegen grössere positive Werte, wie zum Beispiel $c = 800$ liefert die Kettenbruch-Funktion (Listing \ref{0f1:listing:kettenbruchIterativ}) \verb+inf+ zurück. Dies könnte durch ein Abbruchkriterien abgefangen werden. Allerdings würde das bei grossen Werten zulasten der Genauigkeit gehen. Trotzdem könnte, je nach Anwendung, auf ein paar Nachkommastellen verzichtet werden. +Wohingegen die Potenzreihe (Listing \ref{0f1:listing:potenzreihe}) das Problem hat, dass je mehr Terme berechnet werden, desto schneller wächst die Fakultät im Nenner. Dies führt zu einer Bereichsüberschreitung des \verb+double+ Bereiches \cite{0f1:double}, der spätesten ab $k=167$ eintritt. Schlussendlich gibt das Unterprogramm das Resultat \verb+-nan(ind)+ zurück. +Die Rekursionformel \eqref{0f1:listing:kettenbruchRekursion} liefert für sehr grosse positive Werte die genausten Ergebnisse, verglichen mit der GNU Scientific Library. Wie schon vermutet ist die Rekursionsformel, im positivem Bereich, der stabilste Algorithmus. Um die Konvergenz zu gewährleisten, muss wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, die Iterationstiefe $k$ genug gross gewählt werden. +Im negativem Bereich sind alle gewählten und umgesetzten Ansätze instabil. Grund dafür ist die Potenz von $z$, was zum Phänomen der Auslöschung \cite{0f1:SeminarNumerik} führt. Schön zu beobachten ist dies in der Abbildung \ref{0f1:ausblick:plot:airy:stabilitaet} mit der Airy-Funktion als Test. So sind nach Abbildung \ref{0f1:ausblick:plot:airy:stabilitaet} die Potenzreihe, der Kettenbruch, als auch die Rekursionsformel, bis ungefähr $\frac{-15^3}{9}$ stabil. Dies macht auch Sinn, da alle Algorithmen auf der gleichen mathematischen Grundlage basieren. Danach verhält sich allerdings die Instabilität unterschiedlich. Diese programmiertechnischen Unterschiede sind auch in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} und \ref{0f1:ausblick:plot:konvergenz:negativ} festzustellen. \begin{figure} \centering \includegraphics[width=0.8\textwidth]{papers/0f1/images/konvergenzAiry.pdf} - \caption{Konvergenz nach drei Iterationen, dargestellt anhand der Airy Funktion zu den Anfangsbedingungen $Ai(0)=1$ und $Ai'(0)=0$. + \caption{Konvergenz nach drei Iterationen, dargestellt anhand der Airy Funktion zu den Anfangsbedingungen $\operatorname{Ai}(0)=1$ und $\operatorname{Ai}'(0)=0$. \label{0f1:ausblick:plot:airy:konvergenz}} \end{figure} \begin{figure} \centering \includegraphics[width=0.8\textwidth]{papers/0f1/images/konvergenzPositiv.pdf} - \caption{Konvergenz: Logarithmisch dargestellte Differenz vom erwarteten Endresultat. + \caption{Konvergenz mit positivem $z$; Logarithmisch dargestellter absoluter Fehler. \label{0f1:ausblick:plot:konvergenz:positiv}} \end{figure} \begin{figure} \centering \includegraphics[width=0.8\textwidth]{papers/0f1/images/konvergenzNegativ.pdf} - \caption{Konvergenz: Logarithmisch dargestellte Differenz vom erwarteten Endresultat. + \caption{Konvergenz mit negativem $z$; Logarithmisch dargestellter absoluter Fehler. \label{0f1:ausblick:plot:konvergenz:negativ}} \end{figure} \begin{figure} \centering \includegraphics[width=1\textwidth]{papers/0f1/images/stabilitaet.pdf} - \caption{Stabilität der 3 Algorithmen verglichen mit der Referenz Funktion $Ai(x)$. + \caption{Stabilität der drei Algorithmen verglichen mit der Referenz Funktion $\operatorname{Ai}(x)$. \label{0f1:ausblick:plot:airy:stabilitaet}} \end{figure} diff --git a/buch/papers/ellfilter/einleitung.tex b/buch/papers/ellfilter/einleitung.tex index 37fd89f..ae7127f 100644 --- a/buch/papers/ellfilter/einleitung.tex +++ b/buch/papers/ellfilter/einleitung.tex @@ -1,56 +1,73 @@ \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} +Filter sind womöglich eines der wichtigsten Elementen in der Signalverarbeitung und finden Anwendungen in der digitalen und analogen Elektrotechnik. +Besonders hilfreich ist die Untergruppe der linearen Filter. +Elektronische Schaltungen mit linearen Bauelementen wie Kondensatoren, Spulen und Widerständen führen immer zu linearen zeitinvarianten Systemen (LTI-System von englich \textit{time-invariant system}). +Durch die Linearität werden beim das Filtern keine neuen Frequenzanteile erzeugt, was es erlaubt, einen Frequenzanteil eines Signals verzerrungsfrei herauszufiltern. %TODO review sentence +Diese Eigenschaft macht es Sinnvoll, lineare Filter im Frequenzbereich zu beschreiben. +Die Übertragungsfunktion eines linearen Filters im Frequenzbereich $H(\Omega)$ ist dabei immer eine rationale Funktion, also ein Quotient von zwei Polynomen. +Dabei ist $\Omega = 2 \pi f$ die Frequenzeinheit. +Die Polynome haben dabei immer reelle oder komplex-konjugierte Nullstellen. + +Ein breit angewendeter Filtertyp ist das Tiefpassfilter, welches beabsichtigt alle Frequenzen eines Signals oberhalb der Grenzfrequenz $\Omega_p$ auszulöschen. +Der Rest soll dabei unverändert passieren. +Aus dem Tiefpassifilter können dann durch Transformationen auch Hochpassfilter, Bandpassfilter und Bandsperren realisiert werden. +Ein solches Filter hat idealerweise die Frequenzantwort +\begin{equation} + H(\Omega) = + \begin{cases} + 1 & \Omega < \Omega_p \\ + 0 & \Omega < \Omega_p + \end{cases}, \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. - -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$. +wie dargestellt in Abbildung \ref{ellfilter:fig:lp} +\begin{figure} + \centering + \input{papers/ellfilter/tikz/filter.tikz.tex} + \caption{Frequenzantwort eines Tiefpassfilters.} + \label{ellfilter:fig:lp} +\end{figure} +Leider ist eine solche Funktion nicht als rationale Funktion darstellbar. +Aus diesem Grund sind realisierbare Approximationen gesucht. +Jede Approximation wird einen kontinuierlichen Übergang zwischen Durchlassbereich und Sperrbereich aufweisen. +Oft wird dabei der Faktor $1/\sqrt{2}$ als Schwelle zwischen den beiden Bereichen gewählt. +Somit lassen sich lineare Tiefpassfilter mit folgender Funktion zusammenfassen: +\begin{equation} + | H(\Omega)|^2 = \frac{1}{1 + \varepsilon_p^2 F_N^2(w)}, \quad w=\frac{\Omega}{\Omega_p}, +\end{equation} +wobei $F_N(w)$ eine rationale Funktion ist, $|F_N(w)| \leq 1 ~\forall~ |w| \leq 1$ erfüllt und für $|w| \geq 1$ möglichst schnell divergiert. +Des weiteren müssen alle Nullstellen und Pole von $F_N$ auf der linken Halbebene liegen, damit das Filter implementierbar und stabil ist. +$w$ ist die normalisierte Frequenz, die es erlaubt ein Filter unabhängig von der Grenzfrequenz zu beschrieben. +Bei $w=1$ hat das Filter eine Dämpfung von $1/(1+\varepsilon^2)$. +$N \in \mathbb{N} $ gibt die Ordnung des Filters vor, also die maximale Anzahl Pole oder Nullstellen. +Je hoher $N$ gewählt wird, desto steiler ist der Übergang in denn Sperrbereich. +Grössere $N$ sind erfordern jedoch aufwendigere Implementierungen und haben mehr Phasenverschiebung. +Eine einfache Funktion, die für $F_N$ eingesetzt werden kann, ist das Polynom $w^N$. Tatsächlich erhalten wir damit das Butterworth Filter, wie in Abbildung \ref{ellfilter:fig:butterworth} ersichtlich. \begin{figure} \centering \input{papers/ellfilter/python/F_N_butterworth.pgf} - \caption{$F_N$ für Butterworth filter. Der grüne Bereich definiert die erlaubten Werte für alle $F_N$-Funktionen.} + \caption{$F_N$ für Butterworth filter. Der grüne und gelbe 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? - +Eine Reihe von rationalen Funktionen können für $F_N$ eingesetzt werden, um Tiefpassfilter\-approximationen mit unterschiedlichen Eigenschaften zu erhalten: \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, \xi) & \text{Elliptisch (Cauer)} \\ + R_N(w, \xi) & \text{Elliptisch} \\ \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. +Mit der Ausnahme vom Butterworth-Filter sind alle Filter nach speziellen Funktionen benannt. +Alle diese Filter sind optimal hinsichtlich einer Eigenschaft. 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. +Das Tschebyscheff-1 Filter ist 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. + +Dieses Paper betrachtet die Theorie hinter dem elliptischen Filter, dem wohl exotischsten dieser Auswahl. +Es weist sich aus durch den steilsten Übergangsbereich für eine gegebene Filterdesignspezifikation. +Des weiteren kann es als Verallgemeinerung des Tschebyscheff-Filters angesehen werden. + +% wenn $F_N(w)$ eine rationale Funktion ist, ist auch $H(\Omega)$ eine rationale Funktion und daher ein lineares Filter. %proof? diff --git a/buch/papers/ellfilter/elliptic.tex b/buch/papers/ellfilter/elliptic.tex index 88bfbfe..67bcca0 100644 --- a/buch/papers/ellfilter/elliptic.tex +++ b/buch/papers/ellfilter/elliptic.tex @@ -1,92 +1,100 @@ \section{Elliptische rationale Funktionen} -Kommen wir nun zum eigentlichen Teil dieses Papers, den elliptischen rationalen Funktionen +Kommen wir nun zum eigentlichen Teil dieses Papers, den elliptischen rationalen Funktionen \cite{ellfilter:bib:orfanidis} \begin{align} - R_N(\xi, w) &= \cd \left(N~f_1(\xi)~\cd^{-1}(w, 1/\xi), f_2(\xi)\right) \\ - &= \cd \left(N~\frac{K_1}{K}~\cd^{-1}(w, k), k_1)\right) , \quad k= 1/\xi, k_1 = 1/f(\xi) \\ + R_N(\xi, w) &= \cd \left(N~f_1(\xi)~\cd^{-1}(w, 1/\xi), f_2(\xi)\right) \label{ellfilter:eq:elliptic}\\ + &= \cd \left(N~\frac{K_1}{K}~\cd^{-1}(w, k), k_1\right) , \quad k= 1/\xi, k_1 = 1/f(\xi) \\ &= \cd \left(N~K_1~z , k_1 \right), \quad w= \cd(z K, k) \end{align} - - -sieht ähnlich aus wie die trigonometrische Darstellung der Tschebyschef-Polynome \eqref{ellfilter:eq:chebychef_polynomials} +Beim Betrachten dieser Definition, fällt die Ähnlichkeit zur trigonometrische Darstellung der Tsche\-byschef-Polynome \eqref{ellfilter:eq:chebychef_polynomials} auf. Anstelle vom Kosinus kommt hier die $\cd$-Funktion zum Einsatz. Die Ordnungszahl $N$ kommt auch als Faktor for. -Zusätzlich werden noch zwei verschiedene elliptische Module $k$ und $k_1$ gebraucht. - - - -Sinus entspricht $\sn$ - -Damit die Nullstellen an ähnlichen Positionen zu liegen kommen wie bei den Tschebyscheff-Polynomen, muss die $\cd$-Funktion gewählt werden. +Zusätzlich werden noch zwei verschiedene elliptische Moduli $k$ und $k_1$ gebraucht. +Bei $k = k_1 = 0$ wird der $\cd$ zum Kosinus und wir erhalten in diesem Spezialfall die Tschebyschef-Polynome. +Durch das Konzept vom fundamentalen Rechteck, siehe Abbildung \ref{buch:elliptisch:fig:ellall} können für alle inversen Jacobi elliptischen Funktionen die Positionen der Null- und Polstellen anhand eines Diagramms ermittelt werden. Die $\cd^{-1}(w, k)$-Funktion ist um $K$ verschoben zur $\sn^{-1}(w, k)$-Funktion, wie ersichtlich in Abbildung \ref{ellfilter:fig:cd}. \begin{figure} \centering \input{papers/ellfilter/tikz/cd.tikz.tex} \caption{ - $z$-Ebene der Funktion $z = \sn^{-1}(w, k)$. + $z$-Ebene der Funktion $z = \cd^{-1}(w, k)$. Die Funktion ist in der realen Achse $4K$-periodisch und in der imaginären Achse $2jK^\prime$-periodisch. } \label{ellfilter:fig:cd} \end{figure} -Auffallend ist, dass sich alle Nullstellen und Polstellen um $K$ verschoben haben. - -Durch das Konzept vom fundamentalen Rechteck, siehe Abbildung \ref{ellfilter:fig:fundamental_rectangle} können für alle inversen Jaccobi elliptischen Funktionen die Positionen der Null- und Polstellen anhand eines Diagramms ermittelt werden. -Der erste Buchstabe bestimmt die Position der Nullstelle und der zweite Buchstabe die Polstelle. +Auffallend an der $w = \cd(z, k)$-Funktion ist, dass sich $w$ auf der reellen Achse wie der Kosinus immer zwischen $-1$ und $1$ bewegt, während bei $\mathrm{Im(z) = K^\prime}$ die Werte zwischen $\pm 1/k$ und $\pm \infty$ verlaufen. +Die Idee des elliptischen Filter ist es, diese zwei Equirippel-Zonen abzufahren, wie ersichtlich in Abbildung \ref{ellfilter:fig:cd2}, welche Analog zu Abbildung \ref{ellfilter:fig:arccos2} gesehen werden kann. \begin{figure} \centering - \input{papers/ellfilter/tikz/fundamental_rectangle.tikz.tex} + \input{papers/ellfilter/tikz/cd2.tikz.tex} \caption{ - Fundamentales Rechteck der inversen Jaccobi elliptischen Funktionen. + $z_1=N\frac{K_1}{K}\cd^{-1}(w, k)$-Ebene der elliptischen rationalen Funktionen. + Je grösser die Ordnung $N$ gewählt wird, desto mehr Nullstellen werden passiert. + Als Vereinfachung ist die Funktion nur für $w>0$ dargestellt. } - \label{ellfilter:fig:fundamental_rectangle} + \label{ellfilter:fig:cd2} \end{figure} - -Auffallend an der $w = \sn(z, k)$-Funktion ist, dass sich $w$ auf der reellen Achse wie der Kosinus immer zwischen $-1$ und $1$ bewegt, während bei $\mathrm{Im(z) = K^\prime}$ die Werte zwischen $\pm 1/k$ und $\pm \infty$ verlaufen. -Die Funktion hat also Equirippel-Verhalten um $w=0$ und um $w=\pm \infty$. -Falls es möglich ist diese Werte abzufahren im Sti der Tschebyscheff-Polynome, kann ein Filter gebaut werden, dass Equirippel-Verhalten im Durchlass- und Sperrbereich aufweist. - - - -Analog zu Abbildung \ref{ellfilter:fig:arccos2} können wir auch bei den elliptisch rationalen Funktionen die komplexe $z$-Ebene betrachten, wie ersichtlich in Abbildung \ref{ellfilter:fig:cd2}, um die besser zu verstehen. +Das elliptische Filter hat im Gegensatz zum Tschebyscheff-Filter drei Zonen. +Im Durchlassbereich werden wie beim Tschebyscheff-Filter die Nullstellen durchlaufen. +Statt dass $z_1$ für alle $w>1$ in die imaginäre Richtung geht, bewegen wir uns im Sperrbereich wieder in reeller Richtung, wo Pole durchlaufen werden. +Aus dieser Sicht kann der Sperrbereich vom Tschebyscheff-Filter als unendlich langer Übergangsbereich angesehen werden. +% Falls es möglich ist diese Werte abzufahren im Stil der Tschebyscheff-Polynome, kann ein Filter gebaut werden, dass Equirippel-Verhalten im Durchlass- und Sperrbereich aufweist. +Da sich die Funktion im Übergangsbereich nur zur nächsten Reihe bewegt, ist der Übergangsbereich monoton steigend. +Theoretisch könnte eine gleiches Durchlass- und Sperrbereichverhalten erreicht werden, wenn die Funktion auf eine andere Reihe ansteigen würde. +Dies würde jedoch zu Oszillationen zwischen $1$ und $1/k$ im Übergangsbereich führen. +Abbildung \ref{ellfilter:fig:elliptic_freq} zeigt eine elliptisch rationale Funktion und die Frequenzantwort des daraus resultierenden Filters. \begin{figure} \centering - \input{papers/ellfilter/tikz/cd2.tikz.tex} - \caption{ - $z_1$-Ebene der elliptischen rationalen Funktionen. - Je grösser die Ordnung $N$ gewählt wird, desto mehr Nullstellen passiert. - } - \label{ellfilter:fig:cd2} + \input{papers/ellfilter/python/elliptic.pgf} + \caption{$F_N$ und die resultierende Frequenzantwort eines elliptischen Filters.} + \label{ellfilter:fig:elliptic_freq} \end{figure} -% Da die $\cd^{-1}$-Funktion - +\subsection{Gradgleichung} +Damit die Pol- und Nullstellen genau in dieser Konstellation durchfahren werden, müssen die elliptischen Moduli des inneren und äusseren $\cd$ aufeinander abgestimmt werden. +In der reellen Richtung müssen sich die Periodizitäten $K$ und $K_1$ um den Faktor $N$ unterscheiden, während die imagiäre Periodizitäten $K^\prime$ und $K^\prime_1$ gleich bleiben müssen. +Zur Erinnerung, $K$ und $K^\prime$ sind durch elliptische Integrale definiert und vom Modul $k$ abhängig wie ersichtlich in Abbildung \ref{ellfilter:fig:kprime}. \begin{figure} \centering - \input{papers/ellfilter/python/F_N_elliptic.pgf} - \caption{$F_N$ für ein elliptischs filter.} - \label{ellfilter:fig:elliptic} + \input{papers/ellfilter/python/k.pgf} + \caption{Die Periodizitäten in realer und imaginärer Richtung in Abhängigkeit vom elliptischen Modul $k$.} + \label{ellfilter:fig:kprime} \end{figure} - -\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. - +$K$ und $K^\prime$ sind durch die Ortskurve $K + jK^\prime$ aneinander gebunden und benötigen den Zusatzfaktor $K_1/K$ in \eqref{ellfilter:eq:elliptic}, um die genanten Forderungen einzuhalten. +Abbildung \ref{ellfilter:fig:degree_eq} zeigt das Problem geometrisch auf, wobei zwei Punkte $K+jK^\prime$ und $K_1+jK_1^\prime$ auf der Ortskurve gesucht sind. +\begin{figure} + \centering + \input{papers/ellfilter/tikz/elliptic_transform2.tikz} + \caption{Die Gradgleichung als geometrisches Problem ($N=3$).} + \label{ellfilter:fig:degree_eq} +\end{figure} +Algebraisch kann so die Gradgleichung \begin{equation} N \frac{K^\prime}{K} = \frac{K^\prime_1}{K_1} \end{equation} +aufgestellt werden, dessen Lösung ist gegeben durch +\begin{equation} %TODO check +k_1 = k^N \prod_{i=1}^L \sn^4 \Bigg( \frac{2i - 1}{N} K, k \Bigg), +\quad \text{wobei} \quad +N = 2L+r. +\end{equation} +Die Herleitung ist sehr umfassend und wird in \cite{ellfilter:bib:orfanidis} im Detail angeschaut. +% \begin{figure} +% \centering +% \input{papers/ellfilter/tikz/elliptic_transform1.tikz} +% \caption{Die Gradgleichung als geometrisches Problem.} +% \end{figure} -Leider ist das lösen dieser Gleichung nicht trivial. -Die Rechnung wird in \ref{ellfilter:bib:orfanidis} im Detail angeschaut. - - -\subsection{Polynome?} +\subsection{Schlussfolgerung} +Die elliptischen Filter können als direkte Erweiterung der Tschebyscheff-Filter verstanden werden. 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. +Im elliptischen Fall entstehen so rationale Funktionen mit Nullstellen und auch Pole. Somit entstehen bei den elliptischen rationalen Funktionen, wie es der name auch deutet, rationale Funktionen, also ein Bruch von zwei Polynomen. -Da Transformationen einer rationalen Funktionen mit Grundrechenarten, wie es in \eqref{ellfilter:eq:h_omega} der Fall ist, immer noch rationale Funktionen ergeben, stellt dies kein Problem für die Implementierung dar. +% Da Transformationen einer rationalen Funktionen mit Grundrechenarten, wie es in \eqref{ellfilter:eq:h_omega} der Fall ist, immer noch rationale Funktionen ergeben, stellt dies kein Problem für die Implementierung dar. + + diff --git a/buch/papers/ellfilter/jacobi.tex b/buch/papers/ellfilter/jacobi.tex index 6a208fa..567bbcc 100644 --- a/buch/papers/ellfilter/jacobi.tex +++ b/buch/papers/ellfilter/jacobi.tex @@ -1,17 +1,17 @@ \section{Jacobische elliptische Funktionen} -%TODO $z$ or $u$ for parameter? - -Für das elliptische Filter wird statt der, für das Tschebyscheff-Filter benutzen Kreis-Trigonometrie die elliptischen Funktionen gebraucht. +Für das elliptische Filter werden, wie es der Name bereits deutet, elliptische Funktionen gebraucht. +Wie die trigonometrischen Funktionen Zusammenhänge eines Kreises darlegen, beschreiben die elliptischen Funktionen Ellipsen. +Es ist daher naheliegend, dass Kosinus des Tschebyscheff-Filters mit einem elliptischen Pendant ausgetauscht werden könnte. 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. +Die Jacobi elliptischen Funktionen werden ausführlich im Kapitel \ref{buch:elliptisch:section:jacobi} behandelt. Im Wesentlichen erweitern die Jacobi elliptischen Funktionen die trigonometrische Funktionen für Ellipsen. Zum Beispiel gibt es analog zum Sinus den elliptischen $\sn(z, k)$. Im Gegensatz zum den trigonometrischen Funktionen haben die elliptischen Funktionen zwei parameter. -Zum einen gibt es den \textit{elliptische Modul} $k$, der die Exzentrizität der Ellipse parametrisiert. -Zum andern das Winkelargument $z$. +Den \textit{elliptische Modul} $k$, der die Exzentrizität der Ellipse parametrisiert und das Winkelargument $z$. 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. +Dies hat zur Folge, dass bei einer Ellipse die Kreisbogenlänge nicht linear zum Winkel verläuft. Darum kann hier nicht der gewohnte Winkel verwendet werden. Das Winkelargument $z$ kann durch das elliptische Integral erster Art \begin{equation} @@ -27,17 +27,8 @@ Das Winkelargument $z$ kann durch das elliptische Integral erster Art 1-k^2 \sin^2 \theta } } - = - \int_{0}^{\phi} - \frac{ - dt - }{ - \sqrt{ - (1-t^2)(1-k^2 t^2) - } - } %TODO which is right? are both functions from phi? \end{equation} -mit dem Winkel $\phi$ in Verbindung liegt. +mit dem Winkel $\phi$ in Verbindung gebracht werden. Dabei wird das vollständige und unvollständige Elliptische integral unterschieden. Beim vollständigen Integral @@ -53,9 +44,9 @@ Beim vollständigen Integral } } \end{equation} -wird über ein viertel Ellipsenbogen integriert also bis $\phi=\pi/2$ und liefert das Winkelargument für eine Vierteldrehung. +wird über ein viertel Ellipsenbogen integriert, also bis $\phi=\pi/2$ und liefert das Winkelargument für eine Vierteldrehung. Die Zahl wird oft auch abgekürzt mit $K = K(k)$ und ist für das elliptische Filter sehr relevant. -Alle elliptishen Funktionen sind somit $4K$-periodisch. +Alle elliptischen Funktionen sind somit $4K$-periodisch. Neben dem $\sn$ gibt es zwei weitere basis-elliptische Funktionen $\cn$ und $\dn$. Dazu kommen noch weitere abgeleitete Funktionen, die durch Quotienten und Kehrwerte dieser Funktionen zustande kommen. @@ -93,37 +84,40 @@ Mithilfe von $F^{-1}$ kann zum Beispiel $sn^{-1}$ mit dem Elliptischen integral = \sn(z, k) = - w -\end{equation} - -\begin{equation} - \phi - = - F^{-1}(z, k) - = - \sin^{-1} \big( \sn (z, k ) \big) - = - \sin^{-1} ( w ) -\end{equation} - -\begin{equation} - F(\phi, k) - = - z - = - F( \sin^{-1} \big( \sn (z, k ) \big) , k) - = - F( \sin^{-1} ( w ), k) -\end{equation} - -\begin{equation} - \sn^{-1}(w, k) - = - F(\phi, k), - \quad - \phi = \sin^{-1}(w) + w. \end{equation} +% \begin{equation} %TODO remove unnecessary equations +% \phi +% = +% F^{-1}(z, k) +% = +% \sin^{-1} \big( \sn (z, k ) \big) +% = +% \sin^{-1} ( w ) +% \end{equation} + +% \begin{equation} +% F(\phi, k) +% = +% z +% = +% F( \sin^{-1} \big( \sn (z, k ) \big) , k) +% = +% F( \sin^{-1} ( w ), k) +% \end{equation} + +% \begin{equation} +% \sn^{-1}(w, k) +% = +% F(\phi, k), +% \quad +% \phi = \sin^{-1}(w) +% \end{equation} + +Beim Tschebyscheff-Filter konnten wir mit Betrachten des Arcuscosinus die Funktionalität erklären. +Für das Elliptische Filter machen wir die gleiche Betrachtung mit der $\sn^{-1}$-Funktion. +Der $\sn^{-1}$ ist durch das elliptische Integral \begin{align} \sn^{-1}(w, k) & = @@ -148,11 +142,8 @@ Mithilfe von $F^{-1}$ kann zum Beispiel $sn^{-1}$ mit dem Elliptischen integral } } \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$. +beschrieben. +Dazu betrachten wir wieder den Integranden \begin{equation} \frac{ 1 @@ -160,24 +151,15 @@ Der erste Term unter der Wurzel wird dann negativ, während der zweite noch posi \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 - +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$. +Ab diesem Punkt knickt die Funktion in die imaginäre Richtung ab. +Bei $t = 1/k$ ist auch der zweite Term negativ und die Funktion verläuft in die negative reelle Richtung. +Abbildung \ref{ellfilter:fig:sn} zeigt den Verlauf der Funktion in der komplexen Ebene. \begin{figure} \centering \input{papers/ellfilter/tikz/sn.tikz.tex} @@ -185,5 +167,20 @@ In der reellen Richtung ist sie $4K(k)$-periodisch und in der imaginären Richtu $z$-Ebene der Funktion $z = \sn^{-1}(w, k)$. Die Funktion ist in der realen Achse $4K$-periodisch und in der imaginären Achse $2jK^\prime$-periodisch. } - % \label{ellfilter:fig:cd2} + \label{ellfilter:fig:sn} \end{figure} +In der reellen Richtung ist sie $4K(k)$-periodisch und in der imaginären Richtung $4K^\prime(k)$-periodisch, wobei $K^\prime$ das komplementäre vollständige Elliptische Integral ist: +\begin{equation} + K^\prime(k) + = + \int_{0}^{\pi / 2} + \frac{ + d\theta + }{ + \sqrt{ + 1-{k^\prime}^2 \sin^2 \theta + } + }, + \quad + k^\prime = \sqrt{1-k^2}. +\end{equation} diff --git a/buch/papers/ellfilter/presentation/presentation.tex b/buch/papers/ellfilter/presentation/presentation.tex index 7fdb864..96bdfd3 100644 --- a/buch/papers/ellfilter/presentation/presentation.tex +++ b/buch/papers/ellfilter/presentation/presentation.tex @@ -76,9 +76,9 @@ %Title Page \title{Elliptische Filter} -\subtitle{Eine Anwendung der Jaccobi elliptischen Funktionen} +\subtitle{Eine Anwendung der Jacobi elliptischen Funktionen} \author{Nicolas Tobler} -% \institute{OST Ostschweizer Fachhochschule} +\institute{Mathematisches Seminar 2022 | Spezielle Funktionen} % \institute{\includegraphics[scale=0.3]{../img/ost_logo.png}} \date{\today} @@ -113,25 +113,38 @@ \end{frame} \begin{frame} - \frametitle{Content} + \frametitle{Inhalt} \tableofcontents \end{frame} - \section{Linear Filter} + \section{Lineare Filter} \begin{frame} \frametitle{Lineare Filter} + \begin{center} + \scalebox{0.75}{ + \input{../tikz/filter.tikz.tex} + } + \end{center} - \begin{equation} + + \begin{equation*} | H(\Omega)|^2 = \frac{1}{1 + \varepsilon_p^2 F_N^2(w)}, \quad w=\frac{\Omega}{\Omega_p} - \end{equation} + \end{equation*} \pause - \begin{equation} + \begin{align*} + |F_N(w)| &< 1 \quad \forall \quad |w| < 1 \\ + |F_N(w)| &= 1 \quad \forall \quad |w| = 1 \\ + |F_N(w)| &> 1 \quad \forall \quad |w| > 1 + \end{align*} + + + \begin{equation*} F_N(w) = w^N - \end{equation} + \end{equation*} \end{frame} @@ -218,10 +231,36 @@ Darstellung mit trigonometrischen Funktionen: - \begin{align} \label{ellfilter:eq:chebychef_polynomials} + \begin{align*} T_N(w) &= \cos \left( N \cos^{-1}(w) \right) \\ &= \cos \left(N~z \right), \quad w= \cos(z) - \end{align} + \end{align*} + + \pause + + \begin{align*} + \cos^{-1}(x) + &= + \int_{x}^{1} + \frac{ + dz + }{ + \sqrt{ + 1-z^2 + } + }\\ + &= + \int_{0}^{x} + \frac{ + -1 + }{ + \sqrt{ + 1-z^2 + } + } + ~dz + + \frac{\pi}{2} + \end{align*} \end{frame} @@ -229,15 +268,41 @@ \begin{frame} \frametitle{Tschebyscheff-Filter} - \begin{equation*} - z = \cos^{-1}(w) - \end{equation*} + \begin{columns} + + \begin{column}{0.2\textwidth} + + \begin{equation*} + z = \cos^{-1}(w) + \end{equation*} + + \vspace{0.5cm} + + Integrand: + \begin{equation*} + \frac{ + -1 + }{ + \sqrt{ + 1-z^2 + } + } + \end{equation*} + + \end{column} + \begin{column}{0.8\textwidth} + + + \begin{center} + \scalebox{0.7}{ + \input{../tikz/arccos.tikz.tex} + } + \end{center} + + \end{column} + \end{columns} + - \begin{center} - \scalebox{0.85}{ - \input{../tikz/arccos.tikz.tex} - } - \end{center} \end{frame} @@ -245,7 +310,7 @@ \frametitle{Tschebyscheff-Filter} \begin{equation*} - z_1 = N~\cos^{-1}(w) + T_N(w) = \cos \left(z_1 \right), \quad z_1 = N~\cos^{-1}(w) \end{equation*} \begin{center} @@ -257,15 +322,14 @@ \end{frame} - \section{Jaccobi elliptische Funktionen} + \section{Jacobi elliptische Funktionen} \begin{frame} - \frametitle{Jaccobi elliptische Funktionen} + \frametitle{Jacobi elliptische Funktionen} + Elliptisches Integral erster Art - \begin{equation} - z - = + \begin{equation*} F(\phi, k) = \int_{0}^{\phi} @@ -276,18 +340,18 @@ 1-k^2 \sin^2 \theta } } - = - \int_{0}^{\phi} - \frac{ - dt - }{ - \sqrt{ - (1-t^2)(1-k^2 t^2) - } - } - \end{equation} + % = + % \int_{0}^{\phi} + % \frac{ + % dt + % }{ + % \sqrt{ + % (1-t^2)(1-k^2 t^2) + % } + % } + \end{equation*} - \begin{equation} + \begin{equation*} K(k) = \int_{0}^{\pi / 2} @@ -298,24 +362,88 @@ 1-k^2 \sin^2 \theta } } - \end{equation} + \end{equation*} \end{frame} + + + + \begin{frame} - \frametitle{Jaccobi elliptische Funktionen} + \frametitle{Jacobi elliptische Funktionen} + + \begin{equation*} + \sn^{-1}(w, k) + = + F(\phi, k), + \quad + \phi = \sin^{-1}(w) + \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*} - \begin{equation*} - z = \sn^{-1}(w, k) - \end{equation*} - \begin{center} - \scalebox{0.7}{ - \input{../tikz/sn.tikz.tex} - } - \end{center} + + \end{frame} + + \begin{frame} + \frametitle{Jacobi elliptische Funktionen} + \begin{columns} + \begin{column}{0.2\textwidth} + + \begin{equation*} + z = \sn^{-1}(w, k) + \end{equation*} + + \vspace{0.5cm} + + Integrand: + \begin{equation*} + \frac{ + 1 + }{ + \sqrt{ + (1-t^2)(1-k^2 t^2) + } + } + \end{equation*} + + \end{column} + \begin{column}{0.8\textwidth} + \begin{center} + \scalebox{0.75}{ + \input{../tikz/sn.tikz.tex} + } + \end{center} + \end{column} + \end{columns} + \end{frame} @@ -334,7 +462,7 @@ \begin{frame} - \frametitle{Jaccobi elliptische Funktionen} + \frametitle{Jacobi elliptische Funktionen} \begin{equation*} z = \cd^{-1}(w, k) @@ -349,6 +477,23 @@ \end{frame} + \section{Elliptisches Filter} + + \begin{frame} + \frametitle{Elliptisches Filter} + + % \begin{equation*} + % z_1 = N~\frac{K_1}{K}~\cd^{-1}(w, k) + % \end{equation*} + + \begin{center} + \scalebox{0.75}{ + \input{../tikz/cd3.tikz.tex} + } + \end{center} + + \end{frame} + \begin{frame} \frametitle{Periodizität in realer und imaginärer Richtung} @@ -359,21 +504,43 @@ \end{frame} + \begin{frame} + \frametitle{Gradgleichung} + + \begin{center} + \scalebox{0.95}{ + \input{../tikz/elliptic_transform2.tikz} + } + \end{center} + + \onslide<5->{ + \begin{equation*} + N \frac{K^\prime}{K} = \frac{K^\prime_1}{K_1} + \end{equation*} + } + + \end{frame} + \begin{frame} \frametitle{Elliptisches Filter} \begin{equation*} - z_1 = N~\frac{K_1}{K}~\cd^{-1}(w, k) + R_N = \cd(z_1, k_1), + \quad + z_1 = N~\frac{K_1}{K}~\cd^{-1}(w, k), + \quad + N \frac{K^\prime}{K} = \frac{K^\prime_1}{K_1} \end{equation*} \begin{center} - \scalebox{0.8}{ + \scalebox{0.75}{ \input{../tikz/cd2.tikz.tex} } \end{center} \end{frame} + \begin{frame} \frametitle{Elliptisches Filter} @@ -401,13 +568,4 @@ \end{frame} - \begin{frame} - \frametitle{Gradgleichung} - - \begin{equation} - N \frac{K^\prime}{K} = \frac{K^\prime_1}{K_1} - \end{equation} - - \end{frame} - \end{document} diff --git a/buch/papers/ellfilter/python/F_N_elliptic.pgf b/buch/papers/ellfilter/python/F_N_elliptic.pgf deleted file mode 100644 index 03084c6..0000000 --- a/buch/papers/ellfilter/python/F_N_elliptic.pgf +++ /dev/null @@ -1,847 +0,0 @@ -%% Creator: Matplotlib, PGF backend -%% -%% To include the figure in your LaTeX document, write -%% \input{.pgf} -%% -%% Make sure the required packages are loaded in your preamble -%% \usepackage{pgf} -%% -%% Also ensure that all the required font packages are loaded; for instance, -%% the lmodern package is sometimes necessary when using math font. -%% \usepackage{lmodern} -%% -%% Figures using additional raster images can only be included by \input if -%% they are in the same directory as the main LaTeX file. For loading figures -%% from other directories you can use the `import` package -%% \usepackage{import} -%% -%% and then include the figures with -%% \import{}{.pgf} -%% -%% Matplotlib used the following preamble -%% -\begingroup% -\makeatletter% -\begin{pgfpicture}% -\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{4.000000in}{2.500000in}}% -\pgfusepath{use as bounding box, clip}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetmiterjoin% -\pgfsetlinewidth{0.000000pt}% -\definecolor{currentstroke}{rgb}{1.000000,1.000000,1.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetstrokeopacity{0.000000}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{4.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{4.000000in}{2.500000in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{2.500000in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{0.000000in}}% -\pgfpathclose% -\pgfusepath{}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetmiterjoin% -\definecolor{currentfill}{rgb}{1.000000,1.000000,1.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.000000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetstrokeopacity{0.000000}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% -\pgfpathlineto{\pgfqpoint{0.733531in}{2.301955in}}% -\pgfpathlineto{\pgfqpoint{0.733531in}{0.548769in}}% -\pgfpathclose% -\pgfusepath{fill}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetbuttcap% -\pgfsetmiterjoin% -\definecolor{currentfill}{rgb}{0.000000,0.501961,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetfillopacity{0.200000}% -\pgfsetlinewidth{0.000000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetstrokeopacity{0.200000}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{-174.068564in}}% -\pgfpathlineto{\pgfqpoint{2.247564in}{-174.068564in}}% -\pgfpathlineto{\pgfqpoint{2.247564in}{1.250043in}}% -\pgfpathlineto{\pgfqpoint{0.733531in}{1.250043in}}% -\pgfpathlineto{\pgfqpoint{0.733531in}{-174.068564in}}% -\pgfpathclose% -\pgfusepath{fill}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetbuttcap% -\pgfsetmiterjoin% -\definecolor{currentfill}{rgb}{1.000000,0.647059,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetfillopacity{0.200000}% -\pgfsetlinewidth{0.000000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetstrokeopacity{0.200000}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{2.247564in}{1.250043in}}% -\pgfpathlineto{\pgfqpoint{2.262704in}{1.250043in}}% -\pgfpathlineto{\pgfqpoint{2.262704in}{1.600680in}}% -\pgfpathlineto{\pgfqpoint{2.247564in}{1.600680in}}% -\pgfpathlineto{\pgfqpoint{2.247564in}{1.250043in}}% -\pgfpathclose% -\pgfusepath{fill}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetbuttcap% -\pgfsetmiterjoin% -\definecolor{currentfill}{rgb}{1.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetfillopacity{0.200000}% -\pgfsetlinewidth{0.000000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetstrokeopacity{0.200000}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{2.262704in}{1.600680in}}% -\pgfpathlineto{\pgfqpoint{3.776737in}{1.600680in}}% -\pgfpathlineto{\pgfqpoint{3.776737in}{2.301962in}}% -\pgfpathlineto{\pgfqpoint{2.262704in}{2.301962in}}% -\pgfpathlineto{\pgfqpoint{2.262704in}{1.600680in}}% -\pgfpathclose% -\pgfusepath{fill}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{0.733531in}{2.301955in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{0.733531in}{0.548769in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=0.733531in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.0}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{1.490547in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{1.490547in}{2.301955in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{1.490547in}{0.548769in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=1.490547in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.5}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{2.247564in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{2.247564in}{2.301955in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{2.247564in}{0.548769in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=2.247564in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.0}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{3.004580in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.004580in}{2.301955in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{3.004580in}{0.548769in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=3.004580in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.5}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{3.761597in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{3.761597in}{0.548769in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=3.761597in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {2.0}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=2.247564in,y=0.272534in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle w\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.548769in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{0.733531in}{0.548769in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=0.348306in, y=0.500544in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {10^{-4}}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{0.899406in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.899406in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{0.733531in}{0.899406in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=0.348306in, y=0.851181in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {10^{-2}}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{1.250043in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{1.250043in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{0.733531in}{1.250043in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=0.435112in, y=1.201818in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {10^{0}}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{1.600680in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{1.600680in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{0.733531in}{1.600680in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=0.435112in, y=1.552455in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {10^{2}}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{1.951318in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{1.951318in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{0.733531in}{1.951318in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=0.435112in, y=1.903092in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {10^{4}}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{2.301955in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{0.733531in}{2.301955in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=0.435112in, y=2.253730in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {10^{6}}\)}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=0.292751in,y=1.425362in,,bottom,rotate=90.000000]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle F^2_N(w)\)}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{1.003750pt}% -\definecolor{currentstroke}{rgb}{0.121569,0.466667,0.705882}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.739446in}{0.534880in}}% -\pgfpathlineto{\pgfqpoint{0.744132in}{0.623916in}}% -\pgfpathlineto{\pgfqpoint{0.750947in}{0.699506in}}% -\pgfpathlineto{\pgfqpoint{0.759276in}{0.759013in}}% -\pgfpathlineto{\pgfqpoint{0.769120in}{0.808295in}}% -\pgfpathlineto{\pgfqpoint{0.781235in}{0.852871in}}% -\pgfpathlineto{\pgfqpoint{0.794865in}{0.891083in}}% -\pgfpathlineto{\pgfqpoint{0.810009in}{0.924604in}}% -\pgfpathlineto{\pgfqpoint{0.827425in}{0.955729in}}% -\pgfpathlineto{\pgfqpoint{0.847112in}{0.984554in}}% -\pgfpathlineto{\pgfqpoint{0.869071in}{1.011252in}}% -\pgfpathlineto{\pgfqpoint{0.894059in}{1.036721in}}% -\pgfpathlineto{\pgfqpoint{0.922075in}{1.060823in}}% -\pgfpathlineto{\pgfqpoint{0.953878in}{1.084028in}}% -\pgfpathlineto{\pgfqpoint{0.989467in}{1.106127in}}% -\pgfpathlineto{\pgfqpoint{1.029598in}{1.127375in}}% -\pgfpathlineto{\pgfqpoint{1.075031in}{1.147865in}}% -\pgfpathlineto{\pgfqpoint{1.125764in}{1.167300in}}% -\pgfpathlineto{\pgfqpoint{1.182554in}{1.185675in}}% -\pgfpathlineto{\pgfqpoint{1.244645in}{1.202480in}}% -\pgfpathlineto{\pgfqpoint{1.312036in}{1.217494in}}% -\pgfpathlineto{\pgfqpoint{1.383214in}{1.230171in}}% -\pgfpathlineto{\pgfqpoint{1.455905in}{1.239991in}}% -\pgfpathlineto{\pgfqpoint{1.527083in}{1.246540in}}% -\pgfpathlineto{\pgfqpoint{1.594474in}{1.249707in}}% -\pgfpathlineto{\pgfqpoint{1.655808in}{1.249589in}}% -\pgfpathlineto{\pgfqpoint{1.711084in}{1.246442in}}% -\pgfpathlineto{\pgfqpoint{1.758788in}{1.240733in}}% -\pgfpathlineto{\pgfqpoint{1.800434in}{1.232740in}}% -\pgfpathlineto{\pgfqpoint{1.836780in}{1.222684in}}% -\pgfpathlineto{\pgfqpoint{1.867825in}{1.211013in}}% -\pgfpathlineto{\pgfqpoint{1.895085in}{1.197575in}}% -\pgfpathlineto{\pgfqpoint{1.919315in}{1.182199in}}% -\pgfpathlineto{\pgfqpoint{1.940517in}{1.165082in}}% -\pgfpathlineto{\pgfqpoint{1.959447in}{1.145758in}}% -\pgfpathlineto{\pgfqpoint{1.976106in}{1.124277in}}% -\pgfpathlineto{\pgfqpoint{1.991250in}{1.099472in}}% -\pgfpathlineto{\pgfqpoint{2.004122in}{1.072523in}}% -\pgfpathlineto{\pgfqpoint{2.015480in}{1.041896in}}% -\pgfpathlineto{\pgfqpoint{2.026081in}{1.004016in}}% -\pgfpathlineto{\pgfqpoint{2.035168in}{0.959254in}}% -\pgfpathlineto{\pgfqpoint{2.042740in}{0.905583in}}% -\pgfpathlineto{\pgfqpoint{2.048797in}{0.840043in}}% -\pgfpathlineto{\pgfqpoint{2.053341in}{0.758643in}}% -\pgfpathlineto{\pgfqpoint{2.056369in}{0.659102in}}% -\pgfpathlineto{\pgfqpoint{2.058129in}{0.534880in}}% -\pgfpathmoveto{\pgfqpoint{2.061041in}{0.534880in}}% -\pgfpathlineto{\pgfqpoint{2.064699in}{0.731366in}}% -\pgfpathlineto{\pgfqpoint{2.069999in}{0.841854in}}% -\pgfpathlineto{\pgfqpoint{2.076814in}{0.921040in}}% -\pgfpathlineto{\pgfqpoint{2.085143in}{0.984050in}}% -\pgfpathlineto{\pgfqpoint{2.095744in}{1.040507in}}% -\pgfpathlineto{\pgfqpoint{2.107859in}{1.088435in}}% -\pgfpathlineto{\pgfqpoint{2.121489in}{1.130355in}}% -\pgfpathlineto{\pgfqpoint{2.136633in}{1.167522in}}% -\pgfpathlineto{\pgfqpoint{2.153292in}{1.200289in}}% -\pgfpathlineto{\pgfqpoint{2.169193in}{1.224889in}}% -\pgfpathlineto{\pgfqpoint{2.182823in}{1.240496in}}% -\pgfpathlineto{\pgfqpoint{2.192666in}{1.247725in}}% -\pgfpathlineto{\pgfqpoint{2.200239in}{1.250017in}}% -\pgfpathlineto{\pgfqpoint{2.206296in}{1.248902in}}% -\pgfpathlineto{\pgfqpoint{2.211597in}{1.244804in}}% -\pgfpathlineto{\pgfqpoint{2.216897in}{1.236352in}}% -\pgfpathlineto{\pgfqpoint{2.222197in}{1.220917in}}% -\pgfpathlineto{\pgfqpoint{2.226741in}{1.197982in}}% -\pgfpathlineto{\pgfqpoint{2.231284in}{1.157051in}}% -\pgfpathlineto{\pgfqpoint{2.235070in}{1.089329in}}% -\pgfpathlineto{\pgfqpoint{2.237342in}{1.003949in}}% -\pgfpathlineto{\pgfqpoint{2.238856in}{0.869518in}}% -\pgfpathlineto{\pgfqpoint{2.239613in}{0.638914in}}% -\pgfpathlineto{\pgfqpoint{2.240370in}{0.794881in}}% -\pgfpathlineto{\pgfqpoint{2.243399in}{1.100517in}}% -\pgfpathlineto{\pgfqpoint{2.248700in}{1.280424in}}% -\pgfpathlineto{\pgfqpoint{2.266873in}{1.753784in}}% -\pgfpathlineto{\pgfqpoint{2.269144in}{1.924021in}}% -\pgfpathlineto{\pgfqpoint{2.270659in}{2.202839in}}% -\pgfpathlineto{\pgfqpoint{2.272930in}{1.848446in}}% -\pgfpathlineto{\pgfqpoint{2.276716in}{1.730165in}}% -\pgfpathlineto{\pgfqpoint{2.281260in}{1.672036in}}% -\pgfpathlineto{\pgfqpoint{2.286560in}{1.637950in}}% -\pgfpathlineto{\pgfqpoint{2.292618in}{1.617444in}}% -\pgfpathlineto{\pgfqpoint{2.298675in}{1.606779in}}% -\pgfpathlineto{\pgfqpoint{2.304733in}{1.601737in}}% -\pgfpathlineto{\pgfqpoint{2.311548in}{1.600286in}}% -\pgfpathlineto{\pgfqpoint{2.319120in}{1.602150in}}% -\pgfpathlineto{\pgfqpoint{2.328206in}{1.607676in}}% -\pgfpathlineto{\pgfqpoint{2.340322in}{1.618928in}}% -\pgfpathlineto{\pgfqpoint{2.355466in}{1.637536in}}% -\pgfpathlineto{\pgfqpoint{2.372881in}{1.664058in}}% -\pgfpathlineto{\pgfqpoint{2.391054in}{1.697587in}}% -\pgfpathlineto{\pgfqpoint{2.407713in}{1.734758in}}% -\pgfpathlineto{\pgfqpoint{2.422857in}{1.776122in}}% -\pgfpathlineto{\pgfqpoint{2.435729in}{1.820082in}}% -\pgfpathlineto{\pgfqpoint{2.447088in}{1.870149in}}% -\pgfpathlineto{\pgfqpoint{2.456174in}{1.923894in}}% -\pgfpathlineto{\pgfqpoint{2.463746in}{1.987030in}}% -\pgfpathlineto{\pgfqpoint{2.469804in}{2.064340in}}% -\pgfpathlineto{\pgfqpoint{2.474347in}{2.165039in}}% -\pgfpathlineto{\pgfqpoint{2.477435in}{2.315844in}}% -\pgfpathmoveto{\pgfqpoint{2.481180in}{2.315844in}}% -\pgfpathlineto{\pgfqpoint{2.484948in}{2.149178in}}% -\pgfpathlineto{\pgfqpoint{2.490248in}{2.050240in}}% -\pgfpathlineto{\pgfqpoint{2.497063in}{1.978983in}}% -\pgfpathlineto{\pgfqpoint{2.505392in}{1.923413in}}% -\pgfpathlineto{\pgfqpoint{2.515236in}{1.878185in}}% -\pgfpathlineto{\pgfqpoint{2.526594in}{1.840393in}}% -\pgfpathlineto{\pgfqpoint{2.539467in}{1.808260in}}% -\pgfpathlineto{\pgfqpoint{2.553854in}{1.780613in}}% -\pgfpathlineto{\pgfqpoint{2.569755in}{1.756622in}}% -\pgfpathlineto{\pgfqpoint{2.587928in}{1.734871in}}% -\pgfpathlineto{\pgfqpoint{2.608372in}{1.715370in}}% -\pgfpathlineto{\pgfqpoint{2.631089in}{1.698028in}}% -\pgfpathlineto{\pgfqpoint{2.656834in}{1.682284in}}% -\pgfpathlineto{\pgfqpoint{2.686365in}{1.667895in}}% -\pgfpathlineto{\pgfqpoint{2.720439in}{1.654789in}}% -\pgfpathlineto{\pgfqpoint{2.759814in}{1.642992in}}% -\pgfpathlineto{\pgfqpoint{2.806760in}{1.632261in}}% -\pgfpathlineto{\pgfqpoint{2.862036in}{1.622901in}}% -\pgfpathlineto{\pgfqpoint{2.928670in}{1.614877in}}% -\pgfpathlineto{\pgfqpoint{3.008934in}{1.608422in}}% -\pgfpathlineto{\pgfqpoint{3.108128in}{1.603650in}}% -\pgfpathlineto{\pgfqpoint{3.233824in}{1.600841in}}% -\pgfpathlineto{\pgfqpoint{3.396624in}{1.600449in}}% -\pgfpathlineto{\pgfqpoint{3.619242in}{1.603198in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{1.606074in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{1.606074in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetfillopacity{0.000000}% -\pgfsetlinewidth{1.003750pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.041667in}{-0.041667in}}{\pgfqpoint{0.041667in}{0.041667in}}{% -\pgfpathmoveto{\pgfqpoint{0.000000in}{-0.041667in}}% -\pgfpathcurveto{\pgfqpoint{0.011050in}{-0.041667in}}{\pgfqpoint{0.021649in}{-0.037276in}}{\pgfqpoint{0.029463in}{-0.029463in}}% -\pgfpathcurveto{\pgfqpoint{0.037276in}{-0.021649in}}{\pgfqpoint{0.041667in}{-0.011050in}}{\pgfqpoint{0.041667in}{0.000000in}}% -\pgfpathcurveto{\pgfqpoint{0.041667in}{0.011050in}}{\pgfqpoint{0.037276in}{0.021649in}}{\pgfqpoint{0.029463in}{0.029463in}}% -\pgfpathcurveto{\pgfqpoint{0.021649in}{0.037276in}}{\pgfqpoint{0.011050in}{0.041667in}}{\pgfqpoint{0.000000in}{0.041667in}}% -\pgfpathcurveto{\pgfqpoint{-0.011050in}{0.041667in}}{\pgfqpoint{-0.021649in}{0.037276in}}{\pgfqpoint{-0.029463in}{0.029463in}}% -\pgfpathcurveto{\pgfqpoint{-0.037276in}{0.021649in}}{\pgfqpoint{-0.041667in}{0.011050in}}{\pgfqpoint{-0.041667in}{0.000000in}}% -\pgfpathcurveto{\pgfqpoint{-0.041667in}{-0.011050in}}{\pgfqpoint{-0.037276in}{-0.021649in}}{\pgfqpoint{-0.029463in}{-0.029463in}}% -\pgfpathcurveto{\pgfqpoint{-0.021649in}{-0.037276in}}{\pgfqpoint{-0.011050in}{-0.041667in}}{\pgfqpoint{0.000000in}{-0.041667in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{-0.041667in}}% -\pgfpathclose% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{0.733531in}{0.548769in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsys@transformshift{2.050740in}{0.548769in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsys@transformshift{2.247564in}{0.548769in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.733531in}{0.548769in}}{\pgfqpoint{3.028066in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetfillopacity{0.000000}% -\pgfsetlinewidth{1.003750pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.041667in}{-0.041667in}}{\pgfqpoint{0.041667in}{0.041667in}}{% -\pgfpathmoveto{\pgfqpoint{-0.041667in}{-0.041667in}}% -\pgfpathlineto{\pgfqpoint{0.041667in}{0.041667in}}% -\pgfpathmoveto{\pgfqpoint{-0.041667in}{0.041667in}}% -\pgfpathlineto{\pgfqpoint{0.041667in}{-0.041667in}}% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{2.262704in}{2.301955in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsys@transformshift{2.482239in}{2.301955in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetrectcap% -\pgfsetmiterjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{0.733531in}{2.301955in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetrectcap% -\pgfsetmiterjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{3.761597in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetrectcap% -\pgfsetmiterjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.548769in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetrectcap% -\pgfsetmiterjoin% -\pgfsetlinewidth{0.803000pt}% -\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.733531in}{2.301955in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetbuttcap% -\pgfsetmiterjoin% -\definecolor{currentfill}{rgb}{1.000000,1.000000,1.000000}% -\pgfsetfillcolor{currentfill}% -\pgfsetfillopacity{0.800000}% -\pgfsetlinewidth{1.003750pt}% -\definecolor{currentstroke}{rgb}{0.800000,0.800000,0.800000}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetstrokeopacity{0.800000}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.830753in}{1.997171in}}% -\pgfpathlineto{\pgfqpoint{2.157621in}{1.997171in}}% -\pgfpathquadraticcurveto{\pgfqpoint{2.185399in}{1.997171in}}{\pgfqpoint{2.185399in}{2.024949in}}% -\pgfpathlineto{\pgfqpoint{2.185399in}{2.204733in}}% -\pgfpathquadraticcurveto{\pgfqpoint{2.185399in}{2.232510in}}{\pgfqpoint{2.157621in}{2.232510in}}% -\pgfpathlineto{\pgfqpoint{0.830753in}{2.232510in}}% -\pgfpathquadraticcurveto{\pgfqpoint{0.802975in}{2.232510in}}{\pgfqpoint{0.802975in}{2.204733in}}% -\pgfpathlineto{\pgfqpoint{0.802975in}{2.024949in}}% -\pgfpathquadraticcurveto{\pgfqpoint{0.802975in}{1.997171in}}{\pgfqpoint{0.830753in}{1.997171in}}% -\pgfpathlineto{\pgfqpoint{0.830753in}{1.997171in}}% -\pgfpathclose% -\pgfusepath{stroke,fill}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsetrectcap% -\pgfsetroundjoin% -\pgfsetlinewidth{1.003750pt}% -\definecolor{currentstroke}{rgb}{0.121569,0.466667,0.705882}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.858531in}{2.128344in}}% -\pgfpathlineto{\pgfqpoint{0.997420in}{2.128344in}}% -\pgfpathlineto{\pgfqpoint{1.136309in}{2.128344in}}% -\pgfusepath{stroke}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=1.247420in,y=2.079733in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle N=5, k=0.1\)}% -\end{pgfscope}% -\end{pgfpicture}% -\makeatother% -\endgroup% diff --git a/buch/papers/ellfilter/python/elliptic.pgf b/buch/papers/ellfilter/python/elliptic.pgf index 31b77d4..32485c1 100644 --- a/buch/papers/ellfilter/python/elliptic.pgf +++ b/buch/papers/ellfilter/python/elliptic.pgf @@ -23,7 +23,7 @@ \begingroup% \makeatletter% \begin{pgfpicture}% -\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{4.000000in}{2.500000in}}% +\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{5.000000in}{3.000000in}}% \pgfusepath{use as bounding box, clip}% \begin{pgfscope}% \pgfsetbuttcap% @@ -34,9 +34,9 @@ \pgfsetstrokeopacity{0.000000}% \pgfsetdash{}{0pt}% \pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{4.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{4.000000in}{2.500000in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{2.500000in}}% +\pgfpathlineto{\pgfqpoint{5.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{5.000000in}{3.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{3.000000in}}% \pgfpathlineto{\pgfqpoint{0.000000in}{0.000000in}}% \pgfpathclose% \pgfusepath{}% @@ -51,16 +51,16 @@ \pgfsetstrokecolor{currentstroke}% \pgfsetstrokeopacity{0.000000}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% -\pgfpathlineto{\pgfqpoint{0.617954in}{2.301955in}}% -\pgfpathlineto{\pgfqpoint{0.617954in}{0.548769in}}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{2.850000in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{2.850000in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{1.746607in}}% \pgfpathclose% \pgfusepath{fill}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetbuttcap% \pgfsetmiterjoin% @@ -72,16 +72,16 @@ \pgfsetstrokecolor{currentstroke}% \pgfsetstrokeopacity{0.200000}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{1.788459in}}% -\pgfpathlineto{\pgfqpoint{2.189776in}{1.788459in}}% -\pgfpathlineto{\pgfqpoint{2.189776in}{3.541645in}}% -\pgfpathlineto{\pgfqpoint{0.617954in}{3.541645in}}% -\pgfpathlineto{\pgfqpoint{0.617954in}{1.788459in}}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{-108.151374in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{-108.151374in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{2.187964in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{2.187964in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{-108.151374in}}% \pgfpathclose% \pgfusepath{fill}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetbuttcap% \pgfsetmiterjoin% @@ -93,16 +93,16 @@ \pgfsetstrokecolor{currentstroke}% \pgfsetstrokeopacity{0.200000}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{2.189776in}{0.724087in}}% -\pgfpathlineto{\pgfqpoint{2.205494in}{0.724087in}}% -\pgfpathlineto{\pgfqpoint{2.205494in}{1.788459in}}% -\pgfpathlineto{\pgfqpoint{2.189776in}{1.788459in}}% -\pgfpathlineto{\pgfqpoint{2.189776in}{0.724087in}}% +\pgfpathmoveto{\pgfqpoint{2.730268in}{2.187964in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{2.187964in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{2.408643in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{2.408643in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{2.187964in}}% \pgfpathclose% \pgfusepath{fill}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetbuttcap% \pgfsetmiterjoin% @@ -114,16 +114,16 @@ \pgfsetstrokecolor{currentstroke}% \pgfsetstrokeopacity{0.200000}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{2.205494in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.777315in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.777315in}{0.724087in}}% -\pgfpathlineto{\pgfqpoint{2.205494in}{0.724087in}}% -\pgfpathlineto{\pgfqpoint{2.205494in}{0.548769in}}% +\pgfpathmoveto{\pgfqpoint{2.750075in}{2.408643in}}% +\pgfpathlineto{\pgfqpoint{4.746812in}{2.408643in}}% +\pgfpathlineto{\pgfqpoint{4.746812in}{2.850005in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{2.850005in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{2.408643in}}% \pgfpathclose% \pgfusepath{fill}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -131,8 +131,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{0.617954in}{2.301955in}}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{2.850000in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -150,7 +150,770 @@ \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{0.617954in}{0.548769in}% +\pgfsys@transformshift{0.733531in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{1.232715in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{1.232715in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{1.232715in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{1.731899in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{1.731899in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{1.731899in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{2.231083in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{2.231083in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{2.231083in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{2.730268in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{2.730268in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{3.229452in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{3.229452in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{3.229452in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{3.728636in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{3.728636in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{3.728636in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{4.227820in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{4.227820in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{4.227820in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{4.727004in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{4.727004in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{1.746607in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.733531in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.348306in, y=1.698381in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {10^{-4}}\)}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{2.187964in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{2.187964in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.733531in}{2.187964in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.435112in, y=2.139739in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {10^{0}}\)}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{2.629321in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{2.629321in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.733531in}{2.629321in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.435112in, y=2.581096in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {10^{4}}\)}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.292751in,y=2.298303in,,bottom,rotate=90.000000]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle F^2_N(w)\)}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{1.003750pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.501961,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.740931in}{1.732718in}}% +\pgfpathlineto{\pgfqpoint{0.746516in}{1.786823in}}% +\pgfpathlineto{\pgfqpoint{0.754507in}{1.832782in}}% +\pgfpathlineto{\pgfqpoint{0.763497in}{1.866959in}}% +\pgfpathlineto{\pgfqpoint{0.774485in}{1.896885in}}% +\pgfpathlineto{\pgfqpoint{0.787470in}{1.923263in}}% +\pgfpathlineto{\pgfqpoint{0.802453in}{1.946729in}}% +\pgfpathlineto{\pgfqpoint{0.820433in}{1.968905in}}% +\pgfpathlineto{\pgfqpoint{0.841409in}{1.989570in}}% +\pgfpathlineto{\pgfqpoint{0.865382in}{2.008719in}}% +\pgfpathlineto{\pgfqpoint{0.893350in}{2.027039in}}% +\pgfpathlineto{\pgfqpoint{0.926313in}{2.044843in}}% +\pgfpathlineto{\pgfqpoint{0.965268in}{2.062241in}}% +\pgfpathlineto{\pgfqpoint{1.011216in}{2.079233in}}% +\pgfpathlineto{\pgfqpoint{1.065155in}{2.095755in}}% +\pgfpathlineto{\pgfqpoint{1.128084in}{2.111711in}}% +\pgfpathlineto{\pgfqpoint{1.202000in}{2.127167in}}% +\pgfpathlineto{\pgfqpoint{1.287903in}{2.141865in}}% +\pgfpathlineto{\pgfqpoint{1.385792in}{2.155401in}}% +\pgfpathlineto{\pgfqpoint{1.494668in}{2.167305in}}% +\pgfpathlineto{\pgfqpoint{1.612535in}{2.177062in}}% +\pgfpathlineto{\pgfqpoint{1.732399in}{2.183910in}}% +\pgfpathlineto{\pgfqpoint{1.847269in}{2.187451in}}% +\pgfpathlineto{\pgfqpoint{1.951151in}{2.187660in}}% +\pgfpathlineto{\pgfqpoint{2.041049in}{2.184855in}}% +\pgfpathlineto{\pgfqpoint{2.116963in}{2.179489in}}% +\pgfpathlineto{\pgfqpoint{2.179891in}{2.172045in}}% +\pgfpathlineto{\pgfqpoint{2.231833in}{2.162906in}}% +\pgfpathlineto{\pgfqpoint{2.274784in}{2.152346in}}% +\pgfpathlineto{\pgfqpoint{2.310743in}{2.140427in}}% +\pgfpathlineto{\pgfqpoint{2.340709in}{2.127341in}}% +\pgfpathlineto{\pgfqpoint{2.365681in}{2.113201in}}% +\pgfpathlineto{\pgfqpoint{2.386657in}{2.097957in}}% +\pgfpathlineto{\pgfqpoint{2.404637in}{2.081234in}}% +\pgfpathlineto{\pgfqpoint{2.420619in}{2.062036in}}% +\pgfpathlineto{\pgfqpoint{2.433604in}{2.041733in}}% +\pgfpathlineto{\pgfqpoint{2.444591in}{2.019228in}}% +\pgfpathlineto{\pgfqpoint{2.454580in}{1.991581in}}% +\pgfpathlineto{\pgfqpoint{2.462571in}{1.960514in}}% +\pgfpathlineto{\pgfqpoint{2.469563in}{1.920021in}}% +\pgfpathlineto{\pgfqpoint{2.474557in}{1.873580in}}% +\pgfpathlineto{\pgfqpoint{2.478553in}{1.805777in}}% +\pgfpathlineto{\pgfqpoint{2.480586in}{1.732718in}}% +\pgfpathmoveto{\pgfqpoint{2.484219in}{1.732718in}}% +\pgfpathlineto{\pgfqpoint{2.486544in}{1.815182in}}% +\pgfpathlineto{\pgfqpoint{2.491538in}{1.891600in}}% +\pgfpathlineto{\pgfqpoint{2.498530in}{1.947168in}}% +\pgfpathlineto{\pgfqpoint{2.506521in}{1.987046in}}% +\pgfpathlineto{\pgfqpoint{2.516510in}{2.021891in}}% +\pgfpathlineto{\pgfqpoint{2.528496in}{2.052678in}}% +\pgfpathlineto{\pgfqpoint{2.542480in}{2.080234in}}% +\pgfpathlineto{\pgfqpoint{2.558462in}{2.105153in}}% +\pgfpathlineto{\pgfqpoint{2.577441in}{2.128933in}}% +\pgfpathlineto{\pgfqpoint{2.598417in}{2.150115in}}% +\pgfpathlineto{\pgfqpoint{2.619393in}{2.167048in}}% +\pgfpathlineto{\pgfqpoint{2.639371in}{2.179324in}}% +\pgfpathlineto{\pgfqpoint{2.655352in}{2.185829in}}% +\pgfpathlineto{\pgfqpoint{2.668338in}{2.187959in}}% +\pgfpathlineto{\pgfqpoint{2.678326in}{2.186578in}}% +\pgfpathlineto{\pgfqpoint{2.686317in}{2.182435in}}% +\pgfpathlineto{\pgfqpoint{2.693309in}{2.175207in}}% +\pgfpathlineto{\pgfqpoint{2.699303in}{2.164543in}}% +\pgfpathlineto{\pgfqpoint{2.705296in}{2.146413in}}% +\pgfpathlineto{\pgfqpoint{2.710290in}{2.119757in}}% +\pgfpathlineto{\pgfqpoint{2.714286in}{2.080320in}}% +\pgfpathlineto{\pgfqpoint{2.717282in}{2.018766in}}% +\pgfpathlineto{\pgfqpoint{2.719280in}{1.902417in}}% +\pgfpathlineto{\pgfqpoint{2.720279in}{1.787994in}}% +\pgfpathlineto{\pgfqpoint{2.723275in}{2.052161in}}% +\pgfpathlineto{\pgfqpoint{2.728270in}{2.159459in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{2.187964in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{2.187964in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{1.003750pt}% +\definecolor{currentstroke}{rgb}{1.000000,0.647059,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{2.730268in}{2.187964in}}% +\pgfpathlineto{\pgfqpoint{2.739948in}{2.296201in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{2.408537in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{2.408537in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{1.003750pt}% +\definecolor{currentstroke}{rgb}{1.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{2.750075in}{2.408537in}}% +\pgfpathlineto{\pgfqpoint{2.755020in}{2.489017in}}% +\pgfpathlineto{\pgfqpoint{2.757987in}{2.575142in}}% +\pgfpathlineto{\pgfqpoint{2.759965in}{2.739853in}}% +\pgfpathlineto{\pgfqpoint{2.760954in}{2.732944in}}% +\pgfpathlineto{\pgfqpoint{2.763921in}{2.559521in}}% +\pgfpathlineto{\pgfqpoint{2.767876in}{2.498072in}}% +\pgfpathlineto{\pgfqpoint{2.772821in}{2.462357in}}% +\pgfpathlineto{\pgfqpoint{2.778755in}{2.439486in}}% +\pgfpathlineto{\pgfqpoint{2.785678in}{2.424627in}}% +\pgfpathlineto{\pgfqpoint{2.793589in}{2.415351in}}% +\pgfpathlineto{\pgfqpoint{2.801501in}{2.410617in}}% +\pgfpathlineto{\pgfqpoint{2.811391in}{2.408469in}}% +\pgfpathlineto{\pgfqpoint{2.823258in}{2.409298in}}% +\pgfpathlineto{\pgfqpoint{2.838093in}{2.413594in}}% +\pgfpathlineto{\pgfqpoint{2.856883in}{2.422398in}}% +\pgfpathlineto{\pgfqpoint{2.879629in}{2.436615in}}% +\pgfpathlineto{\pgfqpoint{2.904353in}{2.455827in}}% +\pgfpathlineto{\pgfqpoint{2.928088in}{2.478242in}}% +\pgfpathlineto{\pgfqpoint{2.948856in}{2.502012in}}% +\pgfpathlineto{\pgfqpoint{2.966657in}{2.526883in}}% +\pgfpathlineto{\pgfqpoint{2.982481in}{2.554434in}}% +\pgfpathlineto{\pgfqpoint{2.995337in}{2.583034in}}% +\pgfpathlineto{\pgfqpoint{3.006216in}{2.614845in}}% +\pgfpathlineto{\pgfqpoint{3.015116in}{2.650561in}}% +\pgfpathlineto{\pgfqpoint{3.022039in}{2.690604in}}% +\pgfpathlineto{\pgfqpoint{3.027973in}{2.745226in}}% +\pgfpathlineto{\pgfqpoint{3.031928in}{2.812248in}}% +\pgfpathlineto{\pgfqpoint{3.033527in}{2.863889in}}% +\pgfpathmoveto{\pgfqpoint{3.038280in}{2.863889in}}% +\pgfpathlineto{\pgfqpoint{3.041818in}{2.775420in}}% +\pgfpathlineto{\pgfqpoint{3.047752in}{2.709952in}}% +\pgfpathlineto{\pgfqpoint{3.054675in}{2.667083in}}% +\pgfpathlineto{\pgfqpoint{3.063575in}{2.631439in}}% +\pgfpathlineto{\pgfqpoint{3.073465in}{2.603860in}}% +\pgfpathlineto{\pgfqpoint{3.085332in}{2.579578in}}% +\pgfpathlineto{\pgfqpoint{3.099178in}{2.558262in}}% +\pgfpathlineto{\pgfqpoint{3.115001in}{2.539530in}}% +\pgfpathlineto{\pgfqpoint{3.133791in}{2.522224in}}% +\pgfpathlineto{\pgfqpoint{3.155548in}{2.506551in}}% +\pgfpathlineto{\pgfqpoint{3.181261in}{2.492030in}}% +\pgfpathlineto{\pgfqpoint{3.210930in}{2.478899in}}% +\pgfpathlineto{\pgfqpoint{3.246533in}{2.466615in}}% +\pgfpathlineto{\pgfqpoint{3.289058in}{2.455313in}}% +\pgfpathlineto{\pgfqpoint{3.340484in}{2.444955in}}% +\pgfpathlineto{\pgfqpoint{3.402788in}{2.435657in}}% +\pgfpathlineto{\pgfqpoint{3.479927in}{2.427399in}}% +\pgfpathlineto{\pgfqpoint{3.575856in}{2.420378in}}% +\pgfpathlineto{\pgfqpoint{3.697498in}{2.414729in}}% +\pgfpathlineto{\pgfqpoint{3.854742in}{2.410690in}}% +\pgfpathlineto{\pgfqpoint{4.063413in}{2.408586in}}% +\pgfpathlineto{\pgfqpoint{4.355156in}{2.408934in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{2.412037in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{2.412037in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetfillopacity{0.000000}% +\pgfsetlinewidth{1.003750pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.041667in}{-0.041667in}}{\pgfqpoint{0.041667in}{0.041667in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{-0.041667in}}% +\pgfpathcurveto{\pgfqpoint{0.011050in}{-0.041667in}}{\pgfqpoint{0.021649in}{-0.037276in}}{\pgfqpoint{0.029463in}{-0.029463in}}% +\pgfpathcurveto{\pgfqpoint{0.037276in}{-0.021649in}}{\pgfqpoint{0.041667in}{-0.011050in}}{\pgfqpoint{0.041667in}{0.000000in}}% +\pgfpathcurveto{\pgfqpoint{0.041667in}{0.011050in}}{\pgfqpoint{0.037276in}{0.021649in}}{\pgfqpoint{0.029463in}{0.029463in}}% +\pgfpathcurveto{\pgfqpoint{0.021649in}{0.037276in}}{\pgfqpoint{0.011050in}{0.041667in}}{\pgfqpoint{0.000000in}{0.041667in}}% +\pgfpathcurveto{\pgfqpoint{-0.011050in}{0.041667in}}{\pgfqpoint{-0.021649in}{0.037276in}}{\pgfqpoint{-0.029463in}{0.029463in}}% +\pgfpathcurveto{\pgfqpoint{-0.037276in}{0.021649in}}{\pgfqpoint{-0.041667in}{0.011050in}}{\pgfqpoint{-0.041667in}{0.000000in}}% +\pgfpathcurveto{\pgfqpoint{-0.041667in}{-0.011050in}}{\pgfqpoint{-0.037276in}{-0.021649in}}{\pgfqpoint{-0.029463in}{-0.029463in}}% +\pgfpathcurveto{\pgfqpoint{-0.021649in}{-0.037276in}}{\pgfqpoint{-0.011050in}{-0.041667in}}{\pgfqpoint{0.000000in}{-0.041667in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.041667in}}% +\pgfpathclose% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.733531in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsys@transformshift{2.470692in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsys@transformshift{2.720284in}{1.746607in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{1.746607in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetfillopacity{0.000000}% +\pgfsetlinewidth{1.003750pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.041667in}{-0.041667in}}{\pgfqpoint{0.041667in}{0.041667in}}{% +\pgfpathmoveto{\pgfqpoint{-0.041667in}{-0.041667in}}% +\pgfpathlineto{\pgfqpoint{0.041667in}{0.041667in}}% +\pgfpathmoveto{\pgfqpoint{-0.041667in}{0.041667in}}% +\pgfpathlineto{\pgfqpoint{0.041667in}{-0.041667in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{2.750235in}{2.850000in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsys@transformshift{3.039762in}{2.850000in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetrectcap% +\pgfsetmiterjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetrectcap% +\pgfsetmiterjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{4.727004in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetrectcap% +\pgfsetmiterjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{1.746607in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{1.746607in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetrectcap% +\pgfsetmiterjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{2.850000in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{2.850000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetmiterjoin% +\definecolor{currentfill}{rgb}{1.000000,1.000000,1.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.000000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetstrokeopacity{0.000000}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{1.473611in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{1.473611in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{0.370218in}}% +\pgfpathclose% +\pgfusepath{fill}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetbuttcap% +\pgfsetmiterjoin% +\definecolor{currentfill}{rgb}{0.000000,0.501961,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetfillopacity{0.200000}% +\pgfsetlinewidth{0.000000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetstrokeopacity{0.200000}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{1.150435in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{1.150435in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{2.253828in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{2.253828in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{1.150435in}}% +\pgfpathclose% +\pgfusepath{fill}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetbuttcap% +\pgfsetmiterjoin% +\definecolor{currentfill}{rgb}{1.000000,0.647059,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetfillopacity{0.200000}% +\pgfsetlinewidth{0.000000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetstrokeopacity{0.200000}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{2.730268in}{0.480557in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{0.480557in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{1.150435in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{1.150435in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{0.480557in}}% +\pgfpathclose% +\pgfusepath{fill}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetbuttcap% +\pgfsetmiterjoin% +\definecolor{currentfill}{rgb}{1.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetfillopacity{0.200000}% +\pgfsetlinewidth{0.000000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetstrokeopacity{0.200000}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{2.750075in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{4.746812in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{4.746812in}{0.480557in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{0.480557in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{0.370218in}}% +\pgfpathclose% +\pgfusepath{fill}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{1.473611in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.733531in}{0.370218in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -158,10 +921,10 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=0.617954in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.0}\)}% +\pgftext[x=0.733531in,y=0.272996in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.00}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -169,8 +932,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{1.403865in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{1.403865in}{2.301955in}}% +\pgfpathmoveto{\pgfqpoint{1.232715in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{1.232715in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -188,7 +951,7 @@ \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{1.403865in}{0.548769in}% +\pgfsys@transformshift{1.232715in}{0.370218in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -196,10 +959,10 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=1.403865in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.5}\)}% +\pgftext[x=1.232715in,y=0.272996in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.25}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -207,8 +970,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{2.189776in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{2.189776in}{2.301955in}}% +\pgfpathmoveto{\pgfqpoint{1.731899in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{1.731899in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -226,7 +989,7 @@ \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{2.189776in}{0.548769in}% +\pgfsys@transformshift{1.731899in}{0.370218in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -234,10 +997,10 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=2.189776in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.0}\)}% +\pgftext[x=1.731899in,y=0.272996in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.50}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -245,8 +1008,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{2.975686in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{2.975686in}{2.301955in}}% +\pgfpathmoveto{\pgfqpoint{2.231083in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{2.231083in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -264,7 +1027,7 @@ \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{2.975686in}{0.548769in}% +\pgfsys@transformshift{2.231083in}{0.370218in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -272,10 +1035,10 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=2.975686in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.5}\)}% +\pgftext[x=2.231083in,y=0.272996in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.75}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -283,8 +1046,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{3.761597in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% +\pgfpathmoveto{\pgfqpoint{2.730268in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -302,7 +1065,7 @@ \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{3.761597in}{0.548769in}% +\pgfsys@transformshift{2.730268in}{0.370218in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -310,16 +1073,48 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=3.761597in,y=0.451547in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {2.0}\)}% +\pgftext[x=2.730268in,y=0.272996in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.00}\)}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{3.229452in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{3.229452in}{1.473611in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{3.229452in}{0.370218in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% \end{pgfscope}% \begin{pgfscope}% \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=2.189776in,y=0.272534in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle w\)}% +\pgftext[x=3.229452in,y=0.272996in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.25}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -327,8 +1122,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.548769in}}% +\pgfpathmoveto{\pgfqpoint{3.728636in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{3.728636in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -340,13 +1135,13 @@ \definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{0.617954in}{0.548769in}% +\pgfsys@transformshift{3.728636in}{0.370218in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -354,10 +1149,10 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=0.343262in, y=0.500544in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.0}\)}% +\pgftext[x=3.728636in,y=0.272996in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.50}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -365,8 +1160,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{0.899406in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.899406in}}% +\pgfpathmoveto{\pgfqpoint{4.227820in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{4.227820in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -378,13 +1173,13 @@ \definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{0.617954in}{0.899406in}% +\pgfsys@transformshift{4.227820in}{0.370218in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -392,10 +1187,10 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=0.343262in, y=0.851181in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.2}\)}% +\pgftext[x=4.227820in,y=0.272996in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.75}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -403,8 +1198,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{1.250043in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{1.250043in}}% +\pgfpathmoveto{\pgfqpoint{4.727004in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -416,13 +1211,13 @@ \definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% -\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% -\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{0.617954in}{1.250043in}% +\pgfsys@transformshift{4.727004in}{0.370218in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -430,10 +1225,10 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=0.343262in, y=1.201818in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.4}\)}% +\pgftext[x=4.727004in,y=0.272996in,,top]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {2.00}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -441,8 +1236,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{1.600680in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{1.600680in}}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{0.370218in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -460,7 +1255,7 @@ \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{0.617954in}{1.600680in}% +\pgfsys@transformshift{0.733531in}{0.370218in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -468,10 +1263,10 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=0.343262in, y=1.552455in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.6}\)}% +\pgftext[x=0.458839in, y=0.321992in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.0}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -479,8 +1274,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{1.951318in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{1.951318in}}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{0.921914in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{0.921914in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -498,7 +1293,7 @@ \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{0.617954in}{1.951318in}% +\pgfsys@transformshift{0.733531in}{0.921914in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -506,10 +1301,10 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=0.343262in, y=1.903092in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.8}\)}% +\pgftext[x=0.458839in, y=0.873689in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {0.5}\)}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% @@ -517,8 +1312,8 @@ \definecolor{currentstroke}{rgb}{0.690196,0.690196,0.690196}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{2.301955in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{1.473611in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -536,7 +1331,7 @@ \pgfusepath{stroke,fill}% }% \begin{pgfscope}% -\pgfsys@transformshift{0.617954in}{2.301955in}% +\pgfsys@transformshift{0.733531in}{1.473611in}% \pgfsys@useobject{currentmarker}{}% \end{pgfscope}% \end{pgfscope}% @@ -544,120 +1339,140 @@ \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=0.343262in, y=2.253730in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.0}\)}% +\pgftext[x=0.458839in, y=1.425386in, left, base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle {1.0}\)}% \end{pgfscope}% \begin{pgfscope}% \definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{textcolor}% \pgfsetfillcolor{textcolor}% -\pgftext[x=0.287707in,y=1.425362in,,bottom,rotate=90.000000]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle |H(w)|\)}% +\pgftext[x=0.403284in,y=0.921914in,,bottom,rotate=90.000000]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle |H(w)|\)}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{1.003750pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.501961,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{1.473611in}}% +\pgfpathlineto{\pgfqpoint{0.778480in}{1.472092in}}% +\pgfpathlineto{\pgfqpoint{0.824428in}{1.467451in}}% +\pgfpathlineto{\pgfqpoint{0.872374in}{1.459441in}}% +\pgfpathlineto{\pgfqpoint{0.922317in}{1.447955in}}% +\pgfpathlineto{\pgfqpoint{0.977255in}{1.432096in}}% +\pgfpathlineto{\pgfqpoint{1.039185in}{1.410937in}}% +\pgfpathlineto{\pgfqpoint{1.116097in}{1.381211in}}% +\pgfpathlineto{\pgfqpoint{1.241955in}{1.328667in}}% +\pgfpathlineto{\pgfqpoint{1.380797in}{1.271746in}}% +\pgfpathlineto{\pgfqpoint{1.469697in}{1.238676in}}% +\pgfpathlineto{\pgfqpoint{1.547608in}{1.212952in}}% +\pgfpathlineto{\pgfqpoint{1.618528in}{1.192719in}}% +\pgfpathlineto{\pgfqpoint{1.685452in}{1.176794in}}% +\pgfpathlineto{\pgfqpoint{1.748381in}{1.164963in}}% +\pgfpathlineto{\pgfqpoint{1.807314in}{1.156972in}}% +\pgfpathlineto{\pgfqpoint{1.863250in}{1.152493in}}% +\pgfpathlineto{\pgfqpoint{1.915192in}{1.151401in}}% +\pgfpathlineto{\pgfqpoint{1.964136in}{1.153458in}}% +\pgfpathlineto{\pgfqpoint{2.009085in}{1.158380in}}% +\pgfpathlineto{\pgfqpoint{2.051038in}{1.165994in}}% +\pgfpathlineto{\pgfqpoint{2.090992in}{1.176379in}}% +\pgfpathlineto{\pgfqpoint{2.127950in}{1.189125in}}% +\pgfpathlineto{\pgfqpoint{2.162911in}{1.204375in}}% +\pgfpathlineto{\pgfqpoint{2.196872in}{1.222581in}}% +\pgfpathlineto{\pgfqpoint{2.229835in}{1.243857in}}% +\pgfpathlineto{\pgfqpoint{2.261799in}{1.268239in}}% +\pgfpathlineto{\pgfqpoint{2.293762in}{1.296564in}}% +\pgfpathlineto{\pgfqpoint{2.327724in}{1.330955in}}% +\pgfpathlineto{\pgfqpoint{2.368677in}{1.377168in}}% +\pgfpathlineto{\pgfqpoint{2.423615in}{1.439002in}}% +\pgfpathlineto{\pgfqpoint{2.444591in}{1.457728in}}% +\pgfpathlineto{\pgfqpoint{2.460573in}{1.467921in}}% +\pgfpathlineto{\pgfqpoint{2.473559in}{1.472628in}}% +\pgfpathlineto{\pgfqpoint{2.484546in}{1.473549in}}% +\pgfpathlineto{\pgfqpoint{2.495534in}{1.471251in}}% +\pgfpathlineto{\pgfqpoint{2.505522in}{1.466094in}}% +\pgfpathlineto{\pgfqpoint{2.516510in}{1.456841in}}% +\pgfpathlineto{\pgfqpoint{2.528496in}{1.442365in}}% +\pgfpathlineto{\pgfqpoint{2.541482in}{1.421636in}}% +\pgfpathlineto{\pgfqpoint{2.556465in}{1.391771in}}% +\pgfpathlineto{\pgfqpoint{2.575443in}{1.346664in}}% +\pgfpathlineto{\pgfqpoint{2.642367in}{1.179908in}}% +\pgfpathlineto{\pgfqpoint{2.654354in}{1.161187in}}% +\pgfpathlineto{\pgfqpoint{2.662345in}{1.153583in}}% +\pgfpathlineto{\pgfqpoint{2.668338in}{1.151382in}}% +\pgfpathlineto{\pgfqpoint{2.673332in}{1.152493in}}% +\pgfpathlineto{\pgfqpoint{2.678326in}{1.156976in}}% +\pgfpathlineto{\pgfqpoint{2.683321in}{1.165718in}}% +\pgfpathlineto{\pgfqpoint{2.689314in}{1.183573in}}% +\pgfpathlineto{\pgfqpoint{2.695307in}{1.212352in}}% +\pgfpathlineto{\pgfqpoint{2.701300in}{1.256368in}}% +\pgfpathlineto{\pgfqpoint{2.708292in}{1.333653in}}% +\pgfpathlineto{\pgfqpoint{2.719280in}{1.472196in}}% +\pgfpathlineto{\pgfqpoint{2.720279in}{1.473481in}}% +\pgfpathlineto{\pgfqpoint{2.722277in}{1.459537in}}% +\pgfpathlineto{\pgfqpoint{2.725273in}{1.387304in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{1.151360in}}% +\pgfpathlineto{\pgfqpoint{2.730268in}{1.151360in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{1.003750pt}% +\definecolor{currentstroke}{rgb}{1.000000,0.647059,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{2.730268in}{1.151360in}}% +\pgfpathlineto{\pgfqpoint{2.739978in}{0.709346in}}% +\pgfpathlineto{\pgfqpoint{2.746805in}{0.536003in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{0.480388in}}% +\pgfpathlineto{\pgfqpoint{2.750075in}{0.480388in}}% +\pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{0.617954in}{0.548769in}}{\pgfqpoint{3.143642in}{1.753186in}}% +\pgfpathrectangle{\pgfqpoint{0.733531in}{0.370218in}}{\pgfqpoint{3.993473in}{1.103393in}}% \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% \pgfsetlinewidth{1.003750pt}% -\definecolor{currentstroke}{rgb}{0.121569,0.466667,0.705882}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{2.301955in}}% -\pgfpathlineto{\pgfqpoint{0.646254in}{2.300410in}}% -\pgfpathlineto{\pgfqpoint{0.674554in}{2.295805in}}% -\pgfpathlineto{\pgfqpoint{0.703640in}{2.287983in}}% -\pgfpathlineto{\pgfqpoint{0.734298in}{2.276528in}}% -\pgfpathlineto{\pgfqpoint{0.767315in}{2.260797in}}% -\pgfpathlineto{\pgfqpoint{0.802690in}{2.240472in}}% -\pgfpathlineto{\pgfqpoint{0.842781in}{2.213774in}}% -\pgfpathlineto{\pgfqpoint{0.889947in}{2.178486in}}% -\pgfpathlineto{\pgfqpoint{0.952050in}{2.127836in}}% -\pgfpathlineto{\pgfqpoint{1.147791in}{1.965399in}}% -\pgfpathlineto{\pgfqpoint{1.205963in}{1.922684in}}% -\pgfpathlineto{\pgfqpoint{1.257846in}{1.888382in}}% -\pgfpathlineto{\pgfqpoint{1.305012in}{1.860803in}}% -\pgfpathlineto{\pgfqpoint{1.349034in}{1.838524in}}% -\pgfpathlineto{\pgfqpoint{1.390698in}{1.820826in}}% -\pgfpathlineto{\pgfqpoint{1.430003in}{1.807434in}}% -\pgfpathlineto{\pgfqpoint{1.466950in}{1.798051in}}% -\pgfpathlineto{\pgfqpoint{1.501539in}{1.792361in}}% -\pgfpathlineto{\pgfqpoint{1.534555in}{1.790011in}}% -\pgfpathlineto{\pgfqpoint{1.566000in}{1.790875in}}% -\pgfpathlineto{\pgfqpoint{1.595872in}{1.794823in}}% -\pgfpathlineto{\pgfqpoint{1.624172in}{1.801709in}}% -\pgfpathlineto{\pgfqpoint{1.650899in}{1.811365in}}% -\pgfpathlineto{\pgfqpoint{1.676841in}{1.824030in}}% -\pgfpathlineto{\pgfqpoint{1.701996in}{1.839797in}}% -\pgfpathlineto{\pgfqpoint{1.726365in}{1.858757in}}% -\pgfpathlineto{\pgfqpoint{1.749949in}{1.880985in}}% -\pgfpathlineto{\pgfqpoint{1.773532in}{1.907483in}}% -\pgfpathlineto{\pgfqpoint{1.797115in}{1.938719in}}% -\pgfpathlineto{\pgfqpoint{1.820698in}{1.975139in}}% -\pgfpathlineto{\pgfqpoint{1.845068in}{2.018557in}}% -\pgfpathlineto{\pgfqpoint{1.871009in}{2.071217in}}% -\pgfpathlineto{\pgfqpoint{1.903240in}{2.144258in}}% -\pgfpathlineto{\pgfqpoint{1.949620in}{2.249449in}}% -\pgfpathlineto{\pgfqpoint{1.965342in}{2.277408in}}% -\pgfpathlineto{\pgfqpoint{1.977134in}{2.292569in}}% -\pgfpathlineto{\pgfqpoint{1.986567in}{2.299856in}}% -\pgfpathlineto{\pgfqpoint{1.993642in}{2.301922in}}% -\pgfpathlineto{\pgfqpoint{2.000717in}{2.300685in}}% -\pgfpathlineto{\pgfqpoint{2.007792in}{2.295839in}}% -\pgfpathlineto{\pgfqpoint{2.014867in}{2.287135in}}% -\pgfpathlineto{\pgfqpoint{2.023514in}{2.271025in}}% -\pgfpathlineto{\pgfqpoint{2.032947in}{2.246492in}}% -\pgfpathlineto{\pgfqpoint{2.043953in}{2.209014in}}% -\pgfpathlineto{\pgfqpoint{2.057317in}{2.152165in}}% -\pgfpathlineto{\pgfqpoint{2.076183in}{2.056775in}}% -\pgfpathlineto{\pgfqpoint{2.114702in}{1.858945in}}% -\pgfpathlineto{\pgfqpoint{2.126494in}{1.815249in}}% -\pgfpathlineto{\pgfqpoint{2.134355in}{1.796399in}}% -\pgfpathlineto{\pgfqpoint{2.139858in}{1.790308in}}% -\pgfpathlineto{\pgfqpoint{2.143002in}{1.790254in}}% -\pgfpathlineto{\pgfqpoint{2.146147in}{1.793264in}}% -\pgfpathlineto{\pgfqpoint{2.150077in}{1.802263in}}% -\pgfpathlineto{\pgfqpoint{2.154794in}{1.822852in}}% -\pgfpathlineto{\pgfqpoint{2.159510in}{1.857784in}}% -\pgfpathlineto{\pgfqpoint{2.165013in}{1.924261in}}% -\pgfpathlineto{\pgfqpoint{2.170516in}{2.030210in}}% -\pgfpathlineto{\pgfqpoint{2.181521in}{2.301670in}}% -\pgfpathlineto{\pgfqpoint{2.182308in}{2.299748in}}% -\pgfpathlineto{\pgfqpoint{2.183880in}{2.267565in}}% -\pgfpathlineto{\pgfqpoint{2.186238in}{2.135783in}}% -\pgfpathlineto{\pgfqpoint{2.192527in}{1.496420in}}% -\pgfpathlineto{\pgfqpoint{2.198816in}{1.001269in}}% -\pgfpathlineto{\pgfqpoint{2.205105in}{0.731898in}}% -\pgfpathlineto{\pgfqpoint{2.211393in}{0.583247in}}% -\pgfpathlineto{\pgfqpoint{2.213752in}{0.552138in}}% -\pgfpathlineto{\pgfqpoint{2.220827in}{0.630495in}}% -\pgfpathlineto{\pgfqpoint{2.227902in}{0.675607in}}% -\pgfpathlineto{\pgfqpoint{2.234977in}{0.701566in}}% -\pgfpathlineto{\pgfqpoint{2.241266in}{0.714626in}}% -\pgfpathlineto{\pgfqpoint{2.247554in}{0.721456in}}% -\pgfpathlineto{\pgfqpoint{2.253843in}{0.723972in}}% -\pgfpathlineto{\pgfqpoint{2.260918in}{0.723210in}}% -\pgfpathlineto{\pgfqpoint{2.269565in}{0.718770in}}% -\pgfpathlineto{\pgfqpoint{2.281357in}{0.708826in}}% -\pgfpathlineto{\pgfqpoint{2.300224in}{0.688160in}}% -\pgfpathlineto{\pgfqpoint{2.385123in}{0.590361in}}% -\pgfpathlineto{\pgfqpoint{2.417354in}{0.559882in}}% -\pgfpathlineto{\pgfqpoint{2.430717in}{0.549063in}}% -\pgfpathlineto{\pgfqpoint{2.463734in}{0.574407in}}% -\pgfpathlineto{\pgfqpoint{2.498323in}{0.597083in}}% -\pgfpathlineto{\pgfqpoint{2.535270in}{0.617584in}}% -\pgfpathlineto{\pgfqpoint{2.574575in}{0.635868in}}% -\pgfpathlineto{\pgfqpoint{2.617811in}{0.652529in}}% -\pgfpathlineto{\pgfqpoint{2.664977in}{0.667359in}}% -\pgfpathlineto{\pgfqpoint{2.717646in}{0.680619in}}% -\pgfpathlineto{\pgfqpoint{2.776604in}{0.692216in}}% -\pgfpathlineto{\pgfqpoint{2.843424in}{0.702155in}}% -\pgfpathlineto{\pgfqpoint{2.920462in}{0.710422in}}% -\pgfpathlineto{\pgfqpoint{3.010864in}{0.716921in}}% -\pgfpathlineto{\pgfqpoint{3.118561in}{0.721464in}}% -\pgfpathlineto{\pgfqpoint{3.250627in}{0.723829in}}% -\pgfpathlineto{\pgfqpoint{3.419640in}{0.723619in}}% -\pgfpathlineto{\pgfqpoint{3.651542in}{0.720038in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.717600in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.717600in}}% +\definecolor{currentstroke}{rgb}{1.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{2.750075in}{0.480388in}}% +\pgfpathlineto{\pgfqpoint{2.756998in}{0.398490in}}% +\pgfpathlineto{\pgfqpoint{2.759965in}{0.373708in}}% +\pgfpathlineto{\pgfqpoint{2.760954in}{0.373969in}}% +\pgfpathlineto{\pgfqpoint{2.768865in}{0.418088in}}% +\pgfpathlineto{\pgfqpoint{2.776777in}{0.445199in}}% +\pgfpathlineto{\pgfqpoint{2.784689in}{0.461928in}}% +\pgfpathlineto{\pgfqpoint{2.792600in}{0.471986in}}% +\pgfpathlineto{\pgfqpoint{2.800512in}{0.477584in}}% +\pgfpathlineto{\pgfqpoint{2.809413in}{0.480262in}}% +\pgfpathlineto{\pgfqpoint{2.820291in}{0.480059in}}% +\pgfpathlineto{\pgfqpoint{2.834137in}{0.476323in}}% +\pgfpathlineto{\pgfqpoint{2.852927in}{0.467773in}}% +\pgfpathlineto{\pgfqpoint{2.886552in}{0.448435in}}% +\pgfpathlineto{\pgfqpoint{2.959734in}{0.406057in}}% +\pgfpathlineto{\pgfqpoint{3.006216in}{0.383080in}}% +\pgfpathlineto{\pgfqpoint{3.036873in}{0.370620in}}% +\pgfpathlineto{\pgfqpoint{3.085332in}{0.388800in}}% +\pgfpathlineto{\pgfqpoint{3.137747in}{0.405140in}}% +\pgfpathlineto{\pgfqpoint{3.195107in}{0.419767in}}% +\pgfpathlineto{\pgfqpoint{3.259389in}{0.432926in}}% +\pgfpathlineto{\pgfqpoint{3.332572in}{0.444663in}}% +\pgfpathlineto{\pgfqpoint{3.415645in}{0.454798in}}% +\pgfpathlineto{\pgfqpoint{3.512563in}{0.463443in}}% +\pgfpathlineto{\pgfqpoint{3.627282in}{0.470496in}}% +\pgfpathlineto{\pgfqpoint{3.766725in}{0.475859in}}% +\pgfpathlineto{\pgfqpoint{3.940782in}{0.479318in}}% +\pgfpathlineto{\pgfqpoint{4.167253in}{0.480557in}}% +\pgfpathlineto{\pgfqpoint{4.484709in}{0.478977in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{0.476474in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{0.476474in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -667,8 +1482,8 @@ \definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{0.617954in}{2.301955in}}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{0.733531in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -678,8 +1493,8 @@ \definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{3.761597in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% +\pgfpathmoveto{\pgfqpoint{4.727004in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -689,8 +1504,8 @@ \definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{0.548769in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{0.548769in}}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{0.370218in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{0.370218in}}% \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% @@ -700,8 +1515,8 @@ \definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% -\pgfpathmoveto{\pgfqpoint{0.617954in}{2.301955in}}% -\pgfpathlineto{\pgfqpoint{3.761597in}{2.301955in}}% +\pgfpathmoveto{\pgfqpoint{0.733531in}{1.473611in}}% +\pgfpathlineto{\pgfqpoint{4.727004in}{1.473611in}}% \pgfusepath{stroke}% \end{pgfscope}% \end{pgfpicture}% diff --git a/buch/papers/ellfilter/python/elliptic.py b/buch/papers/ellfilter/python/elliptic.py index b3336a1..6e0fd12 100644 --- a/buch/papers/ellfilter/python/elliptic.py +++ b/buch/papers/ellfilter/python/elliptic.py @@ -324,9 +324,9 @@ K_prime = ell_int(np.sqrt(1-k**2)) f, axs = plt.subplots(1,2, figsize=(5,2.5)) -axs[0].plot(k, K, linewidth=0.1) +axs[0].plot(k, K, linewidth=1) axs[0].text(k[30], K[30]+0.1, f"$K$") -axs[0].plot(k, K_prime, linewidth=0.1) +axs[0].plot(k, K_prime, linewidth=1) axs[0].text(k[30], K_prime[30]+0.1, f"$K^\prime$") axs[0].set_xlim([0,1]) axs[0].set_ylim([0,4]) @@ -342,9 +342,9 @@ k = np.array([0.1,0.2,0.4,0.6,0.9,0.99]) K = ell_int(k) K_prime = ell_int(np.sqrt(1-k**2)) -axs[1].plot(K, K_prime, '.', color=last_color(), markersize=2) -for x, y, n in zip(K, K_prime, k): - axs[1].text(x+0.1, y+0.1, f"$k={n:.2f}$", rotation_mode="anchor") +# axs[1].plot(K, K_prime, '.', color=last_color(), markersize=2) +# for x, y, n in zip(K, K_prime, k): +# axs[1].text(x+0.1, y+0.1, f"$k={n:.2f}$", rotation_mode="anchor") axs[1].set_ylabel("$K^\prime$") axs[1].set_xlabel("$K$") axs[1].set_xlim([0,6]) diff --git a/buch/papers/ellfilter/python/elliptic2.py b/buch/papers/ellfilter/python/elliptic2.py index 29c6f47..20a7428 100644 --- a/buch/papers/ellfilter/python/elliptic2.py +++ b/buch/papers/ellfilter/python/elliptic2.py @@ -1,5 +1,6 @@ # %% +import enum import matplotlib.pyplot as plt import scipy.signal import numpy as np @@ -8,7 +9,9 @@ from matplotlib.patches import Rectangle import plot_params -def ellip_filter(N): +N=5 + +def ellip_filter(N, mode=-1): order = N passband_ripple_db = 3 @@ -26,7 +29,16 @@ def ellip_filter(N): fs=None ) - w, mag_db, phase = scipy.signal.bode((a, b), w=np.linspace(0*omega_c,2*omega_c, 4000)) + if mode == 0: + w = np.linspace(0*omega_c,omega_c, 2000) + elif mode == 1: + w = np.linspace(omega_c,1.00992*omega_c, 2000) + elif mode == 2: + w = np.linspace(1.00992*omega_c,2*omega_c, 2000) + else: + w = np.linspace(0*omega_c,2*omega_c, 4000) + + w, mag_db, phase = scipy.signal.bode((a, b), w=w) mag = 10**(mag_db/20) @@ -38,105 +50,96 @@ def ellip_filter(N): return w/omega_c, FN2 / epsilon2, mag, a, b -plt.figure(figsize=(4,2.5)) +f, axs = plt.subplots(2, 1, figsize=(5,3), sharex=True) -for N in [5]: - w, FN2, mag, a, b = ellip_filter(N) - plt.semilogy(w, FN2, label=f"$N={N}, k=0.1$", linewidth=1) +for mode, c in enumerate(["green", "orange", "red"]): + w, FN2, mag, a, b = ellip_filter(N, mode=mode) + axs[0].semilogy(w, FN2, label=f"$N={N}, k=0.1$", linewidth=1, color=c) -plt.gca().add_patch(Rectangle( +axs[0].add_patch(Rectangle( (0, 0), 1, 1, fc ='green', alpha=0.2, lw = 10, )) -plt.gca().add_patch(Rectangle( +axs[0].add_patch(Rectangle( (1, 1), - 0.01, 1e2-1, + 0.00992, 1e2-1, fc ='orange', alpha=0.2, lw = 10, )) -plt.gca().add_patch(Rectangle( - (1.01, 100), +axs[0].add_patch(Rectangle( + (1.00992, 100), 1, 1e6, fc ='red', alpha=0.2, lw = 10, )) -zeros = [0,0.87,1] +zeros = [0,0.87,0.995] poles = [1.01,1.155] import matplotlib.transforms -plt.plot( # mark errors as vertical bars +axs[0].plot( # mark errors as vertical bars zeros, np.zeros_like(zeros), "o", mfc='none', color='black', transform=matplotlib.transforms.blended_transform_factory( - plt.gca().transData, - plt.gca().transAxes, + axs[0].transData, + axs[0].transAxes, ), ) -plt.plot( # mark errors as vertical bars +axs[0].plot( # mark errors as vertical bars poles, np.ones_like(poles), "x", mfc='none', color='black', transform=matplotlib.transforms.blended_transform_factory( - plt.gca().transData, - plt.gca().transAxes, + axs[0].transData, + axs[0].transAxes, ), ) -plt.xlim([0,2]) -plt.ylim([1e-4,1e6]) -plt.grid() -plt.xlabel("$w$") -plt.ylabel("$F^2_N(w)$") -plt.legend() -plt.tight_layout() -plt.savefig("F_N_elliptic.pgf") -plt.show() - - - -plt.figure(figsize=(4,2.5)) -plt.plot(w, mag, linewidth=1) +for mode, c in enumerate(["green", "orange", "red"]): + w, FN2, mag, a, b = ellip_filter(N, mode=mode) + axs[1].plot(w, mag, linewidth=1, color=c) -plt.gca().add_patch(Rectangle( +axs[1].add_patch(Rectangle( (0, np.sqrt(2)/2), 1, 1, fc ='green', alpha=0.2, lw = 10, )) -plt.gca().add_patch(Rectangle( +axs[1].add_patch(Rectangle( (1, 0.1), - 0.01, np.sqrt(2)/2 - 0.1, + 0.00992, np.sqrt(2)/2 - 0.1, fc ='orange', alpha=0.2, lw = 10, )) -plt.gca().add_patch(Rectangle( - (1.01, 0), +axs[1].add_patch(Rectangle( + (1.00992, 0), 1, 0.1, fc ='red', alpha=0.2, lw = 10, )) -plt.grid() -plt.xlim([0,2]) -plt.ylim([0,1]) -plt.xlabel("$w$") -plt.ylabel("$|H(w)|$") +axs[0].set_xlim([0,2]) +axs[0].set_ylim([1e-4,1e6]) +axs[0].grid() +axs[0].set_ylabel("$F^2_N(w)$") +axs[1].grid() +axs[1].set_ylim([0,1]) +axs[1].set_ylabel("$|H(w)|$") plt.tight_layout() plt.savefig("elliptic.pgf") plt.show() diff --git a/buch/papers/ellfilter/python/k.pgf b/buch/papers/ellfilter/python/k.pgf index 95d61d4..bbb823a 100644 --- a/buch/papers/ellfilter/python/k.pgf +++ b/buch/papers/ellfilter/python/k.pgf @@ -320,7 +320,7 @@ \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% -\pgfsetlinewidth{0.100375pt}% +\pgfsetlinewidth{1.003750pt}% \definecolor{currentstroke}{rgb}{0.121569,0.466667,0.705882}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% @@ -434,7 +434,7 @@ \pgfusepath{clip}% \pgfsetrectcap% \pgfsetroundjoin% -\pgfsetlinewidth{0.100375pt}% +\pgfsetlinewidth{1.003750pt}% \definecolor{currentstroke}{rgb}{1.000000,0.498039,0.054902}% \pgfsetstrokecolor{currentstroke}% \pgfsetdash{}{0pt}% @@ -1011,56 +1011,6 @@ \pgfusepath{stroke}% \end{pgfscope}% \begin{pgfscope}% -\pgfpathrectangle{\pgfqpoint{2.874885in}{0.548769in}}{\pgfqpoint{1.940523in}{1.753186in}}% -\pgfusepath{clip}% -\pgfsetbuttcap% -\pgfsetroundjoin% -\definecolor{currentfill}{rgb}{0.121569,0.466667,0.705882}% -\pgfsetfillcolor{currentfill}% -\pgfsetlinewidth{1.003750pt}% -\definecolor{currentstroke}{rgb}{0.121569,0.466667,0.705882}% -\pgfsetstrokecolor{currentstroke}% -\pgfsetdash{}{0pt}% -\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.006944in}{-0.006944in}}{\pgfqpoint{0.006944in}{0.006944in}}{% -\pgfpathmoveto{\pgfqpoint{0.000000in}{-0.006944in}}% -\pgfpathcurveto{\pgfqpoint{0.001842in}{-0.006944in}}{\pgfqpoint{0.003608in}{-0.006213in}}{\pgfqpoint{0.004910in}{-0.004910in}}% -\pgfpathcurveto{\pgfqpoint{0.006213in}{-0.003608in}}{\pgfqpoint{0.006944in}{-0.001842in}}{\pgfqpoint{0.006944in}{0.000000in}}% -\pgfpathcurveto{\pgfqpoint{0.006944in}{0.001842in}}{\pgfqpoint{0.006213in}{0.003608in}}{\pgfqpoint{0.004910in}{0.004910in}}% -\pgfpathcurveto{\pgfqpoint{0.003608in}{0.006213in}}{\pgfqpoint{0.001842in}{0.006944in}}{\pgfqpoint{0.000000in}{0.006944in}}% -\pgfpathcurveto{\pgfqpoint{-0.001842in}{0.006944in}}{\pgfqpoint{-0.003608in}{0.006213in}}{\pgfqpoint{-0.004910in}{0.004910in}}% -\pgfpathcurveto{\pgfqpoint{-0.006213in}{0.003608in}}{\pgfqpoint{-0.006944in}{0.001842in}}{\pgfqpoint{-0.006944in}{0.000000in}}% -\pgfpathcurveto{\pgfqpoint{-0.006944in}{-0.001842in}}{\pgfqpoint{-0.006213in}{-0.003608in}}{\pgfqpoint{-0.004910in}{-0.004910in}}% -\pgfpathcurveto{\pgfqpoint{-0.003608in}{-0.006213in}}{\pgfqpoint{-0.001842in}{-0.006944in}}{\pgfqpoint{0.000000in}{-0.006944in}}% -\pgfpathlineto{\pgfqpoint{0.000000in}{-0.006944in}}% -\pgfpathclose% -\pgfusepath{stroke,fill}% -}% -\begin{pgfscope}% -\pgfsys@transformshift{3.384190in}{1.844597in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsys@transformshift{3.388110in}{1.606330in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsys@transformshift{3.405294in}{1.376014in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsys@transformshift{3.441114in}{1.248396in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsys@transformshift{3.612461in}{1.128939in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\begin{pgfscope}% -\pgfsys@transformshift{3.960478in}{1.102320in}% -\pgfsys@useobject{currentmarker}{}% -\end{pgfscope}% -\end{pgfscope}% -\begin{pgfscope}% \pgfsetrectcap% \pgfsetmiterjoin% \pgfsetlinewidth{0.803000pt}% @@ -1116,42 +1066,6 @@ \pgfsetfillcolor{textcolor}% \pgftext[x=3.415254in,y=0.583833in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle \pi/2\)}% \end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=3.416532in,y=1.879661in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle k=0.10\)}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=3.420452in,y=1.641394in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle k=0.20\)}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=3.437636in,y=1.411078in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle k=0.40\)}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=3.473456in,y=1.283460in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle k=0.60\)}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=3.644803in,y=1.164003in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle k=0.90\)}% -\end{pgfscope}% -\begin{pgfscope}% -\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% -\pgfsetstrokecolor{textcolor}% -\pgfsetfillcolor{textcolor}% -\pgftext[x=3.992820in,y=1.137383in,left,base]{\color{textcolor}\rmfamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle k=0.99\)}% -\end{pgfscope}% \end{pgfpicture}% \makeatother% \endgroup% diff --git a/buch/papers/ellfilter/tikz/arccos.tikz.tex b/buch/papers/ellfilter/tikz/arccos.tikz.tex index 2772620..b11c25d 100644 --- a/buch/papers/ellfilter/tikz/arccos.tikz.tex +++ b/buch/papers/ellfilter/tikz/arccos.tikz.tex @@ -8,29 +8,6 @@ \begin{scope}[xscale=0.6] - \clip(-7.5,-2) rectangle (7.5,2); - - \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); - - \foreach \i in {-2,...,1} { - \begin{scope}[opacity=0.5, xshift=\i*4cm] - \draw[->, orange] (-1, 0) -- (0,0); - \draw[->, darkgreen] (0, 0) -- (0,1.5); - \draw[->, darkgreen] (0, 0) -- (0,-1.5); - \draw[->, orange] (1, 0) -- (0,0); - \draw[->, red] (2, 0) -- (1,0); - \draw[->, blue] (2,1.5) -- (2, 0); - \draw[->, blue] (2,-1.5) -- (2, 0); - \draw[->, red] (2, 0) -- (3,0); - - \node[zero] at (1,0) {}; - \node[zero] at (3,0) {}; - \end{scope} - } - \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$}; @@ -43,16 +20,53 @@ % \node[gray, anchor=south east] at (0, 0) {$0$}; \node[gray, anchor=east] at (0, 1.5) {$\infty$}; + \clip(-7.5,-2) rectangle (7.5,2); + + % \pause + \draw[ultra thick, ->, darkgreen] (1, 0) -- (0,0); + % \pause + \draw[ultra thick, ->, orange] (0, 0) -- (0,1.5); + % \pause + \draw[ultra thick, ->, cyan] (2, 0) -- (1,0); + \draw[ultra thick, ->, blue] (2,1.5) -- (2, 0); + + % \pause + + \foreach \i in {-2,...,1} { + \begin{scope}[xshift=\i*4cm] + \begin{scope}[] + \draw[->, darkgreen] (-1, 0) -- (0,0); + \draw[->, orange] (0, 0) -- (0,1.5); + \draw[->, orange] (0, 0) -- (0,-1.5); + \draw[->, darkgreen] (1, 0) -- (0,0); + \draw[->, cyan] (2, 0) -- (1,0); + \draw[->, blue] (2,1.5) -- (2, 0); + \draw[->, blue] (2,-1.5) -- (2, 0); + \draw[->, cyan] (2, 0) -- (3,0); + \end{scope} + \node[zero] at (1,0) {}; + \node[zero] at (3,0) {}; + \end{scope} + } + \end{scope} - \begin{scope}[yshift=-2.5cm] + \node[zero] at (4,2) (n) {}; + \node[anchor=west] at (n.east) {Nullstelle}; + + \begin{scope}[yshift=-3.25cm] + + \draw[->, thick](0,0) -- node[anchor=center, fill=white]{$z = \cos^{-1}(w)$} (0,1); + + \end{scope} + \begin{scope}[yshift=-4cm] \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); + \draw[ultra thick, ->, blue] (-4, 0) -- (-2, 0); + \draw[ultra thick, ->, cyan] (-2, 0) -- (0, 0); + \draw[ultra thick, ->, darkgreen] (0, 0) -- (2, 0); + \draw[ultra thick, ->, orange] (2, 0) -- (4, 0); \node[anchor=south] at (-4,0) {$-\infty$}; \node[anchor=south] at (-2,0) {$-1$}; diff --git a/buch/papers/ellfilter/tikz/arccos2.tikz.tex b/buch/papers/ellfilter/tikz/arccos2.tikz.tex index 3fc3cc6..2cec75f 100644 --- a/buch/papers/ellfilter/tikz/arccos2.tikz.tex +++ b/buch/papers/ellfilter/tikz/arccos2.tikz.tex @@ -2,34 +2,45 @@ \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}} + \tikzstyle{dot} = [fill, circle, inner sep =0, minimum height=0.1cm] - \begin{scope}[xscale=0.5] - \draw[gray, ->] (0,-2) -- (0,2) node[anchor=south]{$\mathrm{Im}~z_1$}; - \draw[gray, ->] (-10,0) -- (10,0) node[anchor=west]{$\mathrm{Re}~z_1$}; + \begin{scope}[xscale=0.75] + + \draw[gray, ->] (0,-1) -- (0,2) node[anchor=south]{$\mathrm{Im}~z_1$}; + \draw[gray, ->] (-2,0) -- (9,0) node[anchor=west]{$\mathrm{Re}~z_1$}; \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) node[anchor=north west]{$-\infty$} -- (6,-0.05) node[anchor=west]{$-1$} -- node[anchor=north]{$0$} node[anchor=south, pos=0.1666]{$N=3$} (-0.1,-0.05) node[anchor=east]{$1$} -- (-0.1,1.5) node[anchor=north east]{$\infty$}; + \draw[->, ultra thick, blue] (8, 1.5) -- node[align=center]{Sperrbereich} (8,0); + \draw[->, ultra thick, cyan] (8, 0) -- node[yshift=-0.5cm]{Durchlassbereich}(4,0); + \draw[->, ultra thick, darkgreen] (4, 0) -- node[yshift=-0.5cm]{Durchlassbereich} (0,0); + \draw[->, ultra thick, orange] (0, 0) -- node[align=center]{Sperrbereich} (0,1.5); + + \node[anchor=north east] at (8, 1.5) {$-\infty$}; + \draw (8, 0) node[dot]{} node[anchor=south east] {$1$}; + \draw (6, 0) node[dot]{} node[anchor=south] {$-1$}; + \draw (4, 0) node[dot]{} node[anchor=south] {$1$}; + \draw (2, 0) node[dot]{} node[anchor=south] {$-1$}; + \draw (0, 0) node[dot]{} node[anchor=south west] {$1$}; + \node[anchor=north west] at (0, 1.5){$\infty$}; + \node at(4,1) {$N = 4$}; - \node[zero] at (-7,0) {}; - \node[zero] at (-5,0) {}; - \node[zero] at (-3,0) {}; + % \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 (-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$}; @@ -37,9 +48,29 @@ \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$}; \node[gray, anchor=east] at (0, 1.5) {$\infty$}; \end{scope} + \node[zero] at (6.5,2) (n) {}; + \node[anchor=west] at (n.east) {Nullstelle}; + + \begin{scope}[xshift=2.75cm, yshift=-2cm] + + \draw[gray, ->] (-5,0) -- (5,0) node[anchor=west]{$w$}; + + \draw[ultra thick, ->, blue] (-4, 0) -- (-2, 0); + \draw[ultra thick, ->, cyan] (-2, 0) -- (0, 0); + \draw[ultra thick, ->, darkgreen] (0, 0) -- (2, 0); + \draw[ultra thick, ->, orange] (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/cd.tikz.tex b/buch/papers/ellfilter/tikz/cd.tikz.tex index 7155a85..0cf2417 100644 --- a/buch/papers/ellfilter/tikz/cd.tikz.tex +++ b/buch/papers/ellfilter/tikz/cd.tikz.tex @@ -4,7 +4,7 @@ \tikzset{pole/.style={cross out, draw=black, minimum size=(0.15cm-\pgflinewidth), inner sep=0pt, outer sep=0pt}} - \begin{scope}[xscale=1, yscale=2] + \begin{scope}[xscale=0.9, yscale=1.8] \draw[gray, ->] (0,-1.5) -- (0,1.5) node[anchor=south]{$\mathrm{Im}~z$}; \draw[gray, ->] (-5,0) -- (5,0) node[anchor=west]{$\mathrm{Re}~z$}; @@ -22,32 +22,35 @@ \fill[yellow!30] (0,0) rectangle (1, 0.5); + \foreach \i in {-2,...,1} { + \foreach \j in {-2,...,1} { + \begin{scope}[xshift=\i*4cm, yshift=\j*1cm] + \draw[->, orange!50] (0, 0) -- (0,0.5); + \draw[->, darkgreen!50] (1, 0) -- (0,0); + \draw[->, cyan!50] (2, 0) -- (1,0); + \draw[->, blue!50] (2,0.5) -- (2, 0); + \draw[->, purple!50] (1, 0.5) -- (2,0.5); + \draw[->, red!50] (0, 0.5) -- (1,0.5); + \draw[->, orange!50] (0,1) -- (0,0.5); + \draw[->, blue!50] (2,0.5) -- (2, 1); + \draw[->, purple!50] (3, 0.5) -- (2,0.5); + \draw[->, red!50] (4, 0.5) -- (3,0.5); + \draw[->, cyan!50] (2, 0) -- (3,0); + \draw[->, darkgreen!50] (3, 0) -- (4,0); + \end{scope} + } + } - \draw[thick, ->, darkgreen] (0, 0) -- (0,0.5); - \draw[thick, ->, orange] (1, 0) -- (0,0); - \draw[thick, ->, red] (2, 0) -- (1,0); - \draw[thick, ->, blue] (2,0.5) -- (2, 0); - \draw[thick, ->, purple] (1, 0.5) -- (2,0.5); - \draw[thick, ->, cyan] (0, 0.5) -- (1,0.5); - - + \draw[ultra thick, ->, orange] (0, 0) -- (0,0.5); + \draw[ultra thick, ->, darkgreen] (1, 0) -- (0,0); + \draw[ultra thick, ->, cyan] (2, 0) -- (1,0); + \draw[ultra thick, ->, blue] (2,0.5) -- (2, 0); + \draw[ultra thick, ->, purple] (1, 0.5) -- (2,0.5); + \draw[ultra thick, ->, red] (0, 0.5) -- (1,0.5); \foreach \i in {-2,...,1} { \foreach \j in {-2,...,1} { \begin{scope}[xshift=\i*4cm, yshift=\j*1cm] - \draw[opacity=0.5, ->, darkgreen] (0, 0) -- (0,0.5); - \draw[opacity=0.5, ->, orange] (1, 0) -- (0,0); - \draw[opacity=0.5, ->, red] (2, 0) -- (1,0); - \draw[opacity=0.5, ->, blue] (2,0.5) -- (2, 0); - \draw[opacity=0.5, ->, purple] (1, 0.5) -- (2,0.5); - \draw[opacity=0.5, ->, cyan] (0, 0.5) -- (1,0.5); - \draw[opacity=0.5, ->, darkgreen] (0,1) -- (0,0.5); - \draw[opacity=0.5, ->, blue] (2,0.5) -- (2, 1); - \draw[opacity=0.5, ->, purple] (3, 0.5) -- (2,0.5); - \draw[opacity=0.5, ->, cyan] (4, 0.5) -- (3,0.5); - \draw[opacity=0.5, ->, red] (2, 0) -- (3,0); - \draw[opacity=0.5, ->, orange] (3, 0) -- (4,0); - \node[zero] at ( 1, 0) {}; \node[zero] at ( 3, 0) {}; \node[pole] at ( 1,0.5) {}; @@ -63,16 +66,21 @@ \end{scope} - \begin{scope}[yshift=-3.5cm, xscale=0.75] + \node[zero] at (4,3) (n) {}; + \node[anchor=west] at (n.east) {Nullstelle}; + \node[pole, below=0.25cm of n] (n) {}; + \node[anchor=west] at (n.east) {Polstelle}; + + \begin{scope}[yshift=-4cm, xscale=0.75] \draw[gray, ->] (-6,0) -- (6,0) node[anchor=west]{$w$}; - \draw[thick, ->, purple] (-5, 0) -- (-3, 0); - \draw[thick, ->, blue] (-3, 0) -- (-2, 0); - \draw[thick, ->, red] (-2, 0) -- (0, 0); - \draw[thick, ->, orange] (0, 0) -- (2, 0); - \draw[thick, ->, darkgreen] (2, 0) -- (3, 0); - \draw[thick, ->, cyan] (3, 0) -- (5, 0); + \draw[ultra thick, ->, purple] (-5, 0) -- (-3, 0); + \draw[ultra thick, ->, blue] (-3, 0) -- (-2, 0); + \draw[ultra thick, ->, cyan] (-2, 0) -- (0, 0); + \draw[ultra thick, ->, darkgreen] (0, 0) -- (2, 0); + \draw[ultra thick, ->, orange] (2, 0) -- (3, 0); + \draw[ultra thick, ->, red] (3, 0) -- (5, 0); \node[anchor=south] at (-5,0) {$-\infty$}; \node[anchor=south] at (-3,0) {$-1/k$}; diff --git a/buch/papers/ellfilter/tikz/cd2.tikz.tex b/buch/papers/ellfilter/tikz/cd2.tikz.tex index 0743f7d..d4187c4 100644 --- a/buch/papers/ellfilter/tikz/cd2.tikz.tex +++ b/buch/papers/ellfilter/tikz/cd2.tikz.tex @@ -5,9 +5,9 @@ \tikzset{pole/.style={cross out, draw=black, minimum size=(0.15cm-\pgflinewidth), inner sep=0pt, outer sep=0pt}} - \begin{scope}[xscale=1.25, yscale=2.5] + \begin{scope}[xscale=1.25, yscale=3.5] - \draw[gray, ->] (0,-0.75) -- (0,1.25) node[anchor=south]{$\mathrm{Im}~z_1$}; + \draw[gray, ->] (0,-0.55) -- (0,1.05) node[anchor=south]{$\mathrm{Im}~z_1$}; \draw[gray, ->] (-1.5,0) -- (6,0) node[anchor=west]{$\mathrm{Re}~z_1$}; \draw[gray] ( 1,0) +(0,0.05) -- +(0, -0.05) node[inner sep=0, anchor=north] {\small $K_1$}; @@ -35,18 +35,30 @@ % \node[] at (2.5, 0.25) {\small $N=3$}; \fill[orange!30] (0,0) rectangle (5, 0.5); - \fill[yellow!30] (0,0) rectangle (1, 0.5); + % \fill[yellow!30] (0,0) rectangle (1, 0.1); \node[] at (2.5, 0.25) {\small $N=5$}; \draw[decorate,decoration={brace,amplitude=3pt,mirror}, yshift=0.05cm] - (5,0.5) node(t_k_unten){} -- node[above, yshift=0.1cm]{$NK$} + (5,0.5) node(t_k_unten){} -- node[above, yshift=0.1cm]{$NK_1$} (0,0.5) node(t_k_opt_unten){}; \draw[decorate,decoration={brace,amplitude=3pt,mirror}, xshift=0.1cm] (5,0) node(t_k_unten){} -- node[right, xshift=0.1cm]{$K^\prime \frac{K_1N}{K} = K^\prime_1$} (5,0.5) node(t_k_opt_unten){}; + + \draw[ultra thick, ->, darkgreen] (5, 0) -- node[yshift=-0.5cm]{Durchlassbereich} (0,0); + \draw[ultra thick, ->, orange] (-0, 0) -- node[align=center]{Übergangs-\\berech} (0,0.5); + \draw[ultra thick, ->, red] (0,0.5) -- node[align=center, yshift=0.7cm]{Sperrbereich} (5, 0.5); + + \draw (4,0 ) node[dot]{} node[anchor=south] {\small $1$}; + \draw (2,0 ) node[dot]{} node[anchor=south] {\small $-1$}; + \draw (0,0 ) node[dot]{} node[anchor=south west] {\small $1$}; + \draw (0,0.5) node[dot]{} node[anchor=north west] {\small $1/k$}; + \draw (2,0.5) node[dot]{} node[anchor=north] {\small $-1/k$}; + \draw (4,0.5) node[dot]{} node[anchor=north] {\small $1/k$}; + \foreach \i in {-2,...,1} { \foreach \j in {-2,...,1} { \begin{scope}[xshift=\i*4cm, yshift=\j*1cm] @@ -60,24 +72,22 @@ } } + \end{scope} + \end{scope} + \begin{scope}[xshift=1cm , yshift=-3cm, xscale=0.75] - \draw[thick, ->, darkgreen] (5, 0) -- node[yshift=-0.5cm]{Durchlassbereich} (0,0); - \draw[thick, ->, orange] (-0, 0) -- node[align=center]{Übergangs-\\berech} (0,0.5); - \draw[thick, ->, red] (0,0.5) -- node[align=center, yshift=0.5cm]{Sperrbereich} (5, 0.5); - - \draw (4,0 ) node[dot]{} node[anchor=south] {\small $1$}; - \draw (2,0 ) node[dot]{} node[anchor=south] {\small $-1$}; - \draw (0,0 ) node[dot]{} node[anchor=south west] {\small $1$}; - \draw (0,0.5) node[dot]{} node[anchor=north west] {\small $1/k$}; - \draw (2,0.5) node[dot]{} node[anchor=north] {\small $-1/k$}; - \draw (4,0.5) node[dot]{} node[anchor=north] {\small $1/k$}; - - + \draw[gray, ->] (-1,0) -- (6,0) node[anchor=west]{$w$}; - \end{scope} + \draw[ultra thick, ->, darkgreen] (0, 0) -- (2, 0); + \draw[ultra thick, ->, orange] (2, 0) -- (3, 0); + \draw[ultra thick, ->, red] (3, 0) -- (5, 0); + \node[anchor=south] at (0,0) {$0$}; + \node[anchor=south] at (2,0) {$1$}; + \node[anchor=south] at (3,0) {$1/k$}; + \node[anchor=south] at (5,0) {$\infty$}; \end{scope} diff --git a/buch/papers/ellfilter/tikz/cd3.tikz.tex b/buch/papers/ellfilter/tikz/cd3.tikz.tex new file mode 100644 index 0000000..ae18519 --- /dev/null +++ b/buch/papers/ellfilter/tikz/cd3.tikz.tex @@ -0,0 +1,86 @@ +\begin{tikzpicture}[>=stealth', auto, node distance=2cm, scale=1.2] + + \tikzstyle{zero} = [draw, circle, inner sep =0, minimum height=0.15cm] + \tikzstyle{dot} = [fill, circle, inner sep =0, minimum height=0.1cm] + + \tikzset{pole/.style={cross out, draw=black, minimum size=(0.15cm-\pgflinewidth), inner sep=0pt, outer sep=0pt}} + + \begin{scope}[xscale=1.25, yscale=2.5] + + \draw[gray, ->] (0,-0.55) -- (0,1.05) node[anchor=south]{$\mathrm{Im}$}; + \draw[gray, ->] (-1.5,0) -- (6,0) node[anchor=west]{$\mathrm{Re}$}; + + % \draw[gray] ( 1,0) +(0,0.05) -- +(0, -0.05) node[inner sep=0, anchor=north] {\small $K_1$}; + % \draw[gray] ( 5,0) +(0,0.05) -- +(0, -0.05) node[inner sep=0, anchor=north] {\small $5K_1$}; + % \draw[gray] (0, 0.5) +(0.1, 0) -- +(-0.1, 0) node[inner sep=0, anchor=east]{\small $jK^\prime_1$}; + + \begin{scope} + + \clip(-1.5,-0.75) rectangle (6.8,1.25); + + % \draw[>->, line width=0.05, thick, blue] (1, 0.45) -- (2, 0.45) -- (2, 0.05) -- ( 0.1, 0.05) -- ( 0.1,0.45) -- (1, 0.45); + % \draw[>->, line width=0.05, thick, orange] (2, 0.5 ) -- (4, 0.5 ) -- (4, 0 ) -- ( 0 , 0 ) -- ( 0 ,0.5 ) -- (2, 0.5 ); + % \draw[>->, line width=0.05, thick, red] (3, 0.55) -- (6, 0.55) -- (6,-0.05) -- (-0.1,-0.05) -- (-0.1,0.55) -- (3, 0.55); + % \node[blue] at (1, 0.25) {$N=1$}; + % \node[orange] at (3, 0.25) {$N=2$}; + % \node[red] at (5, 0.25) {$N=3$}; + + + + % \draw[line width=0.1cm, fill, red!50] (0,0) rectangle (3, 0.5); + % \draw[line width=0.05cm, fill, orange!50] (0,0) rectangle (2, 0.5); + % \fill[yellow!50] (0,0) rectangle (1, 0.5); + % \node[] at (0.5, 0.25) {\small $N=1$}; + % \node[] at (1.5, 0.25) {\small $N=2$}; + % \node[] at (2.5, 0.25) {\small $N=3$}; + + % \fill[orange!30] (0,0) rectangle (5, 0.5); + \fill[yellow!30] (0,0) rectangle (1, 0.5); + + + % \draw[decorate,decoration={brace,amplitude=3pt,mirror}, yshift=0.05cm] + % (5,0.5) node(t_k_unten){} -- node[above, yshift=0.1cm]{$NK_1$} + % (0,0.5) node(t_k_opt_unten){}; + + % \draw[decorate,decoration={brace,amplitude=3pt,mirror}, xshift=0.1cm] + % (5,0) node(t_k_unten){} -- node[right, xshift=0.1cm]{$K^\prime \frac{K_1N}{K} = K^\prime_1$} + % (5,0.5) node(t_k_opt_unten){}; + + \foreach \i in {-2,...,1} { + \foreach \j in {-2,...,1} { + \begin{scope}[xshift=\i*4cm, yshift=\j*1cm] + + \node[zero] at ( 1, 0) {}; + \node[zero] at ( 3, 0) {}; + \node[pole] at ( 1,0.5) {}; + \node[pole] at ( 3,0.5) {}; + + \end{scope} + } + } + + + + \onslide<2->{ + \draw[ultra thick, ->, darkgreen] (5, 0) -- node[yshift=-0.4cm]{Durchlassbereich} (0,0); + \draw[ultra thick, ->, orange] (-0, 0) -- node[align=center]{Übergangs-\\berech} (0,0.5); + \draw[ultra thick, ->, red] (0,0.5) -- node[align=center, yshift=0.4cm]{Sperrbereich} (5, 0.5); + \node[] at (2.5, 0.25) {\small $N=5$}; + } + \onslide<1->{ + \draw (4,0 ) node[dot]{} node[anchor=south] {\small $1$}; + \draw (2,0 ) node[dot]{} node[anchor=south] {\small $-1$}; + \draw (0,0 ) node[dot]{} node[anchor=south west] {\small $1$}; + \draw (0,0.5) node[dot]{} node[anchor=north west] {\small $1/k$}; + \draw (2,0.5) node[dot]{} node[anchor=north] {\small $-1/k$}; + \draw (4,0.5) node[dot]{} node[anchor=north] {\small $1/k$}; + + } + + + \end{scope} + + + \end{scope} + +\end{tikzpicture} \ No newline at end of file diff --git a/buch/papers/ellfilter/tikz/elliptic_transform1.tikz.tex b/buch/papers/ellfilter/tikz/elliptic_transform1.tikz.tex new file mode 100644 index 0000000..2a36ee0 --- /dev/null +++ b/buch/papers/ellfilter/tikz/elliptic_transform1.tikz.tex @@ -0,0 +1,76 @@ +\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, minimum size=(0.15cm-\pgflinewidth), inner sep=0pt, outer sep=0pt}} + + \begin{scope}[xscale=1, yscale=1.5] + + \begin{scope}[] + + \fill[orange!25] (0,0) rectangle (1.5, 0.75); + \fill[yellow!50] (0,0) rectangle (0.5, 0.25); + + \draw[gray, ->] (0,-0.75) -- (0,1.25) node[anchor=south]{$\mathrm{Im}~z$}; + \draw[gray, ->] (-1.75,0) -- (1.75,0) node[anchor=west]{$\mathrm{Re}~z$}; + + \draw[gray] ( 0.5,0) +(0,0.05) -- +(0, -0.05) node[inner sep=0, anchor=north] {\small $K$}; + \draw[gray] (0, 0.25) +(0.05, 0) -- +(-0.05, 0) node[inner sep=0, anchor=east]{\small $jK^\prime$}; + + % \draw[gray] ( 1.5,0) +(0,0.05) -- +(0, -0.05) node[inner sep=0, anchor=north] {\small $K_1$}; + % \draw[gray] (0, 0.75) +(0.05, 0) -- +(-0.05, 0) node[inner sep=0, anchor=east]{\small $jK_1^\prime$}; + + \clip(-1.6,-0.6) rectangle (1.6,1.6); + \begin{scope}[xscale=0.5, yscale=0.25, blue] + \foreach \i in {-1,...,1} { + \foreach \j in {-1,...,2} { + \begin{scope}[xshift=\i*2cm, yshift=\j*2cm] + \node[zero] at ( 1, 0) {}; + \node[zero] at ( -1, 0) {}; + \node[pole] at ( 1,1) {}; + \node[pole] at ( -1,1) {}; + \end{scope} + } + } + \end{scope} + + \node at (0,2) {$\cd \left(N~K_1~z , k_1 \right)$}; + \node at (0,2) {$w= \cd(z K, k)$}; + + \draw[scale=0.2, domain=0.02:5, variable=\x, red] plot ({\x1+3}, {1/\x+2}); + + \end{scope} + + \begin{scope}[xshift=5cm] + + \fill[orange!50] (0,0) rectangle (1.5, 0.75); + \fill[yellow!25] (0,0) rectangle (0.5, 0.25); + + \draw[gray, ->] (0,-0.75) -- (0,1.25) node[anchor=south]{$\mathrm{Im}~z$}; + \draw[gray, ->] (-1.75,0) -- (1.75,0) node[anchor=west]{$\mathrm{Re}~z$}; + + % \draw[gray] ( 0.5,0) +(0,0.05) -- +(0, -0.05) node[inner sep=0, anchor=north] {\small $K$}; + % \draw[gray] (0, 0.25) +(0.05, 0) -- +(-0.05, 0) node[inner sep=0, anchor=east]{\small $jK^\prime$}; + + \draw[gray] ( 0.5,0) +(0,0.05) -- +(0, -0.05) node[inner sep=0, anchor=north] {\small $K_1$}; + \draw[gray] (0, 0.75) +(0.05, 0) -- +(-0.05, 0) node[inner sep=0, anchor=east]{\small $jK_1^\prime$}; + + \clip(-1.6,-0.6) rectangle (1.6,1.6); + \begin{scope}[xscale=0.5, yscale=0.75, red] + \foreach \i in {-1,...,1} { + \foreach \j in {-1,...,0} { + \begin{scope}[xshift=\i*2cm, yshift=\j*2cm] + \node[zero] at ( 1, 0) {}; + \node[zero] at ( -1, 0) {}; + \node[pole] at ( 1,1) {}; + \node[pole] at ( -1,1) {}; + \end{scope} + } + } + \end{scope} + + \end{scope} + +\end{scope} + +\end{tikzpicture} diff --git a/buch/papers/ellfilter/tikz/elliptic_transform2.tikz.tex b/buch/papers/ellfilter/tikz/elliptic_transform2.tikz.tex new file mode 100644 index 0000000..20c2d82 --- /dev/null +++ b/buch/papers/ellfilter/tikz/elliptic_transform2.tikz.tex @@ -0,0 +1,75 @@ + +\def\d{0.2} +\def\n{3} +\def\nn{2} +\def\a{2.5} + +\begin{tikzpicture}[>=stealth', auto, node distance=2cm, scale=1.2] + + \tikzstyle{zero} = [draw, circle, inner sep =0, minimum height=0.15cm] + \tikzstyle{dot} = [fill, circle, inner sep =0, minimum height=0.1cm] + + \tikzset{pole/.style={cross out, draw, minimum size=(0.15cm-\pgflinewidth), inner sep=0pt, outer sep=0pt}} + + \begin{scope}[xscale=3, yscale=3] + + \begin{scope}[] + % \onslide<4->{ + \fill[orange!30, scale=1.735] (0,0) rectangle (\d*\a+0.5, \d/\a+0.5); + % } + % \onslide<2->{ + \fill[yellow!30] (0,0) rectangle (\d*\a+0.5, \d/\a+0.5); + % } + + \begin{scope}[] + \clip(0,0) rectangle (2,1.25); + \draw[thick, scale=1, domain=0.1:10, variable=\x, smooth, samples=200] plot ({\d*\x1+0.5}, {\d/\x+0.5}); + \node at(1.25,0.7) {$K + jK^\prime$ Ortskurve}; + \end{scope} + + % \onslide<2->{ + \begin{scope}[blue] + \draw[] (0,0) rectangle (\d*\a+0.5, \d/\a+0.5); + + + \node[pole] at ( \d*\a+0.5, \d/\a+0.5) {}; + \node[zero] at ( \d*\a+0.5, 0) {}; + + \draw[] ( \d*\a+0.5,0) node[anchor=north] {\small $K$}; + \draw[] (0, \d/\a+0.5) node[anchor=east]{\small $jK^\prime$}; + + % \onslide<3->{ + + \foreach \i in {1,...,\nn} { + \draw[gray, dotted] (\i*\d*\a/\n+\i*0.5/\n, 0) -- (\i*\d*\a/\n+\i*0.5/\n, \d/\a+0.5); + } + + \node[dot, gray] at (\d*\a/\n+0.5/\n, \d/\a+0.5) {}; + \node[above] at (0.5*\d*\a/\n+0.5*0.5/\n, \d/\a+0.5) {\small $K/N$}; + % } + \end{scope} + % } + + % \onslide<4->{ + \begin{scope}[scale=1.735, red] + \draw (0,0) rectangle (\d*\a/\n+0.5/\n, \d/\a+0.5); + \draw[gray] (0,0) -- (\d*\a/\n+0.5/\n, \d/\a+0.5); + + \node[pole] at ( \d*\a/\n+0.5/\n, \d/\a+0.5) {}; + \node[zero] at ( \d*\a/\n+0.5/\n, 0) {}; + + + \draw[] ( \d*\a/\n+0.5/\n,0) node[anchor=north] {\small $K_1$}; + \draw[] (0, \d/\a+0.5) node[anchor=east]{\small $jK_1^\prime$}; + + \end{scope} + % } + + \draw[gray, ->] (0,-0.25) -- (0,1.25) node[anchor=south]{$\mathrm{Im}$}; + \draw[gray, ->] (-0.25,0) -- (2,0) node[anchor=west]{$\mathrm{Re}$}; + + \end{scope} + +\end{scope} + +\end{tikzpicture} diff --git a/buch/papers/ellfilter/tikz/filter.tikz.tex b/buch/papers/ellfilter/tikz/filter.tikz.tex new file mode 100644 index 0000000..769602a --- /dev/null +++ b/buch/papers/ellfilter/tikz/filter.tikz.tex @@ -0,0 +1,32 @@ +\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=3, yscale=2.5] + + \fill[darkgreen!15] (0,0) rectangle (1,1); + \node[darkgreen] at (0.5,0.5) {Durchlassbereich}; + \fill[orange!15] (1,0) rectangle (2.5,1); + \node[orange] at (1.75,0.5) {Sperrbereich}; + + \draw[gray, ->] (0,0) -- (0,1.25) node[anchor=south]{$|H(\Omega)|$}; + \draw[gray, ->] (0,0) -- (2.75,0) node[anchor=west]{$\Omega$}; + + \draw[dashed] (0,0.707) node[left] {$\sqrt{\frac{1}{1+\varepsilon^2}}$} -| (1,0) node[below] {$\Omega_p$}; + \draw[dashed] (0,0.707) node[left] {$\sqrt{\frac{1}{1+\varepsilon^2}}$} -| (1,0) node[below] {$\Omega_p$}; + + \node[left] at(0,1) {$1$}; + + \draw[red, thick] (0,1) -- (1,1) -- (1,0) -- (2.5,0); + + \node[anchor=north, red] at (0.5,1) {Ideal}; + + \draw[thick, domain=0:2.5, variable=\x, smooth, samples=200] plot + ({\x}, {sqrt(abs(1/ (1 + \x^10)))}); + \node[anchor=south] at (0.5,1) {Butterworth ($N=5$)}; + + \end{scope} + +\end{tikzpicture} diff --git a/buch/papers/ellfilter/tikz/sn.tikz.tex b/buch/papers/ellfilter/tikz/sn.tikz.tex index 87c63c0..0546fda 100644 --- a/buch/papers/ellfilter/tikz/sn.tikz.tex +++ b/buch/papers/ellfilter/tikz/sn.tikz.tex @@ -4,7 +4,7 @@ \tikzset{pole/.style={cross out, draw=black, minimum size=(0.15cm-\pgflinewidth), inner sep=0pt, outer sep=0pt}} - \begin{scope}[xscale=1, yscale=2] + \begin{scope}[xscale=0.9, yscale=1.8] \draw[gray, ->] (0,-1.5) -- (0,1.5) node[anchor=south]{$\mathrm{Im}~z$}; \draw[gray, ->] (-5,0) -- (5,0) node[anchor=west]{$\mathrm{Re}~z$}; @@ -17,35 +17,45 @@ \begin{scope}[xshift=-1cm] - \draw[thick, ->, darkgreen] (0, 0) -- (0,0.5); - \draw[thick, ->, orange] (1, 0) -- (0,0); - \draw[thick, ->, red] (2, 0) -- (1,0); - \draw[thick, ->, blue] (2,0.5) -- (2, 0); - \draw[thick, ->, purple] (1, 0.5) -- (2,0.5); - \draw[thick, ->, cyan] (0, 0.5) -- (1,0.5); + \foreach \i in {-2,...,2} { + \foreach \j in {-2,...,1} { + \begin{scope}[xshift=\i*4cm, yshift=\j*1cm] + \draw[<-, blue!50] (0, 0) -- (0,0.5); + \draw[<-, cyan!50] (1, 0) -- (0,0); + \draw[<-, darkgreen!50] (2, 0) -- (1,0); + \draw[<-, orange!50] (2,0.5) -- (2, 0); + \draw[<-, red!50] (1, 0.5) -- (2,0.5); + \draw[<-, purple!50] (0, 0.5) -- (1,0.5); + \draw[<-, blue!50] (0,1) -- (0,0.5); + \draw[<-, orange!50] (2,0.5) -- (2, 1); + \draw[<-, red!50] (3, 0.5) -- (2,0.5); + \draw[<-, purple!50] (4, 0.5) -- (3,0.5); + \draw[<-, darkgreen!50] (2, 0) -- (3,0); + \draw[<-, cyan!50] (3, 0) -- (4,0); + \end{scope} + } + } + + % \pause + \draw[ultra thick, <-, darkgreen] (2, 0) -- (1,0); + % \pause + \draw[ultra thick, <-, orange] (2,0.5) -- (2, 0); + % \pause + \draw[ultra thick, <-, red] (1, 0.5) -- (2,0.5); + % \pause + \draw[ultra thick, <-, blue] (0, 0) -- (0,0.5); + \draw[ultra thick, <-, purple] (0, 0.5) -- (1,0.5); + \draw[ultra thick, <-, cyan] (1, 0) -- (0,0); + % \pause \foreach \i in {-2,...,2} { \foreach \j in {-2,...,1} { \begin{scope}[xshift=\i*4cm, yshift=\j*1cm] - \draw[opacity=0.5, ->, darkgreen] (0, 0) -- (0,0.5); - \draw[opacity=0.5, ->, orange] (1, 0) -- (0,0); - \draw[opacity=0.5, ->, red] (2, 0) -- (1,0); - \draw[opacity=0.5, ->, blue] (2,0.5) -- (2, 0); - \draw[opacity=0.5, ->, purple] (1, 0.5) -- (2,0.5); - \draw[opacity=0.5, ->, cyan] (0, 0.5) -- (1,0.5); - \draw[opacity=0.5, ->, darkgreen] (0,1) -- (0,0.5); - \draw[opacity=0.5, ->, blue] (2,0.5) -- (2, 1); - \draw[opacity=0.5, ->, purple] (3, 0.5) -- (2,0.5); - \draw[opacity=0.5, ->, cyan] (4, 0.5) -- (3,0.5); - \draw[opacity=0.5, ->, red] (2, 0) -- (3,0); - \draw[opacity=0.5, ->, orange] (3, 0) -- (4,0); - \node[zero] at ( 1, 0) {}; \node[zero] at ( 3, 0) {}; \node[pole] at ( 1,0.5) {}; \node[pole] at ( 3,0.5) {}; - \end{scope} } } @@ -57,20 +67,23 @@ \draw[gray] ( 1,0) +(0,0.1) -- +(0, -0.1) node[inner sep=0, anchor=north] {\small $K$}; \draw[gray] (0, 0.5) +(0.1, 0) -- +(-0.1, 0) node[inner sep=0, anchor=east]{\small $jK^\prime$}; - - \end{scope} - \begin{scope}[yshift=-3.5cm, xscale=0.75] + \node[zero] at (4,3) (n) {}; + \node[anchor=west] at (n.east) {Nullstelle}; + \node[pole, below=0.25cm of n] (n) {}; + \node[anchor=west] at (n.east) {Polstelle}; + + \begin{scope}[yshift=-4cm, xscale=0.75] \draw[gray, ->] (-6,0) -- (6,0) node[anchor=west]{$w$}; - \draw[thick, ->, purple] (-5, 0) -- (-3, 0); - \draw[thick, ->, blue] (-3, 0) -- (-2, 0); - \draw[thick, ->, red] (-2, 0) -- (0, 0); - \draw[thick, ->, orange] (0, 0) -- (2, 0); - \draw[thick, ->, darkgreen] (2, 0) -- (3, 0); - \draw[thick, ->, cyan] (3, 0) -- (5, 0); + \draw[ultra thick, ->, purple] (-5, 0) -- (-3, 0); + \draw[ultra thick, ->, blue] (-3, 0) -- (-2, 0); + \draw[ultra thick, ->, cyan] (-2, 0) -- (0, 0); + \draw[ultra thick, ->, darkgreen] (0, 0) -- (2, 0); + \draw[ultra thick, ->, orange] (2, 0) -- (3, 0); + \draw[ultra thick, ->, red] (3, 0) -- (5, 0); \node[anchor=south] at (-5,0) {$-\infty$}; \node[anchor=south] at (-3,0) {$-1/k$}; diff --git a/buch/papers/ellfilter/tschebyscheff.tex b/buch/papers/ellfilter/tschebyscheff.tex index 7d426b6..639c87c 100644 --- a/buch/papers/ellfilter/tschebyscheff.tex +++ b/buch/papers/ellfilter/tschebyscheff.tex @@ -1,9 +1,8 @@ \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 Filter Spezialfälle davon. - -Der Name des Filters deutet schon an, dass die Tschebyscheff-Polynome $T_N$ für das Filter relevant sind: +Als Einstieg betrachten wir das Tschebyscheff-Filter, welches sehr verwandt ist mit dem elliptischen Filter. +Genauer ausgedrückt erhält man die Tschebyscheff-1 und -2 Filter bei Grenzwerten von Parametern beim elliptischen Filter. +Der Name des Filters deutet schon an, dass die Tschebyscheff-Polynome $T_N$ (siehe auch Kapitel \label{buch:polynome:section:tschebyscheff}) für das Filter relevant sind: \begin{align} T_{0}(x)&=1\\ T_{1}(x)&=x\\ @@ -16,7 +15,7 @@ Bemerkenswert ist, dass die Polynome im Intervall $[-1, 1]$ mit der trigonometri T_N(w) &= \cos \left( N \cos^{-1}(w) \right) \\ &= \cos \left(N~z \right), \quad w= \cos(z) \end{align} -übereinstimmt. +übereinstimmen. Der Zusammenhang lässt sich mit den Doppel- und Mehrfachwinkelfunktionen der trigonometrischen Funktionen erklären. Abbildung \ref{ellfilter:fig:chebychef_polynomials} zeigt einige Tschebyscheff-Polynome. \begin{figure} @@ -28,7 +27,7 @@ Abbildung \ref{ellfilter:fig:chebychef_polynomials} zeigt einige Tschebyscheff-P 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. +Wenn wir die Tschebyscheff-Polynome quadrieren, passen sie perfekt in die Forderungen für Filterfunktionen, wie es Abbildung \ref{ellfiter:fig:chebychef} demonstriert. \begin{figure} \centering \input{papers/ellfilter/python/F_N_chebychev.pgf} @@ -36,12 +35,11 @@ Wenn wir die Tschebyscheff-Polynome quadrieren, passen sie perfekt in die Voraus \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 besser zu verstehen. +Die genauere Betrachtung wird uns helfen die elliptischen Filter besser zu verstehen. -Starten wir mit der Funktion, die als erstes auf $w$ angewendet wird, dem Arcuscosinus. -Die invertierte Funktion des Kosinus kann als definites Integral dargestellt werden: +Starten wir mit der Funktion, die in \eqref{ellfilter:eq:chebychef_polynomials} als erstes auf $w$ angewendet wird, dem Arcuscosinus. +Die invertierte Funktion des Kosinus kann als bestimmtes Integral dargestellt werden: \begin{align} \cos^{-1}(x) &= @@ -63,9 +61,9 @@ Die invertierte Funktion des Kosinus kann als definites Integral dargestellt wer } } ~dz - + \frac{\pi}{2} + + \frac{\pi}{2}. \end{align} -Der Integrand oder auch die Ableitung +Der Integrand oder auch die Ableitung von $\cos^{-1}(x)$ \begin{equation} \frac{ -1 @@ -75,59 +73,37 @@ Der Integrand oder auch die Ableitung } } \end{equation} -bestimmt dabei die Richtung, in der die Funktion verläuft. +bestimmt dabei die Richtung, in welche die Funktion verläuft. Der reelle Arcuscosinus is bekanntlich nur für $|z| \leq 1$ definiert. Hier bleibt der Wert unter der Wurzel positiv und das Integral liefert reelle Werte. Doch wenn $|z|$ über 1 hinausgeht, wird der Term unter der Wurzel negativ. Durch die Quadratwurzel entstehen für den Integranden zwei rein komplexe Lösungen. Der Wert des Arcuscosinus verlässt also bei $z= \pm 1$ den reellen Zahlenstrahl und knickt in die komplexe Ebene ab. -Abbildung \ref{ellfilter:fig:arccos} zeigt den $\arccos$ in der komplexen Ebene. +Abbildung \ref{ellfilter:fig:arccos} zeigt den Arcuscosinus in der komplexen Ebene. \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} -Wegen der Periodizität des Kosinus ist auch der Arcuscosinus $2\pi$-periodisch und es entstehen periodische Nullstellen. -% \begin{equation} -% \frac{ -% 1 -% }{ -% \sqrt{ -% 1-z^2 -% } -% } -% \in \mathbb{R} -% \quad -% \forall -% \quad -% -1 \leq z \leq 1 -% \end{equation} -% \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} +Wegen der Periodizität des Kosinus ist auch der Arcuscosinus $2\pi$-periodisch. +Das Einzeichnen von Pol- und Nullstellen ist hilfreich für die Betrachtung der Funktion. + -Die Tschebyscheff-Polynome skalieren diese Nullstellen mit dem Ordnungsfaktor $N$, wie dargestellt in Abbildung \ref{ellfilter:fig:arccos2}. +In \eqref{ellfilter:eq:chebychef_polynomials} wird $z$ mit dem Ordnungsfaktor $N$ multipliziert und durch die Kosinusfunktion zurück transformiert. +Die Skalierung hat zur folge, dass bei der Rücktransformation durch den Kosinus mehrere Nullstellen durchlaufen werden. +Somit passiert $\cos( N~\cos^{-1}(w))$ im Intervall $[-1, 1]$ $N$ Nullstellen, wie dargestellt in Abbildung \ref{ellfilter:fig:arccos2}. \begin{figure} \centering \input{papers/ellfilter/tikz/arccos2.tikz.tex} \caption{ $z_1=N \cos^{-1}(w)$-Ebene der Tschebyscheff-Funktion. - Die eingefärbten Pfade sind Verläufe von $w~\forall~[-\infty, \infty]$ für verschiedene Ordnungen $N$. - Je grösser die Ordnung $N$ gewählt wird, desto mehr Nullstellen werden passiert. + Die eingefärbten Pfade sind Verläufe von $w\in(-\infty, \infty)$ für $N = 4$. + Je grösser die Ordnung $N$ gewählt wird, desto mehr Nullstellen werden passiert die zu Equirippel-Verhalten führen. + Die vertikalen Segmente der Funktion sorgen für das Ansteigen der Funktion gegen $\infty$ nach der Grenzfrequenz. + Die eingezeichneten Nullstellen sind vom zurücktransformierenden Kosinus. } \label{ellfilter:fig:arccos2} \end{figure} -Somit passert $\cos( N~\cos^{-1}(w))$ im Intervall $[-1, 1]$ $N$ Nullstellen. -Durch die spezielle Anordnung der Nullstellen hat die Funktion Equirippel-Verhalten und ist dennoch ein Polynom, was sich perfekt für linear Filter eignet. +Durch die spezielle Anordnung der Nullstellen hat die Funktion auf der reellen Achse Equirippel-Verhalten und ist dennoch ein Polynom, was sich perfekt für linear Filter eignet. +Equirippel bedeutet, dass alle lokalen Maxima der Betragsfunktion gleich gross sind. diff --git a/buch/papers/fm/00_modulation.tex b/buch/papers/fm/00_modulation.tex index e2ba39f..982d63c 100644 --- a/buch/papers/fm/00_modulation.tex +++ b/buch/papers/fm/00_modulation.tex @@ -3,11 +3,22 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % + +Durch die Modulation wird ein Nachrichtensignal \(m(t)\) auf ein Trägersignal (z.B. ein Sinus- oder Rechtecksignal) abgebildet (kombiniert). +Durch dieses Auftragen vom Nachrichtensignal \(m(t)\) kann das modulierte Signal in einem gewünschten Frequenzbereich übertragen werden. +Der ursprünglich Frequenzbereich des Nachrichtensignal \(m(t)\) erstreckt sich typischerweise von 0 Hz bis zur Bandbreite \(B_m\). +Beim Empfänger wird dann durch Demodulation das ursprüngliche Nachrichtensignal \(m(t)\) so originalgetreu wie möglich zurückgewonnen. +Beim Trägersignal \(x_c(t)\) handelt es sich um ein informationsloses Hilfssignal. +Durch die Modulation mit dem Nachrichtensignal \(m(t)\) wird es zum modulierten zu übertragenden Signal. +Für alle Erklärungen wird ein sinusförmiges Trägersignal benutzt, jedoch kann auch ein Rechtecksignal, +welches Digital einfach umzusetzten ist, +genauso als Trägersignal genutzt werden kann.\cite{fm:NAT} + \subsection{Modulationsarten\label{fm:section:modulation}} Das sinusförmige Trägersignal hat die übliche Form: \(x_c(t) = A_c \cdot \cos(\omega_c(t)+\varphi)\). -Wobei die konstanten Amplitude \(A_c\) und Phase \(\varphi\) vom Nachrichtensignal \(m(t)\) verändert wird. +Wobei die konstanten Amplitude \(A_c\) und Phase \(\varphi\) vom Nachrichtensignal \(m(t)\) verändert werden können. Der Parameter \(\omega_c\), die Trägerkreisfrequenz bzw. die Trägerfrequenz \(f_c = \frac{\omega_c}{2\pi}\), steht nicht für die modulation zur verfügung, statt dessen kann durch ihn die Frequenzachse frei gewählt werden. \newblockpunct @@ -25,6 +36,8 @@ die Phasenmodulation \(\varphi\) und dann noch die Momentankreisfrequenz \(\omeg \item PM \item FM \end{itemize} +Um modulation zu Verstehen ist es am Anschaulichst mit der AM Amplitudenmodulation, +da Phasenmodulation und Frequenzmodulation den gleichen Parameter verändert vernachlässige ich die Phasenmodulation ganz. To do: Bilder jeder Modulationsart diff --git a/buch/papers/fm/01_AM.tex b/buch/papers/fm/01_AM.tex index 21927f5..714b9a0 100644 --- a/buch/papers/fm/01_AM.tex +++ b/buch/papers/fm/01_AM.tex @@ -11,19 +11,61 @@ Nun zur Amplitudenmodulation verwenden wir das bevorzugte Trägersignal \[ x_c(t) = A_c \cdot \cos(\omega_ct). \] -Dies bringt den grossen Vorteil das, dass modulierend Signal sämtliche Anteile im Frequenzspektrum inanspruch nimmt -und das Trägersignal nur zwei komplexe Schwingungen besitzt. +Dies bringt den grossen Vorteil das, dass modulierend Signal sämtliche Anteile im Frequenzspektrum in Anspruch nimmt +und das Trägersignal nur zwei komplexe Schwingungen besitzt. Dies sieht man besonders in der Eulerischen Formel \[ x_c(t) = \frac{A_c}{2} \cdot e^{j\omega_ct}\;+\;\frac{A_c}{2} \cdot e^{-j\omega_ct}. + \label{fm:eq:AM:euler} \] Dabei ist die negative Frequenz der zweiten komplexen Schwingung zwingend erforderlich, damit in der Summe immer ein reellwertiges Trägersignal ergibt. Nun wird der Parameter \(A_c\) durch das Modulierende Signal \(m(t)\) ersetzt, wobei so \(m(t) \leqslant |1|\) normiert wurde. -\newline -\newline + +Dabei entseht wine Umhüllende kurve die unserem ursprünglichen signal \(m(t)\) entspricht. +\[ + x_c(t) = m(t) \cdot \cos(\omega_ct). +\] + +\begin{figure} + \centering + \input{papers/fm/Python animation/m_t.pgf} + \caption{modulierende Signal \(m(t)\)} + \label{fig:bessel} +\end{figure} +% TODO: +Bilder Hier beschrieib ich was AmplitudenModulation ist und mache dan den link zu Frequenzmodulation inkl Formel \[\cos( \cos x)\] so wird beschrieben das daraus eigentlich \(x_c(t) = A_c \cdot \cos(\omega_i)\) wird und somit \(x_c(t) = A_c \cdot \cos(\omega_c + \frac{d \varphi(t)}{dt})\). Da \(\sin \) abgeleitet \(\cos \) ergibt, so wird aus dem \(m(t)\) ein \( \frac{d \varphi(t)}{dt}\) in der momentan frequenz. \[ \Rightarrow \cos( \cos x) \] +\subsection{Frequenzspektrum} +Das Frequenzspektrum ist eine Darstellung von einem Signal im Frequenzbereich, das heisst man erkennt welche Frequenzen in einem Signal vorhanden sind. +Dafür muss man eine Fouriertransformation vornehmen. +Wird aus dieser Gleichung \eqref{fm:eq:AM:euler}die Fouriertransformation vorggenommen, so erhält man -\subsection{Frequenzspektrum} \ No newline at end of file +% +%Ein Ziel der Modulation besteht darin, mehrere Nachrichtensignale von verschiedenen Sendern gleichzeitig +%in verschiedenen Frequenzbereichen über den gleichen Kanal zu senden. Um dieses Frequenzmultiplexing +%störungsfrei und mit eine Vielzahl von Teilnehmern durchführen zu können, muss die spektrale Beschaffen- +%heit der modulierten Signale möglichst gut bekannt sein. +%Dank des Modulationssatzes der Fouriertransformation lässt sich das Spektrum eines gewöhnlichen AM Si- +%gnals sofort bestimmen: +%A c μ +%F +%·(M n (ω−ω c ) + M n (ω+ω c )) (5.5) +%A c ·(1+μm n (t))·cos(ω c t) ❝ s A c π (δ(ω−ω c ) + δ(ω+ω c )) + +%2 +%Das zweiseitige Spektrum des Nachrichtensignals M (ω) wird mit dem Faktor A 2 c μ gewichtet und einmal +%nach +ω c und einmal nach −ω c verschoben. Dies führt im Vergleich zum Basisbandsignal zu einer Verdop- +%pelung der Bandbreite mit je einem Seitenband links und rechts der Trägerfrequenz. Weiter beinhaltet das +%Amplitudendichtespektrum je eine Deltafunktion mit Gewicht A c π an den Stellen ±ω c , d.h. ein fester, nicht- +%modulierter Amplitudenanteil bei der eigentlichen Trägerfrequenz. +%Das Amplitudendichtespektrum ist im nachfolgenden Graphen für A c = 1 und μ = 100% dargestellt.5.3. Gewöhnliche Amplitudenmodulation +%47 +%Abbildung 5.12: Amplitudendichtespektrum von gewöhnlicher AM +%Für das Nachrichtensignal wurde in diesem Graph mit einem Keil symbolhaft ein Amplitudendichtespektrum +%|M (ω)| gewählt, bei welchem der Anteil auf der positiven und jener auf der negativen Frequenzachse visuell +%gut auseinandergehalten werden können. Ein solch geformtes Spektrum wird aber in der Praxis kaum je +%auftreten: bei periodischen Testsignalen besteht das Nachrichtensignal aus einem Linienspektrum, bei einem +%Energiesignal mit zufälligem Verlauf aus einem kontinuierlichen Spektrum, welches jedoch nicht auf diese +%einfache Art geformt sein wird \ No newline at end of file diff --git a/buch/papers/fm/02_FM.tex b/buch/papers/fm/02_FM.tex index fedfaaa..a01fb69 100644 --- a/buch/papers/fm/02_FM.tex +++ b/buch/papers/fm/02_FM.tex @@ -6,9 +6,65 @@ \section{FM \label{fm:section:teil1}} \rhead{FM} -\subsection{Frequenzspektrum} -TODO -Hier Beschreiben ich FM und FM im Frequenzspektrum. +\subsection{Frequenzmodulation} +(skript Nat ab Seite 60) +Als weiterer Parameter, um ein sinusförmiges Trägersignal \(x_c = A_c \cdot \cos(\omega_c t + \varphi)\) zu modulieren, +bietet sich neben der Amplitude \(A_c\) auch der Phasenwinkel \(\varphi\) oder die momentane Frequenzabweichung \(\frac{d\varphi}{dt}\) an. +Bei der Phasenmodulation (Englisch: phase modulation, PM) erzeugt das Nachrichtensignal \(m(t)\) eine Phasenabweichung \(\varphi(t)\) des modulierten Trägersignals im Vergleich zum nicht-modulierten Träger. Sie ist pro- +%portional zum Nachrichtensignal \(m(t)\) durch eine Skalierung mit der Phasenhubkonstanten (Englisch: phase deviation constant) +%k p [rad], +%welche die Amplitude des Nachrichtensignals auf die Phasenabweichung des +%modulierten Trägersignals abbildet: φ(t) = k p · m(t). Damit ergibt sich für das phasenmodulierte Trägersi- +%gnal: +%x PM (t) = A c · cos (ω c t + k p · m(t)) +%(5.16) +%Die modulierte Phase φ(t) verändert dabei auch die Momentanfrequenz (Englisch: instantaneous frequency) +%ω i +%, welche wie folgt berechnet wird: +%f i = 2π +%ω i (t) = ω c + +%d φ(t) +%dt +%(5.17) +%Bei der Frequenzmodulation (Englisch: frequency modulation, FM) ist die Abweichung der momentanen +%Kreisfrequenz ω i von der Trägerkreisfrequenz ω c proportional zum Nachrichtensignal m(t). Sie ergibt sich, +%indem m(t) mit der (Kreis-)Frequenzhubkonstanten (Englisch: frequency deviation constant) k f [rad/s] ska- +%liert wird: ω i (t) = ω c + k f · m(t). Diese sich zeitlich verändernde Abweichung von der Kreisfrequenz ω c +%verursacht gleichzeitig auch Schwankungen der Phase φ(t), welche wie folgt berechnet wird: +%φ(t) = +%Z t +%−∞ +%ω i (τ ) − ω c dτ = +%Somit ergibt sich für das frequenzmodulierte Trägersignal: +% +%Z t +%−∞ +%x FM (t) = A c · cos  ω c t + k f +%k f · m(t) dτ +%Z t +%−∞ +% +%m(τ ) dτ  +%(5.18) +%(5.19) +%Die Phase φ(t) hat dabei einen kontinuierlichen Verlauf, d.h. das FM-modulierte Signal x FM (t) weist keine +%Stellen auf, wo sich die Phase sprunghaft ändert. Aus diesem Grund spricht man bei frequenzmodulierten +%Signalen – speziell auch bei digitalen FM-Signalen – von einer Modulation mit kontinuierlicher Phase (Eng- +%lisch: continuous phase modulation). +%Wie aus diesen Ausführungen hervorgeht, sind Phasenmodulation und Frequenzmodulation äquivalente Mo- +%dulationsverfahren. Beide variieren sowohl die Phase φ wie auch die Momentanfrequenz ω i . Dadurch kann +%man leider nicht – wie vielleicht erhofft – je mit einem eigenen Nachrichtensignal ein gemeinsames Trägersi- +%gnal unabhängig PM- und FM-modulieren, ohne dass sich diese Modulationen für den Empfänger untrennbar +%vermischen würden. +% +%Um die mathematische Behandlung der nicht-linearen Winkelmodulation etwas zu verkürzen, ist es aufgrund +%dieser Äquivalenzen gerechtfertigt, dass PM und FM gemeinsam behandelt werden. Jeweils vor der Modu- +%lation bzw. nach der Demodulation kann dann noch eine Differentiation oder Integration durchgeführt wird, +%um von der einen Modulationsart zur anderen zu gelangen. +%\subsection{Frequenzbereich} +%Nun +%TODO +%Hier Beschreiben ich FM und FM im Frequenzspektrum. %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 diff --git a/buch/papers/fm/03_bessel.tex b/buch/papers/fm/03_bessel.tex index 5f85dc6..3c2cb71 100644 --- a/buch/papers/fm/03_bessel.tex +++ b/buch/papers/fm/03_bessel.tex @@ -67,7 +67,7 @@ Mit dem \eqref{fm:eq:addth1} wird aus dem modulierten Signal = \cos(\omega_c t + \beta\sin(\omega_mt)) = - \cos(\omega_c t)\cos(\beta\sin(\omega_m t))-\sin(\omega_ct)\sin(\beta\sin(\omega_m t)). + \cos(\omega_c t)\cos(\beta\sin(\omega_m t)) - \sin(\omega_ct)\sin(\beta\sin(\omega_m t)). \label{fm:eq:start} \] %----------------------------------------------------------------------------------------------------------- @@ -89,23 +89,34 @@ mit hilfe der Besselindentität \eqref{fm:eq:besselid1} zum \end{align*} %intertext{} Funktioniert nicht. wobei mit dem Additionstheorem \eqref{fm:eq:addth2} \(A = \omega_c t\) und \(B = 2k\omega_m t \) ersetzt wurden. +Nun kann die Summe in zwei Summen \begin{align*} c(t) &= - J_0(\beta) \cdot \cos(\omega_c t) + \sum_{k=1}^\infty J_{2k}(\beta) \{ \underbrace{\cos((\omega_c - 2k \omega_m) t)} \,+\, \cos((\omega_c + 2k \omega_m) t) \} + J_0(\beta) \cdot \cos(\omega_c t) + \sum_{k=1}^\infty J_{2k}(\beta) \cos((\omega_c - 2k \omega_m) t) \,+\, \cos((\omega_c + 2k \omega_m) t) \} \\ &= - \sum_{k=-\infty}^{-1} J_{2k}(\beta) \overbrace{\cos((\omega_c +2k \omega_m) t)} - \,+\,J_0(\beta)\cdot \cos(\omega_c t+ 2\cdot0 \omega_m) + \sum_{k=\infty}^{1} J_{2k}(\beta) \underbrace{\cos((\omega_c - 2k \omega_m) t)} + \,+\,J_0(\beta)\cdot \cos(\omega_c t) \,+\, \sum_{k=1}^\infty J_{2k}(\beta)\cos((\omega_c + 2k \omega_m) t) \end{align*} -wird. -Das Minus im Ersten Term wird zur negativen Summe \(\sum_{-\infty}^{-1}\) ersetzt. -Da \(2k\) immer gerade ist, wird es durch alle negativen und positiven Ganzzahlen \(n\) ersetzt: +aufgeteilt werden. +Wenn bei der ersten Summe noch \(k\) von \(-\infty \to -1\) läuft, wird diese summe zu \(\sum_{k=-1}^{-\infty} J_{-2k}(\beta) {\cos((\omega_c + 2k \omega_m) t)} \) +Zudem kann die Besselindentität \eqref{fm:eq:besselid3} gebraucht werden. \(n \) wird mit \(2k\) ersetzt, da dies immer gerade ist so gilt: \(J_{-n}(\beta) = J_n(\beta)\) +Somit bekommt man zwei gleiche Summen +\begin{align*} + c(t) + &= + \sum_{k=-\infty}^{-1} J_{2k}(\beta) \cos((\omega_c + 2k \omega_m) t) + \,+\,J_0(\beta)\cdot \cos(\omega_c t+ 2 \cdot 0 \omega_m) + \,+\, \sum_{k=1}^\infty J_{2k}(\beta)\cos((\omega_c + 2k \omega_m) t) +\end{align*} +Diese können wir vereinfachter schreiben, \begin{align*} \sum_{n\, \text{gerade}} J_{n}(\beta) \cos((\omega_c + n \omega_m) t), \label{fm:eq:gerade} \end{align*} +da \(2k\) für alle negativen, wie positiven geraden Zahlen zählt. %---------------------------------------------------------------------------------------------------------------- \subsubsection{Sin-Teil} Nun zum zweiten Teil des Term \eqref{fm:eq:start}, den Sin-Teil @@ -157,14 +168,14 @@ jedoch so \(-1 \cdot J_{-n}(\beta) = J_n(\beta)\) und daraus wird dann: \sum_{n=- \infty}^{-1} J_{n}(\beta) \cos((\omega_c + n \omega_m) t) \,+\, \sum_{n=1}^\infty J_{n}(\beta) \cos((\omega_c + n\omega_m) t) \end{align*} -Da \(n\) immer ungerade ist und \(0\) nicht zu den ungeraden zahlen zählt, kann man dies so vereinfacht +Da \(n\) immer ungerade ist und \(0\) nicht zu den ungeraden Zahlen zählt, kann man dies so vereinfacht \[ s(t) = - \sum_{n\, \text{ungerade}} -1 \cdot J_{n}(\beta) \cos((\omega_c + n\omega_m) t). + \sum_{n\, \text{ungerade}} J_{n}(\beta) \cos((\omega_c + n\omega_m) t). \label{fm:eq:ungerade} \] -schreiben. +, mit allen positiven und negativen Ganzzahlen schreiben. %------------------------------------------------------------------------------------------ \subsubsection{Summe Zusammenführen} Beide Teile \eqref{fm:eq:gerade} Gerade @@ -179,7 +190,7 @@ ergeben zusammen \[ \cos(\omega_ct+\beta\sin(\omega_mt)) = - \sum_{k= -\infty}^\infty J_{k}(\beta) \cos((\omega_c+k\omega_m)t). + \sum_{k= -\infty}^\infty J_{n}(\beta) \cos((\omega_c+ n\omega_m)t). \] Somit ist \eqref{fm:eq:proof} bewiesen. \newpage diff --git a/buch/papers/fm/Python animation/Bessel-FM.ipynb b/buch/papers/fm/Python animation/Bessel-FM.ipynb index 74f1011..4074765 100644 --- a/buch/papers/fm/Python animation/Bessel-FM.ipynb +++ b/buch/papers/fm/Python animation/Bessel-FM.ipynb @@ -11,11 +11,12 @@ "from scipy.fft import fft, ifft, fftfreq\n", "import scipy.special as sc\n", "import scipy.fftpack\n", + "import matplotlib.pyplot as plt\n", "import matplotlib as mpl\n", "# Use the pgf backend (must be set before pyplot imported)\n", - "mpl.use('pgf')\n", - "import matplotlib.pyplot as plt\n", - "from matplotlib.widgets import Slider\n", + "# mpl.use('pgf')\n", + "\n", + "\n", "def fm(beta):\n", " # Number of samplepoints\n", " N = 600\n", @@ -27,7 +28,7 @@ " #beta = 1.0\n", " y_old = np.sin(fc * 2.0*np.pi*x+beta*np.sin(fm * 2.0*np.pi*x))\n", " y = 0*x;\n", - " xf = fftfreq(N, 1 / 400)\n", + " xf = fftfreq(N, 1 / N)\n", " for k in range (-4, 4):\n", " y = sc.jv(k,beta)*np.sin((fc+k*fm) * 2.0*np.pi*x)\n", " yf = fft(y)/(fc*np.pi)\n", @@ -42,12 +43,24 @@ }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", "text/plain": [ "
" ] @@ -62,17 +75,17 @@ "# Number of samplepoints\n", "N = 800\n", "# sample spacing\n", - "T = 1.0 / 1000.0\n", + "T = 1.0 / N\n", "x = np.linspace(0.01, N*T, N)\n", "\n", "y_old = np.sin(100* 2.0*np.pi*x+1*np.sin(15* 2.0*np.pi*x))\n", "yf_old = fft(y_old)/(100*np.pi)\n", - "xf = fftfreq(N, 1 / 1000)\n", + "xf = fftfreq(N, 1 / N)\n", "plt.plot(xf, np.abs(yf_old))\n", "#plt.xlim(-150, 150)\n", "plt.show()\n", "\n", - "fm(1)" + "fm(2)" ] }, { @@ -120,12 +133,12 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 131, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -137,39 +150,21 @@ } ], "source": [ - "from scipy import special\n", - "\n", - "def drumhead_height(n, k, distance, angle, t):\n", - " kth_zero = special.jn_zeros(n, k)[-1]\n", - " return np.cos(t) * np.cos(n*angle) * special.jn(n, distance*kth_zero)\n", - "\n", - "theta = np.r_[0:2*np.pi:50j]\n", - "radius = np.r_[0:1:50j]\n", - "x = np.array([r * np.cos(theta) for r in radius])\n", - "y = np.array([r * np.sin(theta) for r in radius])\n", - "z = np.array([drumhead_height(1, 1, r, theta, 0.5) for r in radius])\n", - "\n", - "import matplotlib.pyplot as plt\n", - "fig = plt.figure()\n", - "ax = fig.add_axes(rect=(0, 0.05, 0.95, 0.95), projection='3d')\n", - "ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='RdBu_r', vmin=-0.5, vmax=0.5)\n", - "ax.set_xlabel('X')\n", - "ax.set_ylabel('Y')\n", - "ax.set_xticks(np.arange(-1, 1.1, 0.5))\n", - "ax.set_yticks(np.arange(-1, 1.1, 0.5))\n", - "ax.set_zlabel('Z')\n", "\n", + "x = np.linspace(0,0.1,2000)\n", + "y = np.sin(100 * 2.0*np.pi*x+1.5*np.sin(30 * 2.0*np.pi*x))\n", + "plt.plot(x, y, '-')\n", "plt.show()" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -181,11 +176,24 @@ } ], "source": [ + "ratio = 2\n", + "first = 1\n", + "(length,) = x.shape\n", + "slop = int(length/6)\n", + "second = ratio-first\n", + "odd = ratio % 2\n", "\n", - "x = np.linspace(0,0.1,1000)\n", - "y = np.sin(100 * 2.0*np.pi*x+1.5*np.sin(30 * 2.0*np.pi*x))\n", - "plt.plot(x, y, '-')\n", - "plt.show()" + "first = int(first * length/ratio) \n", + "second = int( second * length/ratio) + odd\n", + "slop = np.array(np.append(np.zeros(first-slop) , (np.arange(slop))/slop))\n", + "#steep = np.ones(int(first * length/ratio)+ odd) - np.exp(-np.arange(int(first * length/ratio) + odd)/200)\n", + "steep = (np.ones(first) + slop)*0.5\n", + "\n", + "step = np.append(steep, np.ones(second))\n", + "m = np.sin(5 * 2.0 * np.pi * x) * step \n", + "plt.plot(x, step, '-')\n", + "plt.plot(x, m, '-')\n", + "plt.savefig('m_t.pgf', format='pgf')" ] } ], diff --git a/buch/papers/fm/Python animation/Bessel-FM.py b/buch/papers/fm/Python animation/Bessel-FM.py index cf30e16..cb35ebd 100644 --- a/buch/papers/fm/Python animation/Bessel-FM.py +++ b/buch/papers/fm/Python animation/Bessel-FM.py @@ -4,39 +4,45 @@ from scipy.fft import fft, ifft, fftfreq import scipy.special as sc import scipy.fftpack import matplotlib.pyplot as plt -from matplotlib.widgets import Slider - -# Number of samplepoints -N = 600 -# sample spacing -T = 1.0 / 800.0 -x = np.linspace(0.01, N*T, N) -beta = 1.0 -y_old = np.sin(100.0 * 2.0*np.pi*x+beta*np.sin(50.0 * 2.0*np.pi*x)) -y = 0*x; -xf = fftfreq(N, 1 / 400) -for k in range (-5, 5): - y = sc.jv(k,beta)*np.sin((100.0+k*50) * 2.0*np.pi*x) - yf = fft(y) - plt.plot(xf, np.abs(yf)) - -axbeta =plt.axes([0.25, 0.1, 0.65, 0.03]) -beta_slider = Slider( -ax=axbeta, -label="Beta", -valmin=0.1, -valmax=3, -valinit=beta, -) - -def update(val): - line.set_ydata(fm(beta_slider.val)) - fig.canvas.draw_idle() +import matplotlib as mpl +# Use the pgf backend (must be set before pyplot imported) +mpl.use('pgf') +from matplotlib.widgets import Slider +def fm(beta): + # Number of samplepoints + N = 600 + # sample spacing + T = 1.0 / 1000.0 + fc = 100.0 + fm = 30.0 + x = np.linspace(0.01, N*T, N) + #beta = 1.0 + y_old = np.sin(fc * 2.0*np.pi*x+beta*np.sin(fm * 2.0*np.pi*x)) + y = 0*x; + xf = fftfreq(N, 1 / N) + for k in range (-4, 4): + y = sc.jv(k,beta)*np.sin((fc+k*fm) * 2.0*np.pi*x) + yf = fft(y)/(fc*np.pi) + plt.plot(xf, np.abs(yf)) + plt.xlim(-150, 150) + #plt.savefig('bessel.pgf', format='pgf') + plt.show() -beta_slider.on_changed(update) -plt.show() +fm(1) -yf_old = fft(y_old) -plt.plot(xf, np.abs(yf_old)) -plt.show() \ No newline at end of file +# Bessel-Funktion +for n in range (-2,4): + x = np.linspace(-11,11,1000) + y = sc.jv(n,x) + plt.plot(x, y, '-',label='n='+str(n)) +#plt.plot([1,1],[sc.jv(0,1),sc.jv(-1,1)],) +plt.xlim(-10,10) +plt.grid(True) +plt.ylabel('Bessel $J_n(\\beta)$') +plt.xlabel(' $ \\beta $ ') +plt.plot(x, y) +plt.legend() +#plt.show() +plt.savefig('bessel.pgf', format='pgf') +print(sc.jv(0,1)) \ No newline at end of file diff --git a/buch/papers/fm/Python animation/m_t.pgf b/buch/papers/fm/Python animation/m_t.pgf new file mode 100644 index 0000000..edcfb33 --- /dev/null +++ b/buch/papers/fm/Python animation/m_t.pgf @@ -0,0 +1,746 @@ +%% Creator: Matplotlib, PGF backend +%% +%% To include the figure in your LaTeX document, write +%% \input{.pgf} +%% +%% Make sure the required packages are loaded in your preamble +%% \usepackage{pgf} +%% +%% Also ensure that all the required font packages are loaded; for instance, +%% the lmodern package is sometimes necessary when using math font. +%% \usepackage{lmodern} +%% +%% Figures using additional raster images can only be included by \input if +%% they are in the same directory as the main LaTeX file. For loading figures +%% from other directories you can use the `import` package +%% \usepackage{import} +%% +%% and then include the figures with +%% \import{}{.pgf} +%% +%% Matplotlib used the following preamble +%% \usepackage{fontspec} +%% \setmainfont{DejaVuSerif.ttf}[Path=\detokenize{/home/joshua/.local/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/}] +%% \setsansfont{DejaVuSans.ttf}[Path=\detokenize{/home/joshua/.local/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/}] +%% \setmonofont{DejaVuSansMono.ttf}[Path=\detokenize{/home/joshua/.local/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/}] +%% +\begingroup% +\makeatletter% +\begin{pgfpicture}% +\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{6.000000in}{4.000000in}}% +\pgfusepath{use as bounding box, clip}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetmiterjoin% +\pgfsetlinewidth{0.000000pt}% +\definecolor{currentstroke}{rgb}{1.000000,1.000000,1.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetstrokeopacity{0.000000}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{6.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{6.000000in}{4.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{4.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathclose% +\pgfusepath{}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetmiterjoin% +\definecolor{currentfill}{rgb}{1.000000,1.000000,1.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.000000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetstrokeopacity{0.000000}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.750000in}{0.500000in}}% +\pgfpathlineto{\pgfqpoint{5.400000in}{0.500000in}}% +\pgfpathlineto{\pgfqpoint{5.400000in}{3.520000in}}% +\pgfpathlineto{\pgfqpoint{0.750000in}{3.520000in}}% +\pgfpathlineto{\pgfqpoint{0.750000in}{0.500000in}}% +\pgfpathclose% +\pgfusepath{fill}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.918664in}{0.500000in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.918664in,y=0.402778in,,top]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 0.0}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{1.772658in}{0.500000in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=1.772658in,y=0.402778in,,top]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 0.2}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{2.626653in}{0.500000in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=2.626653in,y=0.402778in,,top]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 0.4}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{3.480647in}{0.500000in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=3.480647in,y=0.402778in,,top]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 0.6}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{4.334642in}{0.500000in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=4.334642in,y=0.402778in,,top]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 0.8}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{0.000000in}{-0.048611in}}{\pgfqpoint{0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{0.000000in}{-0.048611in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{5.188636in}{0.500000in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=5.188636in,y=0.402778in,,top]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 1.0}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.750000in}{0.637238in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.235508in, y=0.584477in, left, base]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont \ensuremath{-}1.00}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.750000in}{0.980424in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.235508in, y=0.927663in, left, base]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont \ensuremath{-}0.75}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.750000in}{1.323611in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.235508in, y=1.270849in, left, base]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont \ensuremath{-}0.50}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.750000in}{1.666797in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.235508in, y=1.614035in, left, base]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont \ensuremath{-}0.25}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.750000in}{2.009983in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.343533in, y=1.957221in, left, base]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 0.00}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.750000in}{2.353169in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.343533in, y=2.300407in, left, base]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 0.25}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.750000in}{2.696355in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.343533in, y=2.643594in, left, base]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 0.50}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.750000in}{3.039541in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.343533in, y=2.986780in, left, base]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 0.75}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetbuttcap% +\pgfsetroundjoin% +\definecolor{currentfill}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetfillcolor{currentfill}% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfsys@defobject{currentmarker}{\pgfqpoint{-0.048611in}{0.000000in}}{\pgfqpoint{-0.000000in}{0.000000in}}{% +\pgfpathmoveto{\pgfqpoint{-0.000000in}{0.000000in}}% +\pgfpathlineto{\pgfqpoint{-0.048611in}{0.000000in}}% +\pgfusepath{stroke,fill}% +}% +\begin{pgfscope}% +\pgfsys@transformshift{0.750000in}{3.382727in}% +\pgfsys@useobject{currentmarker}{}% +\end{pgfscope}% +\end{pgfscope}% +\begin{pgfscope}% +\definecolor{textcolor}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{textcolor}% +\pgfsetfillcolor{textcolor}% +\pgftext[x=0.343533in, y=3.329966in, left, base]{\color{textcolor}\sffamily\fontsize{10.000000}{12.000000}\selectfont 1.00}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.750000in}{0.500000in}}{\pgfqpoint{4.650000in}{3.020000in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{1.505625pt}% +\definecolor{currentstroke}{rgb}{0.121569,0.466667,0.705882}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.961364in}{2.696355in}}% +\pgfpathlineto{\pgfqpoint{2.373982in}{2.696355in}}% +\pgfpathlineto{\pgfqpoint{3.077645in}{3.382727in}}% +\pgfpathlineto{\pgfqpoint{5.188636in}{3.382727in}}% +\pgfpathlineto{\pgfqpoint{5.188636in}{3.382727in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfpathrectangle{\pgfqpoint{0.750000in}{0.500000in}}{\pgfqpoint{4.650000in}{3.020000in}}% +\pgfusepath{clip}% +\pgfsetrectcap% +\pgfsetroundjoin% +\pgfsetlinewidth{1.505625pt}% +\definecolor{currentstroke}{rgb}{1.000000,0.498039,0.054902}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.961364in}{2.222083in}}% +\pgfpathlineto{\pgfqpoint{0.993108in}{2.367402in}}% +\pgfpathlineto{\pgfqpoint{1.019561in}{2.473982in}}% +\pgfpathlineto{\pgfqpoint{1.040724in}{2.546802in}}% +\pgfpathlineto{\pgfqpoint{1.056596in}{2.592979in}}% +\pgfpathlineto{\pgfqpoint{1.072468in}{2.631215in}}% +\pgfpathlineto{\pgfqpoint{1.088341in}{2.660988in}}% +\pgfpathlineto{\pgfqpoint{1.098922in}{2.675931in}}% +\pgfpathlineto{\pgfqpoint{1.109503in}{2.686839in}}% +\pgfpathlineto{\pgfqpoint{1.120085in}{2.693647in}}% +\pgfpathlineto{\pgfqpoint{1.130666in}{2.696313in}}% +\pgfpathlineto{\pgfqpoint{1.141248in}{2.694822in}}% +\pgfpathlineto{\pgfqpoint{1.151829in}{2.689182in}}% +\pgfpathlineto{\pgfqpoint{1.162410in}{2.679428in}}% +\pgfpathlineto{\pgfqpoint{1.172992in}{2.665619in}}% +\pgfpathlineto{\pgfqpoint{1.183573in}{2.647837in}}% +\pgfpathlineto{\pgfqpoint{1.199445in}{2.613960in}}% +\pgfpathlineto{\pgfqpoint{1.215317in}{2.571856in}}% +\pgfpathlineto{\pgfqpoint{1.231190in}{2.522098in}}% +\pgfpathlineto{\pgfqpoint{1.252352in}{2.445035in}}% +\pgfpathlineto{\pgfqpoint{1.278806in}{2.334146in}}% +\pgfpathlineto{\pgfqpoint{1.310550in}{2.185325in}}% +\pgfpathlineto{\pgfqpoint{1.421655in}{1.645905in}}% +\pgfpathlineto{\pgfqpoint{1.448108in}{1.540247in}}% +\pgfpathlineto{\pgfqpoint{1.469271in}{1.468321in}}% +\pgfpathlineto{\pgfqpoint{1.485143in}{1.422894in}}% +\pgfpathlineto{\pgfqpoint{1.501015in}{1.385464in}}% +\pgfpathlineto{\pgfqpoint{1.516888in}{1.356540in}}% +\pgfpathlineto{\pgfqpoint{1.527469in}{1.342183in}}% +\pgfpathlineto{\pgfqpoint{1.538050in}{1.331872in}}% +\pgfpathlineto{\pgfqpoint{1.548632in}{1.325669in}}% +\pgfpathlineto{\pgfqpoint{1.559213in}{1.323611in}}% +\pgfpathlineto{\pgfqpoint{1.569795in}{1.325711in}}% +\pgfpathlineto{\pgfqpoint{1.580376in}{1.331956in}}% +\pgfpathlineto{\pgfqpoint{1.590957in}{1.342308in}}% +\pgfpathlineto{\pgfqpoint{1.601539in}{1.356705in}}% +\pgfpathlineto{\pgfqpoint{1.617411in}{1.385688in}}% +\pgfpathlineto{\pgfqpoint{1.633283in}{1.423174in}}% +\pgfpathlineto{\pgfqpoint{1.649155in}{1.468653in}}% +\pgfpathlineto{\pgfqpoint{1.670318in}{1.540640in}}% +\pgfpathlineto{\pgfqpoint{1.691481in}{1.623984in}}% +\pgfpathlineto{\pgfqpoint{1.717934in}{1.741037in}}% +\pgfpathlineto{\pgfqpoint{1.754969in}{1.920906in}}% +\pgfpathlineto{\pgfqpoint{1.829039in}{2.286606in}}% +\pgfpathlineto{\pgfqpoint{1.855493in}{2.402871in}}% +\pgfpathlineto{\pgfqpoint{1.876655in}{2.485395in}}% +\pgfpathlineto{\pgfqpoint{1.897818in}{2.556416in}}% +\pgfpathlineto{\pgfqpoint{1.913690in}{2.601088in}}% +\pgfpathlineto{\pgfqpoint{1.929563in}{2.637708in}}% +\pgfpathlineto{\pgfqpoint{1.945435in}{2.665778in}}% +\pgfpathlineto{\pgfqpoint{1.956016in}{2.679547in}}% +\pgfpathlineto{\pgfqpoint{1.966597in}{2.689260in}}% +\pgfpathlineto{\pgfqpoint{1.977179in}{2.694858in}}% +\pgfpathlineto{\pgfqpoint{1.987760in}{2.696307in}}% +\pgfpathlineto{\pgfqpoint{1.998342in}{2.693599in}}% +\pgfpathlineto{\pgfqpoint{2.008923in}{2.686749in}}% +\pgfpathlineto{\pgfqpoint{2.019504in}{2.675800in}}% +\pgfpathlineto{\pgfqpoint{2.030086in}{2.660817in}}% +\pgfpathlineto{\pgfqpoint{2.045958in}{2.630985in}}% +\pgfpathlineto{\pgfqpoint{2.061830in}{2.592694in}}% +\pgfpathlineto{\pgfqpoint{2.077702in}{2.546466in}}% +\pgfpathlineto{\pgfqpoint{2.098865in}{2.473584in}}% +\pgfpathlineto{\pgfqpoint{2.120028in}{2.389486in}}% +\pgfpathlineto{\pgfqpoint{2.146481in}{2.271711in}}% +\pgfpathlineto{\pgfqpoint{2.183516in}{2.091294in}}% +\pgfpathlineto{\pgfqpoint{2.257586in}{1.726215in}}% +\pgfpathlineto{\pgfqpoint{2.284040in}{1.610703in}}% +\pgfpathlineto{\pgfqpoint{2.305203in}{1.528957in}}% +\pgfpathlineto{\pgfqpoint{2.326365in}{1.458849in}}% +\pgfpathlineto{\pgfqpoint{2.342237in}{1.414938in}}% +\pgfpathlineto{\pgfqpoint{2.358110in}{1.379133in}}% +\pgfpathlineto{\pgfqpoint{2.400435in}{1.300923in}}% +\pgfpathlineto{\pgfqpoint{2.411017in}{1.287575in}}% +\pgfpathlineto{\pgfqpoint{2.421598in}{1.278578in}}% +\pgfpathlineto{\pgfqpoint{2.432179in}{1.274111in}}% +\pgfpathlineto{\pgfqpoint{2.442761in}{1.274326in}}% +\pgfpathlineto{\pgfqpoint{2.453342in}{1.279345in}}% +\pgfpathlineto{\pgfqpoint{2.463924in}{1.289257in}}% +\pgfpathlineto{\pgfqpoint{2.474505in}{1.304122in}}% +\pgfpathlineto{\pgfqpoint{2.485086in}{1.323962in}}% +\pgfpathlineto{\pgfqpoint{2.500959in}{1.363022in}}% +\pgfpathlineto{\pgfqpoint{2.516831in}{1.413067in}}% +\pgfpathlineto{\pgfqpoint{2.532703in}{1.473735in}}% +\pgfpathlineto{\pgfqpoint{2.553866in}{1.570194in}}% +\pgfpathlineto{\pgfqpoint{2.575028in}{1.682799in}}% +\pgfpathlineto{\pgfqpoint{2.601482in}{1.842735in}}% +\pgfpathlineto{\pgfqpoint{2.633226in}{2.055389in}}% +\pgfpathlineto{\pgfqpoint{2.728459in}{2.712794in}}% +\pgfpathlineto{\pgfqpoint{2.754912in}{2.866609in}}% +\pgfpathlineto{\pgfqpoint{2.776075in}{2.970913in}}% +\pgfpathlineto{\pgfqpoint{2.791947in}{3.035961in}}% +\pgfpathlineto{\pgfqpoint{2.807819in}{3.088287in}}% +\pgfpathlineto{\pgfqpoint{2.818401in}{3.115544in}}% +\pgfpathlineto{\pgfqpoint{2.828982in}{3.136361in}}% +\pgfpathlineto{\pgfqpoint{2.839564in}{3.150485in}}% +\pgfpathlineto{\pgfqpoint{2.850145in}{3.157708in}}% +\pgfpathlineto{\pgfqpoint{2.855436in}{3.158677in}}% +\pgfpathlineto{\pgfqpoint{2.860726in}{3.157860in}}% +\pgfpathlineto{\pgfqpoint{2.866017in}{3.155244in}}% +\pgfpathlineto{\pgfqpoint{2.876599in}{3.144569in}}% +\pgfpathlineto{\pgfqpoint{2.887180in}{3.126596in}}% +\pgfpathlineto{\pgfqpoint{2.897761in}{3.101314in}}% +\pgfpathlineto{\pgfqpoint{2.908343in}{3.068761in}}% +\pgfpathlineto{\pgfqpoint{2.924215in}{3.006498in}}% +\pgfpathlineto{\pgfqpoint{2.940087in}{2.928568in}}% +\pgfpathlineto{\pgfqpoint{2.955959in}{2.835706in}}% +\pgfpathlineto{\pgfqpoint{2.977122in}{2.690371in}}% +\pgfpathlineto{\pgfqpoint{2.998285in}{2.523160in}}% +\pgfpathlineto{\pgfqpoint{3.024738in}{2.288895in}}% +\pgfpathlineto{\pgfqpoint{3.061773in}{1.928914in}}% +\pgfpathlineto{\pgfqpoint{3.109390in}{1.462671in}}% +\pgfpathlineto{\pgfqpoint{3.135843in}{1.229526in}}% +\pgfpathlineto{\pgfqpoint{3.157006in}{1.063841in}}% +\pgfpathlineto{\pgfqpoint{3.178169in}{0.921048in}}% +\pgfpathlineto{\pgfqpoint{3.194041in}{0.831078in}}% +\pgfpathlineto{\pgfqpoint{3.209913in}{0.757165in}}% +\pgfpathlineto{\pgfqpoint{3.225785in}{0.700319in}}% +\pgfpathlineto{\pgfqpoint{3.236366in}{0.672294in}}% +\pgfpathlineto{\pgfqpoint{3.246948in}{0.652372in}}% +\pgfpathlineto{\pgfqpoint{3.257529in}{0.640675in}}% +\pgfpathlineto{\pgfqpoint{3.262820in}{0.637934in}}% +\pgfpathlineto{\pgfqpoint{3.268111in}{0.637273in}}% +\pgfpathlineto{\pgfqpoint{3.273401in}{0.638691in}}% +\pgfpathlineto{\pgfqpoint{3.278692in}{0.642186in}}% +\pgfpathlineto{\pgfqpoint{3.289274in}{0.655385in}}% +\pgfpathlineto{\pgfqpoint{3.299855in}{0.676791in}}% +\pgfpathlineto{\pgfqpoint{3.310436in}{0.706272in}}% +\pgfpathlineto{\pgfqpoint{3.321018in}{0.743651in}}% +\pgfpathlineto{\pgfqpoint{3.336890in}{0.814020in}}% +\pgfpathlineto{\pgfqpoint{3.352762in}{0.900680in}}% +\pgfpathlineto{\pgfqpoint{3.368634in}{1.002450in}}% +\pgfpathlineto{\pgfqpoint{3.389797in}{1.159225in}}% +\pgfpathlineto{\pgfqpoint{3.416250in}{1.383646in}}% +\pgfpathlineto{\pgfqpoint{3.447995in}{1.683359in}}% +\pgfpathlineto{\pgfqpoint{3.553809in}{2.713731in}}% +\pgfpathlineto{\pgfqpoint{3.580262in}{2.928394in}}% +\pgfpathlineto{\pgfqpoint{3.601425in}{3.075502in}}% +\pgfpathlineto{\pgfqpoint{3.617297in}{3.169087in}}% +\pgfpathlineto{\pgfqpoint{3.633169in}{3.246883in}}% +\pgfpathlineto{\pgfqpoint{3.649041in}{3.307831in}}% +\pgfpathlineto{\pgfqpoint{3.659623in}{3.338682in}}% +\pgfpathlineto{\pgfqpoint{3.670204in}{3.361485in}}% +\pgfpathlineto{\pgfqpoint{3.680786in}{3.376101in}}% +\pgfpathlineto{\pgfqpoint{3.686076in}{3.380309in}}% +\pgfpathlineto{\pgfqpoint{3.691367in}{3.382440in}}% +\pgfpathlineto{\pgfqpoint{3.696658in}{3.382493in}}% +\pgfpathlineto{\pgfqpoint{3.701948in}{3.380466in}}% +\pgfpathlineto{\pgfqpoint{3.707239in}{3.376363in}}% +\pgfpathlineto{\pgfqpoint{3.717821in}{3.361955in}}% +\pgfpathlineto{\pgfqpoint{3.728402in}{3.339358in}}% +\pgfpathlineto{\pgfqpoint{3.738983in}{3.308708in}}% +\pgfpathlineto{\pgfqpoint{3.749565in}{3.270190in}}% +\pgfpathlineto{\pgfqpoint{3.765437in}{3.198184in}}% +\pgfpathlineto{\pgfqpoint{3.781309in}{3.109994in}}% +\pgfpathlineto{\pgfqpoint{3.802472in}{2.969336in}}% +\pgfpathlineto{\pgfqpoint{3.823635in}{2.805466in}}% +\pgfpathlineto{\pgfqpoint{3.850088in}{2.574075in}}% +\pgfpathlineto{\pgfqpoint{3.887123in}{2.216460in}}% +\pgfpathlineto{\pgfqpoint{3.966484in}{1.434106in}}% +\pgfpathlineto{\pgfqpoint{3.992937in}{1.203977in}}% +\pgfpathlineto{\pgfqpoint{4.014100in}{1.041407in}}% +\pgfpathlineto{\pgfqpoint{4.035263in}{0.902271in}}% +\pgfpathlineto{\pgfqpoint{4.051135in}{0.815347in}}% +\pgfpathlineto{\pgfqpoint{4.067007in}{0.744696in}}% +\pgfpathlineto{\pgfqpoint{4.082879in}{0.691279in}}% +\pgfpathlineto{\pgfqpoint{4.093461in}{0.665613in}}% +\pgfpathlineto{\pgfqpoint{4.104042in}{0.648090in}}% +\pgfpathlineto{\pgfqpoint{4.114623in}{0.638817in}}% +\pgfpathlineto{\pgfqpoint{4.119914in}{0.637294in}}% +\pgfpathlineto{\pgfqpoint{4.125205in}{0.637851in}}% +\pgfpathlineto{\pgfqpoint{4.130496in}{0.640487in}}% +\pgfpathlineto{\pgfqpoint{4.135786in}{0.645197in}}% +\pgfpathlineto{\pgfqpoint{4.146368in}{0.660811in}}% +\pgfpathlineto{\pgfqpoint{4.156949in}{0.684597in}}% +\pgfpathlineto{\pgfqpoint{4.167530in}{0.716413in}}% +\pgfpathlineto{\pgfqpoint{4.178112in}{0.756065in}}% +\pgfpathlineto{\pgfqpoint{4.193984in}{0.829697in}}% +\pgfpathlineto{\pgfqpoint{4.209856in}{0.919407in}}% +\pgfpathlineto{\pgfqpoint{4.231019in}{1.061888in}}% +\pgfpathlineto{\pgfqpoint{4.252182in}{1.227307in}}% +\pgfpathlineto{\pgfqpoint{4.278635in}{1.460197in}}% +\pgfpathlineto{\pgfqpoint{4.315670in}{1.818993in}}% +\pgfpathlineto{\pgfqpoint{4.395031in}{2.600031in}}% +\pgfpathlineto{\pgfqpoint{4.421484in}{2.828606in}}% +\pgfpathlineto{\pgfqpoint{4.442647in}{2.989587in}}% +\pgfpathlineto{\pgfqpoint{4.463810in}{3.126867in}}% +\pgfpathlineto{\pgfqpoint{4.479682in}{3.212251in}}% +\pgfpathlineto{\pgfqpoint{4.495554in}{3.281259in}}% +\pgfpathlineto{\pgfqpoint{4.506136in}{3.317692in}}% +\pgfpathlineto{\pgfqpoint{4.516717in}{3.346203in}}% +\pgfpathlineto{\pgfqpoint{4.527298in}{3.366619in}}% +\pgfpathlineto{\pgfqpoint{4.537880in}{3.378817in}}% +\pgfpathlineto{\pgfqpoint{4.543170in}{3.381810in}}% +\pgfpathlineto{\pgfqpoint{4.548461in}{3.382723in}}% +\pgfpathlineto{\pgfqpoint{4.553752in}{3.381558in}}% +\pgfpathlineto{\pgfqpoint{4.559043in}{3.378314in}}% +\pgfpathlineto{\pgfqpoint{4.569624in}{3.365615in}}% +\pgfpathlineto{\pgfqpoint{4.580205in}{3.344704in}}% +\pgfpathlineto{\pgfqpoint{4.590787in}{3.315707in}}% +\pgfpathlineto{\pgfqpoint{4.601368in}{3.278801in}}% +\pgfpathlineto{\pgfqpoint{4.617240in}{3.209112in}}% +\pgfpathlineto{\pgfqpoint{4.633112in}{3.123089in}}% +\pgfpathlineto{\pgfqpoint{4.648985in}{3.021904in}}% +\pgfpathlineto{\pgfqpoint{4.670147in}{2.865815in}}% +\pgfpathlineto{\pgfqpoint{4.696601in}{2.642076in}}% +\pgfpathlineto{\pgfqpoint{4.728345in}{2.342894in}}% +\pgfpathlineto{\pgfqpoint{4.834159in}{1.311803in}}% +\pgfpathlineto{\pgfqpoint{4.860613in}{1.096395in}}% +\pgfpathlineto{\pgfqpoint{4.881776in}{0.948559in}}% +\pgfpathlineto{\pgfqpoint{4.897648in}{0.854361in}}% +\pgfpathlineto{\pgfqpoint{4.913520in}{0.775905in}}% +\pgfpathlineto{\pgfqpoint{4.929392in}{0.714259in}}% +\pgfpathlineto{\pgfqpoint{4.939973in}{0.682925in}}% +\pgfpathlineto{\pgfqpoint{4.950555in}{0.659631in}}% +\pgfpathlineto{\pgfqpoint{4.961136in}{0.644516in}}% +\pgfpathlineto{\pgfqpoint{4.966427in}{0.640057in}}% +\pgfpathlineto{\pgfqpoint{4.971717in}{0.637673in}}% +\pgfpathlineto{\pgfqpoint{4.977008in}{0.637368in}}% +\pgfpathlineto{\pgfqpoint{4.982299in}{0.639143in}}% +\pgfpathlineto{\pgfqpoint{4.987590in}{0.642995in}}% +\pgfpathlineto{\pgfqpoint{4.998171in}{0.656903in}}% +\pgfpathlineto{\pgfqpoint{5.008752in}{0.679007in}}% +\pgfpathlineto{\pgfqpoint{5.019334in}{0.709174in}}% +\pgfpathlineto{\pgfqpoint{5.029915in}{0.747222in}}% +\pgfpathlineto{\pgfqpoint{5.045787in}{0.818551in}}% +\pgfpathlineto{\pgfqpoint{5.061659in}{0.906109in}}% +\pgfpathlineto{\pgfqpoint{5.082822in}{1.046008in}}% +\pgfpathlineto{\pgfqpoint{5.103985in}{1.209229in}}% +\pgfpathlineto{\pgfqpoint{5.130439in}{1.439992in}}% +\pgfpathlineto{\pgfqpoint{5.167474in}{1.797104in}}% +\pgfpathlineto{\pgfqpoint{5.188636in}{2.009983in}}% +\pgfpathlineto{\pgfqpoint{5.188636in}{2.009983in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetrectcap% +\pgfsetmiterjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.750000in}{0.500000in}}% +\pgfpathlineto{\pgfqpoint{0.750000in}{3.520000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetrectcap% +\pgfsetmiterjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{5.400000in}{0.500000in}}% +\pgfpathlineto{\pgfqpoint{5.400000in}{3.520000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetrectcap% +\pgfsetmiterjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.750000in}{0.500000in}}% +\pgfpathlineto{\pgfqpoint{5.400000in}{0.500000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\begin{pgfscope}% +\pgfsetrectcap% +\pgfsetmiterjoin% +\pgfsetlinewidth{0.803000pt}% +\definecolor{currentstroke}{rgb}{0.000000,0.000000,0.000000}% +\pgfsetstrokecolor{currentstroke}% +\pgfsetdash{}{0pt}% +\pgfpathmoveto{\pgfqpoint{0.750000in}{3.520000in}}% +\pgfpathlineto{\pgfqpoint{5.400000in}{3.520000in}}% +\pgfusepath{stroke}% +\end{pgfscope}% +\end{pgfpicture}% +\makeatother% +\endgroup% diff --git a/buch/papers/fm/Quellen/NaT_Skript_20210920.pdf b/buch/papers/fm/Quellen/NaT_Skript_20210920.pdf new file mode 100644 index 0000000..b9acc1f Binary files /dev/null and b/buch/papers/fm/Quellen/NaT_Skript_20210920.pdf differ diff --git a/buch/papers/fm/main.tex b/buch/papers/fm/main.tex index 731f56f..0c98427 100644 --- a/buch/papers/fm/main.tex +++ b/buch/papers/fm/main.tex @@ -14,20 +14,9 @@ Die Frequenzmodulation ist eine Modulation die man auch schon im alten Radio findet. Falls du dich an die Zeit erinnerst, konnte man zwischen \textit{FM-AM} Umschalten, dies bedeutete so viel wie: \textit{F}requenz-\textit{M}odulation und \textit{A}mplituden-\textit{M}odulation. -Durch die Modulation wird ein Nachrichtensignal \(m(t)\) auf ein Trägersignal (z.B. ein Sinus- oder Rechtecksignal) abgebildet (kombiniert). -Durch dieses Auftragen vom Nachrichtensignal \(m(t)\) kann das modulierte Signal in einem gewünschten Frequenzbereich übertragen werden. -Der ursprünglich Frequenzbereich des Nachrichtensignal \(m(t)\) erstreckt sich typischerweise von 0 Hz bis zur Bandbreite \(B_m\). -\newline -Beim Empfänger wird dann durch Demodulation das ursprüngliche Nachrichtensignal \(m(t)\) so originalgetreu wie möglich zurückgewonnen. -\newline -Beim Trägersignal \(x_c(t)\) handelt es sich um ein informationsloses Hilfssignal. -Durch die Modulation mit dem Nachrichtensignal \(m(t)\) wird es zum modulierten zu übertragenden Signal. -Für alle Erklärungen wird ein sinusförmiges Trägersignal benutzt, jedoch kann auch ein Rechtecksignal, -welches Digital einfach umzusetzten ist, -genauso als Trägersignal genutzt werden kann. -Zuerst wird erklärt was \textit{FM-AM} ist, danach wie sich diese im Frequenzspektrum verhalten. -Erst dann erklär ich dir wie die Besselfunktion mit der Frequenzmodulation( acro?) zusammenhängt. -Nun zur Modulation im nächsten Abschnitt.\cite{fm:NAT} +Um das Thema einwenig einzuschränken werde ich leider nichts über die Vertiefte, (Physikalische) zusammenhänge oder die Demodulation aufzeigen. +Dieses Kapitel soll nurdie Frequenzmodulation und ihren zusammenhang mit der Besselfunktion erklären. +Aber zuerst einmal zur Modulation selbst, wie funktioniert diese Mathematisch. \input{papers/fm/00_modulation.tex} diff --git a/buch/papers/kreismembran/Makefile b/buch/papers/kreismembran/Makefile index ce3c89f..a13f2cf 100644 --- a/buch/papers/kreismembran/Makefile +++ b/buch/papers/kreismembran/Makefile @@ -4,6 +4,6 @@ # (c) 2020 Prof Dr Andreas Mueller # -images: - @echo "no images to be created in kreismembran" +images/TikzSaite.pdf: images/TikzSaite.tex + cd images && pdflatex TikzSaite.tex diff --git a/buch/papers/kreismembran/images/TikzSaite.pdf b/buch/papers/kreismembran/images/TikzSaite.pdf new file mode 100644 index 0000000..f95ceb9 Binary files /dev/null and b/buch/papers/kreismembran/images/TikzSaite.pdf differ diff --git a/buch/papers/kreismembran/images/TikzSaite.tex b/buch/papers/kreismembran/images/TikzSaite.tex new file mode 100644 index 0000000..bf3d8f6 --- /dev/null +++ b/buch/papers/kreismembran/images/TikzSaite.tex @@ -0,0 +1,57 @@ +% vim: ts=2 sw=2 et : +\documentclass[tikz, border=2mm]{standalone} + +\usepackage{times} +\usepackage{txfonts} + +\begin{document} + \begin{tikzpicture}[ + axis/.style = {very thick, -latex}, + axis tick/.style = { + draw, draw = black, fill = black, rectangle, + inner sep = 0pt, + minimum height = 2mm, + minimum width = 1pt, + }, + string/.style = { + ultra thick, draw = black, + }, + string end/.style = { + string, circle, fill = gray, + inner sep = 0pt, minimum size = 1mm, + }, + force/.style = { + very thick, draw = gray, -latex, + }, + ] + + % axes + \draw[axis] (0, 0) -- (8cm, 0) node[right] {$x$}; + \draw[axis] (0, 0) -- (0, 5cm) node[above] {$u(x, t)$}; + + % axes ticks + \node[axis tick, label = {-90:$x_0$}] at (2cm, 0) {}; + \node[axis tick, label = {-90:$x_0 + dx$}] at (6cm, 0) {}; + + % string + \coordinate (A) at (2cm, 2cm); + \coordinate (B) at (6cm, 4cm); + + \draw[string] (A) to[out = 40, in = 200] (B); + + \draw[force] (A) -- ++(220:15mm) node[gray, below right] {$T_1$}; + \draw[force] (B) -- ++(20:15mm) node[gray, above left] {$T_2$}; + + \draw[dashed, gray, thick] (A) -- ++(-15mm, 0); + \draw[gray, thick] (A) ++ (-7mm,0) arc (180:220:7mm) + node[midway, left] {$\alpha$}; + + \draw[dashed, gray, thick] (B) -- ++(15mm, 0); + \draw[gray, thick] (B) ++ (7mm,0) arc (0:20:7mm) + node[pos = 0, below] {$\beta$}; + + \node[string end, label={110:$P_1$}] at (A) {}; + \node[string end, label={110:$P_2$}] at (B) {}; + + \end{tikzpicture} +\end{document} diff --git a/buch/papers/kreismembran/references.bib b/buch/papers/kreismembran/references.bib index 3d9d0c1..65173f8 100644 --- a/buch/papers/kreismembran/references.bib +++ b/buch/papers/kreismembran/references.bib @@ -89,4 +89,10 @@ type = {Dissertation}, author = {{Eric John Ruggiero Doctor of Philosophy In Mechanical Engineering}}, date = {2005}, +} + +@online{noauthor_laplace_nodate, + title = {Laplace Transform of Bessel Function of the First Kind of Order Zero - {ProofWiki}}, + url = {https://proofwiki.org/wiki/Laplace_Transform_of_Bessel_Function_of_the_First_Kind_of_Order_Zero}, + urldate = {2022-08-15}, } \ No newline at end of file diff --git a/buch/papers/kreismembran/teil0.tex b/buch/papers/kreismembran/teil0.tex index c6dac06..e962aab 100644 --- a/buch/papers/kreismembran/teil0.tex +++ b/buch/papers/kreismembran/teil0.tex @@ -7,9 +7,9 @@ \rhead{Membran} Eine Membran oder selten ein Schwingblatt ist laut Duden \cite{kreismembran:Duden:Membran} ein ``dünnes Blättchen aus Metall, Papier o. Ä., das durch seine Schwingungsfähigkeit geeignet ist, Schallwellen zu übertragen \dots''. Ein dünnes Blättchen aus Metall zeig jedoch nicht die selben dynamischen Eigenschaften wie ein gespanntes Stück Papier. -Beschreibt man das dynamische Verhalten, muss zwischen einer dünnen Platte und einer Membrane unterschieden werden \cite{kreismembran:membrane_vs_thin_plate}. -Eine dünne Platte zum Beispiel aus Metall, wirkt selbst entgegen ihrer Deformation sobald sie gekrümmt wird. -Eine Membran auf der anderen Seite besteht aus einem Material, welches sich ohne Kraftaufwand verbiegen lässt wie zum Beispiel Papier. +Beschreibt man das dynamische Verhalten, muss zwischen einer dünnen Platte und einer Membran unterschieden werden \cite{kreismembran:membrane_vs_thin_plate}. +Eine dünne Platte zum Beispiel aus Metall, wirkt selbst entgegen ihrer Deformation, sobald sie gekrümmt wird. +Eine Membran auf der anderen Seite besteht aus einem Material, welches sich ohne Kraftaufwand verbiegen lässt, wie zum Beispiel Papier. Bevor Papier als schwingende Membran betrachtet werden kann, wird jedoch noch eine Spannung $ T $ benötigt, welche das Material daran hindert, aus der Ruhelage gebracht zu werden. Ein geläufiges Beispiel einer Kreismembran ist eine runde Trommel. @@ -28,11 +28,11 @@ Das untersuchte Modell erfüllt folgende Eigenschaften: Durch die konstante Elastizität ist die ganze Membran unter gleichmässiger Spannung $ T $. \item Die Membran ist perfekt flexibel. Damit ist gemeint, dass die Membran ohne Kraftaufwand verbogen werden kann. - Die Membran ist dadurch nicht allein stehend schwingfähig, hierzu muss sie gespannt werden mit einer Kraft $ T $. + Die Membran ist dadurch nicht allein stehend schwingfähig, hierzu muss sie mit einer Kraft $ T $ gespannt werden. \item Die Membran kann sich nur in Richtung ihrer Normalen in kleinem Ausmass auslenken. Auslenkungen in der Ebene der Membran sind nicht möglich. \item Die Membran erfährt keine Art von Dämpfung. - Die Membran wird also nicht durch ihr umliegendes Medium abgebremst noch erfährt sie Wärmeverluste durch Deformation. + Die Membran wird also nicht durch ihr umliegendes Medium abgebremst noch erfährt sie Reibungsverluste durch Deformation. \end{enumerate} @@ -42,7 +42,8 @@ Die Verbindung zwischen Membran und Saite ist intuitiv ersichtlich, stellt man s \begin{figure} \begin{center} - \includegraphics[width=5cm,angle=-90]{papers/kreismembran/images/Saite.pdf} + % \includegraphics[width=5cm,angle=-90]{papers/kreismembran/images/Saite.pdf} + \includegraphics[]{papers/kreismembran/images/TikzSaite.pdf} \caption{Infinitesimales Stück einer Saite} \label{kreismembran:im:Saite} \end{center} @@ -64,7 +65,7 @@ befolgen. Die senkrecht wirkenden Kräfte werden mit $ T_1 $ und $ T_2 $ ausgedr \begin{equation*} T_2 \sin \beta - T_1 \sin \alpha = \rho dx \frac{\partial^2 u}{\partial t^2} . \end{equation*} -Die Gleichung wird durch $ T $ dividiert, wobei $ T $ nach \ref{kreismembran:eq:no_translation} geschickt gewählt wird. Somit kann +Die Gleichung wird durch $ T $ dividiert, wobei $ T $ nach \eqref{kreismembran:eq:no_translation} geschickt gewählt wird. Somit kann \begin{equation*} \frac{T_2 \sin \beta}{T_2 \cos \beta} - \frac{T_1 \sin \alpha}{T_1 \cos \alpha} = \frac{\rho dx}{T} \frac{\partial^2 u}{\partial t^2} \end{equation*} @@ -91,4 +92,4 @@ Damit resultiert die in der Literatur gebräuchliche Form \frac{1}{c^2}\frac{\partial^2u}{\partial t^2} = \Delta u. \end{equation} In dieser Form ist die Gleichung auch gültig für eine Membran. -Für den Fall einer Membran muss lediglich der Laplace-Operator $\Delta$ in zwei Dimensionen gerechnet werden. \ No newline at end of file +Für den Fall einer Membran muss lediglich der Laplace-Operator $\Delta$ in zwei Dimensionen verwendet werden. \ No newline at end of file diff --git a/buch/papers/kreismembran/teil1.tex b/buch/papers/kreismembran/teil1.tex index f6ba7d1..a9b2fad 100644 --- a/buch/papers/kreismembran/teil1.tex +++ b/buch/papers/kreismembran/teil1.tex @@ -7,7 +7,7 @@ \section{Lösungsmethode 1: Separationsmethode  \label{kreismembran:section:teil1}} \rhead{Lösungsmethode 1: Separationsmethode} -An diesem Punkt bleibt also nur noch die Lösung der partiellen Differentialgleichung. In diesem Abschnitt wird sie mit Hilfe der Separationsmethode gelöst. +An diesem Punkt bleibt also ``nur'' noch die Lösung der partiellen Differentialgleichung. In diesem Abschnitt wird sie mit Hilfe der Separationsmethode gelöst. \subsection{Aufgabestellung\label{sub:aufgabestellung}} Wie im vorherigen Abschnitt gezeigt, lautet die partielle Differentialgleichung, die die Schwingungen einer Membran beschreibt: @@ -30,7 +30,7 @@ Da es sich um eine Kreisscheibe handelt, werden Polarkoordinaten verwendet, so d ergibt. Es wird eine runde elastische Membran berücksichtigt, die das Gebiet $\Omega$ abdeckt und am Rand $\Gamma$ befestigt ist. -Es wirken keine äusseren Kräfte. Es handelt sich somit von einer kreisförmligen eingespannten homogenen schwingenden Membran nach den Annahmen von \ref{kreimembran:annahmen}. +Es wirken keine äusseren Kräfte. Es handelt sich somit von einer kreisförmligen eingespannten homogenen schwingenden Membran nach den Annahmen von Abschnitt \ref{kreimembran:annahmen}. Daher ist die Membranabweichung im Punkt $(r,\varphi)$ $\in$ $\overline{\rm \Omega}$ zum Zeitpunkt $t$: \begin{align*} @@ -50,9 +50,9 @@ Nun wird das in Abschnitt \ref{sub:aufgabestellung} vorgestellte Problem mit Hil \subsubsection{Ansatz der Separation der Variablen\label{subsub:ansatz_separation}} Hierfür wird folgenden Ansatz gemacht: \begin{equation*} - u(r,\varphi, t) = F(r)G(\varphi)T(t) + u(r,\varphi, t) = F(r)G(\varphi)T(t). \end{equation*} -Dank der Randbedingungen kann gefordert werden, dass $F(R)=0$ ist, und natürlich, dass $G(\varphi)$ $2\pi$ periodisch ist. Eingesetzt in der Differenzialgleichung ergibt sich: +Dank der Randbedingungen kann gefordert werden, dass $F(R)=0$ ist, und natürlich, dass $G(\varphi)$ $2\pi$-periodisch ist. Eingesetzt in der Differenzialgleichung ergibt sich nach Division durch $u$: \begin{equation*} \frac{1}{c^2}\frac{T''(t)}{T(t)}=-\kappa^2=\frac{F''(r)}{F(r)}+\frac{1}{r}\frac{F'(r)}{F(r)}+\frac{1}{r^2}\frac{G''(\varphi)}{G(\varphi)}. \end{equation*} @@ -71,9 +71,9 @@ In der zweiten Gleichung hängt die linke Seite nur von $r$ ab, während die rec \end{align*} \subsubsection{Lösung für $G(\varphi)$\label{subsub:lösung_G}} -Da für die zweite Gleichung Lösungen von Schwingungen erwartet werden, für die $G''(\varphi)=-\omega^2 G(\varphi)$ gilt, schreibt man die gemeinsame Konstante als $\nu=-\omega^2$, was die Formeln später vereinfacht. Also: +Da für die zweite Gleichung Lösungen von Schwingungen erwartet werden, für die $G''(\varphi)=-n^2 G(\varphi)$ gilt, schreibt man die gemeinsame Konstante als $\nu=-n^2$, was die Formeln später vereinfacht. $n$ muss auch eine ganze Zahl sein, weil $G(\varphi)$ sonst nicht $2\pi$-periodisch ist. Also: \begin{equation*} - G(\varphi) = C_n \cos(\nu\varphi) + D_n \sin(\nu\varphi) + G(\varphi) = C_n \cos(n\varphi) + D_n \sin(n\varphi) \label{eq:cos_sin_überlagerung} \end{equation*} @@ -85,17 +85,20 @@ Die Gleichung für $F$ hat die Gestalt (Verweis auf \label{buch:differentialglei \end{align} Wie bereits in Kapitel \ref{buch:differntialgleichungen:section:bessel} gezeigt, sind die Bessel-Funktionen \begin{equation*} - J_{\nu}(x) = r^\nu \displaystyle\sum_{m=0}^{\infty} \frac{(-1)^m x^{2m}}{2^{2m+\nu}m! \Gamma (\nu + m+1)} + J_{n}(x) = r^n \displaystyle\sum_{m=0}^{\infty} \frac{(-1)^m x^{2m}}{2^{2m+n}m! \Gamma (n + m+1)} \end{equation*} Lösungen der Besselschen Differenzialgleichung \begin{equation*} - x^2 y'' + xy' + (\kappa^2 - \nu^2)y = 0 + x^2 y'' + xy' + (\kappa^2 - n^2)y = 0 \end{equation*} Die Funktionen $F(r) = J_n(\kappa r)$ lösen die Differentialgleichung \eqref{eq:2nd_degree_PDE}. \subsubsection{Lösung für $T(t)$\label{subsub:lösung_T}} -Die Differenzialgleichung $T''(t) + c^2\kappa^2T(t) = 0$, wird auf ähnliche Weise gelöst wie $G(\varphi)$. - +Die Differenzialgleichung $T''(t) + c^2\kappa^2T(t) = 0$, wird auf ähnliche Weise gelöst wie $G(\varphi)$. Um eine Einschränkung der möglichen Frequenzen zu erhalten und die Lösung als Reihe schreiben zu können, muss die folgende homogene Randbedingung definiert werden: +\begin{equation*} + u\big|_{\Gamma} = 0 \quad \text{für} \quad 0 \leq \varphi \leq 2\pi,\quad t \geq 0, +\end{equation*} +welche die $\kappa$ auf mögliche werte $\kappa_{mn}$ einschränkt. \subsubsection{Zusammenfassung der Lösungen\label{subsub:zusammenfassung_lösungen}} Durch Überlagerung aller Ergebnisse erhält man die Lösung \begin{align} @@ -120,5 +123,7 @@ für die Anzahl der Knotenlinien steht. Es gibt bestimmte Bereiche auf der Membr \label{buch:pde:kreis:fig:pauke}} \end{figure} - +\begin{center} + * \quad *\quad * +\end{center} An diesem Punkt stellte sich die Frage, ob es möglich wäre, die partielle Differentialgleichung mit einer anderen Methode als der der Trennung der Variablen zu lösen. Nach einer kurzen Recherche wurde festgestellt, dass eine weitere Methode die Transformationsmethode ist, genauer gesagt die Anwendung der Hankel-Transformation. Im nächsten Kapitel wird daher diese Integraltransformation vorgestellt und entwickelt, und es wird erläutert, warum sie für diese Art von Problem geeignet ist. diff --git a/buch/papers/kreismembran/teil2.tex b/buch/papers/kreismembran/teil2.tex index ec27bd3..4ceeb84 100644 --- a/buch/papers/kreismembran/teil2.tex +++ b/buch/papers/kreismembran/teil2.tex @@ -7,12 +7,12 @@ Hermann Hankel (1839--1873) war ein deutscher Mathematiker, der für seinen Beitrag zur mathematischen Analysis und insbesondere für die nach ihm benannte Transformation bekannt ist. Diese Transformation tritt bei der Untersuchung von Funktionen auf, die nur von der Entfernung des Ursprungs abhängen. -Er untersuchte auch Funktionen, jetzt Hankel- oder Bessel- Funktionen genannt, der dritten Art. +Er untersuchte auch Funktionen, jetzt Hankel- oder Bessel-Funktionen genannt, der dritten Art. Die Hankel-Transformation, die die Bessel-Funktion enthält, taucht natürlich bei achsensymmetrischen Problemen auf, die in zylindrischen Polarkoordinaten formuliert sind. In diesem Abschnitt werden die Theorie der Transformation und einige Eigenschaften der Grundoperationen erläutert. \subsubsection{Definition der Hankel-Transformation \label{subsub:hankel_tansformation}} -Wir führen die Definition der Hankel-Transformation \cite{lokenath_debnath_integral_2015} aus der zweidimensionalen Fourier-Transformation und ihrer Umkehrung ein, die durch: +Wir führen die Definition der Hankel-Transformation \cite{lokenath_debnath_integral_2015} aus der zweidimensionalen Fourier-Trans\-formation und ihrer Umkehrung ein, die durch: \begin{align} \mathscr{F}\{f(x,y)\} & = F(k,l)=\frac{1}{2\pi}\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}e^{-i( \bm{\kappa}\cdot \mathbf{r})}f(x,y) \; dx \; dy,\label{equation:fourier_transform}\\ \mathscr{F}^{-1}\{F(x,y)\} & = f(x,y)=\frac{1}{2\pi}\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}e^{i(\bm{\kappa}\cdot \mathbf{r})}F(k,l) \; dx \; dy \label{equation:inv_fourier_transform} @@ -49,13 +49,13 @@ wo $\tilde{f}_n(\kappa)$ ist die \textit{Hankel-Transformation} von $f(r)$ und i \subsubsection{Inverse Hankel-Transformation \label{subsub:inverse_hankel_tansformation}} Wie bei der Entwicklung der Hankel-Transformation können auch für die Umkehrformel Analogien zur Fourier-Transformation hergestellt werden. Vergleicht man die beiden Transformationen, so stellt man fest, dass sie sehr ähnlich sind, wenn man den Term $J_n(\kappa r)$ der Hankel-Transformation durch $e^{-i( \bm{\kappa}\cdot \mathbf{r})}$ der Fourier-Transformation ersetzt. Diese beide Funktionen sind orthogonal, und bei orthogonalen Matrizen genügt bekanntlich die Transponierung, um sie zu invertieren. Da das Skalarprodukt der Bessel-Funktionen jedoch nicht dasselbe ist wie das der Exponentialfunktionen, muss man durch $\kappa\; d\kappa$ statt nur durch $d\kappa$ integrieren, um die Umkehrfunktion zu erhalten. -Von \eqref{equation:hankel} also ist, die inverse \textit{Hankel-Transformation} so definiert: +Die inverse \textit{Hankel-Transformation} ist also als \begin{align} \mathscr{H}^{-1}_n\{\tilde{f}_n(\kappa)\}=f(r)=\int_{0}^{\infty}\kappa J_n(\kappa r) \tilde{f}_n(\kappa) \; d\kappa. \label{equation:inv_hankel} \end{align} +definiert. -Anstelle von $\tilde{f}_n(\kappa)$, wird häufig einfach $\tilde{f}(\kappa)$ für die Hankel-Transformation verwendet, indem die Ordnung angegeben wird. Die Integrale \eqref{equation:hankel} und \eqref{equation:inv_hankel} existieren für bestimmte grosse Klassen von Funktionen, die normalerweise in physikalischen Anwendungen vorkommen. Alternativ dazu kann die berühmte Hankel-Integralformel diff --git a/buch/papers/kreismembran/teil3.tex b/buch/papers/kreismembran/teil3.tex index a9dcd95..d143ec7 100644 --- a/buch/papers/kreismembran/teil3.tex +++ b/buch/papers/kreismembran/teil3.tex @@ -60,19 +60,23 @@ so dass $\tilde{g}(\kappa)\equiv 0$ und \tilde{f}(\kappa)=Aa\int_{0}^{\infty}r(a^2 + r^2)^{-\frac{1}{2}} J_0 (\kappa r) \; dr=\frac{Aa}{\kappa}e^{-a\kappa}. \end{equation*} -Aus der Laplace-Transformation und unter Verwendung der Skalierungseigenschaft ergibt sich, dass +\noindent Die formale Lösung \eqref{eq:formale_lösung} lautet also +\begin{align} + u(r,t)=Aa\int_{0}^{\infty}e^{-a\kappa} J_0(\kappa r)\cos(c\kappa t) \; dk=AaRe\int_{0}^{\infty}e^{-\kappa(a+ict)} J_0(\kappa r) \; dk. + \label{form_lösung2_step1} +\end{align} +\noindent Aus der Laplace-Transformation und unter Verwendung der Skalierungseigenschaft \cite{noauthor_laplace_nodate} ergibt sich, dass \begin{align*} - \int_{0}^{\infty}e^{-px} J_0(\kappa x) \; dx = \frac{1}{\sqrt{\kappa^2 + p^2}}. + \int_{0}^{\infty}e^{-px} J_0(\kappa x) \; dx = \frac{1}{\sqrt{\kappa^2 + p^2}}, \end{align*} -Die formale Lösung \eqref{eq:formale_lösung} lautet also -\begin{align*} - u(r,t)&=Aa\int_{0}^{\infty}e^{-a\kappa} J_0(\kappa r)\cos(c\kappa t) \; dk=AaRe\int_{0}^{\infty}e^{-\kappa(a+ict)} J_0(\kappa r) \; dk\\ - &=AaRe\left\{r^2+\left(a+ict\right)^2\right\}^{-\frac{1}{2}}. -\end{align*} +\noindent \eqref{form_lösung2_step1} kann somit vereinfacht werden in: +\begin{equation*} + u(r,t)=AaRe\left\{r^2+\left(a+ict\right)^2\right\}^{-\frac{1}{2}}. +\end{equation*} -Nimmt man jedoch die allgemeine Lösung durch Überlagerung, +\noindent Nimmt man jedoch die allgemeine Lösung durch Überlagerung, \begin{align} u(r, t) = \displaystyle\sum_{m=1}^{\infty} J_0 (k_{m}r)[a_{m}\cos(c \kappa_{m} t)+b_{m}\sin(c \kappa_{m} t)] @@ -84,6 +88,6 @@ kann man die Lösungsmethoden 1 und 2 vergleichen. \label{kreismembran:vergleich}} Bei der Analyse der Gleichungen \eqref{eq:lösung_endliche_generelle} und \eqref{eq:lösung_unendliche_generelle} fällt sofort auf, dass die Gleichung \eqref{eq:lösung_unendliche_generelle} nicht mehr von $m$ und $n$ abhängt, sondern nur noch von $n$ \cite{nishanth_p_vibrations_2018}. Das macht Sinn, denn $n$ beschreibt die Anzahl der Knotenlinien, welche unter der Annahme einer rotationssymmetrischen Lösung nicht vorhanden sein können. Tatsächlich werden $a_{m0}$, $b_{m0}$ und $\kappa_{m0}$ in $a_m$, $b_m$ bzw. $\kappa_m$ umbenannt. Die beiden Termen $\cos(n\varphi)$ und $\sin(n\varphi)$ verschwinden ebenfalls, da für $n=0$ der $\cos(n\varphi)$ gleich 1 und der $\sin(n \varphi)$ gleich 0 ist. -Die Funktion hängt also nicht mehr von der Besselfunktionen $n$-ter Ordnung ab, sondern nur von der nullter Ordnung. +Die Funktion hängt also nicht mehr von der Bessel-Funktionen $n$-ter Ordnung ab, sondern nur von der nullter Ordnung. diff --git a/buch/papers/kreismembran/teil4.tex b/buch/papers/kreismembran/teil4.tex index 01a6029..d6aa54f 100644 --- a/buch/papers/kreismembran/teil4.tex +++ b/buch/papers/kreismembran/teil4.tex @@ -8,13 +8,13 @@ Um numerisch das Verhalten einer Membran zu ermitteln, muss eine numerische Darstellung definiert werden. Die Membran wird hier in Form der Matrix $ U $ digitalisiert. -Jedes Element $ U_{ij} $ steh für die Auslenkung der Membran $ u(x,y,t) $ an der Stelle $ \{x,y\}=\{i,j\} $. -Zwischen benachbarten Elementen in der Matrix $ U $ liegt immer der Abstand $ dh $, eine Inkrementierung von $ i $ oder $ j $ entspricht somit einem Schritt in Richtung $ x $ oder $ y $ von Länge $ dh $ auf der Membran. -Die zeitliche Dimension wird in Form des Array $ U[] $ aus $ z \times U $ Matrizen dargestellt, wobei $ z $ der Anzahl Zeitschritten entspricht. -Das Element auf Zeile $ i $, Spalte $ j $ der $ w $-ten Matrix von $ U[] $ also $ U[w]_{ij} $ entspricht somit der Auslenkung $ u(i,j,w) $. +Jedes Element $ U_{ij} $ steht für die Auslenkung der Membran $ u(x,y,t) $ an der Stelle $ \{x,y\}=\{i,j\} $. +Zwischen benachbarten Elementen in der Matrix $ U $ liegt immer der Abstand $ dh $, eine Inkrementierung von $ i $ oder $ j $ ist somit einem Schritt in Richtung $ x $ oder $ y $ von Länge $ dh $ auf der Membran. +Die zeitliche Dimension wird in Form des Array $ U[] $ aus $ z \times U $ Matrizen dargestellt, wobei $ z $ die Anzahl von Zeitschritten ist. +Das Element auf Zeile $ i $, Spalte $ j $ der $ w $-ten Matrix von $ U[] $ also $ U[w]_{ij} $ ist somit die Auslenkung $ u(i,j,w) $. Da die DGL von zweiter Ordnung ist, reicht eine Zustandsvariabel pro Membran-Element nicht aus. Es wird neben der Auslenkung auch die Geschwindigkeit jedes Membran-Elementes benötigt um den Zustand eindeutig zu beschreiben. -Dazu existiert neben $ U[] $ ein analoger Array $ V[] $ welcher die Geschwindigkeiten aller Membran-Elementen repräsentiert. +Dazu existiert neben $ U[] $ ein analoger Array $ V[] $ welcher die Geschwindigkeiten aller Membran-Elemente repräsentiert. $ V[w]_{ij} $ entspricht also $ \dot{u}(i,j,w) $. Der Zustand einer Membran zum Zeitpunkt $ w $ wird mit $ X[w] $ beschrieben, was $ U[w] $ und $ V[w] $ beinhaltet. @@ -25,7 +25,7 @@ Die Folgeposition $ U[w+1] $ ergibt sich als \begin{equation} U[w+1] = U[w] + dt \cdot V[w], \end{equation} -also die Ausgangslage $ + $ die Strecke welche während des Zeitintervall mit der Geschwindigkeit des Elementes zurückgelegt wurde. +also die Ausgangslage plus die Strecke welche während des Zeitintervall mit der Geschwindigkeit des Elementes zurückgelegt wurde. Neben der Position muss auch die Geschwindigkeit aktualisiert werden. Analog zur Folgeposition wird \begin{equation*} @@ -40,7 +40,7 @@ Die Geschwindigkeit des Folgezustandes kann somit mit V[w+1] = V[w] + dt \cdot \Delta_h U \cdot c^2 \end{equation} berechnet werden. -Während $ c^2 $ lediglich eine Material spezifische Konstante ist, muss noch erläutert werden, wie der diskrete Laplace-Operator für $ \Delta_h u $ definiert ist. +Während $ c^2 $ lediglich eine Material spezifische Konstante ist, muss noch erläutert werden, wie der diskrete Laplace-Operator für $ \Delta_h u $ definiert ist. Dieses Verfahren wird Euler-Methode genannt. \subsection{Diskreter Laplace-Operator $\Delta_h$} Die diskrete Ableitung zweiter Ordnung kann mit Hilfe der Taylor-Reihen-Entwicklung als @@ -93,9 +93,9 @@ Der Folgezustand kann also mit den Gleichungen \label{kreismembran:eq:folge_V} V[w+1] &= (V[w] + dt \cdot \Delta_h u \cdot c^2)\odot M \end{align} -berechnet werden. +berechnet werden. Das Symbol $\odot$ steht hier für eine elementweise Matrixmultiplikation (Hadamard-Produkt) \subsubsection{Simulation} -Mit den gegebenen Gleichungen \ref{kreismembran:eq:folge_U} und \ref{kreismembran:eq:folge_V} das Verhalten der Membran mit einem Loop über das zu untersuchende Zeitintervall berechnet werden. +Mit den gegebenen Gleichungen \eqref{kreismembran:eq:folge_U} und \eqref{kreismembran:eq:folge_V} das Verhalten der Membran mit einem Loop über das zu untersuchende Zeitintervall berechnet werden. In der Abbildung \ref{kreismembran:im:simres_rund} sind Simulationsresultate zu sehen. Die erste Figur zeigt die Ausgangslage gefolgt von den Auslenkungen nach jeweils $ 50 $ weiteren Iterationsschritten. Es ist zu erkennen, wie sich die Störung vom Zentrum an den Rand ausbreitet. @@ -120,7 +120,7 @@ Erreicht die Störung den Rand, wird sie reflektiert und nähert sich dem Zentru Um eine unendlich grosse Membran zu simulieren, könnte der unpraktische Weg gewählt werden, die Matrix unendlich gross zu definieren, dies wird jedoch spätestens bei der numerischen Berechnung seine Probleme mit sich bringen. Etwas geeigneter ist es, die Matrix so gross wie möglich zu definieren, wie es die Kapazitäten erlauben. Wenn anschliessend nur das Verhalten im Zentrum, bei der Störung beobachtet wird, verhaltet sich die Membran wie eine unendliche. -Dies aber nur bis die Störung am Rand reflektiert wird und wieder das innere zu beobachtende Zentrum beeinflusst. +Dies aber nur bis die Störung am Rand reflektiert wird und wieder das Zentrum beeinflusst. Soll erst gar keine Reflexion entstehen, muss ein Absorber modelliert werden welcher die Störung möglichst ohne Reflexion aufnimmt. \subsubsection{Absorber} @@ -132,15 +132,15 @@ Der Spielraum welcher dem Absorber übrig bleibt ist die Art der Überganges. Bei der endlichen kreisförmigen Membran hat die Maske $M$ einen binären Übergang von Membran zu Rand bezweckt. Anstelle dieses abrupten Wechsels wird nun eine Maske definiert, welche graduell von Membran $1$ zu Rand-Element $0$ wechselt. Die Elemente werden auf Basis ihres Abstand $r$ zum Zentrum definiert. -Der Abstand entspricht +Der Abstand ist \begin{equation*} r(i,j) = \sqrt{|i-\frac{m}{2}|^2+|j-\frac{n}{2}|^2}, \end{equation*} -wobei $ m $ und $n$ den Dimensionen der Matrix entsprechen. -Für einen Stufenlosen Übergang werden die Elemente der Maske auf +wobei $ m $ und $n$ die Dimensionen der Matrix sind. +Für einen stufenlosen Übergang werden die Elemente der Maske auf \begin{align} - M_{ij} = \begin{cases} 1-e^{(r(i,j)-b)a} & \text{wenn $x > b$} \\ + M_{ij} = \begin{cases} 1-e^{(r(i,j)-b)a} & \text{$x > b$} \\ 0 & \text{sonst} \end{cases} \end{align} gesetzt. @@ -184,7 +184,7 @@ Die DGL \ref{kreismembran:Ausgang_DGL} welche simuliert wird geht jedoch von der \section{Schlusswort} Auch wenn ein physikalisches Verhalten bereits durch Annahmen und Annäherungen deutlich vereinfacht wird, bestehen auch dann noch eine Vielzahl von Lösungsansätzen. Lösungen einer unendlich grosse Membran scheinen fern der Realität zu sein, doch dies darf es im Sinne der Mathematik. -Und wer weis, für eine Ameise auf einem Trampolin ist eine unendliche Membran vielleicht eine ganz gute Annäherung. +Und wer weiss, für eine Ameise auf einem Trampolin ist eine unendliche Membran vielleicht eine ganz gute Annäherung. diff --git a/buch/papers/kugel/Makefile b/buch/papers/kugel/Makefile index f798a55..995206b 100644 --- a/buch/papers/kugel/Makefile +++ b/buch/papers/kugel/Makefile @@ -5,5 +5,6 @@ # images: - @echo "no images to be created in kugel" + $(MAKE) -C ./figures/povray/ + $(MAKE) -C ./figures/tikz/ diff --git a/buch/papers/kugel/figures/flux.pdf b/buch/papers/kugel/figures/flux.pdf new file mode 100644 index 0000000..6a87288 Binary files /dev/null and b/buch/papers/kugel/figures/flux.pdf differ diff --git a/buch/papers/kugel/figures/povray/Makefile b/buch/papers/kugel/figures/povray/Makefile new file mode 100644 index 0000000..4226dab --- /dev/null +++ b/buch/papers/kugel/figures/povray/Makefile @@ -0,0 +1,30 @@ +# +# Makefile -- build images +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +all: curvature.jpg spherecurve.jpg + +curvature.inc: curvgraph.m + octave curvgraph.m + +curvature.png: curvature.pov curvature.inc + povray +A0.1 +W1920 +H1080 +Ocurvature.png curvature.pov + +curvature.jpg: curvature.png + convert curvature.png -density 300 -units PixelsPerInch curvature.jpg + +spherecurve2.inc: spherecurve.m + octave spherecurve.m + +spherecurve.png: spherecurve.pov spherecurve.inc + povray +A0.1 +W1080 +H1080 +Ospherecurve.png spherecurve.pov + +spherecurve.jpg: spherecurve.png + convert spherecurve.png -density 300 -units PixelsPerInch spherecurve.jpg + +spherecurve: spherecurve.cpp + g++ -o spherecurve -g -Wall -O spherecurve.cpp + +spherecurve.inc: spherecurve + ./spherecurve diff --git a/buch/papers/kugel/figures/povray/curvature.jpg b/buch/papers/kugel/figures/povray/curvature.jpg new file mode 100644 index 0000000..6448966 Binary files /dev/null and b/buch/papers/kugel/figures/povray/curvature.jpg differ diff --git a/buch/papers/kugel/figures/povray/curvature.maxima b/buch/papers/kugel/figures/povray/curvature.maxima new file mode 100644 index 0000000..6313642 --- /dev/null +++ b/buch/papers/kugel/figures/povray/curvature.maxima @@ -0,0 +1,6 @@ + +f: exp(-r^2/sigma^2)/sigma; +laplacef: ratsimp(diff(r * diff(f,r), r) / r); +f: exp(-r^2/(2*sigma^2))/(sqrt(2)*sigma); +laplacef: ratsimp(diff(r * diff(f,r), r) / r); + diff --git a/buch/papers/kugel/figures/povray/curvature.png b/buch/papers/kugel/figures/povray/curvature.png new file mode 100644 index 0000000..20268f2 Binary files /dev/null and b/buch/papers/kugel/figures/povray/curvature.png differ diff --git a/buch/papers/kugel/figures/povray/curvature.pov b/buch/papers/kugel/figures/povray/curvature.pov new file mode 100644 index 0000000..3b15d77 --- /dev/null +++ b/buch/papers/kugel/figures/povray/curvature.pov @@ -0,0 +1,139 @@ +// +// curvature.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// + +#version 3.7; +#include "colors.inc" + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.09; + +camera { + location <10, 10, -40> + look_at <0, 0, 0> + right 16/9 * x * imagescale + up y * imagescale +} + +light_source { + <-10, 10, -40> color White + area_light <1,0,0> <0,0,1>, 10, 10 + adaptive 1 + jitter +} + +sky_sphere { + pigment { + color rgb<1,1,1> + } +} + +// +// draw an arrow from to with thickness with +// color +// +#macro arrow(from, to, arrowthickness, c) +#declare arrowdirection = vnormalize(to - from); +#declare arrowlength = vlength(to - from); +union { + sphere { + from, 1.1 * arrowthickness + } + cylinder { + from, + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + arrowthickness + } + cone { + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + 2 * arrowthickness, + to, + 0 + } + pigment { + color c + } + finish { + specular 0.9 + metallic + } +} +#end + +arrow(<-3.1,0,0>, <3.1,0,0>, 0.01, White) +arrow(<0,-1,0>, <0,1,0>, 0.01, White) +arrow(<0,0,-2.1>, <0,0,2.1>, 0.01, White) + +#include "curvature.inc" + +#declare sigma = 1; +#declare s = 1.4; +#declare N0 = 0.4; +#declare funktion = function(r) { + (exp(-r*r/(sigma*sigma)) / sigma + - + exp(-r*r/(2*sigma*sigma)) / (sqrt(2)*sigma)) / N0 +}; +#declare hypot = function(xx, yy) { sqrt(xx*xx+yy*yy) }; + +#declare Funktion = function(x,y) { funktion(hypot(x+s,y)) - funktion(hypot(x-s,y)) }; +#macro punkt(xx,yy) + +#end + +#declare griddiameter = 0.006; +union { + #declare xmin = -3; + #declare xmax = 3; + #declare ymin = -2; + #declare ymax = 2; + + + #declare xstep = 0.2; + #declare ystep = 0.02; + #declare xx = xmin; + #while (xx < xmax + xstep/2) + #declare yy = ymin; + #declare P = punkt(xx, yy); + #while (yy < ymax - ystep/2) + #declare yy = yy + ystep; + #declare Q = punkt(xx, yy); + sphere { P, griddiameter } + cylinder { P, Q, griddiameter } + #declare P = Q; + #end + sphere { P, griddiameter } + #declare xx = xx + xstep; + #end + + #declare xstep = 0.02; + #declare ystep = 0.2; + #declare yy = ymin; + #while (yy < ymax + ystep/2) + #declare xx = xmin; + #declare P = punkt(xx, yy); + #while (xx < xmax - xstep/2) + #declare xx = xx + xstep; + #declare Q = punkt(xx, yy); + sphere { P, griddiameter } + cylinder { P, Q, griddiameter } + #declare P = Q; + #end + sphere { P, griddiameter } + #declare yy = yy + ystep; + #end + + pigment { + color rgb<0.8,0.8,0.8> + } + finish { + metallic + specular 0.8 + } +} + diff --git a/buch/papers/kugel/figures/povray/curvgraph.m b/buch/papers/kugel/figures/povray/curvgraph.m new file mode 100644 index 0000000..75effd6 --- /dev/null +++ b/buch/papers/kugel/figures/povray/curvgraph.m @@ -0,0 +1,140 @@ +# +# curvature.m +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# + +global N; +N = 10; + +global sigma2; +sigma2 = 1; + +global s; +s = 1.4; + +global cmax; +cmax = 0.9; +global cmin; +cmin = -0.9; + +global Cmax; +global Cmin; +Cmax = 0; +Cmin = 0; + +xmin = -3; +xmax = 3; +xsteps = 200; +hx = (xmax - xmin) / xsteps; + +ymin = -2; +ymax = 2; +ysteps = 200; +hy = (ymax - ymin) / ysteps; + +function retval = f0(r) + global sigma2; + retval = exp(-r^2/sigma2)/sqrt(sigma2) - exp(-r^2/(2*sigma2))/(sqrt(2*sigma2)); +end + +global N0; +N0 = f0(0) +N0 = 0.4; + +function retval = f1(x,y) + global N0; + retval = f0(hypot(x, y)) / N0; +endfunction + +function retval = f(x, y) + global s; + retval = f1(x+s, y) - f1(x-s, y); +endfunction + +function retval = curvature0(r) + global sigma2; + retval = ( + -4*(sigma2-r^2)*exp(-r^2/sigma2) + + + (2*sigma2-r^2)*exp(-r^2/(2*sigma2)) + ) / (sigma2^(5/2)); +endfunction + +function retval = curvature1(x, y) + retval = curvature0(hypot(x, y)); +endfunction + +function retval = curvature(x, y) + global s; + retval = curvature1(x+s, y) - curvature1(x-s, y); +endfunction + +function retval = farbe(x, y) + global Cmax; + global Cmin; + global cmax; + global cmin; + c = curvature(x, y); + if (c < Cmin) + Cmin = c + endif + if (c > Cmax) + Cmax = c + endif + u = (c - cmin) / (cmax - cmin); + if (u > 1) + u = 1; + endif + if (u < 0) + u = 0; + endif + color = [ u, 0.5, 1-u ]; + color = color/max(color); + color(1,4) = c/2; + retval = color; +endfunction + +function dreieck(fn, A, B, C) + fprintf(fn, "\ttriangle {\n"); + fprintf(fn, "\t <%.4f,%.4f,%.4f>,\n", A(1,1), A(1,3), A(1,2)); + fprintf(fn, "\t <%.4f,%.4f,%.4f>,\n", B(1,1), B(1,3), B(1,2)); + fprintf(fn, "\t <%.4f,%.4f,%.4f>\n", C(1,1), C(1,3), C(1,2)); + fprintf(fn, "\t}\n"); +endfunction + +function viereck(fn, punkte) + color = farbe(mean(punkte(:,1)), mean(punkte(:,2))); + fprintf(fn, " mesh {\n"); + dreieck(fn, punkte(1,:), punkte(2,:), punkte(3,:)); + dreieck(fn, punkte(2,:), punkte(3,:), punkte(4,:)); + fprintf(fn, "\tpigment { color rgb<%.4f,%.4f,%.4f> } // %.4f\n", + color(1,1), color(1,2), color(1,3), color(1,4)); + fprintf(fn, " }\n"); +endfunction + +fn = fopen("curvature.inc", "w"); +punkte = zeros(4,3); +for ix = (0:xsteps-1) + x = xmin + ix * hx; + punkte(1,1) = x; + punkte(2,1) = x; + punkte(3,1) = x + hx; + punkte(4,1) = x + hx; + for iy = (0:ysteps-1) + y = ymin + iy * hy; + punkte(1,2) = y; + punkte(2,2) = y + hy; + punkte(3,2) = y; + punkte(4,2) = y + hy; + for i = (1:4) + punkte(i,3) = f(punkte(i,1), punkte(i,2)); + endfor + viereck(fn, punkte); + end +end +#fprintf(fn, " finish { metallic specular 0.5 }\n"); +fclose(fn); + +printf("Cmax = %.4f\n", Cmax); +printf("Cmin = %.4f\n", Cmin); diff --git a/buch/papers/kugel/figures/povray/spherecurve.cpp b/buch/papers/kugel/figures/povray/spherecurve.cpp new file mode 100644 index 0000000..8ddf5e5 --- /dev/null +++ b/buch/papers/kugel/figures/povray/spherecurve.cpp @@ -0,0 +1,292 @@ +/* + * spherecurve.cpp + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ +#include +#include +#include +#include +#include + +inline double sqr(double x) { return x * x; } + +/** + * \brief Class for 3d vectors (also used as colors) + */ +class vector { + double X[3]; +public: + vector() { X[0] = X[1] = X[2] = 0; } + vector(double a) { X[0] = X[1] = X[2] = a; } + vector(double x, double y, double z) { + X[0] = x; X[1] = y; X[2] = z; + } + vector(double theta, double phi) { + double s = sin(theta); + X[0] = cos(phi) * s; + X[1] = sin(phi) * s; + X[2] = cos(theta); + } + vector(const vector& other) { + for (int i = 0; i < 3; i++) { + X[i] = other.X[i]; + } + } + vector operator+(const vector& other) const { + return vector(X[0] + other.X[0], + X[1] + other.X[1], + X[2] + other.X[2]); + } + vector operator*(double l) const { + return vector(X[0] * l, X[1] * l, X[2] * l); + } + double operator*(const vector& other) const { + double s = 0; + for (int i = 0; i < 3; i++) { + s += X[i] * other.X[i]; + } + return s; + } + double norm() const { + double s = 0; + for (int i = 0; i < 3; i++) { + s += sqr(X[i]); + } + return sqrt(s); + } + vector normalize() const { + double l = norm(); + return vector(X[0]/l, X[1]/l, X[2]/l); + } + double max() const { + return std::max(X[0], std::max(X[1], X[2])); + } + double l0norm() const { + double l = 0; + for (int i = 0; i < 3; i++) { + if (fabs(X[i]) > l) { + l = fabs(X[i]); + } + } + return l; + } + vector l0normalize() const { + double l = l0norm(); + vector result(X[0]/l, X[1]/l, X[2]/l); + return result; + } + const double& operator[](int i) const { return X[i]; } + double& operator[](int i) { return X[i]; } +}; + +/** + * \brief Derived 3d vector class implementing color + * + * The constructor in this class converts a single value into a + * color on a suitable gradient. + */ +class color : public vector { +public: + static double utop; + static double ubottom; + static double green; +public: + color(double u) { + u = (u - ubottom) / (utop - ubottom); + if (u > 1) { + u = 1; + } + if (u < 0) { + u = 0; + } + u = pow(u,2); + (*this)[0] = u; + (*this)[1] = green * u * (1 - u); + (*this)[2] = 1-u; + double l = l0norm(); + for (int i = 0; i < 3; i++) { + (*this)[i] /= l; + } + } +}; + +double color::utop = 12; +double color::ubottom = -31; +double color::green = 0.5; + +/** + * \brief Surface model + * + * This class contains the definitions of the functions to plot + * and the parameters to + */ +class surfacefunction { + static vector axes[6]; + + double _a; + double _A; + + double _umin; + double _umax; +public: + double a() const { return _a; } + double A() const { return _A; } + + double umin() const { return _umin; } + double umax() const { return _umax; } + + surfacefunction(double a, double A) : _a(a), _A(A), _umin(0), _umax(0) { + } + + double f(double z) { + return A() * exp(a() * (sqr(z) - 1)); + } + + double g(double z) { + return -f(z) * 2*a() * ((2*a()*sqr(z) + (3-2*a()))*sqr(z) - 1); + } + + double F(const vector& v) { + double s = 0; + for (int i = 0; i < 6; i++) { + s += f(axes[i] * v); + } + return s / 6; + } + + double G(const vector& v) { + double s = 0; + for (int i = 0; i < 6; i++) { + s += g(axes[i] * v); + } + return s / 6; + } +protected: + color farbe(const vector& v) { + double u = G(v); + if (u < _umin) { + _umin = u; + } + if (u > _umax) { + _umax = u; + } + return color(u); + } +}; + +static double phi = (1 + sqrt(5)) / 2; +static double sl = sqrt(sqr(phi) + 1); +vector surfacefunction::axes[6] = { + vector( 0. , -1./sl, phi/sl ), + vector( 0. , 1./sl, phi/sl ), + vector( 1./sl, phi/sl, 0. ), + vector( -1./sl, phi/sl, 0. ), + vector( phi/sl, 0. , 1./sl ), + vector( -phi/sl, 0. , 1./sl ) +}; + +/** + * \brief Class to construct the plot + */ +class surface : public surfacefunction { + FILE *outfile; + + int _phisteps; + int _thetasteps; + double _hphi; + double _htheta; +public: + int phisteps() const { return _phisteps; } + int thetasteps() const { return _thetasteps; } + double hphi() const { return _hphi; } + double htheta() const { return _htheta; } + void phisteps(int s) { _phisteps = s; _hphi = 2 * M_PI / s; } + void thetasteps(int s) { _thetasteps = s; _htheta = M_PI / s; } + + surface(const std::string& filename, double a, double A) + : surfacefunction(a, A) { + outfile = fopen(filename.c_str(), "w"); + phisteps(400); + thetasteps(200); + } + + ~surface() { + fclose(outfile); + } + +private: + void triangle(const vector& v0, const vector& v1, const vector& v2) { + fprintf(outfile, " mesh {\n"); + vector c = (v0 + v1 + v2) * (1./3.); + vector color = farbe(c.normalize()); + vector V0 = v0 * (1 + F(v0)); + vector V1 = v1 * (1 + F(v1)); + vector V2 = v2 * (1 + F(v2)); + fprintf(outfile, "\ttriangle {\n"); + fprintf(outfile, "\t <%.6f,%.6f,%.6f>,\n", + V0[0], V0[2], V0[1]); + fprintf(outfile, "\t <%.6f,%.6f,%.6f>,\n", + V1[0], V1[2], V1[1]); + fprintf(outfile, "\t <%.6f,%.6f,%.6f>\n", + V2[0], V2[2], V2[1]); + fprintf(outfile, "\t}\n"); + fprintf(outfile, "\tpigment { color rgb<%.4f,%.4f,%.4f> }\n", + color[0], color[1], color[2]); + fprintf(outfile, "\tfinish { metallic specular 0.5 }\n"); + fprintf(outfile, " }\n"); + } + + void northcap() { + vector v0(0, 0, 1); + for (int i = 1; i <= phisteps(); i++) { + fprintf(outfile, " // northcap i = %d\n", i); + vector v1(htheta(), (i - 1) * hphi()); + vector v2(htheta(), i * hphi()); + triangle(v0, v1, v2); + } + } + + void southcap() { + vector v0(0, 0, -1); + for (int i = 1; i <= phisteps(); i++) { + fprintf(outfile, " // southcap i = %d\n", i); + vector v1(M_PI - htheta(), (i - 1) * hphi()); + vector v2(M_PI - htheta(), i * hphi()); + triangle(v0, v1, v2); + } + } + + void zone() { + for (int j = 1; j < thetasteps() - 1; j++) { + for (int i = 1; i <= phisteps(); i++) { + fprintf(outfile, " // zone j = %d, i = %d\n", + j, i); + vector v0( j * htheta(), (i-1) * hphi()); + vector v1((j+1) * htheta(), (i-1) * hphi()); + vector v2( j * htheta(), i * hphi()); + vector v3((j+1) * htheta(), i * hphi()); + triangle(v0, v1, v2); + triangle(v1, v2, v3); + } + } + } +public: + void draw() { + northcap(); + southcap(); + zone(); + } +}; + +/** + * \brief main function + */ +int main(int argc, char *argv[]) { + surface S("spherecurve.inc", 5, 10); + color::green = 1.0; + S.draw(); + std::cout << "umin: " << S.umin() << std::endl; + std::cout << "umax: " << S.umax() << std::endl; + return EXIT_SUCCESS; +} diff --git a/buch/papers/kugel/figures/povray/spherecurve.jpg b/buch/papers/kugel/figures/povray/spherecurve.jpg new file mode 100644 index 0000000..cd2e7c8 Binary files /dev/null and b/buch/papers/kugel/figures/povray/spherecurve.jpg differ diff --git a/buch/papers/kugel/figures/povray/spherecurve.m b/buch/papers/kugel/figures/povray/spherecurve.m new file mode 100644 index 0000000..99d5c9a --- /dev/null +++ b/buch/papers/kugel/figures/povray/spherecurve.m @@ -0,0 +1,160 @@ +# +# spherecurve.m +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +global a; +a = 5; +global A; +A = 10; + +phisteps = 400; +hphi = 2 * pi / phisteps; +thetasteps = 200; +htheta = pi / thetasteps; + +function retval = f(z) + global a; + global A; + retval = A * exp(a * (z^2 - 1)); +endfunction + +function retval = g(z) + global a; + retval = -f(z) * 2 * a * (2 * a * z^4 + (3 - 2*a) * z^2 - 1); + # 2 + # - a 2 4 2 2 a z + #(%o6) - %e (4 a z + (6 a - 4 a ) z - 2 a) %e +endfunction + +phi = (1 + sqrt(5)) / 2; + +global axes; +axes = [ + 0, 0, 1, -1, phi, -phi; + 1, -1, phi, phi, 0, 0; + phi, phi, 0, 0, 1, 1; +]; +axes = axes / (sqrt(phi^2+1)); + +function retval = kugel(theta, phi) + retval = [ + cos(phi) * sin(theta); + sin(phi) * sin(theta); + cos(theta) + ]; +endfunction + +function retval = F(v) + global axes; + s = 0; + for i = (1:6) + z = axes(:,i)' * v; + s = s + f(z); + endfor + retval = s / 6; +endfunction + +function retval = F2(theta, phi) + v = kugel(theta, phi); + retval = F(v); +endfunction + +function retval = G(v) + global axes; + s = 0; + for i = (1:6) + s = s + g(axes(:,i)' * v); + endfor + retval = s / 6; +endfunction + +function retval = G2(theta, phi) + v = kugel(theta, phi); + retval = G(v); +endfunction + +function retval = cnormalize(u) + utop = 11; + ubottom = -30; + retval = (u - ubottom) / (utop - ubottom); + if (retval > 1) + retval = 1; + endif + if (retval < 0) + retval = 0; + endif +endfunction + +global umin; +umin = 0; +global umax; +umax = 0; + +function color = farbe(v) + global umin; + global umax; + u = G(v); + if (u < umin) + umin = u; + endif + if (u > umax) + umax = u; + endif + u = cnormalize(u); + color = [ u, 0.5, 1-u ]; + color = color/max(color); +endfunction + +function dreieck(fn, v0, v1, v2) + fprintf(fn, " mesh {\n"); + c = (v0 + v1 + v2) / 3; + c = c / norm(c); + color = farbe(c); + v0 = v0 * (1 + F(v0)); + v1 = v1 * (1 + F(v1)); + v2 = v2 * (1 + F(v2)); + fprintf(fn, "\ttriangle {\n"); + fprintf(fn, "\t <%.6f,%.6f,%.6f>,\n", v0(1,1), v0(3,1), v0(2,1)); + fprintf(fn, "\t <%.6f,%.6f,%.6f>,\n", v1(1,1), v1(3,1), v1(2,1)); + fprintf(fn, "\t <%.6f,%.6f,%.6f>\n", v2(1,1), v2(3,1), v2(2,1)); + fprintf(fn, "\t}\n"); + fprintf(fn, "\tpigment { color rgb<%.4f,%.4f,%.4f> }\n", + color(1,1), color(1,2), color(1,3)); + fprintf(fn, "\tfinish { metallic specular 0.5 }\n"); + fprintf(fn, " }\n"); +endfunction + +fn = fopen("spherecurve2.inc", "w"); + + for i = (1:phisteps) + # Polkappe nord + v0 = [ 0; 0; 1 ]; + v1 = kugel(htheta, (i-1) * hphi); + v2 = kugel(htheta, i * hphi); + fprintf(fn, " // i = %d\n", i); + dreieck(fn, v0, v1, v2); + + # Polkappe sued + v0 = [ 0; 0; -1 ]; + v1 = kugel(pi-htheta, (i-1) * hphi); + v2 = kugel(pi-htheta, i * hphi); + dreieck(fn, v0, v1, v2); + endfor + + for j = (1:thetasteps-2) + for i = (1:phisteps) + v0 = kugel( j * htheta, (i-1) * hphi); + v1 = kugel((j+1) * htheta, (i-1) * hphi); + v2 = kugel( j * htheta, i * hphi); + v3 = kugel((j+1) * htheta, i * hphi); + fprintf(fn, " // i = %d, j = %d\n", i, j); + dreieck(fn, v0, v1, v2); + dreieck(fn, v1, v2, v3); + endfor + endfor + +fclose(fn); + +umin +umax diff --git a/buch/papers/kugel/figures/povray/spherecurve.maxima b/buch/papers/kugel/figures/povray/spherecurve.maxima new file mode 100644 index 0000000..1e9077c --- /dev/null +++ b/buch/papers/kugel/figures/povray/spherecurve.maxima @@ -0,0 +1,13 @@ +/* + * spherecurv.maxima + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ +f: exp(-a * sin(theta)^2); + +g: ratsimp(diff(sin(theta) * diff(f, theta), theta)/sin(theta)); +g: subst(z, cos(theta), g); +g: subst(sqrt(1-z^2), sin(theta), g); +ratsimp(g); + +f: ratsimp(subst(sqrt(1-z^2), sin(theta), f)); diff --git a/buch/papers/kugel/figures/povray/spherecurve.png b/buch/papers/kugel/figures/povray/spherecurve.png new file mode 100644 index 0000000..ff24371 Binary files /dev/null and b/buch/papers/kugel/figures/povray/spherecurve.png differ diff --git a/buch/papers/kugel/figures/povray/spherecurve.pov b/buch/papers/kugel/figures/povray/spherecurve.pov new file mode 100644 index 0000000..b1bf4b8 --- /dev/null +++ b/buch/papers/kugel/figures/povray/spherecurve.pov @@ -0,0 +1,73 @@ +// +// curvature.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// + +#version 3.7; +#include "colors.inc" + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.13; + +camera { + location <10, 10, -40> + look_at <0, 0, 0> + right x * imagescale + up y * imagescale +} + +light_source { + <-10, 10, -40> color White + area_light <1,0,0> <0,0,1>, 10, 10 + adaptive 1 + jitter +} + +sky_sphere { + pigment { + color rgb<1,1,1> + } +} + +// +// draw an arrow from to with thickness with +// color +// +#macro arrow(from, to, arrowthickness, c) +#declare arrowdirection = vnormalize(to - from); +#declare arrowlength = vlength(to - from); +union { + sphere { + from, 1.1 * arrowthickness + } + cylinder { + from, + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + arrowthickness + } + cone { + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + 2 * arrowthickness, + to, + 0 + } + pigment { + color c + } + finish { + specular 0.9 + metallic + } +} +#end + +arrow(<-2.7,0,0>, <2.7,0,0>, 0.03, White) +arrow(<0,-2.7,0>, <0,2.7,0>, 0.03, White) +arrow(<0,0,-2.7>, <0,0,2.7>, 0.03, White) + +#include "spherecurve.inc" + diff --git a/buch/papers/kugel/figures/tikz/Makefile b/buch/papers/kugel/figures/tikz/Makefile new file mode 100644 index 0000000..4ec4e5a --- /dev/null +++ b/buch/papers/kugel/figures/tikz/Makefile @@ -0,0 +1,12 @@ +FIGURES := spherical-coordinates.pdf curvature-1d.pdf + +all: $(FIGURES) + +%.pdf: %.tex + pdflatex $< + +curvature-1d.pdf: curvature-1d.tex curvature-1d.dat + pdflatex curvature-1d.tex + +curvature-1d.dat: curvature-1d.py + python3 $< diff --git a/buch/papers/kugel/figures/tikz/curvature-1d.dat b/buch/papers/kugel/figures/tikz/curvature-1d.dat new file mode 100644 index 0000000..6622398 --- /dev/null +++ b/buch/papers/kugel/figures/tikz/curvature-1d.dat @@ -0,0 +1,500 @@ +0.000000000000000000e+00 1.000000000000000000e+00 5.000007286987066095e+02 +2.004008016032064049e-02 1.025056790958151831e+00 4.899813296957295279e+02 +4.008016032064128098e-02 1.050121598724190752e+00 4.799659543969494848e+02 +6.012024048096192147e-02 1.075186379145250948e+00 4.699586248906784931e+02 +8.016032064128256196e-02 1.100243094530689136e+00 4.599633600341078932e+02 +1.002004008016031955e-01 1.125283716879951434e+00 4.499841738393695891e+02 +1.202404809619238429e-01 1.150300231106550664e+00 4.400250738615438877e+02 +1.402805611222444904e-01 1.175284638256853809e+00 4.300900595892592833e+02 +1.603206412825651239e-01 1.200228958722394657e+00 4.201831208385332275e+02 +1.803607214428857575e-01 1.225125235444413541e+00 4.103082361504954747e+02 +2.004008016032063910e-01 1.249965537109345881e+00 4.004693711936409954e+02 +2.204408817635270523e-01 1.274741961333968554e+00 3.906704771712513775e+02 +2.404809619238476859e-01 1.299446637838927776e+00 3.809154892346260795e+02 +2.605210420841683194e-01 1.324071731609375302e+00 3.712083249027585907e+02 +2.805611222444889807e-01 1.348609446041445725e+00 3.615528824890962483e+02 +3.006012024048095865e-01 1.373052026073301457e+00 3.519530395360096122e+02 +3.206412825651302478e-01 1.397391761299501045e+00 3.424126512576057166e+02 +3.406813627254509091e-01 1.421620989067430063e+00 3.329355489915074031e+02 +3.607214428857715149e-01 1.445732097554558448e+00 3.235255386602207750e+02 +3.807615230460921762e-01 1.469717528825280173e+00 3.141863992427096832e+02 +4.008016032064127820e-01 1.493569781866116220e+00 3.049218812567906411e+02 +4.208416833667334433e-01 1.517281415598057848e+00 2.957357052529569614e+02 +4.408817635270541047e-01 1.540845051864837556e+00 2.866315603202378384e+02 +4.609218436873747105e-01 1.564253378395934257e+00 2.776131026046919601e+02 +4.809619238476953718e-01 1.587499151743118286e+00 2.686839538411309150e+02 +5.010020040080159776e-01 1.610575200189357625e+00 2.598476998986618582e+02 +5.210420841683366389e-01 1.633474426628916509e+00 2.511078893406329655e+02 +5.410821643286573002e-01 1.656189811417493107e+00 2.424680319995614752e+02 +5.611222444889779615e-01 1.678714415191247422e+00 2.339315975676150003e+02 +5.811623246492986228e-01 1.701041381653590534e+00 2.255020142032130082e+02 +6.012024048096191731e-01 1.723163940328612753e+00 2.171826671543084046e+02 +6.212424849699398344e-01 1.745075409280051337e+00 2.089768973989005474e+02 +6.412825651302604957e-01 1.766769197794693991e+00 2.008880003033277433e+02 +6.613226452905811570e-01 1.788238809029157217e+00 1.929192242988764008e+02 +6.813627254509018183e-01 1.809477842618958832e+00 1.850737695772391760e+02 +7.014028056112223686e-01 1.830479997248850577e+00 1.773547868053454408e+02 +7.214428857715430299e-01 1.851239073183373218e+00 1.697653758600805816e+02 +7.414829659318636912e-01 1.871748974756613837e+00 1.623085845834024497e+02 +7.615230460921843525e-01 1.892003712820175432e+00 1.549874075583541639e+02 +7.815631262525050138e-01 1.911997407148365635e+00 1.478047849064652723e+02 +8.016032064128255641e-01 1.931724288799645972e+00 1.407636011070246695e+02 +8.216432865731462254e-01 1.951178702433387091e+00 1.338666838386980942e+02 +8.416833667334668867e-01 1.970355108581006931e+00 1.271168028439571600e+02 +8.617234468937875480e-01 1.989248085870571892e+00 1.205166688167746969e+02 +8.817635270541082093e-01 2.007852333203973494e+00 1.140689323140332476e+02 +9.018036072144288706e-01 2.026162671885804123e+00 1.077761826910842018e+02 +9.218436873747494209e-01 2.044174047703075203e+00 1.016409470618853419e+02 +9.418837675350700822e-01 2.061881532954947804e+00 9.566568928413349227e+01 +9.619238476953907435e-01 2.079280328431652780e+00 8.985280896980044929e+01 +9.819639278557114048e-01 2.096365765341811738e+00 8.420464052146976996e+01 +1.002004008016031955e+00 2.113133307187384347e+00 7.872345219486057033e+01 +1.022044088176352616e+00 2.129578551585488810e+00 7.341144518791566043e+01 +1.042084168336673278e+00 2.145697232036356539e+00 6.827075275681968947e+01 +1.062124248496993939e+00 2.161485219636723798e+00 6.330343935930140020e+01 +1.082164328657314600e+00 2.176938524737964453e+00 5.851149982556578522e+01 +1.102204408817635262e+00 2.192053298548298113e+00 5.389685855718687435e+01 +1.122244488977955923e+00 2.206825834678430187e+00 4.946136875428519630e+01 +1.142284569138276584e+00 2.221252570630007028e+00 4.520681167129833966e+01 +1.162324649298597246e+00 2.235330089226285288e+00 4.113489590164444110e+01 +1.182364729458917685e+00 2.249055119984439521e+00 3.724725669156617869e+01 +1.202404809619238346e+00 2.262424540428958686e+00 3.354545528342948302e+01 +1.222444889779559007e+00 2.275435377345608856e+00 3.003097828874255271e+01 +1.242484969939879669e+00 2.288084807975446999e+00 2.670523709114522859e+01 +1.262525050100200330e+00 2.300370161148418191e+00 2.356956727960955078e+01 +1.282565130260520991e+00 2.312288918356074419e+00 2.062522811207871243e+01 +1.302605210420841653e+00 2.323838714762985536e+00 1.787340200976009186e+01 +1.322645290581162314e+00 2.335017340156437360e+00 1.531519408227492640e+01 +1.342685370741482975e+00 2.345822739834032333e+00 1.295163168385587404e+01 +1.362725450901803637e+00 2.356253015428841913e+00 1.078366400077049292e+01 +1.382765531062124298e+00 2.366306425671775404e+00 8.812161670136093861e+00 +1.402805611222444737e+00 2.375981387090854824e+00 7.037916430279492097e+00 +1.422845691382765398e+00 2.385276474647127998e+00 5.461640802781636772e+00 +1.442885771543086060e+00 2.394190422306948562e+00 4.083967806335150996e+00 +1.462925851703406721e+00 2.402722123550405264e+00 2.905450702529595031e+00 +1.482965931863727382e+00 2.410870631815691834e+00 1.926562773666154138e+00 +1.503006012024048044e+00 2.418635160879236246e+00 1.147697132691613664e+00 +1.523046092184368705e+00 2.426015085171442820e+00 5.691665653277303560e-01 +1.543086172344689366e+00 2.433009940027915263e+00 1.912034044591185422e-01 +1.563126252505010028e+00 2.439619421876060734e+00 1.395943683027547552e-02 +1.583166332665330689e+00 2.445843388357002546e+00 3.750584208938356756e-02 +1.603206412825651128e+00 2.451681858382752210e+00 2.618331642032580286e-01 +1.623246492985971789e+00 2.457135012128611962e+00 6.868513152547650602e-01 +1.643286573146292451e+00 2.462203190960818411e+00 1.312389611621266550e+00 +1.663326653306613112e+00 2.466886897299453096e+00 2.138196842519770602e+00 +1.683366733466933773e+00 2.471186794416676769e+00 3.163941370891084848e+00 +1.703406813627254435e+00 2.475103706170361573e+00 4.389211266582178084e+00 +1.723446893787575096e+00 2.478638616673238371e+00 5.813514471774004377e+00 +1.743486973947895757e+00 2.481792669897687542e+00 7.436278998587575018e+00 +1.763527054108216419e+00 2.484567169216326032e+00 9.256853158789395408e+00 +1.783567134268537080e+00 2.486963576878586935e+00 1.127450582550371472e+01 +1.803607214428857741e+00 2.488983513423490557e+00 1.348842672682692978e+01 +1.823647294589178181e+00 2.490628757028852114e+00 1.589772677122579658e+01 +1.843687374749498842e+00 2.491901242797179172e+00 1.850143840458866151e+01 +1.863727454909819503e+00 2.492803061978552392e+00 2.129851599878729118e+01 +1.883767535070140164e+00 2.493336461130795989e+00 2.428783627159159408e+01 +1.903807615230460826e+00 2.493503841217282080e+00 2.746819873777046439e+01 +1.923847695390781487e+00 2.493307756642720641e+00 3.083832619119621654e+01 +1.943887775551102148e+00 2.492750914227336079e+00 3.439686521775931283e+01 +1.963927855711422810e+00 2.491836172119830994e+00 3.814238673888808506e+01 +1.983967935871743471e+00 2.490566538649576334e+00 4.207338658545420174e+01 +2.004008016032063910e+00 2.488945171118494670e+00 4.618828610183413019e+01 +2.024048096192384794e+00 2.486975374533113126e+00 5.048543277988349587e+01 +2.044088176352705233e+00 2.484660600277302400e+00 5.496310092257003532e+01 +2.064128256513026116e+00 2.482004444726231274e+00 5.961949233699898087e+01 +2.084168336673346555e+00 2.479010647802090794e+00 6.445273705655124274e+01 +2.104208416833667439e+00 2.475683091472176578e+00 6.946089409184656915e+01 +2.124248496993987878e+00 2.472025798189923851e+00 7.464195221022733051e+01 +2.144288577154308317e+00 2.468042929279522735e+00 7.999383074345310263e+01 +2.164328657314629201e+00 2.463738783264768806e+00 8.551438042327842481e+01 +2.184368737474949640e+00 2.459117794142811952e+00 9.120138424458035331e+01 +2.204408817635270523e+00 2.454184529603501197e+00 9.705255835568922862e+01 +2.224448897795590963e+00 2.448943689195040463e+00 1.030655529755629374e+02 +2.244488977955911846e+00 2.443400102436689814e+00 1.092379533374396345e+02 +2.264529058116232285e+00 2.437558726879272442e+00 1.155672806585862560e+02 +2.284569138276553169e+00 2.431424646114265897e+00 1.220509931357573947e+02 +2.304609218436873608e+00 2.425003067732275142e+00 1.286864869659601709e+02 +2.324649298597194491e+00 2.418299321231706767e+00 1.354710973921206971e+02 +2.344689378757514930e+00 2.411318855878493483e+00 1.424020997732258422e+02 +2.364729458917835370e+00 2.404067238517710425e+00 1.494767106785168664e+02 +2.384769539078156253e+00 2.396550151337982548e+00 1.566920890052907680e+02 +2.404809619238476692e+00 2.388773389589562868e+00 1.640453371198620403e+02 +2.424849699398797576e+00 2.380742859257013677e+00 1.715335020212285144e+02 +2.444889779559118015e+00 2.372464574687412675e+00 1.791535765269697436e+02 +2.464929859719438898e+00 2.363944656175040571e+00 1.869025004809070936e+02 +2.484969939879759337e+00 2.355189327503528496e+00 1.947771619820341300e+02 +2.505010020040080221e+00 2.346204913446435114e+00 2.027743986342312610e+02 +2.525050100200400660e+00 2.336997837227277053e+00 2.108909988162550349e+02 +2.545090180360721543e+00 2.327574617940013191e+00 2.191237029714987443e+02 +2.565130260521041983e+00 2.317941867931036182e+00 2.274692049170012638e+02 +2.585170340681362422e+00 2.308106290143709938e+00 2.359241531711823257e+02 +2.605210420841683305e+00 2.298074675426524660e+00 2.444851522997685436e+02 +2.625250501002003745e+00 2.287853899805951663e+00 2.531487642793698569e+02 +2.645290581162324628e+00 2.277450921725090449e+00 2.619115098781609845e+02 +2.665330661322645067e+00 2.266872779249217817e+00 2.707698700531099121e+02 +2.685370741482965951e+00 2.256126587239360770e+00 2.797202873631965190e+02 +2.705410821643286390e+00 2.245219534495030533e+00 2.887591673980486462e+02 +2.725450901803607273e+00 2.234158880867263886e+00 2.978828802214276834e+02 +2.745490981963927712e+00 2.222951954343126868e+00 3.070877618289785573e+02 +2.765531062124248596e+00 2.211606148102859937e+00 3.163701156196634088e+02 +2.785571142284569035e+00 2.200128917550841834e+00 3.257262138802831259e+02 +2.805611222444889474e+00 2.188527777321561008e+00 3.351522992824964149e+02 +2.825651302605210358e+00 2.176810298261803389e+00 3.446445863917298311e+02 +2.845691382765530797e+00 2.164984104390269337e+00 3.541992631873747541e+02 +2.865731462925851680e+00 2.153056869835828113e+00 3.638124925936636487e+02 +2.885771543086172120e+00 2.141036315755658670e+00 3.734804140206049965e+02 +2.905811623246493003e+00 2.128930207234495775e+00 3.831991449143642399e+02 +2.925851703406813442e+00 2.116746350166242685e+00 3.929647823164625606e+02 +2.945891783567134325e+00 2.104492588119187158e+00 4.027734044311732191e+02 +2.965931863727454765e+00 2.092176799186097114e+00 4.126210722004783520e+02 +2.985971943887775648e+00 2.079806892820440289e+00 4.225038308859634526e+02 +3.006012024048096087e+00 2.067390806660023728e+00 4.324177116570036219e+02 +3.026052104208416527e+00 2.054936503339299669e+00 4.423587331846135839e+02 +3.046092184368737410e+00 2.042451967291644355e+00 4.523229032403145879e+02 +3.066132264529057849e+00 2.029945201542878497e+00 4.623062202993779124e+02 +3.086172344689378733e+00 2.017424224497317731e+00 4.723046751478044598e+02 +3.106212424849699172e+00 2.004897066717655107e+00 4.823142524923883343e+02 +3.126252505010020055e+00 1.992371767699953278e+00 4.923309325732264483e+02 +3.146292585170340494e+00 1.979856372645053764e+00 5.023506927780170486e+02 +3.166332665330661378e+00 1.967358929227692510e+00 5.123695092575079570e+02 +3.186372745490981817e+00 1.954887484364624450e+00 5.223833585414381560e+02 +3.206412825651302256e+00 1.942450080983050720e+00 5.323882191543301587e+02 +3.226452905811623140e+00 1.930054754790647475e+00 5.423800732304792973e+02 +3.246492985971943579e+00 1.917709531048496396e+00 5.523549081274929904e+02 +3.266533066132264462e+00 1.905422421348207829e+00 5.623087180377352752e+02 +3.286573146292584902e+00 1.893201420394537093e+00 5.722375055970223912e+02 +3.306613226452905785e+00 1.881054502794775818e+00 5.821372834899317468e+02 +3.326653306613226224e+00 1.868989619856223694e+00 5.920040760510720474e+02 +3.346693386773547108e+00 1.857014696393007203e+00 6.018339208616766882e+02 +3.366733466933867547e+00 1.845137627543546266e+00 6.116228703408767160e+02 +3.386773547094188430e+00 1.833366275599931816e+00 6.213669933310161468e+02 +3.406813627254508869e+00 1.821708466850500807e+00 6.310623766763693538e+02 +3.426853707414829309e+00 1.810171988436861001e+00 6.407051267946321786e+02 +3.446893787575150192e+00 1.798764585226647394e+00 6.502913712405503475e+02 +3.466933867735470631e+00 1.787493956703248177e+00 6.598172602610595732e+02 +3.486973947895791515e+00 1.776367753873757227e+00 6.692789683413144530e+02 +3.507014028056111954e+00 1.765393576196397918e+00 6.786726957409805436e+02 +3.527054108216432837e+00 1.754578968528644589e+00 6.879946700201794556e+02 +3.547094188376753277e+00 1.743931418097274477e+00 6.972411475544654422e+02 +3.567134268537074160e+00 1.733458351491558469e+00 7.064084150382354892e+02 +3.587174348697394599e+00 1.723167131680813480e+00 7.154927909759586555e+02 +3.607214428857715482e+00 1.713065055057490182e+00 7.244906271606341761e+02 +3.627254509018035922e+00 1.703159348507010673e+00 7.333983101388791965e+02 +3.647294589178356361e+00 1.693457166505509370e+00 7.422122626620608798e+02 +3.667334669338677244e+00 1.683965588246658651e+00 7.509289451228887629e+02 +3.687374749498997684e+00 1.674691614798728523e+00 7.595448569768896050e+02 +3.707414829659318567e+00 1.665642166293012316e+00 7.680565381481970917e+02 +3.727454909819639006e+00 1.656824079144766593e+00 7.764605704190873894e+02 +3.747494989979959890e+00 1.648244103307762831e+00 7.847535788027066701e+02 +3.767535070140280329e+00 1.639908899563566447e+00 7.929322328984358137e+02 +3.787575150300601212e+00 1.631825036846622945e+00 8.009932482293520479e+02 +3.807615230460921651e+00 1.623998989606231236e+00 8.089333875612445581e+02 +3.827655310621242535e+00 1.616437135206458375e+00 8.167494622026619027e+02 +3.847695390781562974e+00 1.609145751365050003e+00 8.244383332854611126e+02 +3.867735470941883413e+00 1.602131013632347223e+00 8.319969130253510912e+02 +3.887775551102204297e+00 1.595398992911243319e+00 8.394221659619206548e+02 +3.907815631262524736e+00 1.588955653019160641e+00 8.467111101776515625e+02 +3.927855711422845619e+00 1.582806848293030866e+00 8.538608184954326816e+02 +3.947895791583166059e+00 1.576958321238246530e+00 8.608684196540875746e+02 +3.967935871743486942e+00 1.571415700222517753e+00 8.677310994614492756e+02 +3.987975951903807381e+00 1.566184497215570515e+00 8.744461019245148918e+02 +4.008016032064127820e+00 1.561270105575586431e+00 8.810107303562293737e+02 +4.028056112224448704e+00 1.556677797883275982e+00 8.874223484584509833e+02 +4.048096192384769587e+00 1.552412723824457164e+00 8.936783813806663375e+02 +4.068136272545089582e+00 1.548479908121984883e+00 8.997763167540272207e+02 +4.088176352705410466e+00 1.544884248517864656e+00 9.057137057002989877e+02 +4.108216432865731349e+00 1.541630513806363734e+00 9.114881638153049153e+02 +4.128256513026052232e+00 1.538723341918903031e+00 9.170973721264856522e+02 +4.148296593186372228e+00 1.536167238061506124e+00 9.225390780241765469e+02 +4.168336673346693111e+00 1.533966572905543835e+00 9.278110961662381442e+02 +4.188376753507013994e+00 1.532125580832512046e+00 9.329113093556687772e+02 +4.208416833667334878e+00 1.530648358233542172e+00 9.378376693908538755e+02 +4.228456913827654873e+00 1.529538861864323529e+00 9.425881978881050145e+02 +4.248496993987975756e+00 1.528800907256105734e+00 9.471609870761637922e+02 +4.268537074148296639e+00 1.528438167183412855e+00 9.515542005623437944e+02 +4.288577154308616635e+00 1.528454170189090799e+00 9.557660740700115412e+02 +4.308617234468937518e+00 1.528852299167273276e+00 9.597949161471043453e+02 +4.328657314629258401e+00 1.529635790004841844e+00 9.636391088454030296e+02 +4.348697394789579285e+00 1.530807730281920964e+00 9.672971083702858550e+02 +4.368737474949899280e+00 1.532371058031932520e+00 9.707674457007029787e+02 +4.388777555110220163e+00 1.534328560561707189e+00 9.740487271791230341e+02 +4.408817635270541047e+00 1.536682873332125610e+00 9.771396350712136609e+02 +4.428857715430861930e+00 1.539436478899741445e+00 9.800389280950321336e+02 +4.448897795591181925e+00 1.542591705919805545e+00 9.827454419195138371e+02 +4.468937875751502808e+00 1.546150728211101333e+00 9.852580896320574766e+02 +4.488977955911823692e+00 1.550115563882954017e+00 9.875758621750194379e+02 +4.509018036072143687e+00 1.554488074524779329e+00 9.896978287509432448e+02 +4.529058116232464570e+00 1.559269964458483093e+00 9.916231371963593801e+02 +4.549098196392785454e+00 1.564462780054019841e+00 9.933510143240067691e+02 +4.569138276553106337e+00 1.570067909108384452e+00 9.948807662333381359e+02 +4.589178356713426332e+00 1.576086580288286632e+00 9.962117785891847461e+02 +4.609218436873747216e+00 1.582519862636726060e+00 9.973435168684678729e+02 +4.629258517034068099e+00 1.589368665143676473e+00 9.982755265748584179e+02 +4.649298597194388982e+00 1.596633736381040114e+00 9.990074334212996519e+02 +4.669338677354708977e+00 1.604315664202031311e+00 9.995389434803163340e+02 +4.689378757515029861e+00 1.612414875505097545e+00 9.998698433020541643e+02 +4.709418837675350744e+00 1.620931636062481251e+00 1.000000000000000000e+03 +4.729458917835670739e+00 1.629866050413486533e+00 9.999293613043465712e+02 +4.749498997995991623e+00 1.639218061822500072e+00 9.996579555829848687e+02 +4.769539078156312506e+00 1.648987452301774237e+00 9.991858918301107906e+02 +4.789579158316633389e+00 1.659173842698966617e+00 9.985133596224548000e+02 +4.809619238476953385e+00 1.669776692849408217e+00 9.976406290431494881e+02 +4.829659318637274268e+00 1.680795301793028163e+00 9.965680505732656229e+02 +4.849699398797595151e+00 1.692228808055850298e+00 9.952960549510630699e+02 +4.869739478957916035e+00 1.704076189995956891e+00 9.938251529990096742e+02 +4.889779559118236030e+00 1.716336266213768447e+00 9.921559354186391602e+02 +4.909819639278556913e+00 1.729007696026489072e+00 9.902890725533304703e+02 +4.929859719438877796e+00 1.742088980006505361e+00 9.882253141191039276e+02 +4.949899799599197792e+00 1.755578460583548051e+00 9.859654889035417682e+02 +4.969939879759518675e+00 1.769474322710359537e+00 9.835105044329535531e+02 +4.989979959919839558e+00 1.783774594591596818e+00 9.808613466079225418e+02 +5.010020040080160442e+00 1.798477148475690290e+00 9.780190793073752502e+02 +5.030060120240480437e+00 1.813579701509330233e+00 9.749848439613382425e+02 +5.050100200400801320e+00 1.829079816654240354e+00 9.717598590925483677e+02 +5.070140280561122204e+00 1.844974903665872024e+00 9.683454198271051609e+02 +5.090180360721443087e+00 1.861262220133622414e+00 9.647428973743595861e+02 +5.110220440881763082e+00 1.877938872582164631e+00 9.609537384762481906e+02 +5.130260521042083965e+00 1.895001817633443997e+00 9.569794648262927694e+02 +5.150300601202404849e+00 1.912447863228867728e+00 9.528216724585031443e+02 +5.170340681362724844e+00 1.930273669911211520e+00 9.484820311064232783e+02 +5.190380761523045727e+00 1.948475752165717889e+00 9.439622835325791357e+02 +5.210420841683366611e+00 1.967050479819845377e+00 9.392642448286025001e+02 +5.230460921843687494e+00 1.985994079501115728e+00 9.343898016863045086e+02 +5.250501002004007489e+00 2.005302636152468398e+00 9.293409116399966479e+02 +5.270541082164328373e+00 2.024972094604515771e+00 9.241196022803618462e+02 +5.290581162324649256e+00 2.044998261204058920e+00 9.187279704401921663e+02 +5.310621242484970139e+00 2.065376805498225998e+00 9.131681813523182427e+02 +5.330661322645290134e+00 2.086103261973545120e+00 9.074424677800708423e+02 +5.350701402805611018e+00 2.107173031849256084e+00 9.015531291206212927e+02 +5.370741482965931901e+00 2.128581384924137954e+00 8.955025304815651452e+02 +5.390781563126251896e+00 2.150323461476119746e+00 8.892931017311141204e+02 +5.410821643286572780e+00 2.172394274213905074e+00 8.829273365222821894e+02 +5.430861723446893663e+00 2.194788710279818922e+00 8.764077912914567605e+02 +5.450901803607214546e+00 2.217501533303093186e+00 8.697370842317545794e+02 +5.470941883767534542e+00 2.240527385502743662e+00 8.629178942415799156e+02 +5.490981963927855425e+00 2.263860789839213794e+00 8.559529598487991962e+02 +5.511022044088176308e+00 2.287496152213901457e+00 8.488450781109748959e+02 +5.531062124248497192e+00 2.311427763715702355e+00 8.415971034920893317e+02 +5.551102204408817187e+00 2.335649802913659201e+00 8.342119467162179944e+02 +5.571142284569138070e+00 2.360156338194801862e+00 8.266925735986054633e+02 +5.591182364729458953e+00 2.384941330146225447e+00 8.190420038546226351e+02 +5.611222444889778949e+00 2.409998633980471094e+00 8.112633098870738877e+02 +5.631262525050099832e+00 2.435322002003218689e+00 8.033596155523445077e+02 +5.651302605210420715e+00 2.460905086122306518e+00 7.953340949058906517e+02 +5.671342685370741599e+00 2.486741440397069347e+00 7.871899709275636496e+02 +5.691382765531061594e+00 2.512824523626973505e+00 7.789305142272897911e+02 +5.711422845691382477e+00 2.539147701978509364e+00 7.705590417316205958e+02 +5.731462925851703361e+00 2.565704251649277179e+00 7.620789153516853958e+02 +5.751503006012024244e+00 2.592487361568209359e+00 7.534935406330763499e+02 +5.771543086172344239e+00 2.619490136130837588e+00 7.448063653882098833e+02 +5.791583166332665122e+00 2.646705597968513235e+00 7.360208783117147959e+02 +5.811623246492986006e+00 2.674126690750449509e+00 7.271406075794046728e+02 +5.831663326653306001e+00 2.701746282017488454e+00 7.181691194313910955e+02 +5.851703406813626884e+00 2.729557166046437722e+00 7.091100167399115435e+02 +5.871743486973947768e+00 2.757552066743818919e+00 6.999669375624501981e+02 +5.891783567134268651e+00 2.785723640567889792e+00 6.907435536807222434e+02 +5.911823647294588646e+00 2.814064479477745628e+00 6.814435691261201100e+02 +5.931863727454909530e+00 2.842567113908326615e+00 6.720707186922043093e+02 +5.951903807615230413e+00 2.871224015770126758e+00 6.626287664348450335e+02 +5.971943887775551296e+00 2.900027601472412453e+00 6.531215041606080831e+02 +5.991983967935871291e+00 2.928970234968723663e+00 6.435527499039991426e+02 +6.012024048096192175e+00 2.958044230823453802e+00 6.339263463941722421e+02 +6.032064128256513058e+00 2.987241857298241765e+00 6.242461595117250681e+02 +6.052104208416833053e+00 3.016555339456976181e+00 6.145160767361943499e+02 +6.072144288577153937e+00 3.045976862288150677e+00 6.047400055848752345e+02 +6.092184368737474820e+00 3.075498573843291616e+00 5.949218720435990235e+02 +6.112224448897795703e+00 3.105112588390241068e+00 5.850656189900898880e+02 +6.132264529058115698e+00 3.134810989579997376e+00 5.751752046105395948e+02 +6.152304609218436582e+00 3.164585833625852995e+00 5.652546008100322297e+02 +6.172344689378757465e+00 3.194429152493549307e+00 5.553077916174643178e+02 +6.192384769539078349e+00 3.224332957101171182e+00 5.453387715855913029e+02 +6.212424849699398344e+00 3.254289240527490801e+00 5.353515441868502194e+02 +6.232464929859719227e+00 3.284289981227487498e+00 5.253501202055987278e+02 +6.252505010020040110e+00 3.314327146253717160e+00 5.153385161274204620e+02 +6.272545090180360106e+00 3.344392694482282824e+00 5.053207525261383921e+02 +6.292585170340680989e+00 3.374478579842083992e+00 4.953008524491854700e+02 +6.312625250501001872e+00 3.404576754546040807e+00 4.852828398019860288e+02 +6.332665330661322756e+00 3.434679172323020335e+00 4.752707377319885609e+02 +6.352705410821642751e+00 3.464777791649148231e+00 4.652685670130051676e+02 +6.372745490981963634e+00 3.494864578977221026e+00 4.552803444305018843e+02 +6.392785571142284518e+00 3.524931511962900554e+00 4.453100811684944347e+02 +6.412825651302604513e+00 3.554970582686421299e+00 4.353617811986907782e+02 +6.432865731462925396e+00 3.584973800868508143e+00 4.254394396725285787e+02 +6.452905811623246279e+00 3.614933197079194027e+00 4.155470413167602146e+02 +6.472945891783567163e+00 3.644840825938279849e+00 4.056885588332180532e+02 +6.492985971943887158e+00 3.674688769306128311e+00 3.958679513034139177e+02 +6.513026052104208041e+00 3.704469139463525185e+00 3.860891625986033660e+02 +6.533066132264528925e+00 3.734174082279312135e+00 3.763561197959638776e+02 +6.553106212424849808e+00 3.763795780364542765e+00 3.666727316015129077e+02 +6.573146292585169803e+00 3.793326456211875808e+00 3.570428867804062634e+02 +6.593186372745490686e+00 3.822758375318961566e+00 3.474704525952413405e+02 +6.613226452905811570e+00 3.852083849294539952e+00 3.379592732530011290e+02 +6.633266533066131565e+00 3.881295238946041781e+00 3.285131683612518714e+02 +6.653306613226452448e+00 3.910384957347420976e+00 3.191359313942206768e+02 +6.673346693386773332e+00 3.939345472885993349e+00 3.098313281693717158e+02 +6.693386773547094215e+00 3.968169312287071815e+00 3.006030953350844470e+02 +6.713426853707414210e+00 3.996849063615168340e+00 2.914549388700485792e+02 +6.733466933867735094e+00 4.025377379250564047e+00 2.823905325949738199e+02 +6.753507014028055977e+00 4.053746978840048421e+00 2.734135166972172897e+02 +6.773547094188376860e+00 4.081950652220645459e+00 2.645274962689139784e+02 +6.793587174348696855e+00 4.109981262315153927e+00 2.557360398592040838e+02 +6.813627254509017739e+00 4.137831747998339971e+00 2.470426780411323762e+02 +6.833667334669338622e+00 4.165495126932617254e+00 2.384509019938032282e+02 +6.853707414829658617e+00 4.192964498372094617e+00 2.299641621003518992e+02 +6.873747494989979501e+00 4.220233045933865057e+00 2.215858665622992305e+02 +6.893787575150300384e+00 4.247294040335392928e+00 2.133193800308498282e+02 +6.913827655310621267e+00 4.274140842096944226e+00 2.051680222556753677e+02 +6.933867735470941263e+00 4.300766904207941721e+00 1.971350667517327224e+02 +6.953907815631262146e+00 4.327165774756191574e+00 1.892237394846470409e+02 +6.973947895791583029e+00 4.353331099518909397e+00 1.814372175751938983e+02 +6.993987975951903913e+00 4.379256624514525242e+00 1.737786280233937930e+02 +7.014028056112223908e+00 4.404936198514227463e+00 1.662510464527364036e+02 +7.034068136272544791e+00 4.430363775512244473e+00 1.588574958750354824e+02 +7.054108216432865675e+00 4.455533417153866971e+00 1.516009454764152053e+02 +7.074148296593185670e+00 4.480439295120240750e+00 1.444843094249101227e+02 +7.094188376753506553e+00 4.505075693468969966e+00 1.375104457001587832e+02 +7.114228456913827436e+00 4.529437010929587615e+00 1.306821549456662126e+02 +7.134268537074148320e+00 4.553517763152981068e+00 1.240021793440882476e+02 +7.154308617234468315e+00 4.577312584913854288e+00 1.174732015159950436e+02 +7.174348697394789198e+00 4.600816232265364292e+00 1.110978434425529429e+02 +7.194388777555110082e+00 4.624023584645035712e+00 1.048786654125609346e+02 +7.214428857715430965e+00 4.646929646931139857e+00 9.881816499425976019e+01 +7.234468937875750960e+00 4.669529551448691862e+00 9.291877603233054117e+01 +7.254509018036071843e+00 4.691818559924266552e+00 8.718286767048279273e+01 +7.274549098196392727e+00 4.713792065388847874e+00 8.161274340002822214e+01 +7.294589178356712722e+00 4.735445594027945404e+00 7.621064013481766608e+01 +7.314629258517033605e+00 4.756774806978249615e+00 7.097872731291521120e+01 +7.334669338677354489e+00 4.777775502070065627e+00 6.591910602537187458e+01 +7.354709418837675372e+00 4.798443615514884186e+00 6.103380817244479317e+01 +7.374749498997995367e+00 4.818775223537352659e+00 5.632479564760383539e+01 +7.394789579158316251e+00 4.838766543951037669e+00 5.179395954965144000e+01 +7.414829659318637134e+00 4.858413937677311445e+00 4.744311942327492204e+01 +7.434869739478958017e+00 4.877713910206781023e+00 4.327402252833200436e+01 +7.454909819639278012e+00 4.896663113002647449e+00 3.928834313816695811e+01 +7.474949899799598896e+00 4.915258344845452321e+00 3.548768186723586382e+01 +7.494989979959919779e+00 4.933496553118660088e+00 3.187356502831510241e+01 +7.515030060120239774e+00 4.951374835034558330e+00 2.844744401954644530e+01 +7.535070140280560658e+00 4.968890438800001697e+00 2.521069474156775314e+01 +7.555110220440881541e+00 4.986040764721496821e+00 2.216461704496407137e+01 +7.575150300601202424e+00 5.002823366249223191e+00 1.931043420825829671e+01 +7.595190380761522420e+00 5.019235950959545889e+00 1.664929244665321662e+01 +7.615230460921843303e+00 5.035276381475634722e+00 1.418226045172094807e+01 +7.635270541082164186e+00 5.050942676325811398e+00 1.191032896222642634e+01 +7.655310621242485070e+00 5.066233010739295217e+00 9.834410366254722646e+00 +7.675350701402805065e+00 5.081145717379013327e+00 7.955338334803988332e+00 +7.695390781563125948e+00 5.095679287011193104e+00 6.273867486990178044e+00 +7.715430861723446831e+00 5.109832369111450667e+00 4.790673086998884500e+00 +7.735470941883766827e+00 5.123603772407154366e+00 3.506350772904916813e+00 +7.755511022044087710e+00 5.136992465355831428e+00 2.421416317469038848e+00 +7.775551102204408593e+00 5.149997576559419699e+00 1.536305421008269612e+00 +7.795591182364729477e+00 5.162618395114220604e+00 8.513735364222744240e-01 +7.815631262525049472e+00 5.174854370896386335e+00 3.668957264467385126e-01 +7.835671342685370355e+00 5.186705114782850679e+00 8.306655319023606432e-02 +7.855711422845691239e+00 5.198170398807591575e+00 0.000000000000000000e+00 +7.875751503006012122e+00 5.209250156253183661e+00 1.177294256871248418e-01 +7.895791583166332117e+00 5.219944481677590176e+00 4.362075511299656205e-01 +7.915831663326653000e+00 5.230253630876193327e+00 9.553064782610614092e-01 +7.935871743486973884e+00 5.240178020779059587e+00 1.674817741429812656e+00 +7.955911823647293879e+00 5.249718229283516280e+00 2.594452391120483092e+00 +7.975951903807614762e+00 5.258874995022061682e+00 3.713841109991943057e+00 +7.995991983967935646e+00 5.267649217065747180e+00 5.032534361192301020e+00 +8.016032064128255641e+00 5.276041954563106096e+00 6.550002568888864118e+00 +8.036072144288576524e+00 5.284054426314822805e+00 8.265636330941418919e+00 +8.056112224448897408e+00 5.291688010284259391e+00 1.017874666363291603e+01 +8.076152304609218291e+00 5.298944243044088509e+00 1.228856527835901602e+01 +8.096192384769539174e+00 5.305824819159209227e+00 1.459424489016658200e+01 +8.116232464929860058e+00 5.312331590506231827e+00 1.709485955801583756e+01 +8.136272545090179165e+00 5.318466565529778478e+00 1.978940505663001659e+01 +8.156312625250500048e+00 5.324231908435906213e+00 2.267679927978462828e+01 +8.176352705410820931e+00 5.329629938322985261e+00 2.575588267487045968e+01 +8.196392785571141815e+00 5.334663128250363151e+00 2.902541870856099848e+01 +8.216432865731462698e+00 5.339334104245210710e+00 3.248409436339298395e+01 +8.236472945891783581e+00 5.343645644247928317e+00 3.613052066506330817e+01 +8.256513026052104465e+00 5.347600676996553837e+00 3.996323324022881707e+01 +8.276553106212425348e+00 5.351202280850603010e+00 4.398069290458620628e+01 +8.296593186372744455e+00 5.354453682554823679e+00 4.818128628099457700e+01 +8.316633266533065338e+00 5.357358255943372782e+00 5.256332644739540427e+01 +8.336673346693386222e+00 5.359919520584902841e+00 5.712505361426364914e+01 +8.356713426853707105e+00 5.362141140369139691e+00 6.186463583132555044e+01 +8.376753507014027988e+00 5.364026922035497691e+00 6.678016972325357870e+01 +8.396793587174348872e+00 5.365580813644318603e+00 7.186968125404561647e+01 +8.416833667334669755e+00 5.366806902991370976e+00 7.713112651978079271e+01 +8.436873747494988862e+00 5.367709415966225528e+00 8.256239256943308646e+01 +8.456913827655309746e+00 5.368292714855172676e+00 8.816129825341631943e+01 +8.476953907815630629e+00 5.368561296589365206e+00 9.392559509951207986e+01 +8.496993987975951512e+00 5.368519790938893976e+00 9.985296821583851568e+01 +8.517034068136272396e+00 5.368172958653508076e+00 1.059410372204906849e+02 +8.537074148296593279e+00 5.367525689550741497e+00 1.121873571974812194e+02 +8.557114228456914162e+00 5.366583000552199501e+00 1.185894196785977641e+02 +8.577154308617233269e+00 5.365350033668812024e+00 1.251446536507811516e+02 +8.597194388777554153e+00 5.363832053935846389e+00 1.318504265886247424e+02 +8.617234468937875036e+00 5.362034447298508866e+00 1.387040455115703708e+02 +8.637274549098195919e+00 5.359962718449001073e+00 1.457027580653883660e+02 +8.657314629258516803e+00 5.357622488615882084e+00 1.528437536274986712e+02 +8.677354709418837686e+00 5.355019493306628853e+00 1.601241644356925917e+02 +8.697394789579158569e+00 5.352159580004308026e+00 1.675410667398015221e+02 +8.717434869739479453e+00 5.349048705819276606e+00 1.750914819758495753e+02 +8.737474949899798560e+00 5.345692935096859166e+00 1.827723779622187124e+02 +8.757515030060119443e+00 5.342098436981957299e+00 1.905806701173493138e+02 +8.777555110220440326e+00 5.338271482941573609e+00 1.985132226984773354e+02 +8.797595190380761210e+00 5.334218444246249469e+00 2.065668500609244802e+02 +8.817635270541082093e+00 5.329945789411409507e+00 2.147383179374249096e+02 +8.837675350701402976e+00 5.325460081599669770e+00 2.230243447369789749e+02 +8.857715430861723860e+00 5.320767975985125631e+00 2.314216028627118078e+02 +8.877755511022042967e+00 5.315876217080687027e+00 2.399267200482068745e+02 +8.897795591182363850e+00 5.310791636029545515e+00 2.485362807117820694e+02 +8.917835671342684734e+00 5.305521147861844256e+00 2.572468273281535289e+02 +8.937875751503005617e+00 5.300071748717661180e+00 2.660548618169502788e+02 +8.957915831663326500e+00 5.294450513037422645e+00 2.749568469475133838e+02 +8.977955911823647384e+00 5.288664590720861369e+00 2.839492077594163675e+02 +8.997995991983968267e+00 5.282721204255688363e+00 2.930283329981389784e+02 +9.018036072144287374e+00 5.276627645817097978e+00 3.021905765653149274e+02 +9.038076152304608257e+00 5.270391274339290000e+00 3.114322589829767480e+02 +9.058116232464929141e+00 5.264019512560196290e+00 3.207496688711975139e+02 +9.078156312625250024e+00 5.257519844040566603e+00 3.301390644385522819e+02 +9.098196392785570907e+00 5.250899810158627723e+00 3.395966749847884216e+02 +9.118236472945891791e+00 5.244167007081546927e+00 3.491187024151063270e+02 +9.138276553106212674e+00 5.237329082714865081e+00 3.587013227654414891e+02 +9.158316633266533557e+00 5.230393733631166775e+00 3.683406877381355002e+02 +9.178356713426852664e+00 5.223368701979203443e+00 3.780329262473783842e+02 +9.198396793587173548e+00 5.216261772374713779e+00 3.877741459738065259e+02 +9.218436873747494431e+00 5.209080768774191128e+00 3.975604349276194398e+02 +9.238476953907815314e+00 5.201833551332843975e+00 4.073878630196048221e+02 +9.258517034068136198e+00 5.194528013248028486e+00 4.172524836394272256e+02 +9.278557114228457081e+00 5.187172077589415231e+00 4.271503352405529768e+02 +9.298597194388777964e+00 5.179773694117139726e+00 4.370774429311730955e+02 +9.318637274549097071e+00 5.172340836089261096e+00 4.470298200704844476e+02 +9.338677354709417955e+00 5.164881497059755411e+00 4.570034698696940154e+02 +9.358717434869738838e+00 5.157403687668390191e+00 4.669943869970894639e+02 +9.378757515030059722e+00 5.149915432423705752e+00 4.769985591865493006e+02 +9.398797595190380605e+00 5.142424766480450771e+00 4.870119688488334759e+02 +9.418837675350701488e+00 5.134939732412731495e+00 4.970305946850124315e+02 +9.438877755511022372e+00 5.127468376984182008e+00 5.070504133013864703e+02 +9.458917835671341479e+00 5.120018747916452284e+00 5.170674008252445901e+02 +9.478957915831662362e+00 5.112598890657316097e+00 5.270775345208204499e+02 +9.498997995991983245e+00 5.105216845149687543e+00 5.370767944047840956e+02 +9.519038076152304129e+00 5.097880642602845569e+00 5.470611648606347899e+02 +9.539078156312625012e+00 5.090598302267177466e+00 5.570266362513380045e+02 +9.559118236472945895e+00 5.083377828213707872e+00 5.669692065295602106e+02 +9.579158316633266779e+00 5.076227206119739321e+00 5.768848828448577706e+02 +9.599198396793587662e+00 5.069154400061871790e+00 5.867696831471699852e+02 +9.619238476953906769e+00 5.062167349317696186e+00 5.966196377859761242e+02 +9.639278557114227652e+00 5.055273965177453199e+00 6.064307911044755883e+02 +9.659318637274548536e+00 5.048482127766917849e+00 6.161992030281406869e+02 +9.679358717434869419e+00 5.041799682882824207e+00 6.259209506470201632e+02 +9.699398797595190302e+00 5.035234438842048021e+00 6.355921297911449983e+02 +9.719438877755511186e+00 5.028794163345857271e+00 6.452088565984089428e+02 +9.739478957915832069e+00 5.022486580360477681e+00 6.547672690742948589e+02 +9.759519038076151176e+00 5.016319367015202424e+00 6.642635286428171639e+02 +9.779559118236472059e+00 5.010300150519331197e+00 6.736938216880639629e+02 +9.799599198396792943e+00 5.004436505099149279e+00 6.830543610857074555e+02 +9.819639278557113826e+00 4.998735948956176678e+00 6.923413877238837131e+02 +9.839679358717434710e+00 4.993205941247933488e+00 7.015511720128191655e+02 +9.859719438877755593e+00 4.987853879092396525e+00 7.106800153826006863e+02 +9.879759519038076476e+00 4.982687094597387123e+00 7.197242517684906034e+02 +9.899799599198395583e+00 4.977712851916056280e+00 7.286802490831846626e+02 +9.919839679358716467e+00 4.972938344329665306e+00 7.375444106754310951e+02 +9.939879759519037350e+00 4.968370691358828140e+00 7.463131767744092713e+02 +9.959919839679358233e+00 4.964016935904367323e+00 7.549830259193067832e+02 +9.979959919839679117e+00 4.959884041418952449e+00 7.635504763735062852e+02 +1.000000000000000000e+01 4.955978889110630448e+00 7.720120875228209343e+02 diff --git a/buch/papers/kugel/figures/tikz/curvature-1d.pdf b/buch/papers/kugel/figures/tikz/curvature-1d.pdf new file mode 100644 index 0000000..6425af6 Binary files /dev/null and b/buch/papers/kugel/figures/tikz/curvature-1d.pdf differ diff --git a/buch/papers/kugel/figures/tikz/curvature-1d.py b/buch/papers/kugel/figures/tikz/curvature-1d.py new file mode 100644 index 0000000..4710fc8 --- /dev/null +++ b/buch/papers/kugel/figures/tikz/curvature-1d.py @@ -0,0 +1,32 @@ +import numpy as np +import matplotlib.pyplot as plt + + +@np.vectorize +def fn(x): + return (x ** 2) * 2 / 100 + (1 + x / 4) + np.sin(x) + +@np.vectorize +def ddfn(x): + return 2 * 5 / 100 - np.sin(x) + +x = np.linspace(0, 10, 500) +y = fn(x) +ddy = ddfn(x) + +cmap = ddy - np.min(ddy) +cmap = cmap * 1000 / np.max(cmap) + +plt.plot(x, y) +plt.plot(x, ddy) +# plt.plot(x, cmap) + +plt.show() + +fname = "curvature-1d.dat" +np.savetxt(fname, np.array([x, y, cmap]).T, delimiter=" ") + +# with open(fname, "w") as f: +# # f.write("x y cmap\n") +# for xv, yv, cv in zip(x, y, cmap): +# f.write(f"{xv} {yv} {cv}\n") diff --git a/buch/papers/kugel/figures/tikz/curvature-1d.tex b/buch/papers/kugel/figures/tikz/curvature-1d.tex new file mode 100644 index 0000000..6983fb0 --- /dev/null +++ b/buch/papers/kugel/figures/tikz/curvature-1d.tex @@ -0,0 +1,21 @@ +% vim:ts=2 sw=2 et: +\documentclass[tikz, border=5mm]{standalone} +\usepackage{pgfplots} + +\begin{document} +\begin{tikzpicture} + \begin{axis}[ + clip = false, + width = 8cm, height = 6cm, + xtick = \empty, ytick = \empty, + colormap name = viridis, + axis lines = middle, + axis line style = {ultra thick, -latex} + ] + \addplot+[ + smooth, mark=none, line width = 3pt, mesh, + point meta=explicit, + ] file {curvature-1d.dat}; + \end{axis} +\end{tikzpicture} +\end{document} diff --git a/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf b/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf new file mode 100644 index 0000000..1bff016 Binary files /dev/null and b/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf differ diff --git a/buch/papers/kugel/figures/tikz/spherical-coordinates.tex b/buch/papers/kugel/figures/tikz/spherical-coordinates.tex new file mode 100644 index 0000000..3a45385 --- /dev/null +++ b/buch/papers/kugel/figures/tikz/spherical-coordinates.tex @@ -0,0 +1,99 @@ +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{bm} +\usepackage{lmodern} +\usepackage{tikz-3dplot} + +\usetikzlibrary{arrows} +\usetikzlibrary{intersections} +\usetikzlibrary{math} +\usetikzlibrary{positioning} +\usetikzlibrary{arrows.meta} +\usetikzlibrary{shapes.misc} +\usetikzlibrary{calc} + +\begin{document} + +\tdplotsetmaincoords{60}{130} +\pgfmathsetmacro{\l}{2} + +\begin{tikzpicture}[ + >=latex, + tdplot_main_coords, + dot/.style = { + black, fill = black, circle, + outer sep = 0, inner sep = 0, + minimum size = .8mm + }, + round/.style = { + draw = orange, thick, circle, + minimum size = 1mm, + inner sep = 0pt, outer sep = 0pt, + }, + cross/.style = { + cross out, draw = magenta, thick, + minimum size = 1mm, + inner sep = 0pt, outer sep = 0pt + }, + ] + + % origin + \coordinate (O) at (0,0,0); + + % poles + \coordinate (NP) at (0,0,\l); + \coordinate (SP) at (0,0,-\l); + + % \draw (SP) node[dot, gray] {}; + % \draw (NP) node[dot, gray] {}; + + % gray unit circle + \tdplotdrawarc[gray]{(O)}{\l}{0}{360}{}{}; + \draw[gray, dashed] (-\l, 0, 0) to (\l, 0, 0); + \draw[gray, dashed] (0, -\l, 0) to (0, \l, 0); + + % axis + \draw[->] (O) -- ++(1.25*\l,0,0) node[left] {\(\mathbf{\hat{x}}\)}; + \draw[->] (O) -- ++(0,1.25*\l,0) node[right] {\(\mathbf{\hat{y}}\)}; + \draw[->] (O) -- ++(0,0,1.25*\l) node[above] {\(\mathbf{\hat{z}}\)}; + + % meridians + \foreach \phi in {0, 30, 60, ..., 150}{ + \tdplotsetrotatedcoords{\phi}{90}{0}; + \tdplotdrawarc[lightgray, densely dotted, tdplot_rotated_coords]{(O)}{\l}{0}{360}{}{}; + } + + % dot above and its projection + \pgfmathsetmacro{\phi}{120} + \pgfmathsetmacro{\theta}{40} + + \pgfmathsetmacro{\px}{cos(\phi)*sin(\theta)*\l} + \pgfmathsetmacro{\py}{sin(\phi)*sin(\theta)*\l} + \pgfmathsetmacro{\pz}{cos(\theta)*\l}) + + % point A + \coordinate (A) at (\px,\py,\pz); + \coordinate (Ap) at (\px,\py, 0); + + % lines + \draw[red!80!black, ->] (O) -- (A); + \draw[red!80!black, densely dashed] (O) -- (Ap) -- (A) + node[above right] {\(\mathbf{\hat{r}}\)}; + + % arcs + \tdplotdrawarc[blue!80!black, ->]{(O)}{.8\l}{0}{\phi}{}{}; + \node[below right, blue!80!black] at (.8\l,0,0) {\(\bm{\hat{\varphi}}\)}; + + \tdplotsetrotatedcoords{\phi-90}{-90}{0}; + \tdplotdrawarc[blue!80!black, ->, tdplot_rotated_coords]{(O)}{.95\l}{0}{\theta}{}{}; + \node[above right = 1mm, blue!80!black] at (0,0,.8\l) {\(\bm{\hat{\vartheta}}\)}; + + + % dots + \draw (O) node[dot] {}; + \draw (A) node[dot, fill = red!80!black] {}; + +\end{tikzpicture} +\end{document} +% vim:ts=2 sw=2 et: diff --git a/buch/papers/kugel/images/Makefile b/buch/papers/kugel/images/Makefile deleted file mode 100644 index 4226dab..0000000 --- a/buch/papers/kugel/images/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -# -# Makefile -- build images -# -# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule -# -all: curvature.jpg spherecurve.jpg - -curvature.inc: curvgraph.m - octave curvgraph.m - -curvature.png: curvature.pov curvature.inc - povray +A0.1 +W1920 +H1080 +Ocurvature.png curvature.pov - -curvature.jpg: curvature.png - convert curvature.png -density 300 -units PixelsPerInch curvature.jpg - -spherecurve2.inc: spherecurve.m - octave spherecurve.m - -spherecurve.png: spherecurve.pov spherecurve.inc - povray +A0.1 +W1080 +H1080 +Ospherecurve.png spherecurve.pov - -spherecurve.jpg: spherecurve.png - convert spherecurve.png -density 300 -units PixelsPerInch spherecurve.jpg - -spherecurve: spherecurve.cpp - g++ -o spherecurve -g -Wall -O spherecurve.cpp - -spherecurve.inc: spherecurve - ./spherecurve diff --git a/buch/papers/kugel/images/curvature.maxima b/buch/papers/kugel/images/curvature.maxima deleted file mode 100644 index 6313642..0000000 --- a/buch/papers/kugel/images/curvature.maxima +++ /dev/null @@ -1,6 +0,0 @@ - -f: exp(-r^2/sigma^2)/sigma; -laplacef: ratsimp(diff(r * diff(f,r), r) / r); -f: exp(-r^2/(2*sigma^2))/(sqrt(2)*sigma); -laplacef: ratsimp(diff(r * diff(f,r), r) / r); - diff --git a/buch/papers/kugel/images/curvature.pov b/buch/papers/kugel/images/curvature.pov deleted file mode 100644 index 3b15d77..0000000 --- a/buch/papers/kugel/images/curvature.pov +++ /dev/null @@ -1,139 +0,0 @@ -// -// curvature.pov -// -// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule -// - -#version 3.7; -#include "colors.inc" - -global_settings { - assumed_gamma 1 -} - -#declare imagescale = 0.09; - -camera { - location <10, 10, -40> - look_at <0, 0, 0> - right 16/9 * x * imagescale - up y * imagescale -} - -light_source { - <-10, 10, -40> color White - area_light <1,0,0> <0,0,1>, 10, 10 - adaptive 1 - jitter -} - -sky_sphere { - pigment { - color rgb<1,1,1> - } -} - -// -// draw an arrow from to with thickness with -// color -// -#macro arrow(from, to, arrowthickness, c) -#declare arrowdirection = vnormalize(to - from); -#declare arrowlength = vlength(to - from); -union { - sphere { - from, 1.1 * arrowthickness - } - cylinder { - from, - from + (arrowlength - 5 * arrowthickness) * arrowdirection, - arrowthickness - } - cone { - from + (arrowlength - 5 * arrowthickness) * arrowdirection, - 2 * arrowthickness, - to, - 0 - } - pigment { - color c - } - finish { - specular 0.9 - metallic - } -} -#end - -arrow(<-3.1,0,0>, <3.1,0,0>, 0.01, White) -arrow(<0,-1,0>, <0,1,0>, 0.01, White) -arrow(<0,0,-2.1>, <0,0,2.1>, 0.01, White) - -#include "curvature.inc" - -#declare sigma = 1; -#declare s = 1.4; -#declare N0 = 0.4; -#declare funktion = function(r) { - (exp(-r*r/(sigma*sigma)) / sigma - - - exp(-r*r/(2*sigma*sigma)) / (sqrt(2)*sigma)) / N0 -}; -#declare hypot = function(xx, yy) { sqrt(xx*xx+yy*yy) }; - -#declare Funktion = function(x,y) { funktion(hypot(x+s,y)) - funktion(hypot(x-s,y)) }; -#macro punkt(xx,yy) - -#end - -#declare griddiameter = 0.006; -union { - #declare xmin = -3; - #declare xmax = 3; - #declare ymin = -2; - #declare ymax = 2; - - - #declare xstep = 0.2; - #declare ystep = 0.02; - #declare xx = xmin; - #while (xx < xmax + xstep/2) - #declare yy = ymin; - #declare P = punkt(xx, yy); - #while (yy < ymax - ystep/2) - #declare yy = yy + ystep; - #declare Q = punkt(xx, yy); - sphere { P, griddiameter } - cylinder { P, Q, griddiameter } - #declare P = Q; - #end - sphere { P, griddiameter } - #declare xx = xx + xstep; - #end - - #declare xstep = 0.02; - #declare ystep = 0.2; - #declare yy = ymin; - #while (yy < ymax + ystep/2) - #declare xx = xmin; - #declare P = punkt(xx, yy); - #while (xx < xmax - xstep/2) - #declare xx = xx + xstep; - #declare Q = punkt(xx, yy); - sphere { P, griddiameter } - cylinder { P, Q, griddiameter } - #declare P = Q; - #end - sphere { P, griddiameter } - #declare yy = yy + ystep; - #end - - pigment { - color rgb<0.8,0.8,0.8> - } - finish { - metallic - specular 0.8 - } -} - diff --git a/buch/papers/kugel/images/curvgraph.m b/buch/papers/kugel/images/curvgraph.m deleted file mode 100644 index 75effd6..0000000 --- a/buch/papers/kugel/images/curvgraph.m +++ /dev/null @@ -1,140 +0,0 @@ -# -# curvature.m -# -# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule -# - -global N; -N = 10; - -global sigma2; -sigma2 = 1; - -global s; -s = 1.4; - -global cmax; -cmax = 0.9; -global cmin; -cmin = -0.9; - -global Cmax; -global Cmin; -Cmax = 0; -Cmin = 0; - -xmin = -3; -xmax = 3; -xsteps = 200; -hx = (xmax - xmin) / xsteps; - -ymin = -2; -ymax = 2; -ysteps = 200; -hy = (ymax - ymin) / ysteps; - -function retval = f0(r) - global sigma2; - retval = exp(-r^2/sigma2)/sqrt(sigma2) - exp(-r^2/(2*sigma2))/(sqrt(2*sigma2)); -end - -global N0; -N0 = f0(0) -N0 = 0.4; - -function retval = f1(x,y) - global N0; - retval = f0(hypot(x, y)) / N0; -endfunction - -function retval = f(x, y) - global s; - retval = f1(x+s, y) - f1(x-s, y); -endfunction - -function retval = curvature0(r) - global sigma2; - retval = ( - -4*(sigma2-r^2)*exp(-r^2/sigma2) - + - (2*sigma2-r^2)*exp(-r^2/(2*sigma2)) - ) / (sigma2^(5/2)); -endfunction - -function retval = curvature1(x, y) - retval = curvature0(hypot(x, y)); -endfunction - -function retval = curvature(x, y) - global s; - retval = curvature1(x+s, y) - curvature1(x-s, y); -endfunction - -function retval = farbe(x, y) - global Cmax; - global Cmin; - global cmax; - global cmin; - c = curvature(x, y); - if (c < Cmin) - Cmin = c - endif - if (c > Cmax) - Cmax = c - endif - u = (c - cmin) / (cmax - cmin); - if (u > 1) - u = 1; - endif - if (u < 0) - u = 0; - endif - color = [ u, 0.5, 1-u ]; - color = color/max(color); - color(1,4) = c/2; - retval = color; -endfunction - -function dreieck(fn, A, B, C) - fprintf(fn, "\ttriangle {\n"); - fprintf(fn, "\t <%.4f,%.4f,%.4f>,\n", A(1,1), A(1,3), A(1,2)); - fprintf(fn, "\t <%.4f,%.4f,%.4f>,\n", B(1,1), B(1,3), B(1,2)); - fprintf(fn, "\t <%.4f,%.4f,%.4f>\n", C(1,1), C(1,3), C(1,2)); - fprintf(fn, "\t}\n"); -endfunction - -function viereck(fn, punkte) - color = farbe(mean(punkte(:,1)), mean(punkte(:,2))); - fprintf(fn, " mesh {\n"); - dreieck(fn, punkte(1,:), punkte(2,:), punkte(3,:)); - dreieck(fn, punkte(2,:), punkte(3,:), punkte(4,:)); - fprintf(fn, "\tpigment { color rgb<%.4f,%.4f,%.4f> } // %.4f\n", - color(1,1), color(1,2), color(1,3), color(1,4)); - fprintf(fn, " }\n"); -endfunction - -fn = fopen("curvature.inc", "w"); -punkte = zeros(4,3); -for ix = (0:xsteps-1) - x = xmin + ix * hx; - punkte(1,1) = x; - punkte(2,1) = x; - punkte(3,1) = x + hx; - punkte(4,1) = x + hx; - for iy = (0:ysteps-1) - y = ymin + iy * hy; - punkte(1,2) = y; - punkte(2,2) = y + hy; - punkte(3,2) = y; - punkte(4,2) = y + hy; - for i = (1:4) - punkte(i,3) = f(punkte(i,1), punkte(i,2)); - endfor - viereck(fn, punkte); - end -end -#fprintf(fn, " finish { metallic specular 0.5 }\n"); -fclose(fn); - -printf("Cmax = %.4f\n", Cmax); -printf("Cmin = %.4f\n", Cmin); diff --git a/buch/papers/kugel/images/spherecurve.cpp b/buch/papers/kugel/images/spherecurve.cpp deleted file mode 100644 index 8ddf5e5..0000000 --- a/buch/papers/kugel/images/spherecurve.cpp +++ /dev/null @@ -1,292 +0,0 @@ -/* - * spherecurve.cpp - * - * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule - */ -#include -#include -#include -#include -#include - -inline double sqr(double x) { return x * x; } - -/** - * \brief Class for 3d vectors (also used as colors) - */ -class vector { - double X[3]; -public: - vector() { X[0] = X[1] = X[2] = 0; } - vector(double a) { X[0] = X[1] = X[2] = a; } - vector(double x, double y, double z) { - X[0] = x; X[1] = y; X[2] = z; - } - vector(double theta, double phi) { - double s = sin(theta); - X[0] = cos(phi) * s; - X[1] = sin(phi) * s; - X[2] = cos(theta); - } - vector(const vector& other) { - for (int i = 0; i < 3; i++) { - X[i] = other.X[i]; - } - } - vector operator+(const vector& other) const { - return vector(X[0] + other.X[0], - X[1] + other.X[1], - X[2] + other.X[2]); - } - vector operator*(double l) const { - return vector(X[0] * l, X[1] * l, X[2] * l); - } - double operator*(const vector& other) const { - double s = 0; - for (int i = 0; i < 3; i++) { - s += X[i] * other.X[i]; - } - return s; - } - double norm() const { - double s = 0; - for (int i = 0; i < 3; i++) { - s += sqr(X[i]); - } - return sqrt(s); - } - vector normalize() const { - double l = norm(); - return vector(X[0]/l, X[1]/l, X[2]/l); - } - double max() const { - return std::max(X[0], std::max(X[1], X[2])); - } - double l0norm() const { - double l = 0; - for (int i = 0; i < 3; i++) { - if (fabs(X[i]) > l) { - l = fabs(X[i]); - } - } - return l; - } - vector l0normalize() const { - double l = l0norm(); - vector result(X[0]/l, X[1]/l, X[2]/l); - return result; - } - const double& operator[](int i) const { return X[i]; } - double& operator[](int i) { return X[i]; } -}; - -/** - * \brief Derived 3d vector class implementing color - * - * The constructor in this class converts a single value into a - * color on a suitable gradient. - */ -class color : public vector { -public: - static double utop; - static double ubottom; - static double green; -public: - color(double u) { - u = (u - ubottom) / (utop - ubottom); - if (u > 1) { - u = 1; - } - if (u < 0) { - u = 0; - } - u = pow(u,2); - (*this)[0] = u; - (*this)[1] = green * u * (1 - u); - (*this)[2] = 1-u; - double l = l0norm(); - for (int i = 0; i < 3; i++) { - (*this)[i] /= l; - } - } -}; - -double color::utop = 12; -double color::ubottom = -31; -double color::green = 0.5; - -/** - * \brief Surface model - * - * This class contains the definitions of the functions to plot - * and the parameters to - */ -class surfacefunction { - static vector axes[6]; - - double _a; - double _A; - - double _umin; - double _umax; -public: - double a() const { return _a; } - double A() const { return _A; } - - double umin() const { return _umin; } - double umax() const { return _umax; } - - surfacefunction(double a, double A) : _a(a), _A(A), _umin(0), _umax(0) { - } - - double f(double z) { - return A() * exp(a() * (sqr(z) - 1)); - } - - double g(double z) { - return -f(z) * 2*a() * ((2*a()*sqr(z) + (3-2*a()))*sqr(z) - 1); - } - - double F(const vector& v) { - double s = 0; - for (int i = 0; i < 6; i++) { - s += f(axes[i] * v); - } - return s / 6; - } - - double G(const vector& v) { - double s = 0; - for (int i = 0; i < 6; i++) { - s += g(axes[i] * v); - } - return s / 6; - } -protected: - color farbe(const vector& v) { - double u = G(v); - if (u < _umin) { - _umin = u; - } - if (u > _umax) { - _umax = u; - } - return color(u); - } -}; - -static double phi = (1 + sqrt(5)) / 2; -static double sl = sqrt(sqr(phi) + 1); -vector surfacefunction::axes[6] = { - vector( 0. , -1./sl, phi/sl ), - vector( 0. , 1./sl, phi/sl ), - vector( 1./sl, phi/sl, 0. ), - vector( -1./sl, phi/sl, 0. ), - vector( phi/sl, 0. , 1./sl ), - vector( -phi/sl, 0. , 1./sl ) -}; - -/** - * \brief Class to construct the plot - */ -class surface : public surfacefunction { - FILE *outfile; - - int _phisteps; - int _thetasteps; - double _hphi; - double _htheta; -public: - int phisteps() const { return _phisteps; } - int thetasteps() const { return _thetasteps; } - double hphi() const { return _hphi; } - double htheta() const { return _htheta; } - void phisteps(int s) { _phisteps = s; _hphi = 2 * M_PI / s; } - void thetasteps(int s) { _thetasteps = s; _htheta = M_PI / s; } - - surface(const std::string& filename, double a, double A) - : surfacefunction(a, A) { - outfile = fopen(filename.c_str(), "w"); - phisteps(400); - thetasteps(200); - } - - ~surface() { - fclose(outfile); - } - -private: - void triangle(const vector& v0, const vector& v1, const vector& v2) { - fprintf(outfile, " mesh {\n"); - vector c = (v0 + v1 + v2) * (1./3.); - vector color = farbe(c.normalize()); - vector V0 = v0 * (1 + F(v0)); - vector V1 = v1 * (1 + F(v1)); - vector V2 = v2 * (1 + F(v2)); - fprintf(outfile, "\ttriangle {\n"); - fprintf(outfile, "\t <%.6f,%.6f,%.6f>,\n", - V0[0], V0[2], V0[1]); - fprintf(outfile, "\t <%.6f,%.6f,%.6f>,\n", - V1[0], V1[2], V1[1]); - fprintf(outfile, "\t <%.6f,%.6f,%.6f>\n", - V2[0], V2[2], V2[1]); - fprintf(outfile, "\t}\n"); - fprintf(outfile, "\tpigment { color rgb<%.4f,%.4f,%.4f> }\n", - color[0], color[1], color[2]); - fprintf(outfile, "\tfinish { metallic specular 0.5 }\n"); - fprintf(outfile, " }\n"); - } - - void northcap() { - vector v0(0, 0, 1); - for (int i = 1; i <= phisteps(); i++) { - fprintf(outfile, " // northcap i = %d\n", i); - vector v1(htheta(), (i - 1) * hphi()); - vector v2(htheta(), i * hphi()); - triangle(v0, v1, v2); - } - } - - void southcap() { - vector v0(0, 0, -1); - for (int i = 1; i <= phisteps(); i++) { - fprintf(outfile, " // southcap i = %d\n", i); - vector v1(M_PI - htheta(), (i - 1) * hphi()); - vector v2(M_PI - htheta(), i * hphi()); - triangle(v0, v1, v2); - } - } - - void zone() { - for (int j = 1; j < thetasteps() - 1; j++) { - for (int i = 1; i <= phisteps(); i++) { - fprintf(outfile, " // zone j = %d, i = %d\n", - j, i); - vector v0( j * htheta(), (i-1) * hphi()); - vector v1((j+1) * htheta(), (i-1) * hphi()); - vector v2( j * htheta(), i * hphi()); - vector v3((j+1) * htheta(), i * hphi()); - triangle(v0, v1, v2); - triangle(v1, v2, v3); - } - } - } -public: - void draw() { - northcap(); - southcap(); - zone(); - } -}; - -/** - * \brief main function - */ -int main(int argc, char *argv[]) { - surface S("spherecurve.inc", 5, 10); - color::green = 1.0; - S.draw(); - std::cout << "umin: " << S.umin() << std::endl; - std::cout << "umax: " << S.umax() << std::endl; - return EXIT_SUCCESS; -} diff --git a/buch/papers/kugel/images/spherecurve.m b/buch/papers/kugel/images/spherecurve.m deleted file mode 100644 index 99d5c9a..0000000 --- a/buch/papers/kugel/images/spherecurve.m +++ /dev/null @@ -1,160 +0,0 @@ -# -# spherecurve.m -# -# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule -# -global a; -a = 5; -global A; -A = 10; - -phisteps = 400; -hphi = 2 * pi / phisteps; -thetasteps = 200; -htheta = pi / thetasteps; - -function retval = f(z) - global a; - global A; - retval = A * exp(a * (z^2 - 1)); -endfunction - -function retval = g(z) - global a; - retval = -f(z) * 2 * a * (2 * a * z^4 + (3 - 2*a) * z^2 - 1); - # 2 - # - a 2 4 2 2 a z - #(%o6) - %e (4 a z + (6 a - 4 a ) z - 2 a) %e -endfunction - -phi = (1 + sqrt(5)) / 2; - -global axes; -axes = [ - 0, 0, 1, -1, phi, -phi; - 1, -1, phi, phi, 0, 0; - phi, phi, 0, 0, 1, 1; -]; -axes = axes / (sqrt(phi^2+1)); - -function retval = kugel(theta, phi) - retval = [ - cos(phi) * sin(theta); - sin(phi) * sin(theta); - cos(theta) - ]; -endfunction - -function retval = F(v) - global axes; - s = 0; - for i = (1:6) - z = axes(:,i)' * v; - s = s + f(z); - endfor - retval = s / 6; -endfunction - -function retval = F2(theta, phi) - v = kugel(theta, phi); - retval = F(v); -endfunction - -function retval = G(v) - global axes; - s = 0; - for i = (1:6) - s = s + g(axes(:,i)' * v); - endfor - retval = s / 6; -endfunction - -function retval = G2(theta, phi) - v = kugel(theta, phi); - retval = G(v); -endfunction - -function retval = cnormalize(u) - utop = 11; - ubottom = -30; - retval = (u - ubottom) / (utop - ubottom); - if (retval > 1) - retval = 1; - endif - if (retval < 0) - retval = 0; - endif -endfunction - -global umin; -umin = 0; -global umax; -umax = 0; - -function color = farbe(v) - global umin; - global umax; - u = G(v); - if (u < umin) - umin = u; - endif - if (u > umax) - umax = u; - endif - u = cnormalize(u); - color = [ u, 0.5, 1-u ]; - color = color/max(color); -endfunction - -function dreieck(fn, v0, v1, v2) - fprintf(fn, " mesh {\n"); - c = (v0 + v1 + v2) / 3; - c = c / norm(c); - color = farbe(c); - v0 = v0 * (1 + F(v0)); - v1 = v1 * (1 + F(v1)); - v2 = v2 * (1 + F(v2)); - fprintf(fn, "\ttriangle {\n"); - fprintf(fn, "\t <%.6f,%.6f,%.6f>,\n", v0(1,1), v0(3,1), v0(2,1)); - fprintf(fn, "\t <%.6f,%.6f,%.6f>,\n", v1(1,1), v1(3,1), v1(2,1)); - fprintf(fn, "\t <%.6f,%.6f,%.6f>\n", v2(1,1), v2(3,1), v2(2,1)); - fprintf(fn, "\t}\n"); - fprintf(fn, "\tpigment { color rgb<%.4f,%.4f,%.4f> }\n", - color(1,1), color(1,2), color(1,3)); - fprintf(fn, "\tfinish { metallic specular 0.5 }\n"); - fprintf(fn, " }\n"); -endfunction - -fn = fopen("spherecurve2.inc", "w"); - - for i = (1:phisteps) - # Polkappe nord - v0 = [ 0; 0; 1 ]; - v1 = kugel(htheta, (i-1) * hphi); - v2 = kugel(htheta, i * hphi); - fprintf(fn, " // i = %d\n", i); - dreieck(fn, v0, v1, v2); - - # Polkappe sued - v0 = [ 0; 0; -1 ]; - v1 = kugel(pi-htheta, (i-1) * hphi); - v2 = kugel(pi-htheta, i * hphi); - dreieck(fn, v0, v1, v2); - endfor - - for j = (1:thetasteps-2) - for i = (1:phisteps) - v0 = kugel( j * htheta, (i-1) * hphi); - v1 = kugel((j+1) * htheta, (i-1) * hphi); - v2 = kugel( j * htheta, i * hphi); - v3 = kugel((j+1) * htheta, i * hphi); - fprintf(fn, " // i = %d, j = %d\n", i, j); - dreieck(fn, v0, v1, v2); - dreieck(fn, v1, v2, v3); - endfor - endfor - -fclose(fn); - -umin -umax diff --git a/buch/papers/kugel/images/spherecurve.maxima b/buch/papers/kugel/images/spherecurve.maxima deleted file mode 100644 index 1e9077c..0000000 --- a/buch/papers/kugel/images/spherecurve.maxima +++ /dev/null @@ -1,13 +0,0 @@ -/* - * spherecurv.maxima - * - * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule - */ -f: exp(-a * sin(theta)^2); - -g: ratsimp(diff(sin(theta) * diff(f, theta), theta)/sin(theta)); -g: subst(z, cos(theta), g); -g: subst(sqrt(1-z^2), sin(theta), g); -ratsimp(g); - -f: ratsimp(subst(sqrt(1-z^2), sin(theta), f)); diff --git a/buch/papers/kugel/images/spherecurve.pov b/buch/papers/kugel/images/spherecurve.pov deleted file mode 100644 index b1bf4b8..0000000 --- a/buch/papers/kugel/images/spherecurve.pov +++ /dev/null @@ -1,73 +0,0 @@ -// -// curvature.pov -// -// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule -// - -#version 3.7; -#include "colors.inc" - -global_settings { - assumed_gamma 1 -} - -#declare imagescale = 0.13; - -camera { - location <10, 10, -40> - look_at <0, 0, 0> - right x * imagescale - up y * imagescale -} - -light_source { - <-10, 10, -40> color White - area_light <1,0,0> <0,0,1>, 10, 10 - adaptive 1 - jitter -} - -sky_sphere { - pigment { - color rgb<1,1,1> - } -} - -// -// draw an arrow from to with thickness with -// color -// -#macro arrow(from, to, arrowthickness, c) -#declare arrowdirection = vnormalize(to - from); -#declare arrowlength = vlength(to - from); -union { - sphere { - from, 1.1 * arrowthickness - } - cylinder { - from, - from + (arrowlength - 5 * arrowthickness) * arrowdirection, - arrowthickness - } - cone { - from + (arrowlength - 5 * arrowthickness) * arrowdirection, - 2 * arrowthickness, - to, - 0 - } - pigment { - color c - } - finish { - specular 0.9 - metallic - } -} -#end - -arrow(<-2.7,0,0>, <2.7,0,0>, 0.03, White) -arrow(<0,-2.7,0>, <0,2.7,0>, 0.03, White) -arrow(<0,0,-2.7>, <0,0,2.7>, 0.03, White) - -#include "spherecurve.inc" - diff --git a/buch/papers/kugel/main.tex b/buch/papers/kugel/main.tex index 98d9cb2..d063f87 100644 --- a/buch/papers/kugel/main.tex +++ b/buch/papers/kugel/main.tex @@ -14,6 +14,7 @@ \input{papers/kugel/preliminaries} \input{papers/kugel/spherical-harmonics} \input{papers/kugel/applications} +\input{papers/kugel/proofs} \printbibliography[heading=subbibliography] \end{refsection} diff --git a/buch/papers/kugel/packages.tex b/buch/papers/kugel/packages.tex index 61f91ad..ead7653 100644 --- a/buch/papers/kugel/packages.tex +++ b/buch/papers/kugel/packages.tex @@ -1,3 +1,4 @@ +% vim:ts=2 sw=2 et: % % packages.tex -- packages required by the paper kugel % @@ -7,4 +8,13 @@ % if your paper needs special packages, add package commands as in the % following example %\usepackage{packagename} +\usepackage{cases} +\newcommand{\kugeltodo}[1]{\textcolor{red!70!black}{\texttt{[TODO: #1]}}} +\newcommand{\kugelplaceholderfig}[2]{ \begin{tikzpicture}% + \fill[lightgray!20] (0, 0) rectangle (#1, #2);% + \node[gray, anchor = center] at ({#1 / 2}, {#2 / 2}) {\Huge \ttfamily \bfseries TODO}; + \end{tikzpicture}} + +\DeclareMathOperator{\sphlaplacian}{\nabla^2_{\mathit{S}}} +\DeclareMathOperator{\surflaplacian}{\nabla^2_{\partial \mathit{S}}} diff --git a/buch/papers/kugel/preliminaries.tex b/buch/papers/kugel/preliminaries.tex index 03cd421..e48abe4 100644 --- a/buch/papers/kugel/preliminaries.tex +++ b/buch/papers/kugel/preliminaries.tex @@ -44,23 +44,23 @@ numbers \(\mathbb{R}\). \) \end{definition} -\texttt{TODO: Text here.} +\kugeltodo{Text here.} \begin{definition}[Span] \end{definition} -\texttt{TODO: Text here.} +\kugeltodo{Text here.} \begin{definition}[Linear independence] \end{definition} -\texttt{TODO: Text here.} +\kugeltodo{Text here.} \begin{definition}[Basis] \end{definition} -\texttt{TODO: Text here.} +\kugeltodo{Text here.} \begin{definition}[Inner product] \label{kugel:def:inner-product} \nocite{axler_linear_2014} diff --git a/buch/papers/kugel/proofs.tex b/buch/papers/kugel/proofs.tex new file mode 100644 index 0000000..143caa8 --- /dev/null +++ b/buch/papers/kugel/proofs.tex @@ -0,0 +1,245 @@ +% vim:ts=2 sw=2 et spell tw=80: +\section{Proofs} + +\subsection{Legendre Functions} \label{kugel:sec:proofs:legendre} + +\kugeltodo{Fix theorem numbers to match, review text.} + +\begin{lemma} + The polynomial function + \begin{align*} + y_n(x)&=\sum_{k=0}^{\lfloor \frac{n}{2} \rfloor} (-1)^k \frac{(2n-2k)!}{2^n k! (n-k)!(n-2k)!} x^{n-2k}\\ + &= \frac{1}{n!2^n}\frac{d^n}{dx^n}(1-x^2)^n =: P_n(x), + \end{align*} + is a solution to the second order differential equation + \begin{equation}\label{kugel:eq:sol_leg} + (1-x^2)\frac{d^2y}{dx^2}-2x\frac{dy}{dx} + n(n+1)y=0, \quad \forall n>0. + \end{equation} +\end{lemma} +\begin{proof} + In order to find a solution to Eq.\eqref{eq:legendre}, the following Ansatz can be performed: + \begin{equation}\label{eq:ansatz} + y(x) = \sum_{k=0}^\infty a_k x^k. + \end{equation} + Given Eq.\eqref{eq:ansatz}, then + \begin{align*} + \frac{dy}{dx} &= \sum_{k=0}^\infty k a_k x^{k-1}, \\ + \frac{d^2y}{dx^2} &= \sum_{k=0}^\infty k (k-1) a_k x^{k-2}. + \end{align*} + Eq.\eqref{eq:legendre} can be therefore written as + \begin{align} + &(1-x^2)\sum_{k=0}^\infty k (k-1) a_k x^{k-2} - 2x\sum_{k=0}^\infty k a_k x^{k-1} + n(n+1)\sum_{k=0}^\infty a_k x^k=0 \label{eq:ansatz_in_legendre} \\ + &=\sum_{k=0}^\infty k (k-1) a_k x^{k-2} - \sum_{k=0}^\infty k (k-1) a_k x^{k} - 2x\sum_{k=0}^\infty k a_k x^{k-1} + n(n+1)\sum_{k=0}^\infty a_k x^k=0. \nonumber + \end{align} + If one consider the term + \begin{equation}\label{eq:term} + \sum_{k=0}^\infty k (k-1) a_k x^{k-2}, + \end{equation} + the substitution $\tilde{k}=k-2$ yields Eq.\eqref{eq:term} to + \begin{equation*} + \sum_{\tilde{k}=-2}^\infty (\tilde{k}+2) (\tilde{k}+1) a_{\tilde{k}+2} x^{\tilde{k}}=\sum_{\tilde{k}=0}^\infty (\tilde{k}+2) (\tilde{k}+1) a_{\tilde{k}} x^{\tilde{k}}. + \end{equation*} + This means that Eq.\eqref{eq:ansatz_in_legendre} becomes + \begin{align} + &\sum_{k=0}^\infty (k+1)(k+2) a_{k+2} x^{k} - \sum_{k=0}^\infty k (k-1) a_k x^{k} - 2\sum_{k=0}^\infty k a_k x^k + n(n+1)\sum_{k=0}^\infty a_k x^k \nonumber \\ + = &\sum_{k=0}^\infty \big[ (k+1)(k+2) a_{k+2} - k (k-1) a_k - 2 k a_k + n(n+1) a_k \big] x^k \stackrel{!}{=} 0. \label{eq:condition} + \end{align} + The condition in Eq.\eqref{eq:condition} is equivalent to + \begin{equation}\label{eq:condition_2} + (k+1)(k+2) a_{k+2} - k (k-1) a_k - 2 k a_k + n(n+1) a_k = 0. + \end{equation} + We can derive a recursion formula for $a_{k+2}$ from Eq.\eqref{eq:condition_2}, which can be expressed as + \begin{equation}\label{eq:recursion} + a_{k+2}= \frac{k (k-1) - 2 k + n(n+1)}{(k+1)(k+2)}a_k = \frac{(k-n)(k+n+1)}{(k+2)(k+1)}a_k. + \end{equation} + All coefficients can be calculated using the latter. + + Following Eq.\eqref{eq:recursion}, if we want to compute $a_6$ we would have + \begin{align*} + a_{6}= -\frac{(n-4)(n+5)}{6\cdot 5}a_4 &= -\frac{(n-4)(5+n)}{6 \cdot 5} -\frac{(n-2)(n+3)}{4 \cdot 3} a_2 \\ + &= -\frac{(n-4)(n+5)}{6 \cdot 5} -\frac{(n-2)(n+3)}{4 \cdot 3} -\frac{n(n+1)}{2 \cdot 1} a_0 \\ + &= -\frac{(n+5)(n+3)(n+1)n(n-2)(n-4)}{6!} a_0. + \end{align*} + One can generalize this relation for the $i^\text{th}$ even coefficient as + \begin{equation*} + a_{2k} = (-1)^k \frac{(n+(2k-1))(n+(2k-1)-2)\hdots (n-(2k-2)+2)(n-(2k-2))}{(2k)!}a_0 + \end{equation*} + where $i=2k$. + + A similar expression can be written for the odd coefficients $a_{2k-1}$. In this case, the equation starts from $a_1$ and to find the pattern we can write the recursion for an odd coefficient, $a_7$ for example + \begin{align*} + a_{7}= -\frac{(n-5)(n+6)}{7\cdot 6}a_5 &= - \frac{(n-5)(n+6)}{7\cdot 6} -\frac{(n-3)(n+4)}{5 \cdot 4} a_3 \\ + &= - \frac{(n-5)(n+6)}{7\cdot 6} -\frac{(n-3)(n+4)}{5 \cdot 4} -\frac{(n-1)(n+2)}{3 \cdot 2} a_1 \\ + &= -\frac{(n+6)(n+4)(n+2)(n-1)(n-3)(n-5)}{7!} a_1. + \end{align*} + As before, we can generalize this equation for the $i^\text{th}$ odd coefficient + \begin{equation*} + a_{2k+1} = (-1)^k \frac{(n + 2k)(n+2k-2)\hdots(n-(2k-1)+2)(n-(2k-1))}{(2k+1)!}a_1 + \end{equation*} + where $i=2k+1$. + + Let be + \begin{align*} + y_\text{e}^K(x) &:= \sum_{k=0}^K(-1)^k \frac{(n+(2k-1))(n+(2k-1)-2)\hdots \color{red}(n-(2k-2)+2)(n-(2k-2))}{(2k)!} x^{2k}, \\ + y_\text{o}^K(x) &:= \sum_{k=0}^K(-1)^k \frac{(n + 2k)(n+2k-2)\hdots \color{blue} (n-(2k-1)+2)(n-(2k-1))}{(2k+1)!} x^{2k+1}. + \end{align*} + The solution to the Eq.\eqref{eq:legendre} can be written as + \begin{equation}\label{eq:solution} + y(x) = \lim_{K \to \infty} \left[ a_0 y_\text{e}^K(x) + a_1 y_\text{o}^K(x) \right]. + \end{equation} + + The colored parts can be analyzed separately: + \begin{itemize} + \item[\textcolor{red}{\textbullet}] Suppose that $n=n_0$ is an even number. Then the red part, for a specific value of $k=k_0$, will follow the following relation: + \begin{equation*} + n_0-(2k_0-2)=0. + \end{equation*} + From that point on, given the recursive nature of Eq.\eqref{eq:recursion}, all the subsequent coefficients will also be 0, making the sum finite. + \begin{equation*} + a_{2k}=0 \iff y_{\text{o}}^{2k}(x)=y_{\text{o}}^{2k_0}(x), \quad \forall k>k_0 + \end{equation*} + \item[\textcolor{blue}{\textbullet}] Suppose that $n=n_0$ is an odd number. Then the blue part, for a specific value of $k=k_0$, will follow the following relation + \begin{equation*} + n_0-(2k_0-1)=0. + \end{equation*} + From that point on, for the same reason as before, all the subsequent coefficients will also be 0, making the sum finite. + \begin{equation*} + a_{2k+1}=0 \iff y_{\text{o}}^{2k+1}(x)=y_{\text{o}}^{2k_0+1}(x), \quad \forall k>k_0 + \end{equation*} + \end{itemize} + + There is the possibility of expressing the solution in Eq.\eqref{eq:solution} in a more compact form, combining the two solutions $y_\text{o}^K(x)$ and $y_\text{e}^K(x)$. They are both a polynomial of maximum degree $n$, assuming $n \in \mathbb{N}$. In the case where $n$ is even, the polynomial solution + \begin{equation*} + \lim_{K\to \infty} y_\text{e}^K(x) + \end{equation*} + will be a finite sum. If instead $n$ is odd, will be + \begin{equation*} + \lim_{K\to \infty} y_\text{o}^K(x) + \end{equation*} + to be a finite sum. + + Depending on the coefficient we start with, $a_1$ or $a_0$, we will obtain the odd or even polynomial respectively. Starting with the last coefficient $a_n$ and, recursively, calculating all the others in descending order, we can express the two parts $y_\text{o}^K(x)$ and $y_\text{e}^K(x)$ with a single sum. Hence, because we start with the last coefficient, the choice concerning $a_1$ and $a_0$ will be at the end of the sum, and not at the beginning. To compact Eq.\eqref{eq:solution}, Eq.\eqref{eq:recursion} can be reconsidered to calculate the coefficient $a_{k-2}$, using $a_k$ + \begin{equation*} + a_{k-2} = -\frac{(k+2)(k+1)}{(k-n)(k+n+1)}a_k + \end{equation*} + Now the game is to find a pattern, as before. Remember that $n$ is a fixed parameter of Eq.\eqref{eq:legendre}. + \begin{align*} + a_{n-2} &= -\frac{n(n-1)}{2(2n-1)}a_n, \\ + a_{n-4} &= -\frac{(n-2)(n-3)}{4(2n-3)}a_{n-2} \\ + &= -\frac{(n-2)(n-3)}{4(2n-3)}-\frac{n(n-1)}{2(2n-1)}a_n. + \end{align*} + In general + \begin{equation}\label{eq:general_recursion} + a_{n-2k} = (-1)^k \frac{n(n-1)(n-2)(n-3) \hdots (n-2k+1)}{2\cdot4\hdots 2k(2n-1)(2n-3)\hdots(2n-2k+1)}a_n + \end{equation} + The whole solution can now be written as + \begin{align} + y(x) &= a_n x^n + a_{n-2} x^{n-2} + a_{n-4} x^{n-4} + a_{n-6} x^{n-6} + \hdots + \begin{cases} + a_1 x, \quad &\text{if } n \text{ odd} \\ + a_0, \quad &\text{if } n \text{ even} + \end{cases} \nonumber \\ + &= \sum_{k=0}^{\lfloor \frac{n}{2} \rfloor} a_{n-2k}x^{n-2k} \label{eq:solution_2} + \end{align} + By considering + \begin{align} + (2n-1)(2n-3)\hdots (2n-2k+1)&=\frac{2n(2n-1)(2n-2)(2n-3)\hdots(2n-2k+1)} + {2n(2n-2)(2n-4)(2n-6)\hdots(2n-2k+2)} \nonumber \\ + &=\frac{\frac{(2n)!}{(2n-2k)!}} + {2^kn(n-1)(n-2)(n-3)\hdots(n-k+1)} \nonumber \\ + &=\frac{\frac{(2n)!}{(2n-2k)!}} + {2^k\frac{n!}{(n-k)!}}=\frac{(n-k)!(2n)!}{n!(2n-2k)!2^k} \label{eq:1_sub_recursion}, \\ + 2 \cdot 4 \hdots 2k &= 2^r 1\cdot2 \hdots r = 2^r r!\label{eq:2_sub_recursion}, \\ + n(n-1)(n-2)(n-3) \hdots (n-2k+1) &= \frac{n!}{(n-2k)!}\label{eq:3_sub_recursion}. + \end{align} + Eq.\eqref{eq:solution_2} can be rewritten as + \begin{equation}\label{eq:solution_3} + y(x)=a_n \sum_{k=0}^{\lfloor \frac{n}{2} \rfloor} (-1)^k \frac{n!^2(2n-2k)!}{k!(n-2k)!(n-k)!(2n)!} x^{n-2k}. + \end{equation} + Eq.\eqref{eq:solution_3} is defined for any $a_n$. By letting $a_n$ be declared as + \begin{equation*} + a_{n} := \frac{(2n)!}{2^n n!^2}, + \end{equation*} + the so called \emph{Legendre polynomial} emerges + \begin{equation}\label{eq:leg_poly} + P_n(x):=\sum_{k=0}^{\lfloor \frac{n}{2} \rfloor} (-1)^k \frac{(2n-2k)!}{2^n k! (n-k)!(n-2k)!} x^{n-2k} + \end{equation} +\end{proof} + + +\begin{lemma} + If $Z_n(z)$ is a solution of the Legendre equation \eqref{kugel:eqn:legendre}, + then + \begin{equation*} + P^m_n(z) = (1 - z^2)^{m/2} \frac{d^m}{dz^m}Z_n(z) + \end{equation*} + solves the associated Legendre equation \eqref{kugel:eqn:associated-legendre}. +\end{lemma} +% \begin{proof} [TODO: modificare la $m$ (è già usata come costante di separazione) o forse è giusta (?)] +\begin{proof} + To begin, we can start by differentiating $m$ times Eq.\eqref{kugel:eq:leg_eq} (which is staisfied by $y(x)$), obtaining + \begin{equation}\label{eq:lagrange_mderiv} + \frac{d^m}{dx^m}\left[ (1-x^2)\frac{d^2y}{dx^2} \right] -2 \frac{d^m}{dx^m}\left[ x\frac{dy}{dx} \right] + n(n+1)\frac{d^m}{dx^m}y=0. + \end{equation} + \emph{Leibniz's theorem} says, that if we want to differentiate $m$ times a multiplication of two functions, we can use the binomial coefficients to build up a sum. This allows us to be more compact, obtaining + \begin{equation}\label{eq:leibniz} + \frac{d^m}{dx^m}[u(x)v(x)] = \sum_{i=0}^m \binom{n}{i} \frac{d^{m-i}u}{dx^{m-1}} \frac{d^{i}v}{dx^i}. + \end{equation} + Using Eq.\eqref{eq:leibniz} in Eq.\eqref{eq:lagrange_mderiv}, we have + \begin{align} + (1-x^2)\frac{d^{m+2}y}{dx^{m+2}} &+ m \frac{d}{dx}(1-x^2)\frac{d^{m+1}y}{dx^{m+1}} + \frac{m(m-1)}{2}\frac{d^{2}}{dx^{2}}(1-x^2)\frac{d^{m}y}{dx^{m}} + n(n+1)\frac{d^m{}y}{dx^{m}} \nonumber \\ + &-2\left(x\frac{d^{m+1}y}{dx^{m+1}} + m\frac{d}{dx}x\frac{d^{m}y}{dx^{m}} \right) \nonumber \\ + &= (1-x^2)\frac{d^{m+2}y}{dx^{m+2}} -2x(m+1)\frac{d^{m+1}y}{dx^{m+1}}+(n(n+1)-m(m-1)-2m)\frac{d^{m}y}{dx^{m}}=0. \label{eq:aux_3} + \end{align} + To make the notation easier to follow, a new function can be defined + \begin{equation*} + \frac{d^{m}y}{dx^{m}} := y_m. + \end{equation*} + Eq.\eqref{eq:aux_3} now becomes + \begin{equation}\label{eq:1st_subs} + (1-x^2)\frac{d^{2}y_m}{dx^{2}} -2x(m+1)\frac{dy_m}{dx}+(n(n+1)-m(m+1))y_m=0 + \end{equation} + A second function can be further defined as + \begin{equation*} + (1-x^2)^{\frac{m}{2}}\frac{d^{m}y}{dx^{m}} = (1-x^2)^{\frac{m}{2}}y_m := \hat{y}_m, + \end{equation*} + allowing to write Eq.\eqref{eq:1st_subs} as + \begin{equation}\label{eq:2st_subs} + (1-x^2)\frac{d^2}{dx^2}[\hat{y}_m(1-x^2)^{-\frac{m}{2}}] -2(m+1)x\frac{d}{dx}[\hat{y}_m(1-x^2)^{-\frac{m}{2}}] + (n(n+1)-m(m+1))\hat{y}_m(1-x^2)^{-\frac{m}{2}}=0. + \end{equation} + The goal now is to compute the two terms + \begin{align*} + \frac{d^2}{dx^2}[\hat{y}_m(1-x^2)^{-\frac{m}{2}}] &= \frac{d^2\hat{y}_m}{dx^2} (1-x^2)^{-\frac{m}{2}} + \frac{d\hat{y}_m}{dx}\frac{m}{2}(1-x^2)^{-\frac{m}{2}-1}2x \\ + &+ m\left( \frac{d\hat{y}_m}{dx} x (1-x^2)^{-\frac{m}{2}-1} + \hat{y}_m (1-x^2)^{-\frac{m}{2}-1} - \hat{y}_m x (-\frac{m}{2}-1)(1-x^2)^{-\frac{m}{2}} 2x\right) \\ + &= \frac{d^2\hat{y}_m}{dx^2} (1-x^2)^{-\frac{m}{2}} + \frac{d\hat{y}_m}{dx}mx (1-x^2)^{-\frac{m}{2}-1} + m\frac{d\hat{y}_m}{dx}x (1-x^2)^{-\frac{m}{2}-1}\\ + &+ m\hat{y}_m (1-x^2)^{-\frac{m}{2}-1} + m\hat{y}_m x^2(m+2)(1-x^2)^{-\frac{m}{2}-2} + \end{align*} + and + \begin{align*} + \frac{d}{dx}[\hat{y}_m(1-x^2)^{-\frac{m}{2}}] &= \frac{d\hat{y}_m}{dx}(1-x^2)^{-\frac{m}{2}} + \hat{y}_m\frac{m}{2}(1-x^2)^{-\frac{m}{2}-1}2x \\ + &= \frac{d\hat{y}_m}{dx}(1-x^2)^{-\frac{m}{2}} + \hat{y}_mm(1-x^2)^{-\frac{m}{2}-1}x, + \end{align*} + to use them in Eq.\eqref{eq:2st_subs}, obtaining + \begin{align*} + (1-x^2)\biggl[\frac{d^2\hat{y}_m}{dx^2} (1-x^2)^{-\frac{m}{2}} &+ \frac{d\hat{y}_m}{dx}mx (1-x^2)^{-\frac{m}{2}-1} + m\frac{d\hat{y}_m}{dx}x (1-x^2)^{-\frac{m}{2}-1} \\ + &+ m\hat{y}_m (1-x^2)^{-\frac{m}{2}-1} + m\hat{y}_m x^2(m+2)(1-x^2)^{-\frac{m}{2}-2}\biggr] \\ + &-2(m+1)x\left[ \frac{d\hat{y}_m}{dx}(1-x^2)^{-\frac{m}{2}} + \hat{y}_mm(1-x^2)^{-\frac{m}{2}-1}x \right] \\ + &+ (n(n+1)-m(m+1))\hat{y}_m(1-x^2)^{-\frac{m}{2}}=0.\\ + \end{align*} + We can now divide by $(1-x^2)^{-\frac{m}{2}}$, obtaining + \begin{align*} + (1-x^2)\biggl[\frac{d^2\hat{y}_m}{dx^2} &+ \frac{d\hat{y}_m}{dx}mx (1-x^2)^{-1} + m\frac{d\hat{y}_m}{dx}x (1-x^2)^{-1} + m\hat{y}_m (1-x^2)^{-1} + m\hat{y}_m x^2(m+2)(1-x^2)^{-2}\biggr] \\ + &-2(m+1)x\left[ \frac{d\hat{y}_m}{dx} + \hat{y}_mm(1-x^2)^{-1}x \right] + (n(n+1)-m(m+1))\hat{y}_m\\ + &= \frac{d^2\hat{y}_m}{dx^2} + \frac{d\hat{y}_m}{dx}mx + m\frac{d\hat{y}_m}{dx}x + m\hat{y}_m + m\hat{y}_m x^2(m+2)(1-x^2)^{-1} \\ + &-2(m+1)x\left[ \frac{d\hat{y}_m}{dx} + \hat{y}_mm(1-x^2)^{-1}x \right] + (n(n+1)-m(m+1))\hat{y}_m\\ + \end{align*} + and collecting some terms + \begin{equation*} + (1-x^2)\frac{d^2\hat{y}_m}{dx^2} - 2x\frac{d\hat{y}_m}{dx} + \left( -x^2 \frac{m^2}{1-x^2} + m+n(n+1)-m(m+1)\right)\hat{y}_m=0. + \end{equation*} + Showing that + \begin{align*} + -x^2 \frac{m^2}{1-x^2} + m+n(n+1)-m(m+1) &= n(n+1)- m^2 -x^2 \frac{m^2}{1-x^2} \\ + &= n(n+1)- \frac{m}{1-x^2} + \end{align*} + implies $\hat{y}_m(x)$ being a solution of Eq.\eqref{kugel:eq:associated_leg_eq} +\end{proof} diff --git a/buch/papers/kugel/references.bib b/buch/papers/kugel/references.bib index b74c5cd..e5d6452 100644 --- a/buch/papers/kugel/references.bib +++ b/buch/papers/kugel/references.bib @@ -192,4 +192,15 @@ Created by Henry Reich}, urldate = {2022-08-01}, date = {2022}, file = {Metric Spaces\: Completeness:/Users/npross/Zotero/storage/5JYEE8NF/completeness.html:text/html}, +} + +@book{bell_special_2004, + location = {Mineola, {NY}}, + title = {Special functions for scientists and engineers}, + isbn = {978-0-486-43521-3}, + series = {Dover books on mathematics}, + pagetotal = {247}, + publisher = {Dover Publ}, + author = {Bell, William Wallace}, + date = {2004}, } \ No newline at end of file diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 6b23ce5..2ded50b 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -1,13 +1,410 @@ -% vim:ts=2 sw=2 et spell: +% vim:ts=2 sw=2 et spell tw=80: -\section{Spherical Harmonics} +\section{Construction of the Spherical Harmonics} -\subsection{Eigenvalue Problem in Spherical Coordinates} +\kugeltodo{Review text, or rewrite if preliminaries becomes an addendum} + +We finally arrived at the main section, which gives our chapter its name. The +idea is to discuss spherical harmonics, their mathematical derivation and some +of their properties and applications. + +The subsection \ref{} \kugeltodo{Fix references} will be devoted to the +Eigenvalue problem of the Laplace operator. Through the latter we will derive +the set of Eigenfunctions that obey the equation presented in \ref{} +\kugeltodo{reference to eigenvalue equation}, which will be defined as +\emph{Spherical Harmonics}. In fact, this subsection will present their +mathematical derivation. + +In the subsection \ref{}, on the other hand, some interesting properties +related to them will be discussed. Some of these will come back to help us +understand in more detail why they are useful in various real-world +applications, which will be presented in the section \ref{}. + +One specific property will be studied in more detail in the subsection \ref{}, +namely the recursive property. The last subsection is devoted to one of the +most beautiful applications (In our humble opinion), namely the derivation of a +Fourier-style series expansion but defined on the sphere instead of a plane. +More importantly, this subsection will allow us to connect all the dots we have +created with the previous sections, concluding that Fourier is just a specific +case of the application of the concept of orthogonality. Our hope is that after +reading this section you will appreciate the beauty and power of generalization +that mathematics offers us. + +\subsection{Eigenvalue Problem} +\label{kugel:sec:construction:eigenvalue} + +\begin{figure} + \centering + \includegraphics{papers/kugel/figures/tikz/spherical-coordinates} + \caption{ + Spherical coordinate system. Space is described with the free variables $r + \in \mathbb{R}_0^+$, $\vartheta \in [0; \pi]$ and $\varphi \in [0; 2\pi)$. + \label{kugel:fig:spherical-coordinates} + } +\end{figure} + +From Section \ref{buch:pde:section:kugel}, we know that the spherical Laplacian +in the spherical coordinate system (shown in Figure +\ref{kugel:fig:spherical-coordinates}) is is defined as +\begin{equation*} + \sphlaplacian := + \frac{1}{r^2} \frac{\partial}{\partial r} \left( + r^2 \frac{\partial}{\partial r} + \right) + + \frac{1}{r^2} \left[ + \frac{1}{\sin\vartheta} \frac{\partial}{\partial \vartheta} \left( + \sin\vartheta \frac{\partial}{\partial\vartheta} + \right) + + \frac{1}{\sin^2 \vartheta} \frac{\partial^2}{\partial\varphi^2} + \right]. +\end{equation*} +But we will not consider this algebraic monstrosity in its entirety. As the +title suggests, we will only care about the \emph{surface} of the sphere. This +is for many reasons, but mainly to simplify reduce the already broad scope of +this text. Concretely, we will always work on the unit sphere, which just means +that we set $r = 1$ and keep only $\vartheta$ and $\varphi$ as free variables. +Now, since the variable $r$ became a constant, we can leave out all derivatives +with respect to $r$ and substitute all $r$'s with 1's to obtain a new operator +that deserves its own name. + +\begin{definition}[Surface spherical Laplacian] + \label{kugel:def:surface-laplacian} + The operator + \begin{equation*} + \surflaplacian := + \frac{1}{\sin\vartheta} \frac{\partial}{\partial \vartheta} \left( + \sin\vartheta \frac{\partial}{\partial\vartheta} + \right) + + \frac{1}{\sin^2 \vartheta} \frac{\partial^2}{\partial\varphi^2}, + \end{equation*} + is called the surface spherical Laplacian. +\end{definition} + +In the definition, the subscript ``$\partial S$'' was used to emphasize the +fact that we are on the spherical surface, which can be understood as being the +boundary of the sphere. But what does it actually do? To get an intuition, +first of all, notice the fact that $\surflaplacian$ have second derivatives, +which means that this a measure of \emph{curvature}; But curvature of what? To +get an even stronger intuition we will go into geometry, were curvature can be +grasped very well visually. Consider figure \ref{kugel:fig:curvature} where the +curvature is shown using colors. First we have the curvature of a curve in 1D, +then the curvature of a surface (2D), and finally the curvature of a function on +the surface of the unit sphere. + +\begin{figure} + \centering + \includegraphics[width=.3\linewidth]{papers/kugel/figures/tikz/curvature-1d} + \hskip 5mm + \includegraphics[width=.3\linewidth]{papers/kugel/figures/povray/curvature} + \hskip 5mm + \includegraphics[width=.3\linewidth]{papers/kugel/figures/povray/spherecurve} + \caption{ + \kugeltodo{Fix alignment / size, add caption. Would be nice to match colors.} + \label{kugel:fig:curvature} + } +\end{figure} + +Now that we have defined an operator, we can go and study its eigenfunctions, +which means that we would like to find the functions $f(\vartheta, \varphi)$ +that satisfy the equation +\begin{equation} \label{kuvel:eqn:eigen} + \surflaplacian f = -\lambda f. +\end{equation} +Perhaps it may not be obvious at first glance, but we are in fact dealing with a +partial differential equation (PDE) \kugeltodo{Boundary conditions?}. If we +unpack the notation of the operator $\nabla^2_{\partial S}$ according to +definition +\ref{kugel:def:surface-laplacian}, we get: +\begin{equation} \label{kugel:eqn:eigen-pde} + \frac{1}{\sin\vartheta} \frac{\partial}{\partial \vartheta} \left( + \sin\vartheta \frac{\partial f}{\partial\vartheta} + \right) + + \frac{1}{\sin^2 \vartheta} \frac{\partial^2 f}{\partial\varphi^2} + + \lambda f = 0. +\end{equation} +Since all functions satisfying \eqref{kugel:eqn:eigen-pde} are the +\emph{eigenfunctions} of $\surflaplacian$, our new goal is to solve this PDE. +The task may seem very difficult but we can simplify it with a well-known +technique: \emph{the separation Ansatz}. It consists in assuming that the +function $f(\vartheta, \varphi)$ can be factorized in the following form: +\begin{equation} + f(\vartheta, \varphi) = \Theta(\vartheta)\Phi(\varphi). +\end{equation} +In other words, we are saying that the effect of the two independent variables +can be described using the multiplication of two functions that describe their +effect separately. This separation process was already presented in section +\ref{buch:pde:section:kugel}, but we will briefly rehearse it here for +convenience. If we substitute this assumption in +\eqref{kugel:eqn:eigen-pde}, we have: +\begin{equation*} + \frac{1}{\sin\vartheta} \frac{\partial}{\partial \vartheta} \left( + \sin\vartheta \frac{\partial \Theta(\vartheta)}{\partial\vartheta} + \right) \Phi(\varphi) + + \frac{1}{\sin^2 \vartheta} + \frac{\partial^2 \Phi(\varphi)}{\partial\varphi^2} + \Theta(\vartheta) + + \lambda \Theta(\vartheta)\Phi(\varphi) = 0. +\end{equation*} +Dividing by $\Theta(\vartheta)\Phi(\varphi)$ and introducing an auxiliary +variable $m^2$, the separation constant, yields: +\begin{equation*} + \frac{1}{\Theta(\vartheta)}\sin \vartheta \frac{d}{d \vartheta} \left( + \sin \vartheta \frac{d \Theta}{d \vartheta} + \right) + + \lambda \sin^2 \vartheta + = -\frac{1}{\Phi(\varphi)} \frac{d^2\Phi(\varphi)}{d\varphi^2} + = m^2, +\end{equation*} +which is equivalent to the following system of 2 first order differential +equations (ODEs): +\begin{subequations} + \begin{gather} + \frac{d^2\Phi(\varphi)}{d\varphi^2} = -m^2 \Phi(\varphi), + \label{kugel:eqn:ode-phi} \\ + \sin \vartheta \frac{d}{d \vartheta} \left( + \sin \vartheta \frac{d \Theta}{d \vartheta} + \right) + + \left( \lambda - \frac{m^2}{\sin^2 \vartheta} \right) + \Theta(\vartheta) = 0 + \label{kugel:eqn:ode-theta}. + \end{gather} +\end{subequations} +The solution of \eqref{kugel:eqn:ode-phi} is easy to find: The complex +exponential is obviously the function we are looking for. So we can directly +write the solutions +\begin{equation} \label{kugel:eqn:ode-phi-sol} + \Phi(\varphi) = e^{i m \varphi}, \quad m \in \mathbb{Z}. +\end{equation} +The restriction that the separation constant $m$ needs to be an integer arises +from the fact that we require a $2\pi$-periodicity in $\varphi$ since the +coordinate systems requires that $\Phi(\varphi + 2\pi) = \Phi(\varphi)$. +Unfortunately, solving \eqref{kugel:eqn:ode-theta} is as straightforward, +actually, it is quite difficult, and the process is so involved that it will +require a dedicated section of its own. + +\subsection{Legendre Functions} + +\begin{figure} + \centering + \kugelplaceholderfig{.8\textwidth}{5cm} + \caption{ + \kugeltodo{Why $z = \cos \vartheta$.} + } +\end{figure} + +To solve \eqref{kugel:eqn:ode-theta} we start with the substitution $z = \cos +\vartheta$ \kugeltodo{Explain geometric origin with picture}. The operator +$\frac{d}{d \vartheta}$ becomes +\begin{equation*} + \frac{d}{d \vartheta} + = \frac{dz}{d \vartheta}\frac{d}{dz} + = -\sin \vartheta \frac{d}{dz} + = -\sqrt{1-z^2} \frac{d}{dz}, +\end{equation*} +since $\sin \vartheta = \sqrt{1 - \cos^2 \vartheta} = \sqrt{1 - z^2}$, and +then \eqref{kugel:eqn:ode-theta} becomes +\begin{align*} + \frac{-\sqrt{1-z^2}}{\sqrt{1-z^2}} \frac{d}{dz} \left[ + \left(\sqrt{1-z^2}\right) \left(-\sqrt{1-z^2}\right) \frac{d \Theta}{dz} + \right] + + \left( \lambda - \frac{m^2}{1 - z^2} \right)\Theta(\vartheta) &= 0, + \\ + \frac{d}{dz} \left[ (1-z^2) \frac{d \Theta}{dz} \right] + + \left( \lambda - \frac{m^2}{1 - z^2} \right)\Theta(\vartheta) &= 0, + \\ + (1-z^2)\frac{d^2 \Theta}{dz} - 2z\frac{d \Theta}{dz} + + \left( \lambda - \frac{m^2}{1 - z^2} \right)\Theta(\vartheta) &= 0. +\end{align*} +By making two final cosmetic substitutions, namely $Z(z) = \Theta(\cos^{-1}z)$ +and $\lambda = n(n+1)$, we obtain what is known in the literature as the +\emph{associated Legendre equation of order $m$}: +\nocite{olver_introduction_2013} +\begin{equation} \label{kugel:eqn:associated-legendre} + (1 - z^2)\frac{d^2 Z}{dz} + - 2z\frac{d Z}{dz} + + \left( n(n + 1) - \frac{m^2}{1 - z^2} \right) Z(z) = 0, + \quad + z \in [-1; 1], m \in \mathbb{Z}. +\end{equation} + +Our new goal has therefore become to solve +\eqref{kugel:eqn:associated-legendre}, since if we find a solution for $Z(z)$ we +can perform the substitution backwards and get back to our eigenvalue problem. +However, the associated Legendre equation is not any easier, so to attack the +problem we will look for the solutions in the easier special case when $m = 0$. +This reduces the problem because it removes the double pole, which is always +tricky to deal with. In fact, the reduced problem when $m = 0$ is known as the +\emph{Legendre equation}: +\begin{equation} \label{kugel:eqn:legendre} + (1 - z^2)\frac{d^2 Z}{dz} + - 2z\frac{d Z}{dz} + + n(n + 1) Z(z) = 0, + \quad + z \in [-1; 1]. +\end{equation} + +The Legendre equation is a second order differential equation, and therefore it +has 2 independent solutions, which are known as \emph{Legendre functions} of the +first and second kind. For the scope of this text we will only derive a special +case of the former that is known known as the \emph{Legendre polynomials}, since +we only need a solution between $-1$ and $1$. + +\begin{lemma}[Legendre polynomials] + \label{kugel:lem:legendre-poly} + The polynomial function + \[ + P_n(z) = \sum^{\lfloor n/2 \rfloor}_{k=0} + \frac{(-1)^k}{2^n s^k!} \frac{(2n - 2k)!}{(n - k)! (n-2k)!} z^{n - 2k} + \] + is the only finite solution of the Legendre equation + \eqref{kugel:eqn:legendre} when $n \in \mathbb{Z}$ and $z \in [-1; 1]$. +\end{lemma} +\begin{proof} + This results is derived in section \ref{kugel:sec:proofs:legendre}. +\end{proof} + +Since the Legendre \emph{polynomials} are indeed polynomials, they can also be +expressed using the hypergeometric functions described in section +\ref{buch:rekursion:section:hypergeometrische-funktion}, so in fact +\begin{equation} + P_n(z) = {}_2F_1 \left( \begin{matrix} + n + 1, & -n \\ \multicolumn{2}{c}{1} + \end{matrix} ; \frac{1 - z}{2} \right). +\end{equation} +Further, there are a few more interesting but not very relevant forms to write +$P_n(z)$ such as \emph{Rodrigues' formula} and \emph{Laplace's integral +representation} which are +\begin{equation*} + P_n(z) = \frac{1}{2^n} \frac{d^n}{dz^n} (x^2 - 1)^n, + \qquad \text{and} \qquad + P_n(z) = \frac{1}{\pi} \int_0^\pi \left( + z + \cos\vartheta \sqrt{z^2 - 1} + \right) \, d\vartheta +\end{equation*} +respectively, both of which we will not prove (see chapter 3 of +\cite{bell_special_2004} for a proof). Now that we have a solution for the +Legendre equation, we can make use of the following lemma patch the solutions +such that they also become solutions of the associated Legendre equation +\eqref{kugel:eqn:associated-legendre}. + +\begin{lemma} \label{kugel:lem:extend-legendre} + If $Z_n(z)$ is a solution of the Legendre equation \eqref{kugel:eqn:legendre}, + then + \begin{equation*} + Z^m_n(z) = (1 - z^2)^{m/2} \frac{d^m}{dz^m}Z_n(z) + \end{equation*} + solves the associated Legendre equation \eqref{kugel:eqn:associated-legendre}. + \nocite{bell_special_2004} +\end{lemma} +\begin{proof} + See section \ref{kugel:sec:proofs:legendre}. +\end{proof} + +What is happening in lemma \ref{kugel:lem:extend-legendre}, is that we are +essentially inserting a square root function in the solution in order to be able +to reach the parts of the domain near the poles at $\pm 1$ of the associated +Legendre equation, which is not possible only using power series +\kugeltodo{Reference book theory on extended power series method.}. Now, since +we have a solution in our domain, namely $P_n(z)$, we can insert it in the lemma +obtain the \emph{associated Legendre functions}. + +\begin{definition}[Ferrers or associated Legendre functions] + \label{kugel:def:ferrers-functions} + The functions + \begin{equation} + P^m_n (z) = \frac{1}{n!2^n}(1-z^2)^{\frac{m}{2}}\frac{d^{m}}{dz^{m}} P_n(z) + = \frac{1}{n!2^n}(1-z^2)^{\frac{m}{2}}\frac{d^{m+n}}{dz^{m+n}}(1-z^2)^n + \end{equation} + are known as Ferrers or associated Legendre functions. +\end{definition} + +\kugeltodo{Discuss $|m| \leq n$.} + +\if 0 +The constraint $|m| - - - - - - - - 2022-07-29T16:52:06.315252 - image/svg+xml - - - Matplotlib v3.3.2, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/buch/papers/lambertw/Bilder/VerfolgungskurveBsp.png b/buch/papers/lambertw/Bilder/VerfolgungskurveBsp.png index e6e7c1e..dc4720a 100644 Binary files a/buch/papers/lambertw/Bilder/VerfolgungskurveBsp.png and b/buch/papers/lambertw/Bilder/VerfolgungskurveBsp.png differ diff --git "a/buch/papers/lambertw/Bilder/lambertAbstandBauchgef\303\274hl.py" "b/buch/papers/lambertw/Bilder/lambertAbstandBauchgef\303\274hl.py" index 3a90afa..73b322c 100644 --- "a/buch/papers/lambertw/Bilder/lambertAbstandBauchgef\303\274hl.py" +++ "b/buch/papers/lambertw/Bilder/lambertAbstandBauchgef\303\274hl.py" @@ -39,9 +39,11 @@ plt.plot(0, ymin, 'bo', markersize=10) plt.plot([0, xmin], [ymin, ymin], 'k--') #plt.xlim(-0.1, 1) #plt.ylim(1, 2) -plt.ylabel("y") -plt.xlabel("x") + plt.grid(True) +plt.tick_params(labelsize=15) +#plt.xticks(ticks=range(0, 7)) +#plt.yticks(ticks=range(0, 7)) plt.quiver(xmin, ymin, -0.2, 0, scale=1) plt.text(xmin+0.1, ymin-0.1, "Verfolgungskurve", size=20, rotation=20, color='r') @@ -55,4 +57,6 @@ plt.rcParams.update({ plt.text(xmin-0.11, ymin-0.08, r"$\dot{v}$", size=20) plt.text(xmin-0.02, ymin+0.05, r"$V$", size=20, c='b') -plt.text(0.02, ymin+0.05, r"$Z$", size=20, c='b') \ No newline at end of file +plt.text(0.02, ymin+0.05, r"$Z$", size=20, c='b') +plt.ylabel(r"$y$", size=20) +plt.xlabel(r"$x$", size=20) \ No newline at end of file diff --git a/buch/papers/lambertw/Bilder/pursuerDGL.ggb b/buch/papers/lambertw/Bilder/pursuerDGL.ggb deleted file mode 100644 index 3fb3a78..0000000 Binary files a/buch/papers/lambertw/Bilder/pursuerDGL.ggb and /dev/null differ diff --git a/buch/papers/lambertw/Bilder/pursuerDGL.svg b/buch/papers/lambertw/Bilder/pursuerDGL.svg deleted file mode 100644 index d91e5e1..0000000 --- a/buch/papers/lambertw/Bilder/pursuerDGL.svg +++ /dev/null @@ -1 +0,0 @@ -–0.7–0.7–0.7–0.6–0.6–0.6–0.5–0.5–0.5–0.4–0.4–0.4–0.3–0.3–0.3–0.2–0.2–0.2–0.1–0.1–0.10.10.10.10.20.20.20.30.30.30.40.40.40.50.50.50.60.60.60.70.70.70.80.80.80.90.90.91111.11.11.11.21.21.21.31.31.31.41.41.41.51.51.51.61.61.61.71.71.71.81.81.81.91.91.92222.12.12.12.22.22.22.32.32.32.42.42.42.52.52.52.62.62.62.72.72.72.82.82.82.92.92.93333.13.13.13.23.23.23.33.33.30.10.10.10.20.20.20.30.30.30.40.40.40.50.50.50.60.60.60.70.70.70.80.80.80.90.90.91111.11.11.11.21.21.21.31.31.31.41.41.41.51.51.51.61.61.61.71.71.71.81.81.81.91.91.92222.12.12.12.22.22.22.32.32.32.42.42.4000AOAOAOPOPOPOPAPAPAPPPAAA \ No newline at end of file diff --git a/buch/papers/lambertw/Bilder/pursuerDGL2.ggb b/buch/papers/lambertw/Bilder/pursuerDGL2.ggb deleted file mode 100644 index 3c4500b..0000000 Binary files a/buch/papers/lambertw/Bilder/pursuerDGL2.ggb and /dev/null differ diff --git a/buch/papers/lambertw/Bilder/pursuerDGL2.pdf b/buch/papers/lambertw/Bilder/pursuerDGL2.pdf deleted file mode 100644 index 932d9d9..0000000 Binary files a/buch/papers/lambertw/Bilder/pursuerDGL2.pdf and /dev/null differ diff --git a/buch/papers/lambertw/Bilder/pursuerDGL2.png b/buch/papers/lambertw/Bilder/pursuerDGL2.png deleted file mode 100644 index f41dffe..0000000 Binary files a/buch/papers/lambertw/Bilder/pursuerDGL2.png and /dev/null differ diff --git a/buch/papers/lambertw/Bilder/pursuerDGL2.svg b/buch/papers/lambertw/Bilder/pursuerDGL2.svg deleted file mode 100644 index 0c4a11d..0000000 --- a/buch/papers/lambertw/Bilder/pursuerDGL2.svg +++ /dev/null @@ -1 +0,0 @@ -–0.2–0.20.20.20.40.40.60.60.80.8111.21.21.41.41.61.61.81.8222.22.22.42.42.62.62.82.8333.23.2–0.2–0.20.20.20.40.40.60.60.80.8111.21.21.41.41.61.61.81.8222.22.22.42.42.62.62.82.83300Visierlinie \ No newline at end of file diff --git a/buch/papers/lambertw/teil0.tex b/buch/papers/lambertw/teil0.tex index 6632eca..baee9ea 100644 --- a/buch/papers/lambertw/teil0.tex +++ b/buch/papers/lambertw/teil0.tex @@ -78,17 +78,12 @@ Um den Richtungsvektor zu konstruieren kann der Einheitsvektor parallel zu $z-v$ \begin{equation} \dot{v} = - |\dot{v}|\cdot e_{z-v} -\end{equation} -führt. Dies kann noch ausgeschrieben werden zu -\begin{equation} - \dot{v} + |\dot{v}|\cdot (z-v)^\circ = |\dot{v}|\cdot\frac{z-v}{|z-v|} - \text{.} \label{lambertw:richtungsvektor} \end{equation} -% +führt. Aus dem Verfolgungsproblem ist auch ersichtlich, dass die Punkte $V$ und $Z$ nicht am gleichen Ort starten und so eine Division durch Null ausgeschlossen ist. Wenn die Punkte $V$ und $Z$ trotzdem am gleichen Ort starten, ist die Lösung trivial. @@ -97,6 +92,7 @@ Nun wird die Gleichung mit $\dot{v}$ skalar multipliziert, um das Gleichungssyst \frac{z-v}{|z-v|}\cdot|\dot{v}|\cdot\dot{v} &= |\dot{v}|^2 + \text{,} \end{align} was algebraisch zu \begin{align} diff --git a/buch/papers/lambertw/teil1.tex b/buch/papers/lambertw/teil1.tex index e8eca2c..c4b2d05 100644 --- a/buch/papers/lambertw/teil1.tex +++ b/buch/papers/lambertw/teil1.tex @@ -11,7 +11,7 @@ Sehr oft kommt es vor, dass bei Verfolgungsproblemen die Frage auftaucht, ob das Wenn zum Beispiel die Geschwindigkeit des Verfolgers kleiner ist als diejenige des Ziels, gibt es Anfangsbedingungen bei denen das Ziel nie erreicht wird. Im Anschluss dieser Frage stellt sich meist die nächste Frage, wie lange es dauert bis das Ziel erreicht wird. Diese beiden Fragen werden in diesem Kapitel behandelt und am Beispiel aus \ref{lambertw:section:teil4} betrachtet. -Das Beispiel wird bei dieser Betrachtung noch etwas erweitert indem alle Punkte auf der gesamtem $xy$-Ebene als Startwerte zugelassen werden. +Das Beispiel wird bei dieser Betrachtung noch etwas erweitert, indem alle Punkte auf der gesamtem $xy$-Ebene als Startwerte zugelassen werden. Nun gilt es zu definieren, wann das Ziel erreicht wird. Da sowohl Ziel und Verfolger als Punkte modelliert wurden, gilt das Ziel als erreicht, wenn die Koordinaten des Verfolgers mit denen des Ziels bei einem diskreten Zeitpunkt $t_1$ übereinstimmen. @@ -38,28 +38,28 @@ Wenn der Verfolger im ersten Quadranten startet, dann kann $v(t)$ mit den Gleich \begin{align} x\left(t\right) &= - x_0\cdot\sqrt{\frac{1}{\chi}W\left(\chi\cdot \exp\left( \chi-\frac{4t}{r_0-y_0}\right) \right)} \\ + x_0\cdot\sqrt{\frac{1}{\chi}W\left(\chi\cdot \exp\left( \chi-\frac{4t}{r_0-y_0}\right) \right)} \text{,}\\ y(t) &= - \frac{1}{4}\left(\left(y_0+r_0\right)\left(\frac{x(t)}{x_0}\right)^2+\left(y_0-r_0\right)\operatorname{ln}\left(\left(\frac{x(t)}{x_0}\right)^2\right)-r_0+3y_0\right)\\ + \frac{1}{4}\biggl(\left(y_0+r_0\right)\left(\frac{x(t)}{x_0}\right)^2+\left(y_0-r_0\right)\operatorname{ln}\biggl(\left(\frac{x(t)}{x_0}\right)^2\biggr)-r_0+3y_0\biggr) \text{,}\\ \chi &= - \frac{r_0+y_0}{r_0-y_0}, \quad + \frac{r_0+y_0}{r_0-y_0}\text{,} \quad \eta = - \left(\frac{x}{x_0}\right)^2,\quad + \left(\frac{x}{x_0}\right)^2 \quad\text{und}\quad r_0 = \sqrt{x_0^2+y_0^2} - \text{.} \end{align} % +sind, +beschrieben werden. Der Verfolger ist durch \begin{equation} v(t) = \left( \begin{array}{c} x(t) \\ y(t) \end{array} \right) - \text{.} \end{equation} % parametrisiert, wobei $y(t)$ viel komplexer ist als $x(t)$. @@ -76,7 +76,8 @@ Daher wird das Problem in zwei einzelne Teilprobleme zerlegt, wodurch die Beding &= y(t) = - \frac{1}{4}\left(\left(y_0+r_0\right)\left(\frac{x(t)}{x_0}\right)^2+\left(y_0-r_0\right)\operatorname{ln}\left(\left(\frac{x(t)}{x_0}\right)^2\right)-r_0+3y_0\right)\text{,} + \frac{1}{4}\biggl(\left(y_0+r_0\right)\left(\frac{x(t)}{x_0}\right)^2+\left(y_0-r_0\right)\operatorname{ln}\biggl(\left(\frac{x(t)}{x_0}\right)^2\biggr)-r_0+3y_0\biggr) + \text{,} \end{align} % welche beide gleichzeitig erfüllt sein müssen, damit das Ziel erreicht wurde. @@ -110,7 +111,7 @@ kann die Bedingung weiter vereinfacht werden zu Da $\chi\neq0$ und die Exponentialfunktion nie null sein kann, ist diese Bedingung unmöglich zu erfüllen. Beim Grenzwert für $t\rightarrow\infty$ geht die Exponentialfunktion gegen null. Dies nützt nicht viel, da unendlich viel Zeit vergehen müsste, damit ein Einholen möglich wäre. -Somit kann nach den gestellten Bedingungen das Ziel nie erreicht werden. +Somit kann unter den gestellten Bedingungen das Ziel nie erreicht werden. % % % @@ -155,7 +156,7 @@ Dies kann veranschaulicht werden anhand 1\text{.} \end{equation} % -Da der $y$-Anteil der Geschwindigkeit des Ziels grösser-gleich der des Verfolgers ist, können die $y$-Koordinaten nie übereinstimmen. +Da der $y$-Anteil der Geschwindigkeit des Ziels mindestens so gross wie die des Verfolgers ist, können die $y$-Koordinaten nie übereinstimmen. % \subsection{Anfangsbedingung auf positiven $y$-Achse} Wenn der Verfolger auf der positiven $y$-Achse startet, befindet er sich direkt auf der Fluchtgeraden des Ziels. @@ -194,8 +195,8 @@ Somit wird das Ziel immer erreicht bei $t_1$, wenn der Verfolger auf der positiv \subsection{Fazit} Durch die Symmetrie der Fluchtkurve an der $y$-Achse führen die Anfangsbedingungen im ersten und zweiten Quadranten zu den gleichen Ergebnissen. Nun ist klar, dass lediglich Anfangspunkte auf der positiven $y$-Achse oder direkt auf dem Ziel dazu führen, dass der Verfolger das Ziel bei $t_1$ einholt. Bei allen anderen Anfangspunkten wird der Verfolger das Ziel nie erreichen. -Dieses Resultat ist aber eher akademischer Natur, weil der Verfolger und das Ziel als Punkt betrachtet wurden. -Wobei aber in Realität nicht von Punkten sondern von Objekten mit einer räumlichen Ausdehnung gesprochen werden kann. + +Dieses Resultat ist aber eher akademischer Natur, weil der Verfolger und das Ziel als Punkt betrachtet wurden, während in der Realität nicht von Punkten sondern von Objekten mit einer räumlichen Ausdehnung gesprochen werden kann. Somit wird in einer nächsten Betrachtung untersucht, ob der Verfolger dem Ziel näher kommt als ein definierter Trefferradius. Falls dies stattfinden sollte, wird dies als Treffer interpretiert. Mathematisch kann dies mit @@ -205,7 +206,7 @@ Mathematisch kann dies mit \end{equation} % beschrieben werden, wobei $a_{\text{min}}$ dem Trefferradius entspricht. -Durch quadrieren verschwindet die Wurzel des Betrages, womit +Durch Quadrieren verschwindet die Wurzel des Betrages, womit % \begin{equation} |v-z|^2e_y\cdot v$. Aus diesem Argument würde folgen, dass beim tiefsten Punkt der Verfolgungskurve im Beispiel den minimalen Abstand befindet. % \begin{figure} \centering - \includegraphics[scale=0.4]{./papers/lambertw/Bilder/Intuition.pdf} + \includegraphics[scale=0.7]{./papers/lambertw/Bilder/Intuition.pdf} \caption{Intuition} \label{lambertw:grafic:intuition} \end{figure} % - Dieses Argument kann leicht überprüft werden, indem lokal alle relevanten benachbarten Punkte betrachtet und das Vorzeichen der Änderung des Abstandes überprüft wird. Dafür wird ein Ausdruck benötigt, der den Abstand und die benachbarten Punkte beschreibt. -Der Richtungsvektor wird allgemein mit dem Winkel $\alpha \in[ 0, 2\pi)$ + +$\dot{v}$ wird allgemein mit dem Winkel $\alpha \in[ 0, 2\pi)$ beschrieben, um alle unmittelbar benachbarten Punkte prüfen zu können. Die Ortsvektoren der Punkte können wiederum mit \begin{align} v &= - t\cdot\left(\begin{array}{c} \cos (\alpha) \\ \sin (\alpha) \end{array}\right) +\left(\begin{array}{c} x_0 \\ y_0 \end{array}\right) + t\cdot\left(\begin{array}{c} \cos (\alpha) \\ \sin (\alpha) \end{array}\right) +\left(\begin{array}{c} x_0 \\ 0 \end{array}\right) \\ z &= \left(\begin{array}{c} 0 \\ t \end{array}\right) \end{align} -beschrieben werden. Der Verfolger wurde allgemein für jede Richtung $\alpha$ definiert, um alle unmittelbar benachbarten Punkte beschreiben zu können. -Da der Abstand +beschrieben werden. +$x_0$ ist der Abstand bei $t=0$, damit alle möglichen Fälle untersucht werden können. +Da der Abstand allgemein \begin{equation} a = @@ -251,7 +253,7 @@ Da der Abstand \geq 0 \end{equation} -ist, kann durch quadrieren ohne Informationsverlust die Rechnung vereinfacht werden zu +ist, kann durch Quadrieren ohne Informationsverlust die Rechnung vereinfacht werden zu \begin{equation} a^2 = @@ -264,7 +266,7 @@ Der Abstand im Quadrat abgeleitet nach der Zeit ist \begin{equation} \frac{d a^2}{d t} = - 2(t\cdot\cos (\alpha)+x_0)\cdot\cos(\alpha)(\alpha)+2t(\sin(\alpha)-1)^2 + 2(t\cdot\cos (\alpha)+x_0)\cdot\cos(\alpha)+2t(\sin(\alpha)-1)^2 \text{.} \end{equation} Da nur die unmittelbar benachbarten Punkten von Interesse sind, wird die Ableitung für $t=0$ untersucht. Dabei kann die Ableitung in @@ -331,18 +333,12 @@ Durch algebraische Umwandlung kann die Gleichung in die Form \dot{z}\dot{v}=|\dot{v}|^2 \end{equation} gebracht werden. -Da $|\dot{v}|=|\dot{z}|$ folgt +Wenn für den Winkel zwischen den Richtungsvektoren $\alpha$ und die Eigenschaft $|\dot{z}|=|\dot{v}|$ verwendet wird entsteht \begin{equation} \cos(\alpha)=1 - \text{,} -\end{equation} -wobei $\alpha$ der Winkel zwischen den Richtungsvektoren ist. -Mit $|\dot{z}|=|\dot{v}|=1$ entsteht -\begin{equation} - \cos(\alpha)=1 - \text{,} + \text{.} \end{equation} -woraus folgt, dass nur bei $\alpha=0$, wenn $\alpha \in [0,2\pi)$, ein lokales als auch globales Minimum vorhanden sein kann. +Jetzt ist klar, dass nur bei $\alpha=0$, wenn $\alpha \in [0,2\pi)$, ein lokales als auch globales Minimum vorhanden sein kann. $\alpha=0$ bedeutet, dass $\dot{v}=\dot{z}$ sein muss. Da die Richtungsvektoren bei $t\rightarrow\infty$ immer in die gleiche Richtung zeigen ist dort die Bedingung immer erfüllt. Dies entspricht gerade dem einen Rand von $t$, der andere Rand bei $t=0$ muss auch auf lokales bzw. globales Minimum untersucht werden. diff --git a/buch/papers/parzyl/images/Makefile b/buch/papers/parzyl/images/Makefile new file mode 100644 index 0000000..4bd13ec --- /dev/null +++ b/buch/papers/parzyl/images/Makefile @@ -0,0 +1,16 @@ +# +# Makefile to build 3d images +# +# (c) 2022 Prof Dr Andreas Müller +# + +all: halfplane.pdf + +halfplane.pdf: halfplane.tex halfplane.jpg + pdflatex halfplane.tex +halfplane.png: halfplane.pov + povray +A0.1 -W1920 -H1080 -Ohalfplane.png halfplane.pov +halfplane.jpg: halfplane.png Makefile + convert -extract 1280x1080+340+0 halfplane.png \ + -density 300 -units PixelsPerInch halfplane.jpg + diff --git a/buch/papers/parzyl/images/common.inc b/buch/papers/parzyl/images/common.inc new file mode 100644 index 0000000..28aed2b --- /dev/null +++ b/buch/papers/parzyl/images/common.inc @@ -0,0 +1,64 @@ +// +// common.inc -- some common useful tools for drawing 3d images +// +// (c) 2018 Prof Dr Andreas Müller, Hochschule Rapperswil +// + +// +// draw a right angle quarter circle at point with legs and and +// color +// +#declare rechterwinkelradius = 0.5; +#declare rechterwinkelthickness = 0.01; +#macro rechterwinkel(o, v1, v2, c) +intersection { + sphere { o, rechterwinkelradius } + #declare rnormale = vnormalize(vcross(v1, v2)); + plane { rnormale, vdot(o, rnormale) + rechterwinkelthickness * rechterwinkelradius / 0.5 } + plane { -rnormale, -vdot(o, rnormale) + rechterwinkelthickness * rechterwinkelradius / 0.5 } + plane { -v1, -vdot(o, v1) } + plane { -v2, -vdot(o, v2) } + pigment { + color c + } +} +sphere { o + 0.45 * (vnormalize(v1) +vnormalize(v2)) * rechterwinkelradius, + 0.05 * rechterwinkelradius / 0.5 + pigment { + color c + } +} +#end + +// +// draw an arrow from to with thickness with +// color +// +#macro arrow(from, to, arrowthickness, c) + #declare arrowdirection = vnormalize(to - from); + #declare arrowlength = vlength(to - from); + union { + sphere { + from, 1.1 * arrowthickness + } + cylinder { + from, + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + arrowthickness + } + cone { + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + 2 * arrowthickness, + to, + 0 + } + pigment { + color c + } + finish { + specular 0.9 + metallic + } + } +#end + diff --git a/buch/papers/parzyl/images/halfplane.jpg b/buch/papers/parzyl/images/halfplane.jpg new file mode 100644 index 0000000..8cb5ae3 Binary files /dev/null and b/buch/papers/parzyl/images/halfplane.jpg differ diff --git a/buch/papers/parzyl/images/halfplane.pdf b/buch/papers/parzyl/images/halfplane.pdf new file mode 100644 index 0000000..7275810 Binary files /dev/null and b/buch/papers/parzyl/images/halfplane.pdf differ diff --git a/buch/papers/parzyl/images/halfplane.png b/buch/papers/parzyl/images/halfplane.png new file mode 100644 index 0000000..5beefa0 Binary files /dev/null and b/buch/papers/parzyl/images/halfplane.png differ diff --git a/buch/papers/parzyl/images/halfplane.pov b/buch/papers/parzyl/images/halfplane.pov new file mode 100644 index 0000000..419bb67 --- /dev/null +++ b/buch/papers/parzyl/images/halfplane.pov @@ -0,0 +1,201 @@ +// +// 3dimage.pov +// +// (c) 2022 Prof Dr Andreas Müller +// +#version 3.7; +#include "colors.inc" +#include "skies.inc" +#include "common.inc" + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.63; +#declare ar = 0.02; + +#declare Cameracenter = <5,3,-4>; +#declare Worldpoint = <0,-0.80, 0>; +#declare Lightsource = < 7,10,-3>; +#declare Lightdirection = vnormalize(Lightsource - Worldpoint); +#declare Lightaxis1 = vnormalize(vcross(Lightdirection, <0,1,0>)); +#declare Lightaxis2 = vnormalize(vcross(Lightaxis1, Lightdirection)); + +camera { + location Cameracenter + look_at Worldpoint + right 16/9 * x * imagescale + up y * imagescale +} + +light_source { + Lightsource color White + area_light Lightaxis1 Lightaxis2, 10, 10 + adaptive 1 + jitter +} + +sky_sphere { + pigment { + color White + } +} + +arrow( <-2.1, 0, 0 >, < 2.2, 0, 0 >, ar, White) +arrow( < 0, -1.1, 0 >, < 0, 1.3, 0 >, ar, White) +arrow( < 0, 0, -2 >, < 0, 0, 2.2 >, ar, White) + +#declare planecolor = rgb<0.2,0.6,1.0>; +#declare r = 0.01; + +#macro planebox() + box { <-2.1,-1.1,-2.1>, <0,1.1,2.1> } +#end + +intersection { + plane { <0, 0, 1>, 0.001 } + plane { <0, 0, -1>, 0.001 } + planebox() + pigment { + color planecolor transmit 0.3 + } + finish { + metallic + specular 0.95 + } +} + +#declare Xstep = 0.2; + +intersection { + union { + #declare X = 0; + #while (X > -2.5) + cylinder { , , r } + #declare X = X - Xstep; + #end + + #declare Y = Xstep; + #while (Y < 2.5) + cylinder { <-3, Y, 0>, <0, Y, 0>, r } + cylinder { <-3, -Y, 0>, <0, -Y, 0>, r } + #declare Y = Y + Xstep; + #end + } + planebox() + pigment { + color planecolor + } + finish { + metallic + specular 0.95 + } +} + +#declare parammin = -4; +#declare parammax = 4; +#declare paramsteps = 100; +#declare paramstep = (parammax - parammin) / paramsteps; + +#macro punkt(sigma, tau, Z) + < + 0.5 * (tau*tau - sigma*sigma) + Z, + sigma * tau, + > +#end + +#macro sigmasurface(sigma, farbe) + #declare taumin1 = 2/sigma; + #declare taumin2 = sqrt(4+sigma*sigma); + #if (taumin1 > taumin2) + #declare taumin = -taumin2; + #else + #declare taumin = -taumin1; + #end + + mesh { + #declare tau = taumin; + #declare taumax = -taumin; + #declare taustep = (taumax - taumin) / paramsteps; + #while (tau < taumax - taustep/2) + triangle { + punkt(sigma, tau, -1), + punkt(sigma, tau, 0), + punkt(sigma, tau + taustep, -1) + } + triangle { + punkt(sigma, tau + taustep, -1), + punkt(sigma, tau + taustep, 0), + punkt(sigma, tau, 0) + } + #declare tau = tau + taustep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } + } + + union { + #declare tau = taumin; + #declare taumax = -taumin; + #declare taustep = (taumax - taumin) / paramsteps; + #while (tau < taumax - taustep/2) + sphere { punkt(sigma, tau, 0), r } + cylinder { + punkt(sigma, tau, 0), + punkt(sigma, tau + taustep, 0), + r + } + #declare tau = tau + taustep; + #end + sphere { punkt(sigma, tau, 0), r } + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } + + } +#end + +#declare greensurfacecolor = rgb<0.6,1.0,0.6>; +#declare redsurfacecolor = rgb<1.0,0.6,0.6>; + +sigmasurface(0.25, greensurfacecolor) +sigmasurface(0.5, greensurfacecolor) +sigmasurface(0.75, greensurfacecolor) +sigmasurface(1, greensurfacecolor) +sigmasurface(1.25, greensurfacecolor) +sigmasurface(1.5, greensurfacecolor) +sigmasurface(1.75, greensurfacecolor) +sigmasurface(2, greensurfacecolor) + +union { + sigmasurface(0.25, redsurfacecolor) + sigmasurface(0.5, redsurfacecolor) + sigmasurface(0.75, redsurfacecolor) + sigmasurface(1.00, redsurfacecolor) + sigmasurface(1.25, redsurfacecolor) + sigmasurface(1.5, redsurfacecolor) + sigmasurface(1.75, redsurfacecolor) + sigmasurface(2, redsurfacecolor) + rotate <0, 180, 0> +} + +box { <-2,-1,-2>, <2,-0.99,2> + pigment { + color rgb<1.0,0.8,0.6> transmit 0.8 + } + finish { + specular 0.9 + metallic + } +} diff --git a/buch/papers/parzyl/images/halfplane.tex b/buch/papers/parzyl/images/halfplane.tex new file mode 100644 index 0000000..e470057 --- /dev/null +++ b/buch/papers/parzyl/images/halfplane.tex @@ -0,0 +1,41 @@ +% +% halfplane.tex +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{times} +\usepackage{amsmath} +\usepackage{txfonts} +\usepackage[utf8]{inputenc} +\usepackage{graphics} +\usetikzlibrary{arrows,intersections,math} +\usepackage{ifthen} +\begin{document} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{5} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=10cm]{halfplane.jpg}}; + +% Gitter +\ifthenelse{\boolean{showgrid}}{ +\draw[step=0.1,line width=0.1pt] (-\breite,-\hoehe) grid (\breite, \hoehe); +\draw[step=0.5,line width=0.4pt] (-\breite,-\hoehe) grid (\breite, \hoehe); +\draw (-\breite,-\hoehe) grid (\breite, \hoehe); +\fill (0,0) circle[radius=0.05]; +}{} + +\node at (0,3.7) {$z$}; +\node at (3.3,-0.3) {$x$}; +\node at (2.7,2.5) {$y$}; + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/parzyl/img/D_plot.png b/buch/papers/parzyl/img/D_plot.png new file mode 100644 index 0000000..6c61eea Binary files /dev/null and b/buch/papers/parzyl/img/D_plot.png differ diff --git a/buch/papers/parzyl/img/plane.pdf b/buch/papers/parzyl/img/plane.pdf new file mode 100644 index 0000000..c52c336 Binary files /dev/null and b/buch/papers/parzyl/img/plane.pdf differ diff --git a/buch/papers/parzyl/img/v_plot.png b/buch/papers/parzyl/img/v_plot.png new file mode 100644 index 0000000..7cd5455 Binary files /dev/null and b/buch/papers/parzyl/img/v_plot.png differ diff --git a/buch/papers/parzyl/main.tex b/buch/papers/parzyl/main.tex index 528a2e2..fd2aea7 100644 --- a/buch/papers/parzyl/main.tex +++ b/buch/papers/parzyl/main.tex @@ -6,13 +6,13 @@ \chapter{Parabolische Zylinderfunktionen\label{chapter:parzyl}} \lhead{Parabolische Zylinderfunktionen} \begin{refsection} -\chapterauthor{Thierry Schwaller, Alain Keller} +\chapterauthor{Alain Keller und Thierry Schwaller} \input{papers/parzyl/teil0.tex} \input{papers/parzyl/teil1.tex} \input{papers/parzyl/teil2.tex} - +\input{papers/parzyl/teil3.tex} \printbibliography[heading=subbibliography] \end{refsection} diff --git a/buch/papers/parzyl/references.bib b/buch/papers/parzyl/references.bib index 494ff7c..390d5ed 100644 --- a/buch/papers/parzyl/references.bib +++ b/buch/papers/parzyl/references.bib @@ -33,3 +33,36 @@ url = {https://doi.org/10.1016/j.acha.2017.11.004} } +@book{parzyl:whittaker, + place={Cambridge}, + edition={4}, + series={Cambridge Mathematical Library}, + title={A Course of Modern Analysis}, + DOI={10.1017/CBO9780511608759}, + publisher={Cambridge University Press}, + author={Whittaker, E. T. and Watson, G. N.}, + year={1996}, + collection={Cambridge Mathematical Library}} + +@book{parzyl:abramowitz-stegun, + added-at = {2008-06-25T06:25:58.000+0200}, + address = {New York}, + author = {Abramowitz, Milton and Stegun, Irene A.}, + edition = {ninth Dover printing, tenth GPO printing}, + interhash = {d4914a420f489f7c5129ed01ec3cf80c}, + intrahash = {23ec744709b3a776a1af0a3fd65cd09f}, + keywords = {Handbook}, + publisher = {Dover}, + timestamp = {2008-06-25T06:25:58.000+0200}, + title = {Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables}, + year = 1972 +} + +@online{parzyl:coordinates, + title = {Parabolic cylindrical coordinates}, + url = {https://en.wikipedia.org/wiki/Parabolic_cylindrical_coordinates}, + date = {2022-08-17}, + year = {2022}, + month = {8}, + day = {17} +} \ No newline at end of file diff --git a/buch/papers/parzyl/teil0.tex b/buch/papers/parzyl/teil0.tex index 4b251db..8be936d 100644 --- a/buch/papers/parzyl/teil0.tex +++ b/buch/papers/parzyl/teil0.tex @@ -4,45 +4,73 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % \section{Einleitung\label{parzyl:section:teil0}} -\rhead{Teil 0} -Die Laplace-Gleichung ist eine wichtige Gleichung in der Physik. -Mit ihr lässt sich zum Beispiel das elektrische Feld in einem ladungsfreien Raum bestimmen. -In diesem Kapitel wird die Lösung der Laplace-Gleichung im -parabolischen Zylinderkoordinatensystem genauer untersucht. -\subsection{Laplace Gleichung} -Die partielle Differentialgleichung -\begin{equation} - \Delta f = 0 -\end{equation} -ist als Laplace-Gleichung bekannt. -Sie ist eine spezielle Form der Poisson-Gleichung +\rhead{Einleitung} +%Die Laplace-Gleichung ist eine wichtige Gleichung in der Physik. +%Mit ihr lässt sich zum Beispiel das elektrische Feld in einem ladungsfreien Raum bestimmen. +%In diesem Kapitel wird die Lösung der Laplace-Gleichung im +%parabolischen Zylinderkoordinatensystem genauer untersucht. +Die Helmholtz-Gleichung ist eine wichtige Gleichung in der Physik. +Mit ihr lässt sich zum Beispiel das Verhalten von elektromagnetischen Wellen beschreiben. +In diesem Kapitel werden die Lösungen der Helmholtz-Gleichung im parabolischen Zylinderkoordinatensystem, +die parabolischen Zylinderfunktionen, genauer untersucht. + +\subsection{Helmholtz-Gleichung} +Die partielle Differentialgleichung \begin{equation} - \Delta f = g + \Delta f = \lambda f \end{equation} -mit g als beliebige Funktion. -In der Physik hat die Laplace-Gleichung in verschieden Gebieten -verwendet, zum Beispiel im Elektromagnetismus. -Das Gaussche Gesetz in den Maxwellgleichungen +ist als Helmholtz-Gleichung bekannt und beschreibt das Eigenwert Problem für den Laplace-Operator. +Sie ist eine der Gleichungen welche auftritt wenn die Wellengleichung \begin{equation} - \nabla \cdot E = \frac{\varrho}{\epsilon_0} -\label{parzyl:eq:max1} + \left ( \nabla^2 - \frac{1}{c^2}\frac{\partial^2}{\partial t^2} \right ) u(\textbf{r},t) + = + 0 \end{equation} -besagt das die Divergenz eines Elektrischen Feldes an einem -Punkt gleich der Ladung an diesem Punkt ist. -Das elektrische Feld ist hierbei der Gradient des elektrischen -Potentials +mit Hilfe von Separation \begin{equation} - \nabla \phi = E. -\end{equation} -Eingesetzt in \eqref{parzyl:eq:max1} resultiert + u(\textbf{r},t) = A(\textbf{r})T(t) +\end{equation} +in zwei Differentialgleichungen aufgeteilt wird. Die Helmholtz-Gleichung ist der Teil, +welcher zeitunabhängig ist \begin{equation} - \nabla \cdot \nabla \phi = \Delta \phi = \frac{\varrho}{\epsilon_0}, + \nabla^2 A(\textbf{r}) = \lambda A(\textbf{r}). \end{equation} -was eine Possion-Gleichung ist. -An Ladungsfreien Stellen, ist der rechte Teil der Gleichung $0$. + +%\subsection{Laplace Gleichung} +%Die partielle Differentialgleichung +%\begin{equation} +% \Delta f = 0 +%\end{equation} +%ist als Laplace-Gleichung bekannt. +%Sie ist eine spezielle Form der Poisson-Gleichung +%\begin{equation} +% \Delta f = g +%\end{equation} +%mit $g$ als beliebiger Funktion. +%In der Physik hat die Laplace-Gleichung in verschiedenen Gebieten +%verwendet, zum Beispiel im Elektromagnetismus. +%Das Gaussche Gesetz in den Maxwellgleichungen +%\begin{equation} +% \nabla \cdot E = \frac{\varrho}{\epsilon_0} +%\label{parzyl:eq:max1} +%\end{equation} +%besagt, dass die Divergenz eines elektrischen Feldes an einem +%Punkt gleich der Ladungsdichte an diesem Punkt ist. +%Das elektrische Feld ist hierbei der Gradient des elektrischen +%Potentials +%\begin{equation} +% \nabla \phi = E. +%\end{equation} +%Eingesetzt in \eqref{parzyl:eq:max1} resultiert +%\begin{equation} +% \nabla \cdot \nabla \phi = \Delta \phi = \frac{\varrho}{\epsilon_0}, +%\end{equation} +%was eine Poisson-Gleichung ist. +%An ladungsfreien Stellen ist der rechte Teil der Gleichung $0$. \subsection{Parabolische Zylinderkoordinaten \label{parzyl:subsection:finibus}} -Im parabolischen Zylinderkoordinatensystem bilden parabolische Zylinder die Koordinatenflächen. +Das parabolischen Zylinderkoordinatensystem \cite{parzyl:coordinates} ist ein krummliniges Koordinatensystem, +bei dem parabolische Zylinder die Koordinatenflächen bilden. Die Koordinate $(\sigma, \tau, z)$ sind in kartesischen Koordinaten ausgedrückt mit \begin{align} x & = \sigma \tau \\ @@ -51,7 +79,7 @@ Die Koordinate $(\sigma, \tau, z)$ sind in kartesischen Koordinaten ausgedrückt z & = z. \label{parzyl:coordRelationse} \end{align} -Wird $\tau$ oder $\sigma$ konstant gesetzt resultieren die Parabeln +Wird $\tau$ oder $\sigma$ konstant gesetzt, resultieren die Parabeln \begin{equation} y = \frac{1}{2} \left( \frac{x^2}{\sigma^2} - \sigma^2 \right) \end{equation} @@ -67,7 +95,6 @@ und konstantes $\sigma$ und die grünen ein konstantes $\tau$.} \label{parzyl:fig:cordinates} \end{figure} - Abbildung \ref{parzyl:fig:cordinates} zeigt das Parabolische Koordinatensystem. Das parabolische Zylinderkoordinatensystem entsteht wenn die Parabeln aus der Ebene gezogen werden. @@ -75,17 +102,15 @@ Ebene gezogen werden. Um in diesem Koordinatensystem integrieren und differenzieren zu können braucht es die Skalierungsfaktoren $h_{\tau}$, $h_{\sigma}$ und $h_{z}$. -\dots - -Wird eine infinitessimal kleine Distanz $ds$ zwischen zwei Punkten betrachtet -kann dies im kartesischen Koordinatensystem mit +Eine infinitessimal kleine Distanz $ds$ zwischen zwei Punkten +kann im kartesischen Koordinatensystem mit \begin{equation} \left(ds\right)^2 = \left(dx\right)^2 + \left(dy\right)^2 + \left(dz\right)^2 \label{parzyl:eq:ds} \end{equation} ausgedrückt werden. -Das Skalierungsfaktoren werden so bestimmt, dass +Die Skalierungsfaktoren werden in einem orthogonalen Koordinatensystem so bestimmt, dass \begin{equation} \left(ds\right)^2 = \left(h_{\sigma}d\sigma\right)^2 + \left(h_{\tau}d\tau\right)^2 + \left(h_z dz\right)^2 @@ -106,7 +131,7 @@ von \eqref{parzyl:coordRelationsa} - \eqref{parzyl:coordRelationse} als dz &= \frac{\partial \tilde{z} }{\partial \sigma} d\sigma + \frac{\partial \tilde{z} }{\partial \tau} d\tau + \frac{\partial \tilde{z} }{\partial \tilde{z}} d \tilde{z} - = d \tilde{z} \\ + = d \tilde{z} \end{align} substituiert. Wird diese Gleichung in der Form von \eqref{parzyl:eq:dspara} @@ -120,21 +145,21 @@ geschrieben, resultiert Daraus ergeben sich die Skalierungsfaktoren \begin{align} h_{\sigma} &= \sqrt{\sigma^2 + \tau^2}\\ - h_{\sigma} &= \sqrt{\sigma^2 + \tau^2}\\ + h_{\tau} &= \sqrt{\sigma^2 + \tau^2}\\ h_{z} &= 1. \end{align} \subsection{Differentialgleichung} Möchte man eine Differentialgleichung im parabolischen -Zylinderkoordinatensystem aufstellen müssen die Skalierungsfaktoren +Zylinderkoordinatensystem aufstellen, müssen die Skalierungsfaktoren mitgerechnet werden. -Der Laplace Operator ist dadurch gegeben als +Der Laplace Operator wird dadurch zu \begin{equation} \Delta f = \frac{1}{\sigma^2 + \tau^2} \left( \frac{\partial^2 f}{\partial \sigma ^2} + \frac{\partial^2 f}{\partial \tau ^2} \right) - + \frac{\partial^2 f}{\partial z}. + + \frac{\partial^2 f}{\partial z^2}. \label{parzyl:eq:laplaceInParZylCor} \end{equation} \subsubsection{Lösung der Helmholtz-Gleichung im parabolischen Zylinderfunktion} @@ -181,8 +206,7 @@ Diese partielle Differentialgleichung kann mit Hilfe von Separation gelöst werd \begin{equation} f(\sigma,\tau,z) = g(\sigma)h(\tau)i(z) \end{equation} -gesetzt. -Was dann schlussendlich zu den Differentialgleichungen +gesetzt, was dann schlussendlich zu den Differentialgleichungen \begin{equation}\label{parzyl:sep_dgl_1} g''(\sigma) - @@ -216,26 +240,12 @@ und + \mu \right ) - i(\tau) + i(z) = 0 \end{equation} führt. -Wobei die Lösung von \eqref{parzyl:sep_dgl_3} -\begin{equation} - i(z) - = - A\cos{ - \left ( - \sqrt{\lambda + \mu}z - \right )} - + - B\sin{ - \left ( - \sqrt{\lambda + \mu}z - \right )} -\end{equation} -ist und \eqref{parzyl:sep_dgl_1} und \eqref{parzyl:sep_dgl_2} die sogenannten Weberschen Differentialgleichungen sind, welche die parabolischen Zylinder Funktionen als Lösung haben. + diff --git a/buch/papers/parzyl/teil1.tex b/buch/papers/parzyl/teil1.tex index f297189..13d8109 100644 --- a/buch/papers/parzyl/teil1.tex +++ b/buch/papers/parzyl/teil1.tex @@ -5,24 +5,180 @@ % \section{Lösung \label{parzyl:section:teil1}} -\rhead{Problemstellung} -Die Differentialgleichungen \eqref{parzyl:sep_dgl_1} und \eqref{parzyl:sep_dgl_2} können mit einer Substitution -in die Whittaker Gleichung gelöst werden. +\rhead{Lösung} + +\eqref{parzyl:sep_dgl_3} beschriebt einen ungedämpften harmonischen Oszillator. +Die Lösung ist somit +\begin{equation} + i(z) + = + A\cos{ + \left ( + \sqrt{\lambda + \mu}z + \right )} + + + B\sin{ + \left ( + \sqrt{\lambda + \mu}z + \right )}. +\end{equation} +Die Differentialgleichungen \eqref{parzyl:sep_dgl_1} und \eqref{parzyl:sep_dgl_2} werden in \cite{parzyl:whittaker} +mit Hilfe der Whittaker Gleichung gelöst. \begin{definition} - Die Funktion + Die Funktionen + \begin{equation*} + M_{k,m}(x) = + e^{-x/2} x^{m+1/2} \, + {}_{1} F_{1} + ( + {\textstyle \frac{1}{2}} + + m - k, 1 + 2m; x) \qquad x \in \mathbb{C} + \end{equation*} + und \begin{equation*} - W_{k,m}(z) = - e^{-z/2} z^{m+1/2} \, - {}_{1} F_{1}(\frac{1}{2} + m - k, 1 + 2m; z) + W_{k,m}(x) = \frac{ + \Gamma \left( -2m\right) + }{ + \Gamma \left( {\textstyle \frac{1}{2}} - m - k\right) + } + M_{-k, m} \left(x\right) + + + \frac{ + \Gamma \left( 2m\right) + }{ + \Gamma \left( {\textstyle \frac{1}{2}} + m - k\right) + } + M_{k, -m} \left(x\right) \end{equation*} - heisst Whittaker Funktion und ist eine Lösung - von + gehören zu den Whittaker Funktionen und sind Lösungen + von der Whittaker Differentialgleichung \begin{equation} - \frac{d^2W}{d z^2} + - \left(-\frac{1}{4} + \frac{k}{z} + \frac{\frac{1}{4} - m^2}{z^2} \right) W = 0. + \frac{d^2W}{d x^2} + + \biggl( -\frac{1}{4} + \frac{k}{x} + \frac{\frac{1}{4} - m^2}{x^2} \biggr) W = 0. + \label{parzyl:eq:whitDiffEq} \end{equation} -\end{definition} - -Lösung Folgt\dots +\end{definition} +Es wird nun die Differentialgleichung bestimmt, welche +\begin{equation} + w = x^{-1/2} W_{k,-1/4} \left({\textstyle \frac{1}{2}} x^2\right) +\end{equation} +als Lösung hat. +Dafür wird $w$ in \eqref{parzyl:eq:whitDiffEq} eingesetzt, woraus +\begin{equation} + \frac{d^2 w}{dx^2} - \left(\frac{1}{4} x^2 - 2k\right) w = 0 +\label{parzyl:eq:weberDiffEq} +\end{equation} +resultiert. Diese Differentialgleichung ist dieselbe wie +\eqref{parzyl:sep_dgl_1} und \eqref{parzyl:sep_dgl_2}, welche somit +$w$ als Lösung haben. +%Da es sich um eine Differentialgleichung zweiter Ordnung handelt, hat sie nicht nur +%eine sondern zwei Lösungen. +%Die zweite Lösung der Whittaker-Gleichung ist $W_{k,-m} (z)$. +%Somit hat \eqref{parzyl:eq:weberDiffEq} +%\begin{align} +% w_1(k, z) & = z^{-1/2} W_{k,-1/4} \left({\textstyle \frac{1}{2}} z^2\right)\\ +% w_2(k, z) & = z^{-1/2} W_{k,1/4} \left({\textstyle \frac{1}{2}} z^2\right) +%\end{align} +%als Lösungen. +%Mit der Hypergeometrischen Funktion ausgeschrieben ergeben sich die Lösungen +%\begin{align} +% \label{parzyl:eq:solution_dgl} +% w_1(k,z) &= e^{-z^2/4} \, +% {}_{1} F_{1} +% ( +% {\textstyle \frac{1}{4}} +% - k, {\textstyle \frac{1}{2}} ; {\textstyle \frac{1}{2}}z^2) \\ +% w_2(k,z) & = z e^{-z^2/4} \, +% {}_{1} F_{1} +% ({\textstyle \frac{3}{4}} +% - k, {\textstyle \frac{3}{2}} ; {\textstyle \frac{1}{2}}z^2). +%\end{align} +In der Literatur gibt es verschiedene Standartlösungen für +\eqref{parzyl:eq:weberDiffEq}, wobei die Differentialgleichung jeweils +unterschiedlich geschrieben wird. +Whittaker und Watson zeigen in \cite{parzyl:whittaker} die Lösung +\begin{equation} + D_n(x) = 2^{\frac{1}{2}n + \frac{1}{2}} x^{-\frac{1}{2}} W_{n/2 + 1/4, -1/4}\left(\frac{1}{2}x^2\right), +\end{equation} +welche die Differentialgleichung +\begin{equation} + \frac{d^2D_n(x)}{dx^2} + \left(n + \frac{1}{2} - \frac{1}{4} x^2\right)D_n(x) = 0 +\end{equation} +löst. +Mit $M_{k,m}(x)$ geschrieben resultiert +\begin{equation} + D_n(x) = \frac{ + \Gamma \left( {\textstyle \frac{1}{2}}\right) 2^{\frac{1}{2}n + \frac{1}{4}} x^{-\frac{1}{2}} + }{ + \Gamma \left( {\textstyle \frac{1}{2}} - {\textstyle \frac{1}{2}} n \right) + } + M_{\frac{1}{2} n + \frac{1}{4}, - \frac{1}{4}} \left(\frac{1}{2}x^2\right) + + + \frac{ + \Gamma\left(-{\textstyle \frac{1}{2}}\right) 2^{\frac{1}{2}n + \frac{1}{4}} x^{-\frac{1}{2}} + }{ + \Gamma\left(- {\textstyle \frac{1}{2}} n\right) + } + M_{\frac{1}{2} n + \frac{1}{4}, \frac{1}{4}} \left(\frac{1}{2}x^2\right). +\end{equation} +In \cite{parzyl:abramowitz-stegun} sind zwei Lösungen $U(a, x)$ und $V(a,x)$ +\begin{align} + U(a,x) &= + \cos\left[\pi \left({\textstyle \frac{1}{4}} + {\textstyle \frac{1}{2}} a\right)\right] Y_1 + - \sin\left[\pi \left({\textstyle \frac{1}{4}} + {\textstyle \frac{1}{2}} a\right)\right] Y_2 + \label{parzyl:eq:Uaz} + \\ + V(a,x) &= \frac{1}{\Gamma \left({\textstyle \frac{1}{2} - a}\right)} \left\{ + \sin\left[\pi \left({\textstyle \frac{1}{4}} + {\textstyle \frac{1}{2}} a\right)\right] Y_1 + + \cos\left[\pi \left({\textstyle \frac{1}{4}} + {\textstyle \frac{1}{2}} a\right)\right] Y_2 + \right\} + \label{parzyl:eq:Vaz} +\end{align} +mit +\begin{align} + Y_1 &= \frac{1}{\sqrt{\pi}} + \frac{\Gamma\left({\textstyle \frac{1}{4} - + {\textstyle \frac{1}{2}}a}\right)} + {2^{\frac{1}{2} a + \frac{1}{4}}} + e^{-x^2/4} + {}_{1} F_{1} + \left({\textstyle \frac{1}{2}}a + {\textstyle \frac{1}{4}}, + {\textstyle \frac{1}{2}} ; + {\textstyle \frac{1}{2}}x^2\right)\\ + Y_2 &= \frac{1}{\sqrt{\pi}} + \frac{\Gamma\left({\textstyle \frac{3}{4} - + {\textstyle \frac{1}{2}}a}\right)} + {2^{\frac{1}{2} a - \frac{1}{4}}} + x e^{-x^2/4} + {}_{1} F_{1} + \left({\textstyle \frac{1}{2}}a + {\textstyle \frac{3}{4}}, + {\textstyle \frac{3}{2}} ; + {\textstyle \frac{1}{2}}x^2\right) +\end{align} +der Differentialgleichung +\begin{equation} + \frac{d^2 y}{d x^2} - \left(\frac{1}{4} x^2 + a\right) y = 0 +\end{equation} +beschrieben. Die Lösungen $U(a,z)$ und $V(a, z)$ können auch mit $D_n(z)$ +ausgedrückt werden +\begin{align} + U(a,x) &= D_{-a-1/2}(x) \\ + V(a,x) &= \frac{\Gamma \left({\textstyle \frac{1}{2}} + a\right)}{\pi} + \left[\sin\left(\pi a\right) D_{-a-1/2}(x) + D_{-a-1/2}(-x)\right]. +\end{align} +In den Abbildungen \ref{parzyl:fig:dnz} und \ref{parzyl:fig:Vnz} sind +die Funktionen $D_n(x)$ und $V(a,x)$ mit verschiedenen Werten für $a$ abgebildet. +\begin{figure} + \centering + \includegraphics[scale=0.35]{papers/parzyl/img/D_plot.png} + \caption{$D_n(x)$ mit unterschiedlichen Werten für $n$.} + \label{parzyl:fig:dnz} +\end{figure} +\begin{figure} + \centering + \includegraphics[scale=0.35]{papers/parzyl/img/v_plot.png} + \caption{$V(a,x)$ mit unterschiedlichen Werten für $a$.} + \label{parzyl:fig:Vnz} +\end{figure} \ No newline at end of file diff --git a/buch/papers/parzyl/teil2.tex b/buch/papers/parzyl/teil2.tex index 3f890d0..573432a 100644 --- a/buch/papers/parzyl/teil2.tex +++ b/buch/papers/parzyl/teil2.tex @@ -5,18 +5,21 @@ % \section{Anwendung in der Physik \label{parzyl:section:teil2}} -\rhead{Teil 2} +\rhead{Anwendung in der Physik} - -\subsection{Elektrisches Feld einer semi-infiniten Platte -\label{parzyl:subsection:bonorum}} -Die parabolischen Zylinderkoordinaten tauchen auf, wenn man das elektrische Feld einer semi-infiniten Platte finden will. -Das dies so ist kann im zwei Dimensionalen mit Hilfe von komplexen Funktionen gezeigt werden. Wobei die Platte dann nur eine Linie ist. +Die parabolischen Zylinderkoordinaten tauchen auf, wenn man das elektrische Feld einer semi-infiniten Platte, wie in Abbildung \ref{parzyl:fig:leiterplatte} gezeigt, finden will. +\begin{figure} + \centering + \includegraphics[width=0.9\textwidth]{papers/parzyl/img/plane.pdf} + \caption{Semi-infinite Leiterplatte} + \label{parzyl:fig:leiterplatte} +\end{figure} +Das dies so ist kann im zwei Dimensionalen mit Hilfe von komplexen Funktionen gezeigt werden. Die Platte ist dann nur eine Linie, was man in Abbildung TODO sieht. Jede komplexe Funktion $F(z)$ kann geschrieben werden als \begin{equation} - F(z) = U(x,y) + iV(x,y) \qquad z \in \mathbb{C}; x,y \in \mathbb{R}. + F(s) = U(x,y) + iV(x,y) \qquad s \in \mathbb{C}; x,y \in \mathbb{R}. \end{equation} -Dabei muss gelten, falls die Funktion differenzierbar ist, dass +Dabei müssen, falls die Funktion differenzierbar ist, die Cauchy-Riemann Differentialgleichungen \begin{equation} \frac{\partial U(x,y)}{\partial x} = @@ -24,8 +27,9 @@ Dabei muss gelten, falls die Funktion differenzierbar ist, dass \qquad \frac{\partial V(x,y)}{\partial x} = - -\frac{\partial U(x,y)}{\partial y}. + -\frac{\partial U(x,y)}{\partial y} \end{equation} +gelten. Aus dieser Bedingung folgt \begin{equation} \label{parzyl_e_feld_zweite_ab} @@ -35,7 +39,7 @@ Aus dieser Bedingung folgt \frac{\partial^2 U(x,y)}{\partial y^2} = 0 - }_{\nabla^2U(x,y)=0} + }_{\displaystyle{\nabla^2U(x,y)=0}} \qquad \underbrace{ \frac{\partial^2 V(x,y)}{\partial x^2} @@ -43,49 +47,58 @@ Aus dieser Bedingung folgt \frac{\partial^2 V(x,y)}{\partial y^2} = 0 - }_{\nabla^2V(x,y) = 0}. + }_{\displaystyle{\nabla^2V(x,y) = 0}}. \end{equation} -Zusätzlich zeigen diese Bedingungen auch, dass die zwei Funktionen $U(x,y)$ und $V(x,y)$ orthogonal zueinander sind. +Zusätzlich kann auch gezeigt werden, dass die Funktion $F(z)$ eine winkeltreue Abbildung ist. Der Zusammenhang zum elektrischen Feld ist jetzt, dass das Potential an einem quellenfreien Punkt gegeben ist als \begin{equation} \nabla^2\phi(x,y) = 0. \end{equation} -Da dies bei komplexen differenzierbaren Funktionen gilt, wie Gleichung \ref{parzyl_e_feld_zweite_ab} zeigt, kann entweder $U(x,y)$ oder $V(x,y)$ von einer solchen Funktion als das Potential angesehen werden. Im weiteren wird für das Potential $U(x,y)$ verwendet. -Da die Funktion, welche nicht das Potential beschreibt, in weiteren angenommen als $V(x,y)$, orthogonal zum Potential ist, zeigt dies das Verhalten des elektrischen Feldes. -Um nun zu den parabolische Zylinderkoordinaten zu gelangen muss nur noch eine geeignete komplexe Funktion $F(z)$ gefunden werden, welche eine semi-infinite Platte beschreiben kann. Man könnte natürlich auch nach anderen Funktionen suchen, welche andere Bedingungen erfüllen und würde dann auf andere Koordinatensysteme stossen. Die gesuchte Funktion in diesem Fall ist +Dies ist eine Bedingung welche differenzierbare Funktionen, wie in Gleichung \eqref{parzyl_e_feld_zweite_ab} gezeigt wird, bereits besitzen. +Nun kann zum Beispiel $U(x,y)$ als das Potential angeschaut werden +\begin{equation} + \phi(x,y) = U(x,y). +\end{equation} +Orthogonal zum Potential ist das elektrische Feld +\begin{equation} + E(x,y) = V(x,y). +\end{equation} +Um nun zu den parabolische Zylinderkoordinaten zu gelangen muss nur noch eine geeignete +komplexe Funktion $F(s)$ gefunden werden, +welche eine semi-infinite Platte beschreiben kann. +Die gesuchte Funktion in diesem Fall ist \begin{equation} - F(z) + F(s) = - \sqrt{z} + \sqrt{s} = \sqrt{x + iy}. \end{equation} Dies kann umgeformt werden zu \begin{equation} - F(z) + F(s) = \underbrace{\sqrt{\frac{\sqrt{x^2+y^2} + x}{2}}}_{U(x,y)} + i\underbrace{\sqrt{\frac{\sqrt{x^2+y^2} - x}{2}}}_{V(x,y)} . \end{equation} -Die Äquipotentialflächen können nun betrachtet werden, indem man die Funktion welche das Potential beschreibt gleich eine Konstante setzt, +Die Äquipotentialflächen können nun betrachtet werden, +indem man die Funktion, welche das Potential beschreibt, gleich eine Konstante setzt, \begin{equation} - \sigma = U(x,y) = \sqrt{\frac{\sqrt{x^2+y^2} + x}{2}}, + \sigma = U(x,y) = \sqrt{\frac{\sqrt{x^2+y^2} + x}{2}}. \end{equation} -und die Flächen mit der gleichen elektrischen Feldstärke können als +Die Flächen mit der gleichen elektrischen Feldstärke können als \begin{equation} \tau = V(x,y) = \sqrt{\frac{\sqrt{x^2+y^2} - x}{2}} \end{equation} -beschrieben werden. Diese zwei Gleichungen zeigen nun wie man vom kartesischen Koordinatensystem ins parabolische Zylinderkoordinatensystem kommt. Werden diese Formeln nun nach x und y aufgelöst so beschreibe sie, wie man aus dem parabolischen Zylinderkoordinatensystem zurück ins kartesische rechnen kann +beschrieben werden. Diese zwei Gleichungen zeigen nun, wie man vom +kartesischen Koordinatensystem ins parabolische Zylinderkoordinatensystem kommt. +Werden diese Formeln nun nach $x$ und $y$ aufgelöst \begin{equation} x = \sigma \tau, \end{equation} \begin{equation} - y = \frac{1}{2}\left ( \tau^2 - \sigma^2 \right ) + y = \frac{1}{2}\left ( \tau^2 - \sigma^2 \right ), \end{equation} - - - - - +so beschreibe sie, wie man aus dem parabolischen Zylinderkoordinatensystem zurück ins kartesische rechnen kann. \ No newline at end of file diff --git a/buch/papers/parzyl/teil3.tex b/buch/papers/parzyl/teil3.tex index 4e44bd6..166eebf 100644 --- a/buch/papers/parzyl/teil3.tex +++ b/buch/papers/parzyl/teil3.tex @@ -3,6 +3,102 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Teil 3 -\label{parzyl:section:teil3}} -\rhead{Teil 3} +\section{Eigenschaften +\label{parzyl:section:Eigenschaften}} +\rhead{Eigenschaften} + +\subsection{Potenzreihenentwicklung + \label{parzyl:potenz}} +%Die parabolischen Zylinderfunktionen, welche in Gleichung \ref{parzyl:eq:solution_dgl} gegeben sind, +%können auch als Potenzreihen geschrieben werden +Die parabolischen Zylinderfunktionen können auch als Potenzreihen geschrieben werden. +Im folgenden Abschnitt werden die Terme welche nur von $n$ oder $a$ abhängig sind vernachlässigt. +Die parabolischen Zylinderfunktionen sind Linearkombinationen aus einem geraden Teil $w_1(\alpha, x)$ +und einem ungeraden Teil $w_2(\alpha, x)$, welche als Potenzreihe +\begin{align} + w_1(\alpha,x) + &= + e^{-x^2/4} \, + {}_{1} F_{1} + ( + \alpha, {\textstyle \frac{1}{2}} ; {\textstyle \frac{1}{2}}x^2) + = + e^{-\frac{x^2}{4}} + \sum^{\infty}_{n=0} + \frac{\left ( \alpha \right )_{n}}{\left ( \frac{1}{2}\right )_{n}} + \frac{\left ( \frac{1}{2} x^2\right )^n}{n!} \\ + &= + e^{-\frac{x^2}{4}} + \left ( + 1 + + + \left ( 2\alpha \right )\frac{x^2}{2!} + + + \left ( 2\alpha \right )\left ( 2 + 2\alpha \right )\frac{x^4}{4!} + + + \dots + \right ) +\end{align} +und +\begin{align} + w_2(\alpha,x) + &= + xe^{-x^2/4} \, + {}_{1} F_{1} + ( + {\textstyle \frac{1}{2}} + + \alpha, {\textstyle \frac{3}{2}} ; {\textstyle \frac{1}{2}}x^2) + = + xe^{-\frac{x^2}{4}} + \sum^{\infty}_{n=0} + \frac{\left ( \frac{3}{4} - k \right )_{n}}{\left ( \frac{3}{2}\right )_{n}} + \frac{\left ( \frac{1}{2} x^2\right )^n}{n!} \\ + &= + e^{-\frac{x^2}{4}} + \left ( + x + + + \left ( 1 + 2\alpha \right )\frac{x^3}{3!} + + + \left ( 1 + 2\alpha \right )\left ( 3 + 2\alpha \right )\frac{x^5}{5!} + + + \dots + \right ) +\end{align} +sind. +Die Potenzreihen sind in der regel unendliche Reihen. +Es gibt allerdings die Möglichkeit für bestimmte $\alpha$ das die Terme in der Klammer gleich null werden +und die Reihe somit eine endliche Anzahl $n$ Summanden hat. +Dies geschieht bei $w_1(\alpha,x)$ falls +\begin{equation} + \alpha = -n \qquad n \in \mathbb{N}_0 +\end{equation} +und bei $w_2(\alpha,x)$ falls +\begin{equation} + \alpha = -\frac{1}{2} - n \qquad n \in \mathbb{N}_0. +\end{equation} +Der Wert des von $\alpha$ ist abhängig, ob man $D_n(x)$ oder $U(a,x)$ / $V(a,x)$ verwendet. +Bei $D_n(x)$ gilt $\alpha = -{\textstyle \frac{1}{2}} n$ und bei $U(a,z)$ oder $V(a,x)$ gilt +$\alpha = {\textstyle \frac{1}{2}} a + {\textstyle \frac{1}{4}}$. +\subsection{Ableitung} +Die Ableitungen $\frac{\partial w_1(\alpha, x)}{\partial x}$ und $\frac{\partial w_2(\alpha, x)}{\partial x}$ +können mit den Eigenschaften der hypergeometrischen Funktionen in Abschnitt +\ref{buch:rekursion:hypergeometrisch:stammableitung} berechnet werden. +Zusammen mit der Produktregel ergeben sich die Ableitungen +\begin{equation} + \frac{\partial w_1(\alpha,x)}{\partial x} = 2\alpha w_2(\alpha + \frac{1}{2}, x) - \frac{1}{2} x w_1(\alpha, x), +\end{equation} +und +%\begin{equation} +% \frac{\partial w_2(z,k)}{\partial z} = w_1(z, k -\frac{1}{2}) - \frac{1}{2} z w_2(z,k). +%\end{equation} +\begin{equation} + \frac{\partial w_2(\alpha,x)}{\partial x} = e^{-x^2/4} \left( + x^{-1} w_2(\alpha, x) - \frac{x}{2} w_2(\alpha, x) + 2 x^2 \left(\frac{\alpha + 1}{3}\right) + {}_{1} F_{1} ( + {\textstyle \frac{3}{2}} + + \alpha, {\textstyle \frac{5}{2}} ; {\textstyle \frac{1}{2}}x^2) + \right) +\end{equation} +Nach dem selben Vorgehen können weitere Ableitungen berechnet werden. + diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index fda8be6..4ab5e62 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -1,17 +1,78 @@ % % eigenschaften.tex -- Eigenschaften der Lösungen +% Author: Erik Löffler % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % + +% TODO: +% state goal +% use only what is necessary +% make sure it is easy enough to understand (sentences as shot as possible) +% -> Eigenvalue problem with matrices only +% -> prepare reader for following examples +% +% order: +% 1. Eigenvalue problems with matrices +% 2. Sturm-Liouville is an Eigenvalue problem +% 3. Sturm-Liouville operator (self-adjacent) +% 4. Spectral theorem (brief) +% 5. Base of orthonormal functions + \section{Eigenschaften von Lösungen \label{sturmliouville:section:solution-properties}} \rhead{Eigenschaften von Lösungen} +Im weiteren werden nun die Eigenschaften der Lösungen eines +Sturm-Liouville-Problems diskutiert. +Im wesendlichen wird darauf eingegangen, wie die Orthogonalität der Lösungen +zustande kommt. +Dazu wird zunächst das Eigenwertproblem für Matrizen wiederholt und angeschaut +unter welchen Voraussetzungen die Lösungen orthogonal sind. +Dann wird gezeigt, dass das Sturm-Liouville-Problem auch ein Eigenwertproblem +dieser Art ist und es wird auf au die Orthogononalität der Lösungsfunktion +geschlossen. + +\subsection{Eigenwertprobleme mit Matrizen} + +Das Eigenwertprobelm +\[ + A v + = + \lambda v +\] +für die $n \times n$-Matrix $A$, dem Eigenwert $\lambda$ und dem Eigenvektor $v$ +in der linearen Algebra wird häufig im Zusammenhang mit +Matrixzerlegungen diskutiert. + +Mittels Spektralsatzes kann zum Beispiel geschlossen werden, dass wenn +\[ + + = + +\] +gilt, die Matrix A symmetrisch (und somit selbstadjungiert) ist und somit eine +Orthonormalbasis aus Eigenvektoren besitzt. +In aneren Worten: durch diese Eigenschaft ist gegeben, dass A diagonalisierbar +ist und alle Eigenvektoren orthogonal zueinander sind. + +\subsection{} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% OLD section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\iffalse + +\section{OLD: Eigenschaften von Lösungen +%\label{sturmliouville:section:solution-properties} +} +\rhead{Eigenschaften von Lösungen} + Im weiteren werden nun die Eigenschaften der Lösungen eines Sturm-Liouville-Problems diskutiert und aufgezeigt, wie diese Eigenschaften zustande kommen. -Dazu wird der Operator $L_0$ welcher bereits in +Dazu wird der Operator $L_0$ welcher bereits in Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} betrachtet wurde, noch etwas genauer angeschaut. Es wird also im Folgenden @@ -36,43 +97,49 @@ für die Lösungen des Sturm-Liouville-Problems zur Folge hat. \subsubsection{Exkurs zum Spektralsatz} -Um zu verstehen was für Eigenschaften der selbstadjungierte Operator $L_0$ in +Um zu verstehen welche Eigenschaften der selbstadjungierte Operator $L_0$ in den Lösungen hervorbringt, wird der Spektralsatz benötigt. Dieser wird in der linearen Algebra oft verwendet um zu zeigen, dass eine Matrix diagonalisierbar ist, beziehungsweise dass eine Orthonormalbasis existiert. -Dazu wird zunächst gezeigt, dass eine gegebene $n\times n$-Matrix $A$ aus einem -endlichdimensionalem $\mathbb{K}$-Vektorraum selbstadungiert ist, also dass + +Im Fall einer gegebenen $n\times n$-Matrix $A$ mit reellen Einträgen wird dazu +zunächst gezeigt, dass $A$ selbstadjungiert ist, also dass \[ \langle Av, w \rangle = \langle v, Aw \rangle \] -für $ v, w \in \mathbb{K}^n$ gilt. -Ist dies der Fall, folgt direkt, dass $A$ auch normal ist. -Dann wird die Aussage des Spektralsatzes -\cite{sturmliouville:spektralsatz-wiki} verwended, welche besagt, dass für -Endomorphismen genau dann eine Orthonormalbasis aus Eigenvektoren existiert, -wenn sie normal sind und nur Eigenwerte aus $\mathbb{K}$ besitzten. +für $ v, w \in \mathbb{R}^n$ gilt. +Ist dies der Fall, kann die Aussage des Spektralsatzes +\cite{sturmliouville:spektralsatz-wiki} verwended werden. +Daraus folgt dann, dass eine Orthonormalbasis aus Eigenvektoren existiert, +wenn $A$ nur Eigenwerte aus $\mathbb{R}$ besitzt. Dies ist allerdings nicht die Einzige Version des Spektralsatzes. -Unter anderen gibt es den Spektralsatz für kompakte Operatoren -\cite{sturmliouville:spektralsatz-wiki}. -Dieser besagt, dass wenn ein linearer kompakter Operator in -$\mathbb{R}$ selbstadjungiert ist, ein (eventuell endliches) -Orthonormalsystem existiert. +Unter anderen gibt es den Spektralsatz für kompakte Operatoren +\cite{sturmliouville:spektralsatz-wiki}, welcher für das +Sturm-Liouville-Problem von Bedeutung ist. +Welche Voraussetzungen erfüllt sein müssen, um diese Version des +Satzes verwenden zu können, wird hier aber nicht diskutiert und kann bei den +Beispielen in diesem Kapitel als gegeben betrachtet werden. +Grundsätzlich ist die Aussage in dieser Version dieselbe, wie bei den Matrizen, +also dass für ein Operator eine Orthonormalbasis aus Eigenvektoren existiert, +falls er selbstadjungiert ist. \subsubsection{Anwendung des Spektralsatzes auf $L_0$} Der Spektralsatz besagt also, dass, weil $L_0$ selbstadjungiert ist, eine Orthonormalbasis aus Eigenvektoren existiert. Genauer bedeutet dies, dass alle Eigenvektoren, beziehungsweise alle Lösungen -des Sturm-Liouville-Problems orthogonal zueinander sind bezüglich dem -Skalarprodukt, in dem $L_0$ selbstadjungiert ist. +des Sturm-Liouville-Problems orthogonal zueinander sind bezüglich des +Skalarprodukts, in dem $L_0$ selbstadjungiert ist. Erfüllt also eine Differenzialgleichung die in -Abschnitt~\ref{sturmliouville:section:teil0} präsentierten Eigenschaften und +Abschnitt~\ref{sturmliouville:section:teil0} präsentierten Eigenschaften und erfüllen die Randbedingungen der Differentialgleichung die Randbedingungen des Sturm-Liouville-Problems, kann bereits geschlossen werden, dass die Lösungsfunktion des Problems eine Linearkombination aus orthogonalen -Basisfunktionen ist. \ No newline at end of file +Basisfunktionen ist. + +\fi diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index f58baf9..62d9509 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -3,11 +3,31 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % + +% TODO: +% order: +% 1. State goal of showing examples in intro +% 2. Show Sturm-Liouville form +% 3. Explain boundary conditions as necessary in regards to examples +% (make singular property brief) +% +% Remove Eigenvaluedecomposition -> is discussed in properties of solutions +% Check for readability + \section{Was ist das Sturm-Liouville-Problem\label{sturmliouville:section:teil0}} \rhead{Einleitung} -Das Sturm-Liouville-Problem wurde benannt nach dem schweizerisch-französischen Mathematiker und Physiker Jacques Charles Fran\c{c}ois Sturm und dem französischen Mathematiker Joseph Liouville. -Gemeinsam haben sie in der mathematischen Physik die Sturm-Liouville-Theorie entwickelt und gilt für die Lösung von gewöhnlichen Differentialgleichungen, jedoch verwendet man die Theorie öfters bei der Lösung von partiellen Differentialgleichungen. -Normalerweise betrachtet man für das Strum-Liouville-Problem eine gewöhnliche Differentialgleichung 2. Ordnung, und wenn es sich um eine partielle Differentialgleichung handelt, kann man sie in mehrere gewöhnliche Differentialgleichungen umwandeln. Wie z. B. den Separationsansatz, die partielle Differentialgleichung mit mehreren Variablen. +Das Sturm-Liouville-Problem wurde benannt nach dem schweizerisch-französischen +Mathematiker und Physiker Jacques Charles Fran\c{c}ois Sturm und dem +französischen Mathematiker Joseph Liouville. +Gemeinsam haben sie in der mathematischen Physik die Sturm-Liouville-Theorie +entwickelt und gilt für die Lösung von gewöhnlichen Differentialgleichungen, +jedoch verwendet man die Theorie öfters bei der Lösung von partiellen +Differentialgleichungen. +Normalerweise betrachtet man für das Strum-Liouville-Problem eine gewöhnliche +Differentialgleichung 2. Ordnung, und wenn es sich um eine partielle +Differentialgleichung handelt, kann man sie in mehrere gewöhnliche +Differentialgleichungen umwandeln. Wie z. B. den Separationsansatz, die +partielle Differentialgleichung mit mehreren Variablen. \begin{definition} \index{Sturm-Liouville-Gleichung}% @@ -18,14 +38,21 @@ Wenn die lineare homogene Differentialgleichung als \begin{equation} \label{eq:sturm-liouville-equation} - \frac{d}{dx}\lbrack p(x) \frac{dy}{dx} \rbrack + \lbrack q(x) + \lambda w(x) \rbrack y = 0 + \frac{d}{dx}\lbrack p(x) \frac{dy}{dx} \rbrack + \lbrack q(x) + + \lambda w(x) \rbrack y + = + 0 \end{equation} -geschrieben werden kann, dann wird diese Gleichung als Sturm-Liouville-Gleichung bezeichnet. +geschrieben werden kann, dann wird diese Gleichung als Sturm-Liouville-Gleichung +bezeichnet. \end{definition} -Alle homogenen linearen gewöhnlichen Differentialgleichungen 2. Ordnung können in die Form der Gleichung \eqref{eq:sturm-liouville-equation} umgewandelt werden. +Alle homogenen linearen gewöhnlichen Differentialgleichungen 2. Ordnung können +in die Form der Gleichung \eqref{eq:sturm-liouville-equation} umgewandelt +werden. \subsection{Randbedingungen\label{sub:was-ist-das-slp-randbedingungen}} -Geeignete Randbedingungen sind erforderlich, um die Lösungen einer Differentialgleichung genau zu bestimmen. +Geeignete Randbedingungen sind erforderlich, um die Lösungen einer +Differentialgleichung genau zu bestimmen. Die Sturm-Liouville-Gleichung mit homogenen Randbedingungen des dritten Typs \begin{equation} \begin{aligned} @@ -38,17 +65,24 @@ ist das klassische Sturm-Liouville-Problem. \subsection{Eigenwertproblem} -Die Gleichungen \eqref{eq:sturm-liouville-equation} hat die Form eines Eigenwertproblems. -Wenn bei der Sturm-Liouville-Gleichung \eqref{eq:sturm-liouville-equation} alles konstant bleibt, aber der Wert von $\lambda$ sich ändert, erhält man eine andere Eigenfunktion, weil man eine andere gewöhnliche Differentialgleichung löst; +Die Gleichungen \eqref{eq:sturm-liouville-equation} hat die Form eines +Eigenwertproblems. +Wenn bei der Sturm-Liouville-Gleichung \eqref{eq:sturm-liouville-equation} alles +konstant bleibt, aber der Wert von $\lambda$ sich ändert, erhält man eine andere +Eigenfunktion, weil man eine andere gewöhnliche Differentialgleichung löst; der Parameter $\lambda$ wird als Eigenwert bezeichnet. -Es ist genau das gleiche Prinzip wie bei den Matrizen, andere Eigenwerte ergeben andere Eigenvektoren. +Es ist genau das gleiche Prinzip wie bei den Matrizen, andere Eigenwerte ergeben +andere Eigenvektoren. Es besteht eine Korrespondenz zwischen den Eigenwerten und den Eigenvektoren. Das gleiche gilt auch beim Sturm-Liouville-Problem, und zwar \begin{equation} \lambda \overset{Korrespondenz}\leftrightarrow y. \end{equation} -Die Theorie besagt, wenn $y_m$, $y_n$ Eigenfuktionen des Sturm-Liouville-Problems sind, die verschiedene Eigenwerte $\lambda_m$, $\lambda_n$ ($\lambda_m \neq \lambda_n$) entsprechen, so sind $y_m$, $y_n$ orthogonal zu y - +Die Theorie besagt, wenn $y_m$, $y_n$ Eigenfuktionen des +Sturm-Liouville-Problems sind, die verschiedene Eigenwerte $\lambda_m$, +$\lambda_n$ ($\lambda_m \neq \lambda_n$) entsprechen, so sind $y_m$, $y_n$ +orthogonal zu y - dies gilt für das Intervall (a,b). Somit ergibt die Gleichung \begin{equation} @@ -57,31 +91,38 @@ Somit ergibt die Gleichung \end{equation} \subsection{Koeffizientenfunktionen} -Die Funktionen $p(x)$, $q(x)$ und $w(x)$ werden als Koeffizientenfunktionen mit ihren freien Variablen $x$ bezeichnet. -Die Funktion $w(x)$ (manchmal auch $r(x)$ genannt) wird als Gewichtsfunktion oder Dichtefunktion bezeichnet. -Die Eigenschaften der Koeffizientenfunktionen haben einen grossen Einfluss auf die Lösbarkeit des Sturm-Liouville-Problems. +Die Funktionen $p(x)$, $q(x)$ und $w(x)$ werden als Koeffizientenfunktionen mit +ihren freien Variablen $x$ bezeichnet. +Die Funktion $w(x)$ (manchmal auch $r(x)$ genannt) wird als Gewichtsfunktion +oder Dichtefunktion bezeichnet. +Die Eigenschaften der Koeffizientenfunktionen haben einen grossen Einfluss auf +die Lösbarkeit des Sturm-Liouville-Problems. % %Kapitel mit "Das reguläre Sturm-Liouville-Problem" % -\subsection{Das reguläre oder singuläre Sturm-Liouville-Problem\label{sub:reguläre_sturm_liouville_problem}} -Damit es sich um ein reguläres Sturm-Liouville-Problem handelt, müssen einige Bedingungen beachtet werden. +\subsection{Das reguläre oder singuläre Sturm-Liouville-Problem +\label{sub:reguläre_sturm_liouville_problem}} +Damit es sich um ein reguläres Sturm-Liouville-Problem handelt, müssen einige +Bedingungen beachtet werden. \begin{definition} \label{def:reguläres_sturm-liouville-problem} \index{regläres Sturm-Liouville-Problem} Die Bedingungen für ein reguläres Sturm-Liouville-Problem sind: \begin{itemize} - \item Die Funktionen $p(x), p'(x), q(x)$ und $w(x)$ müssen stetig und reell sein. - \item sowie müssen in einem endlichen Intervall $[a,b]$ integrierbar sein. + \item Die Funktionen $p(x), p'(x), q(x)$ und $w(x)$ müssen stetig und + reell sein. + \item sowie müssen in einem endlichen Intervall $[a,b]$ integrierbar + sein. \item $p(x)$ und $w(x)$ sind $>0$. - \item Es gelten die Randbedingungen \eqref{eq:randbedingungen}, wobei $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. + \item Es gelten die Randbedingungen \eqref{eq:randbedingungen}, wobei + $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. \end{itemize} \end{definition} -Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige Eigenschaften der Eigenfunktionen beschreiben zu können, ohne sie genau zu kennen. - - - +Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige +Eigenschaften der Eigenfunktionen beschreiben zu können, ohne sie genau zu +kennen. \begin{beispiel} Das Randwertproblem @@ -92,8 +133,11 @@ Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige Eigenschaft \end{aligned} \end{equation} ist kein reguläres Sturm-Liouville-Problem. - Wenn man die Gleichung in die Sturm-Liouville Form umformen, dann ergeben die Koeffizientenfunktionen $p(x) = w(x) = x$ und $q(x) = -m^2/x$. - Schaut man jetzt die Bedingungen im Kapitel \ref{sub:reguläre_sturm_liouville_problem} an und vergleicht diese unseren Koeffizientenfunktionen, so erkennt man einige Probleme: + Wenn man die Gleichung in die Sturm-Liouville Form umformen, dann ergeben + die Koeffizientenfunktionen $p(x) = w(x) = x$ und $q(x) = -m^2/x$. + Schaut man jetzt die Bedingungen im + Kapitel~\ref{sub:reguläre_sturm_liouville_problem} an und vergleicht diese + unseren Koeffizientenfunktionen, so erkennt man einige Probleme: \begin{itemize} \item $p(x)$ und $w(x)$ sind nicht positiv, wenn $x = 0$ ist. \item $q(x)$ ist nicht kontinuierlich, wenn $x = 0$ ist. @@ -101,11 +145,11 @@ Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige Eigenschaft \end{itemize} \end{beispiel} -Verwendet man das reguläre Sturm-Liouville-Problem, obwohl eine oder beide Bedingungen nicht erfüllt sind, dann ist es schwierig zu sagen, ob die Lösung eindeutige Ergebnisse hat. -Es ist schwierig, Kriterien anzuwenden, da die Formulierungen z. B. in der Lösungsfunktion liegen. -Ähnlich wie bei der Fourier-Reihe gegenüber der Fourier-Transformation gibt es immer noch eine zugehörige Eigenfunktionsentwicklung, und zwar die Integraltransformation sowie gibt es weiterhin verallgemeinerte Eigenfunktionen. - - - - - +Verwendet man das reguläre Sturm-Liouville-Problem, obwohl eine oder beide +Bedingungen nicht erfüllt sind, dann ist es schwierig zu sagen, ob die Lösung +eindeutige Ergebnisse hat. +Es ist schwierig, Kriterien anzuwenden, da die Formulierungen z. B. in der +Lösungsfunktion liegen. +Ähnlich wie bei der Fourier-Reihe gegenüber der Fourier-Transformation gibt es +immer noch eine zugehörige Eigenfunktionsentwicklung, und zwar die +Integraltransformation sowie gibt es weiterhin verallgemeinerte Eigenfunktionen. diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index c304632..cad71d7 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -4,9 +4,11 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\subsection{Sind Tschebyscheff-Polynome orthogonal zueinander?\label{sub:tschebyscheff-polynome}} +\subsection{Sind Tschebyscheff-Polynome orthogonal zueinander? +\label{sub:tschebyscheff-polynome}} \subsubsection*{Definition der Koeffizientenfunktion} -Im Kapitel \ref{sub:beispiele_sturm_liouville_problem} sind die Koeffizientenfunktionen, die man braucht, schon aufgeliste, und zwar mit +Im Kapitel \ref{sub:beispiele_sturm_liouville_problem} sind die +Koeffizientenfunktionen, die man braucht, schon aufgeliste, und zwar mit \begin{align*} w(x) &= \frac{1}{\sqrt{1-x^2}} \\ p(x) &= \sqrt{1-x^2} \\ @@ -15,15 +17,25 @@ Im Kapitel \ref{sub:beispiele_sturm_liouville_problem} sind die Koeffizientenfun Da die Sturm-Liouville-Gleichung \begin{equation} \label{eq:sturm-liouville-equation-tscheby} - \frac{d}{dx} (\sqrt{1-x^2} \frac{dy}{dx}) + (0 + \lambda \frac{1}{\sqrt{1-x^2}}) y = 0 + \frac{d}{dx} (\sqrt{1-x^2} \frac{dy}{dx}) + + (0 + \lambda \frac{1}{\sqrt{1-x^2}}) y + = + 0 \end{equation} -nun mit den Koeffizientenfunktionen aufgestellt werden kann, bleibt die Frage, ob es sich um ein reguläres oder singuläres Sturm-Liouville-Problem handelt. +nun mit den Koeffizientenfunktionen aufgestellt werden kann, bleibt die Frage, +ob es sich um ein reguläres oder singuläres Sturm-Liouville-Problem handelt. \subsubsection*{regulär oder singulär?} -Für das reguläre Problem laut der Definition \ref{def:reguläres_sturm-liouville-problem} muss die funktion $p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und $w(x) = \frac{1}{\sqrt{1-x^2}}$ stetig und reell sein --- und sie sind es auch. -Auf dem Intervall $(-1,1)$ sind die Tschebyscheff-Polynome erster Art mit Hilfe von Hyperbelfunktionen +Für das reguläre Problem laut der +Definition~\ref{def:reguläres_sturm-liouville-problem} muss die funktion +$p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und +$w(x) = \frac{1}{\sqrt{1-x^2}}$ stetig und reell sein --- und sie sind es auch. +Auf dem Intervall $(-1,1)$ sind die Tschebyscheff-Polynome erster Art mit Hilfe +von Hyperbelfunktionen \begin{equation} - T_n(x) = \cos n (\arccos x) + T_n(x) + = + \cos n (\arccos x) \end{equation}. Für $x>1$ und $x<-1$ sehen die Polynome wie folgt aus: \begin{equation} @@ -31,7 +43,8 @@ Für $x>1$ und $x<-1$ sehen die Polynome wie folgt aus: (-1)^n \cosh (n \arccos (-x)), & x<-1 \end{array}\right. \end{equation}, jedoch ist die Orthogonalität nur auf dem Intervall $[ -1, 1]$ sichergestellt. -Die nächste Bedingung beinhaltet, dass die Funktion $p(x)$ und $w(x)>0$ sein müssen. +Die nächste Bedingung beinhaltet, dass die Funktion $p(x)$ und $w(x)>0$ sein +müssen. Die Funktion \begin{equation*} p(x)^{-1} = \frac{1}{\sqrt{1-x^2}} @@ -40,7 +53,8 @@ ist die gleiche wie $w(x)$ und erfüllt die Bedingung. \subsubsection*{Randwertproblem} Für die Verifizierung der Randbedingungen benötigt man erneut $p(x)$. -Da sich die Polynome nur auf dem Intervall $[ -1,1 ]$ orthogonal verhalten, sind $a = -1$ und $b = 1$ gesetzt. +Da sich die Polynome nur auf dem Intervall $[ -1,1 ]$ orthogonal verhalten, +sind $a = -1$ und $b = 1$ gesetzt. Beim einsetzen in die Randbedingung \eqref{eq:randbedingungen}, erhält man \begin{equation} \begin{aligned} @@ -48,8 +62,10 @@ Beim einsetzen in die Randbedingung \eqref{eq:randbedingungen}, erhält man k_b y(-1) + h_b y'(-1) &= 0. \end{aligned} \end{equation} -Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome (siehe \ref{sub:definiton_der_tschebyscheff-Polynome}). -Die Funktion $y(x)$ wird nun mit der Funktion $T_n(x)$ ersetzt und für die Verifizierung der Randbedingung wählt man $n=2$. +Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome +(siehe \ref{sub:definiton_der_tschebyscheff-Polynome}). +Die Funktion $y(x)$ wird nun mit der Funktion $T_n(x)$ ersetzt und für die +Verifizierung der Randbedingung wählt man $n=2$. Somit erhält man \begin{equation} \begin{aligned} @@ -57,24 +73,17 @@ Somit erhält man k_b T_2(1) + h_b T_{2}'(1) &= k_b = 0. \end{aligned} \end{equation} -Ähnlich wie beim Beispiel der Wärmeleitung in einem homogenen Stab kann man, damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, können beliebige $h_a \ne 0$ und $h_b \ne 0$ gewählt werden. -Somit ist erneut gezeigt, dass die Randbedingungen der Tschebyscheff-Polynome auf die Sturm-Liouville-Randbedingungen erfüllt und alle daraus resultierenden Lösungen orthogonal sind. +Ähnlich wie beim Beispiel der Wärmeleitung in einem homogenen Stab kann man, +damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, können beliebige +$h_a \ne 0$ und $h_b \ne 0$ gewählt werden. +Somit ist erneut gezeigt, dass die Randbedingungen der Tschebyscheff-Polynome +auf die Sturm-Liouville-Randbedingungen erfüllt und alle daraus resultierenden +Lösungen orthogonal sind. \begin{beispiel} - Die Gleichung \eqref{eq:skalar-sturm-liouville} mit $y_m = T_1(x)$ und $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ ergibt + Die Gleichung \eqref{eq:skalar-sturm-liouville} mit $y_m = T_1(x)$ und + $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ ergibt \[ \int_{-1}^{1} w(x) x (2x^2-1) dx = 0. \] \end{beispiel} - - - - - - - - - - - - diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index b22d5f5..4992150 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -1,15 +1,20 @@ % -% waermeleitung_beispiel.tex -- Beispiel Wärmeleitung in homogenem Stab. +% waermeleitung_beispiel.tex -- Beispiel Wärmeleitung in homogenem Stab. +% Author: Erik Löffler % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\subsection{Wärmeleitung in einem Homogenen Stab} +\subsection{Fourierreihe als Lösung des Sturm-Liouville-Problems +(Wärmeleitung)} In diesem Abschnitt wird das Problem der Wärmeleitung in einem homogenen Stab betrachtet und wie das Sturm-Liouville-Problem bei der Beschreibung dieses physikalischen Phänomenes auftritt. +% TODO: u is dependent on 2 variables (t, x) +% TODO: mention initial conditions u(0, x) + Zunächst wird ein eindimensionaler homogener Stab der Länge $l$ und Wärmeleitkoeffizient $\kappa$ betrachtet. Es ergibt sich für das Wärmeleitungsproblem @@ -17,9 +22,9 @@ die partielle Differentialgleichung \begin{equation} \label{sturmliouville:eq:example-fourier-heat-equation} \frac{\partial u}{\partial t} = - \kappa \frac{\partial^{2}u}{{\partial x}^{2}} + \kappa \frac{\partial^{2}u}{{\partial x}^{2}}, \end{equation} -wobei der Stab in diesem Fall auf der X-Achse im Intervall $[0,l]$ liegt. +wobei der Stab in diesem Fall auf der $x$-Achse im Intervall $[0,l]$ liegt. Da diese Differentialgleichung das Problem allgemein für einen homogenen Stab beschreibt, werden zusätzliche Bedingungen benötigt, um beispielsweise @@ -34,7 +39,7 @@ Tempreatur gehalten werden. Die Enden des Stabes auf konstanter Temperatur zu halten bedeutet, dass die Lösungsfunktion $u(t,x)$ bei $x = 0$ und $x = l$ nur die vorgegebene Temperatur zurückgeben darf. Diese wird einfachheitshalber als $0$ angenomen. -Es folgen nun +Es folgt nun \begin{equation} \label{sturmliouville:eq:example-fourier-boundary-condition-ends-constant} u(t,0) @@ -51,7 +56,7 @@ als Randbedingungen. \subsubsection{Randbedingungen für Stab mit isolierten Enden} -Bei isolierten Enden des Stabes können belibige Temperaturen für $x = 0$ und +Bei isolierten Enden des Stabes können beliebige Temperaturen für $x = 0$ und $x = l$ auftreten. In diesem Fall ist es nicht erlaubt, dass Wärme vom Stab an die Umgebung oder von der Umgebung an den Stab abgegeben wird. @@ -186,8 +191,9 @@ somit auch zu orthogonalen Lösungen führen. % Lösung von X(x), Teil mu % -\subsubsection{Lösund der Differentialgleichung in x} -Als erstes wird auf die erste erste Gleichung eingegangen. +\subsubsection{Lösund der Differentialgleichung in $x$} +Als erstes wird auf die +Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} eingegangen. Aufgrund der Struktur der Gleichung \[ X^{\prime \prime}(x) - \mu X(x) @@ -353,6 +359,14 @@ wie auch mit isolierten Enden -\frac{n^{2}\pi^{2}}{l^{2}}. \end{equation} +% TODO: infinite base vectors and fourier series +\subsubsection{TODO: Auf Anzahl Lösungen und Fourierreihe eingehen} + +% TODO: check ease of reading +\subsubsection{Berechnung der Koeffizienten} + +% TODO: move explanation A/B -> a_n/b_n to fourier subsection + % % Lösung von X(x), Teil: Koeffizienten a_n und b_n mittels skalarprodukt. % @@ -417,7 +431,7 @@ sein, welche Integralgrenzen zu verwenden sind. In diesem Fall haben die $\sin$ und $\cos$ Terme beispielsweise keine ganze Periode im Intervall $x \in [0, l]$ für ungerade $n$ und $m$. Um die Skalarprodukte aber korrekt zu berechnen, muss über ein ganzzahliges -Vielfaches der Periode der triginimetrischen Funktionen integriert werden. +Vielfaches der Periode der trigonometrischen Funktionen integriert werden. Dazu werden die Integralgrenzen $-l$ und $l$ verwendet und es werden ausserdem neue Funktionen $\hat{u}_c(0, x)$ für die Berechnung mit Cosinus und $\hat{u}_s(0, x)$ für die Berechnung mit Sinus angenomen, welche $u(0, t)$ @@ -471,7 +485,7 @@ berechnet: \\ 2\int_{0}^{l}u(0, x)\cos\left(\frac{m \pi}{l}x\right)dx =& - a_0 \int_{-l}^{l}cos\left(\frac{m \pi}{l}x\right) dx + a_0 \int_{-l}^{l}\cos\left(\frac{m \pi}{l}x\right) dx + \sum_{n = 1}^{\infty}\left[a_n\int_{-l}^{l}\cos\left(\frac{n\pi}{l}x\right) \cos\left(\frac{m \pi}{l}x\right)dx\right] @@ -485,9 +499,9 @@ berechnet: Betrachtet man nun die Summanden auf der rechten Seite stellt man fest, dass nahezu alle Terme verschwinden, denn \[ - \int_{-l}^{l}cos\left(\frac{m \pi}{l}x\right) dx + \int_{-l}^{l}\cos\left(\frac{m \pi}{l}x\right) dx = - 0 + 0, \] da hier über ein ganzzahliges Vielfaches der Periode integriert wird, \[ @@ -526,10 +540,10 @@ mit $u = \frac{m \pi}{l}x$ substituiert wird: \frac{\sin\left(2u\right)}{4}\right]_{u=-m\pi}^{m\pi} \\ &= - a_m\frac{l}{m\pi}\left(\frac{m\pi}{2} + + a_m\frac{l}{m\pi}\biggl(\frac{m\pi}{2} + \underbrace{\frac{\sin\left(2m\pi\right)}{4}}_{\displaystyle = 0} - \frac{-m\pi}{2} - - \underbrace{\frac{\sin\left(-2m\pi\right)}{4}}_{\displaystyle = 0}\right) + \underbrace{\frac{\sin\left(-2m\pi\right)}{4}}_{\displaystyle = 0}\biggr) \\ &= a_m l @@ -611,7 +625,7 @@ Es bleibt also noch % Lösung von T(t) % -\subsubsection{Lösund der Differentialgleichung in t} +\subsubsection{Lösung der Differentialgleichung in $t$} Zuletzt wird die zweite Gleichung der Separation~\eqref{sturmliouville:eq:example-fourier-separated-t} betrachtet. Diese wird über das charakteristische Polynom @@ -627,7 +641,7 @@ Lösung \[ T(t) = - e^{-\kappa \mu t} + e^{\kappa \mu t} \] führt und mit dem Resultat~\eqref{sturmliouville:eq:example-fourier-mu-solution} \[ @@ -637,9 +651,11 @@ führt und mit dem Resultat~\eqref{sturmliouville:eq:example-fourier-mu-solution \] ergibt. -Dieses Resultat kann nun mit allen vorhergehenden Resultaten zudammengesetzt +Dieses Resultat kann nun mit allen vorhergehenden Resultaten zusammengesetzt werden um die vollständige Lösung für das Stab-Problem zu erhalten. +% TODO: elaborate + \subsubsection{Lösung für einen Stab mit Enden auf konstanter Temperatur} \[ \begin{aligned} diff --git a/buch/papers/transfer/main.tex b/buch/papers/transfer/main.tex index ed16998..60f8230 100644 --- a/buch/papers/transfer/main.tex +++ b/buch/papers/transfer/main.tex @@ -3,7 +3,7 @@ % % (c) 2020 Hochschule Rapperswil % -\chapter{Transferfunktionen\label{chapter:transfer}} +\chapter{Transferfunktion Tangens hyperbolicus\label{chapter:transfer}} \lhead{Thema} \begin{refsection} \chapterauthor{Marc Benz} @@ -12,6 +12,8 @@ \input{papers/transfer/teil1.tex} \input{papers/transfer/teil2.tex} \input{papers/transfer/teil3.tex} +%\input{papers/transfer/teil4.tex} + \printbibliography[heading=subbibliography] \end{refsection} diff --git a/buch/papers/transfer/packages.tex b/buch/papers/transfer/packages.tex index ee51b71..fa7069a 100644 --- a/buch/papers/transfer/packages.tex +++ b/buch/papers/transfer/packages.tex @@ -8,3 +8,8 @@ % following example %\usepackage{packagename} +\usetikzlibrary{positioning} +\usetikzlibrary{arrows} +\usetikzlibrary{fit} +\usetikzlibrary{shapes.geometric} +%\usepackage{subcaption} diff --git a/buch/papers/transfer/references.bib b/buch/papers/transfer/references.bib index 75f5d68..181682c 100644 --- a/buch/papers/transfer/references.bib +++ b/buch/papers/transfer/references.bib @@ -4,6 +4,30 @@ % (c) 2020 Autor, Hochschule Rapperswil % + + +@article{transfer:DBLP:journals/corr/abs-1909-07729, + author = {Abhisek Kundu and + Sudarshan Srinivasan and + Eric C. Qin and + Dhiraj D. Kalamkar and + Naveen K. Mellempudi and + Dipankar Das and + Kunal Banerjee and + Bharat Kaul and + Pradeep Dubey}, + title = {K-TanH: Hardware Efficient Activations For Deep Learning}, + journal = {CoRR}, + volume = {abs/1909.07729}, + year = {2019}, + url = {http://arxiv.org/abs/1909.07729}, + eprinttype = {arXiv}, + eprint = {1909.07729}, + timestamp = {Sat, 04 Apr 2020 17:18:32 +0200}, + biburl = {https://dblp.org/rec/journals/corr/abs-1909-07729.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + @online{transfer:bibtex, title = {BibTeX}, url = {https://de.wikipedia.org/wiki/BibTeX}, @@ -31,5 +55,4 @@ volume = 47, pages = {607--627}, url = {https://doi.org/10.1016/j.acha.2017.11.004} -} - +} \ No newline at end of file diff --git a/buch/papers/transfer/teil0.tex b/buch/papers/transfer/teil0.tex index 19d4961..f8c8cb4 100644 --- a/buch/papers/transfer/teil0.tex +++ b/buch/papers/transfer/teil0.tex @@ -3,20 +3,232 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Teil 0\label{transfer: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{transfer: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. +\section{Motivation\label{transfer:section:teil0}} +\rhead{Einleitung} + +Die Transferfunktion ist einer der wichtigsten Bestandteile moderner neuraler Netzwerke. Sie verleiht ihnen die nicht Linearität, die benötigt wird um komplexere Aufgaben zu lösen. Dabei kann theoretisch jede nicht lineare Funktion eingesetzt werden. In der Praxis tauchen aber nur sehr wenige Funktionen mit ähnlichen Eigenschaften auf. Einige davon sind in der Tabelle \ref{tab:aktfkt} zu sehen. In der heutigen Zeit sind vor allem die Variationen der ReLu Funktion beliebt. Der Tangens hyperbolicus wird aber dank dem Aufkommen der Recurrent Neural Networks, zum Beispiel dem Long short term memory Netzwerk, das aus Zellen wie in \ref{motivation:figure:LSTM} gezeigt bestehen, wieder vermehrt eingesetzt. +Die klassische Berechnung ist aber sehr aufwendig und basiert auf Gleitkommaoperationen und relativ komplizierten Funktionen. Diese benötigen einen grossen Rechenaufwand. Vor allem auf Systemen die keine Gleitkommaarithmetik Hardware besitzen wie das zum Beispiel bei gewissen Mikrocontrollern der Fall ist. +\begin{table}[h] + \centering + \begin{tabular}{llll} + \hline + \multicolumn{1}{l}{Name} & \multicolumn{1}{l}{Function} & \multicolumn{1}{l}{Figure} \\ + \hline + Sigmoid & $\sigma(x)=\frac{1}{1+e^{-x}}$ & + \begin{tikzpicture}[baseline={(0,0.2)}] + \draw (-1,0) -- (1,0); + \draw (0,0) -- (0,1); + \draw[red] plot[domain=-1:1,variable=\x] ({\x},{1/(1+exp(-4*\x))}); + \end{tikzpicture}\\ + ReLU & $f(x) =\begin{cases} + 0 & ~\text{if}~ x<0 \\ + x & ~\text{if}~x \geq 0. + \end{cases}$ & + \begin{tikzpicture}[baseline={(0,0.5)}] + \draw (-1,0) -- (1,0); + \draw (0,0) -- (0,1); + \draw[red] plot[domain=-1:1,variable=\x] ({\x},{ifthenelse(\x<0,0,\x)}); + \end{tikzpicture}\\ + Leaky ReLu & $f(x) =\begin{cases} + 0 & ~\text{if}~ x<0 \\ + x & ~\text{if}~x \geq a \cdot x. + \end{cases}$ & + \begin{tikzpicture}[baseline={(0,0.5)}] + \draw (-1,0) -- (1,0); + \draw (0,0) -- (0,1); + \draw[red] plot[domain=-1:1,variable=\x] ({\x},{ifthenelse(\x<0,0.1*\x,\x)}); + \end{tikzpicture} + \end{tabular} + \caption{Transferfunktionen} + \label{tab:aktfkt} +\end{table} + +\begin{figure} +\centering +\begin{tikzpicture} + \begin{axis}[ + xmin=-2.5, xmax=2.5, + ymin=-1.5, ymax=1.5, + axis lines=center, + axis on top=true, + domain=-2.5:2.5, + ylabel=$y$, + xlabel=$x$, + ] + + \addplot [mark=none,draw=red,ultra thick] {tanh(\x)}; + \node [right, red] at (axis cs: 1,0.7) {$\tanh(x)$}; + + %% Add the asymptotes + \draw [blue, dotted, thick] (axis cs:-2.5,-1)-- (axis cs:0,-1); + \draw [blue, dotted, thick] (axis cs:+2.5,+1)-- (axis cs:0,+1); + \end{axis} +\end{tikzpicture} +\caption{Tangens hyperbolicus +\label{anleitung:figure:tanhyp}} +\end{figure} + +\begin{figure} +\centering +\tikzset{ + every node/.style={ + font=\scriptsize + }, + decision/.style={ + shape=rectangle, + minimum height=1cm, + text width=3cm, + text centered, + rounded corners=1ex, + draw, + label={[yshift=0.2cm]left:ja}, + label={[yshift=0.2cm]right:nein}, + }, + outcome/.style={ + shape=ellipse, + fill=gray!15, + draw, + text width=1.5cm, + text centered + }, + decision tree/.style={ + edge from parent path={[-latex] (\tikzparentnode) -| (\tikzchildnode)}, + sibling distance=4cm, + level distance=1.5cm + } +} + +\begin{tikzpicture} + + \node [decision] { $x>k \cdot \frac{\ln 10}{2}$ } + [decision tree] + child { node [outcome] { $+1$ } } + child { node [decision] { $x<-k \cdot \frac{\ln 10}{2}$} + child { node [outcome] { $-1$ } } + child { node [decision] { $-0,1=LaTeX, + % Styles + cell/.style={% For the main box + rectangle, + rounded corners=5mm, + draw, + very thick, + }, + operator/.style={%For operators like + and x + circle, + draw, + inner sep=-0.5pt, + minimum height =.2cm, + }, + function/.style={%For functions + ellipse, + draw, + inner sep=1pt + }, + ct/.style={% For external inputs and outputs + circle, + draw, + line width = .75pt, + minimum width=1cm, + inner sep=1pt, + }, + gt/.style={% For internal inputs + rectangle, + draw, + minimum width=4mm, + minimum height=3mm, + inner sep=1pt + }, + mylabel/.style={% something new that I have learned + font=\scriptsize\sffamily + }, + ArrowC1/.style={% Arrows with rounded corners + rounded corners=.25cm, + thick, + }, + ArrowC2/.style={% Arrows with big rounded corners + rounded corners=.5cm, + thick, + }, + ] + + %Start drawing the thing... + % Draw the cell: + \node [cell, minimum height =4cm, minimum width=6cm] at (0,0){} ; + + % Draw inputs named ibox# + \node [gt] (ibox1) at (-2,-0.75) {$\sigma$}; + \node [gt] (ibox2) at (-1.5,-0.75) {$\sigma$}; + \node [function, draw=red!60, fill=red!5] (ibox3) at (-0.5,-0.75) {$\tanh$}; + \node [gt] (ibox4) at (0.5,-0.75) {$\sigma$}; + + % Draw opérators named mux# , add# and func# + \node [operator] (mux1) at (-2,1.5) {$\times$}; + \node [operator] (add1) at (-0.5,1.5) {+}; + \node [operator] (mux2) at (-0.5,0) {$\times$}; + \node [operator] (mux3) at (1.5,0) {$\times$}; + \node [function, draw=red!60, fill=red!5] (func1) at (1.5,0.75) {$\tanh$}; + + % Draw External inputs named as basis c,h,x + \node[ct, label={[mylabel]}] (c) at (-4,1.5) {\empt{c}{t-1}}; + \node[ct, label={[mylabel]}] (h) at (-4,-1.5) {\empt{h}{t-1}}; + \node[ct, label={[mylabel]}] (x) at (-2.5,-3) {\empt{x}{t}}; + + % Draw External outputs? named as basis c2,h2,x2 + \node[ct, label={[mylabel]}] (c2) at (4,1.5) {\empt{c}{t}}; + \node[ct, label={[mylabel]}] (h2) at (4,-1.5) {\empt{h}{t}}; + \node[ct, label={[mylabel]}] (x2) at (2.5,3) {\empt{h}{t}}; + + % Start connecting all. + %Intersections and displacements are used. + % Drawing arrows + \draw [ArrowC1] (c) -- (mux1) -- (add1) -- (c2); + + % Inputs + \draw [ArrowC2] (h) -| (ibox4); + \draw [ArrowC1] (h -| ibox1)++(-0.5,0) -| (ibox1); + \draw [ArrowC1] (h -| ibox2)++(-0.5,0) -| (ibox2); + \draw [ArrowC1] (h -| ibox3)++(-0.5,0) -| (ibox3); + \draw [ArrowC1] (x) -- (x |- h)-| (ibox3); + + % Internal + \draw [->, ArrowC2] (ibox1) -- (mux1); + \draw [->, ArrowC2] (ibox2) |- (mux2); + \draw [->, ArrowC2] (ibox3) -- (mux2); + \draw [->, ArrowC2] (ibox4) |- (mux3); + \draw [->, ArrowC2] (mux2) -- (add1); + \draw [->, ArrowC1] (add1 -| func1)++(-0.5,0) -| (func1); + \draw [->, ArrowC2] (func1) -- (mux3); + + %Outputs + \draw [-, ArrowC2] (mux3) |- (h2); + \draw (c2 -| x2) ++(0,-0.1) coordinate (i1); + \draw [-, ArrowC2] (h2 -| x2)++(-0.5,0) -| (i1); + \draw [-, ArrowC2] (i1)++(0,0.2) -- (x2); + +\end{tikzpicture} +\caption{Long short term memory cell +\label{motivation:figure:LSTM}} +\end{figure} + + + diff --git a/buch/papers/transfer/teil1.tex b/buch/papers/transfer/teil1.tex index c60f1ea..f117fc0 100644 --- a/buch/papers/transfer/teil1.tex +++ b/buch/papers/transfer/teil1.tex @@ -3,53 +3,54 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Teil 1 +\section{Taylorapproximation \label{transfer: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 +\subsection{Idee} +Die Taylorreihe kann eine glatte Funktion in einer Umgebung durch Polynome beliebig genau annähern. Beschränkt man sich auf einen bestimmten Grad dieser Polynome, spricht man von einer Taylorapproximation. Diese entwickelt sich immer um einen Punkt und kann über die Ableitungen berechnet werden. + +\subsection{Definition der Taylorreihe} +Sei $I \subset \mathbb{R}$ ein offenes Intervall, $f: I \rightarrow \mathbb{R}$ eine glatte Funktion und $a$ ein Element von $I$. Dann ist die unendliche Reihe \begin{equation} -\int_a^b x^2\, dx -= -\left[ \frac13 x^3 \right]_a^b -= -\frac{b^3-a^3}3. -\label{transfer:equation1} + T_{f(x ; a)}=\sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n !}(x-a)^{n}=f(a)+f^{\prime}(a)(x-a)+\frac{f^{\prime \prime}(a)}{2}(x-a)^{2}+\frac{f^{\prime \prime \prime}(a)}{6}(x-a)^{3}+\ldots \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? - -\subsection{De finibus bonorum et malorum -\label{transfer: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}. +eine Taylorreihe. -Et harum quidem rerum facilis est et expedita distinctio -\ref{transfer: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{transfer: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. +\subsection{Beispiel} +In diesem Beispiel wird die Taylorapproximation mit dem Grad 2 des Tangens hyperbolicus um den Punkt Null berechnet. +$$ + \tanh \approx T_{2} \tanh(x ; a)=\tanh(a)+\tanh^{\prime}(a) \cdot(x-a)+\frac{\tanh^{\prime \prime}(a) \cdot(x-a)^{2}}{2} +$$ +mit $a = 0$ folgt +$$ + T_{2} \tanh(x ; 0)=\tanh(0)+\tanh^{\prime}(0) \cdot(x)+\frac{\tanh^{\prime \prime}(0) \cdot(x)^{2}}{2} = 0 + x + 0 = x +$$ +\begin{figure} +\centering +\begin{tikzpicture} + \begin{axis}[ + xmin=-2.5, xmax=2.5, + ymin=-1.5, ymax=1.5, + axis lines=center, + axis on top=true, + domain=-2.5:2.5, + ylabel=$y$, + xlabel=$x$, + ] + + \addplot [mark=none,draw=red,thick] {tanh(\x)}; + \node [right, red] at (axis cs: 1.4,0.7) {$\tanh(x)$}; + \addplot [mark=none,draw=blue,ultra thick, samples=100, smooth] expression{x-(x^3)/3+ (2*x^5)/15-(17 * x^7)/315}; + \node [right, blue] at (axis cs: -1.8,0.7) {$Taylorapprox.$}; + + %% Add the asymptotes + \draw [blue, dotted, thick] (axis cs:-2.5,-1)-- (axis cs:0,-1); + \draw [blue, dotted, thick] (axis cs:+2.5,+1)-- (axis cs:0,+1); + \end{axis} +\end{tikzpicture} +\caption{Taylorapproximation des Grades 7 +\label{motivation:figure:Taylor}} +\end{figure} +\subsection{Problem} +Wie in Abbildung \ref{motivation:figure:Taylor} ersichtlich, ist der Approximationsfehler sogar bei Grad 7 des Polynoms sehr gross. Dies liegt ist unter anderem an der Unbeschränktheit, die solche Polynome besitzen. diff --git a/buch/papers/transfer/teil2.tex b/buch/papers/transfer/teil2.tex index ce8f798..aae81a7 100644 --- a/buch/papers/transfer/teil2.tex +++ b/buch/papers/transfer/teil2.tex @@ -1,40 +1,68 @@ % -% teil2.tex -- Beispiel-File für teil2 +% teil1.tex -- Beispiel-File für das Paper % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Teil 2 +\section{Padé-Approximation \label{transfer: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? +\rhead{} + +\subsection{Idee + \label{transfer:pade:idee}} +Die Taylorapproximation ist für den Gebrauch als Ersatz des Tangenshyperbolicus als Transferfunktion nicht brauchbar. Die Padé-Approximation kann die grössten Probleme aber entschärfen und dies mit sehr begrenztem zusätzlichen Rechenaufwand. Dafür wird die Taylorapproximation in einen Bruch von zwei Polynom zerlegt. + +\subsection{Definition +\label{transfer:pade:definition}} +Sei +\begin{equation} + R(x)=\frac{\sum_{j=0}^{m} a_{j} x^{j}}{1+\sum_{k=1}^{n} b_{k} x^{k}}=\frac{a_{0}+a_{1} x+a_{2} x^{2}+\cdots+a_{m} x^{m}}{1+b_{1} x+b_{2} x^{2}+\cdots+b_{n} x^{n}} +\end{equation} +und gilt +\begin{gather*} + f(0) =R(0) \\ + f^{\prime}(0) =R^{\prime}(0) \\ + f^{\prime \prime}(0) =R^{\prime \prime}(0) \\ + \vdots \\ + f^{(m+n)}(0) =R^{(m+n)}(0), +\end{gather*} +so ist $R(x)$ die Padé-Approximation von $f(x)$. +\subsection{Beispiel + \label{transfer:pade:beispiel}} +Sei $f(x) = \tanh (x)$ und $T_{5} \tanh(x ; a) = x-\frac{x^{3}}{3}+\frac{2 x^{5}}{15}$, dann gilt +$$ + \begin{gathered} + [3 / 2]_{f}(x) = \frac{A_{0}+A_{1} x+A_{2} x^{2}+A_{3} x^{3}}{B_{0}+B_{1} x+B_{2} x^{2}}=x-\frac{x^{3}}{3}+\frac{2 x^{5}}{15}+O\left(x^{6}\right), B_{0} = 1,\\ + \Downarrow \\ + [3 / 2]_{f}(x) = \frac{15x+x^3}{15+6x^2} +\end{gathered} +$$ + +\begin{figure} +\centering +\begin{tikzpicture} + \begin{axis}[ + xmin=-3.5, xmax=3.5, + ymin=-1.5, ymax=1.5, + axis lines=center, + axis on top=true, + domain=-3.5:3.5, + ylabel=$y$, + xlabel=$x$, + ] + + \addplot [mark=none,draw=red,thick] {tanh(\x)}; + \node [right, red] at (axis cs: 1.4,0.7) {$\tanh(x)$}; + \addplot [mark=none,draw=blue,ultra thick, samples=100, smooth] expression{x*(15+x^2)/(15+6*x^2)}; + \node [right, blue] at (axis cs: -1.8,0.7) {$Padé$}; + + %% Add the asymptotes + \draw [blue, dotted, thick] (axis cs:-2.5,-1)-- (axis cs:0,-1); + \draw [blue, dotted, thick] (axis cs:+2.5,+1)-- (axis cs:0,+1); + \end{axis} +\end{tikzpicture} +\caption{$[3 / 2]_{f}(x)$ +\label{motivation:figure:Pade32}} +\end{figure} -\subsection{De finibus bonorum et malorum -\label{transfer: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/transfer/teil3.tex b/buch/papers/transfer/teil3.tex index f707587..5bbe0c1 100644 --- a/buch/papers/transfer/teil3.tex +++ b/buch/papers/transfer/teil3.tex @@ -1,40 +1,26 @@ % -% teil3.tex -- Beispiel-File für Teil 3 +% teil2.tex -- Beispiel-File für teil2 % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Teil 3 +\section{MiniMax-Polynom \label{transfer: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? +\rhead{MiniMax-Polynom} -\subsection{De finibus bonorum et malorum -\label{transfer: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{Idee +\label{transfer:subsection:idee}} +Finde das Polynom eines bestimmten Grades, welches eine Funktion in einem Intervall am besten approximiert. + + +\subsection{Definition + \label{transfer:subsection:definition}} +Das Polynom welches + $$ \max _{a \leq x \leq b}|f(x)-P(x)| , a \in \mathbb{R}, b \in \mathbb{R}.$$ +minimiert. +\subsection{Beispiel + \label{transfer:subsection:beispiel}} +Um ein MiniMax-Polynom zu berechnen, kann der Remez-Algorithmus verwendet werden. Dieser basiert im wesentlichen auf dem Alternantensatz von Tschebyschow. diff --git a/buch/papers/transfer/teil4.tex b/buch/papers/transfer/teil4.tex new file mode 100644 index 0000000..d652e2d --- /dev/null +++ b/buch/papers/transfer/teil4.tex @@ -0,0 +1,218 @@ +% +% teil4.tex +% +% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil +% +\section{K-Tanh +\label{transfer:section:teil4}} +\rhead{K-Tanh} + +\subsection{Idee + \label{transfer:subsection:Ktanh-Idee}} +Um die Berechnung des Tangens hyperbolicus wirklich zu beschleunigen, braucht es einen Algorithmus, der ohne Gleitkommaoperationen auskommt. Um dies zu bewerkstelligen, ist eine Unterteilung der Funktion in mehrere Abschnitte nötig. Diese können dann linear approximiert werden. Die dazugehörigen Parameter können einmal berechnet werden und zu Rechenzeit aus einem LUT????? gelesen und danach mit integer Operationen verrechnet werden. + + +\subsection{Definitionen + \label{transfer:subsection:Ktanh-Definition}} + +\subsubsection{Gleitkommazahlen nach IEEE-754 + \label{transfer:subsection:Ktanh-Algorithmus:Gleitkommazahl}} +Da ein Computer nur mit binären Werten arbeiten kann, müssen Zahlen durch sogenannte Gleitkommazahlen approximiert werden. Dafür wird die Zahl in zwei Teile aufgeteilt, die Mantisse und den Exponenten. Die Zahl setzt sich dann wie folgt zusammen: +$$ +\begin{array}{|l|l|l|} + \hline S & E & M \\ + \hline +\end{array} +$$ +Aus dem sich die Dezimalzahl wie folgt berechnet +$$ +x=s \cdot m \cdot b^{e} +$$ +wobei +$$ +\begin{aligned} + &s=(-1)^{S} \\ + &e=E-B\\ + &B=2^{r-1}-1 + &m=1+M / 2^{p} +\end{aligned} +$$ +mit $r$ = Anzahl der Exponenten bits und p = Anzahl mantisse Bits. + + +\subsubsection{K-tanh Algorithmus +\label{transfer:subsection:Ktanh-Algorithmus}} +\cite{transfer:DBLP:journals/corr/abs-1909-07729} + +Negative Werte werden nicht separat behandelt. Diese werden dank der Symertrie um den Ursprung mit einem einfachen Vorzeichenwechsel aus den positiven berechnet. +Für $x < 0.25$ gilt $y = x$. +Ist $x > 3.75$ gitl $y = 1$. +Ist der Wert zwischen diesen Grenzen, werden über einen Lookuptable geeignete Werte gefunden um aus dem $x$ die Approximation des Tanh zu berechnen. +Dafür werden eine bestimmte Anzahl LSBs des Exponenten und MSBs der Mantisse zu einem Index $t$ zusammengestzt. Der dann die Stelle im Lookuptable zeigt. +Damit werden die richtigen Werte für $E_{t}, r_{t}, b_{t}$ aus der Tabelle, die im Vorhinein schon berechnet wurden, ausgelesen. +Damit hat man das $E$ bereits gefunden und mit der Formel +\[ + M_{o} \leftarrow\left(M_{i} \gg r\right)+b +\] + +kann das neue $M$ berechnet werden. + +\begin{figure} +\centering +\tikzset{ + every node/.style={ + font=\scriptsize + }, + decision/.style={ + shape=rectangle, + minimum height=1cm, + text width=3cm, + text centered, + rounded corners=1ex, + draw, + label={[yshift=0.2cm]left:ja}, + label={[yshift=0.2cm]right:nein}, + }, + outcome/.style={ + shape=ellipse, + fill=gray!15, + draw, + text width=1.5cm, + text centered + }, + decision tree/.style={ + edge from parent path={[-latex] (\tikzparentnode) -| (\tikzchildnode)}, + sibling distance=4cm, + level distance=1.5cm + } +} +\begin{tikzpicture} + + \node [decision] { $x<0.25$ } + [decision tree] + child { node [outcome] { $x$ } } + child { node [decision] { $x>3.75$} + child { node [outcome] { $1$ } } + child { node [outcome] { $K-tanh$ } } + }; + +\end{tikzpicture} +\caption{Gesamter Algorithmus +\label{motivation:figure:gesalgo}} +\end{figure} + +\begin{figure} +\centering +\begin{tikzpicture} + [>=stealth', auto, node distance=2cm, scale=1.2] + + \tikzstyle{dot} = [circle, draw, fill, inner sep=0.03cm] + + \tikzstyle{brace} = [decorate, decoration={brace,amplitude=4pt}] + + \begin{scope}[] + + \node[ minimum width=0.5cm] (s) at (0, 0) {$s$}; + \node[anchor=west, minimum width=1.5cm] (e) at (s.east) {$E_i$}; + \node[anchor=west, minimum width=1.5cm] (m) at (e.east) {$M_i$}; + \draw[blue] (e.north west) -- (e.south west) (e.north east) -- (e.south east); + \node[draw, green!50!black, rounded corners=0.1cm, fit=(s) (e) (m), inner sep = 0] (a) {}; + + \node[minimum width=0.5cm] (s) at (5, 0) {$s$}; + \node[anchor=west, minimum width=1.5cm] (e) at (s.east) {$E_o$}; + \node[anchor=west, minimum width=1.5cm] (m) at (e.east) {$M_o$}; + \draw[blue] (e.north west) -- (e.south west) (e.north east) -- (e.south east); + \node[draw, green!50!black, rounded corners=0.1cm, fit=(s) (e) (m), inner sep = 0] (b) {}; + + \draw[yshift=-0.4cm, decorate,decoration={brace,amplitude=4pt}] (a.south) ++(0, -0.2) +(0.5,0) -- +(-0.5,0 ); + + \node[draw=black, fill=black!20, minimum width=1.5cm, minimum height= 2cm, below=1cm of a] (lut) {}; + + \node[draw=blue, inner sep=0.2cm, right = 1.5cm of lut, align=left] (box) {$E_0 \gets E$ \\ $M_0 \gets (M_i \gg r) + b$}; + + \draw[->] (a.south) +(0, -0.5) -- (lut); + \draw[->] (lut) -- node[above]{$(E,r,b)$} (box); + \draw[->] (box) -| ([xshift=0.5cm, yshift=-0.3cm]b.south); + + \end{scope} + +\end{tikzpicture} +\caption{Ablauf der K-tanh Berechnung +\label{motivation:figure:Ktanhablauf}} +\end{figure} + + +\subsection{Beispiel +\label{transfer:subsection:Ktanh-Algorithmus:Beispiel}} + +%TODO + +In diesem Abschnitt wird das Verfahren am einem Beispiel mit dem BFloat16 erklärt. Das bedeutet die Gleitkommazahlen werden mit 8 Exponenten, 7 Mantisse und einem Vorzeichen bit dargestellt. + +\subsubsection{Algorithmus für die Bestimmung der Parameter + \label{transfer:subsection:Ktanh-Algorithmus:Algo}} + +\begin{enumerate} + \item Wir berechnen zuerst den Tanh für ein gegebenes x und finden die zugehörige BFloat16-Darstellung. + \[ + y_{i}=\operatorname{TanH}\left(x_{i}\right)=(-1)^{s} \cdot 2^{E_{i}} \cdot\left(1+M_{i} / 2^{q}\right) + \] + + \item Sollten die Exponenten in einem Intervall $t$ nicht gleich sein, muss ein gemeinsamer Exponent gefunden werden, so dass + $$ + \underset{E, \hat{M}_{i} \in \mathbb{Z}}{\operatorname{argmin}} \sum_{i}\left(y_{i}-\hat{y}_{i}\right)^{2}, \quad \text { mit } \quad E \in\left\{E_{i}\right\}, \hat{M}_{i} \in[0,127] + $$ + minimiert wird. Was bedeutet, dass der Exponent mit welchem der kleinsten quadrierten und aufsummierten Fehler entsteht gewählt wird. + ?????We pick E from the set of exponents {Ei}. If E = Ej , + then, Mˆ + j = Mj , for all j. If E > Ej , then, Mˆ + j = 0. + Similarly, for E < Ej , Mˆ + j = 2q − 1. Store this E in the + parameter table TE.????? + \item Um den Verschiebungsparameter r und den Additionsterm b zu finden, muss das folgende Optimierungsproblem gelöst werden. Auch hier wird einfach der kleinste quadrierte und aufsummierte Fehler gesucht wird. + $$ + \begin{array}{ll} + & \underset{r, b \in \mathbb{Z}}{\operatorname{argmin}} \sum_{i}\left(\hat{M}_{i}-\left(m_{i} / 2^{r}+b\right)\right)^{2} \\ + \text { mit } & 0 \leq r \leq r_{\max } \leq p, \quad b_{\min } \leq b \leq b_{\max } + \end{array} + $$ + Dabei müssen $r_max$, $b_min$ und $b_max$ sorgfältig gewählt werden, so dass kein +\end{enumerate} + +\subsubsection{Numerisches Beispiel + \label{transfer:subsection:Ktanh-Algorithmus:Num}} +Zum Index $t = 00000$ gehört neben Anderen der Wert $x_i = 2$. Denn mit \ref{transfer:subsection:Ktanh-Algorithmus:Gleitkommazahl} folgt + +$$ +\begin{array}{|l|l|l|} + \hline S_i & E_{i} & M_{i} \\ + \hline 0 & 100000 \textbf{00} & \textbf{000} 0000 \\ + \hline +\end{array} +$$ +Der dazugehörige Tanh Wert ist +$y_i = \tanh{x_i}=0.96402758\ldots$. Es lässt sich die dazugehörige BFloat-16-Darstellung finden + +$$ +\begin{array}{|l|l|l|} + \hline S_{y_{i}} & E_{y_{i}} & M_{y_{i}} \\ + \hline 0 & 01111110 & 1110110 \\ + \hline +\end{array} +$$ +Nun müssen alle anderen Werte dieses Intervalls $t = 00000$ ausgewertet werden. Stimmen nicht alle Exponenten der $S_{y}$ überein, so muss noch ein gemeinsamer Exponent mit dem Optimierungproblem \ref{} gefunden werden. Danach kann der Verschiebe- und Additionsfaktor für das Intervall berechnet werden. +Es ergeben sich die Werte: +$$ +\begin{array}{c|ccc} + \text { Index } t & E_{t} & r_{t} & b_{t} \\ + \hline 00111 & 126 & 2 & 119 +\end{array} +$$ + + + + + + + diff --git a/cover/buchcover.tex b/cover/buchcover.tex index d6ad7ec..748fbeb 100644 --- a/cover/buchcover.tex +++ b/cover/buchcover.tex @@ -1,5 +1,5 @@ % -% buchcover.tex -- Cover für das Buch Numerik +% buchcover.tex -- Cover für das Buch Spezielle Funktionen % % (c) 2018 Prof Dr Andreas Müller, Hochschule Rapperswil % -- cgit v1.2.1 From db90beb875d89142f7a54dea1d0b78ac0ec573db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Mon, 22 Aug 2022 16:11:36 +0200 Subject: Added some changes to TODOs. --- buch/papers/sturmliouville/eigenschaften.tex | 4 ++-- buch/papers/sturmliouville/main.tex | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 4ab5e62..882b938 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -47,9 +47,9 @@ Matrixzerlegungen diskutiert. Mittels Spektralsatzes kann zum Beispiel geschlossen werden, dass wenn \[ - + \langle Av, w \rangle = - + \langle v, Aw \rangle \] gilt, die Matrix A symmetrisch (und somit selbstadjungiert) ist und somit eine Orthonormalbasis aus Eigenvektoren besitzt. diff --git a/buch/papers/sturmliouville/main.tex b/buch/papers/sturmliouville/main.tex index 4b5b8af..3b12905 100644 --- a/buch/papers/sturmliouville/main.tex +++ b/buch/papers/sturmliouville/main.tex @@ -9,6 +9,11 @@ \begin{refsection} \chapterauthor{Réda Haddouche und Erik Löffler} +% TODO: leser Übersicht geben +% -> Repetition: Was ist Sturm-Liouville-Problem +% -> Eigenschaften der Lösungen +% -> Beispiele erwähnen + \input{papers/sturmliouville/einleitung.tex} %einleitung "was ist das sturm-liouville-problem" \input{papers/sturmliouville/eigenschaften.tex} -- cgit v1.2.1 From c9b4b7146d216cea89daa380260be9d29718ea05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Mon, 22 Aug 2022 17:07:24 +0200 Subject: Added new text to solution properties. --- buch/papers/sturmliouville/eigenschaften.tex | 44 ++++++++++++++++++++++++---- buch/papers/sturmliouville/main.tex | 2 +- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 882b938..5cb7a29 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -26,7 +26,7 @@ Im weiteren werden nun die Eigenschaften der Lösungen eines Sturm-Liouville-Problems diskutiert. Im wesendlichen wird darauf eingegangen, wie die Orthogonalität der Lösungen -zustande kommt. +zustande kommt, damit diese später bei den Beispielen verwendet werden kann. Dazu wird zunächst das Eigenwertproblem für Matrizen wiederholt und angeschaut unter welchen Voraussetzungen die Lösungen orthogonal sind. Dann wird gezeigt, dass das Sturm-Liouville-Problem auch ein Eigenwertproblem @@ -34,8 +34,8 @@ dieser Art ist und es wird auf au die Orthogononalität der Lösungsfunktion geschlossen. \subsection{Eigenwertprobleme mit Matrizen} - -Das Eigenwertprobelm +% TODO +Das Eigenwertproblem \[ A v = @@ -51,13 +51,47 @@ Mittels Spektralsatzes kann zum Beispiel geschlossen werden, dass wenn = \langle v, Aw \rangle \] -gilt, die Matrix A symmetrisch (und somit selbstadjungiert) ist und somit eine +gilt, die Matrix A symmetrisch (und somit selbstadjungiert) ist und deshalb eine Orthonormalbasis aus Eigenvektoren besitzt. In aneren Worten: durch diese Eigenschaft ist gegeben, dass A diagonalisierbar ist und alle Eigenvektoren orthogonal zueinander sind. -\subsection{} +\subsection{Das Sturm-Liouville-Problem als Eigenwertproblem} +Wie in Kapitel (??) bereits eingeführt, kann das Sturm-Liouville-Problem als +Eigenwertproblem geschrieben werden, indem der Operator +\[ + L + = + \frac{1}{w(x)}\left( -\frac{d}{dx}p(x) \frac{d}{dx} + q(x)\right) +\] +eingeführt wird. +Mit diesem Operator kann nun +\[ + (p(x)y'(x))' + q(x)y(x) + = + \lambda w(x) y(x) +\] +umgeschrieben werden zu +\[ + L y + = + \lambda y. +\] + +\subsection{Orthogonalität der Lösungsfunktionen} + +Nun wird das Eigenwertproblem weiter angeschaut. +Um auf die Orthogonalität der Lösungsfunktion zu schliessen, wird dafür der +Operator $L$ genauer betrachtet. +Analog zur Matrix $A$ aus Abschnitt (??) kann auch für $L$ gezeigt werden, +dass dieser Operator selbstadjungiert ist, also dass +\[ + \langle L v, w\rangle + = + \langle v, L w\rangle +\] +gilt. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% OLD section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/buch/papers/sturmliouville/main.tex b/buch/papers/sturmliouville/main.tex index 3b12905..d77e068 100644 --- a/buch/papers/sturmliouville/main.tex +++ b/buch/papers/sturmliouville/main.tex @@ -9,7 +9,7 @@ \begin{refsection} \chapterauthor{Réda Haddouche und Erik Löffler} -% TODO: leser Übersicht geben +% TODO: Leser Übersicht geben % -> Repetition: Was ist Sturm-Liouville-Problem % -> Eigenschaften der Lösungen % -> Beispiele erwähnen -- cgit v1.2.1 From de0167a088a0b0a449dd47b0ab289b054605c115 Mon Sep 17 00:00:00 2001 From: haddoucher Date: Mon, 22 Aug 2022 17:14:06 +0200 Subject: Update einleitung.tex --- buch/papers/sturmliouville/einleitung.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index 62d9509..4582c95 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -38,7 +38,7 @@ Wenn die lineare homogene Differentialgleichung als \begin{equation} \label{eq:sturm-liouville-equation} - \frac{d}{dx}\lbrack p(x) \frac{dy}{dx} \rbrack + \lbrack q(x) + + \frac{d}{dx} (p(x) \frac{dy}{dx}) + \lbrack q(x) + \lambda w(x) \rbrack y = 0 -- cgit v1.2.1 From d2a613407668270cc0a57e2f979ed849ad5ad0ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Mon, 22 Aug 2022 17:54:39 +0200 Subject: Minor changes. --- buch/papers/sturmliouville/eigenschaften.tex | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 5cb7a29..19fda59 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -35,7 +35,7 @@ geschlossen. \subsection{Eigenwertprobleme mit Matrizen} % TODO -Das Eigenwertproblem +Das Eigenwertproblem \[ A v = @@ -58,6 +58,8 @@ ist und alle Eigenvektoren orthogonal zueinander sind. \subsection{Das Sturm-Liouville-Problem als Eigenwertproblem} +% TODO: check L for errors (- sign) + Wie in Kapitel (??) bereits eingeführt, kann das Sturm-Liouville-Problem als Eigenwertproblem geschrieben werden, indem der Operator \[ @@ -92,6 +94,7 @@ dass dieser Operator selbstadjungiert ist, also dass \langle v, L w\rangle \] gilt. +Wie in Kapitel (??) bereits gezeigt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% OLD section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- cgit v1.2.1 From bff57008758a94a9ee104773e8faed9c6ab806b8 Mon Sep 17 00:00:00 2001 From: haddoucher Date: Tue, 23 Aug 2022 14:08:06 +0200 Subject: Update einleitung.tex --- buch/papers/sturmliouville/einleitung.tex | 46 ++++++++----------------------- 1 file changed, 11 insertions(+), 35 deletions(-) diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index 4582c95..4ed3752 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -38,8 +38,8 @@ Wenn die lineare homogene Differentialgleichung als \begin{equation} \label{eq:sturm-liouville-equation} - \frac{d}{dx} (p(x) \frac{dy}{dx}) + \lbrack q(x) + - \lambda w(x) \rbrack y + \frac{d}{dx} (p(x) \frac{dy}{dx}) + (q(x) + + \lambda w(x)) y = 0 \end{equation} @@ -50,6 +50,8 @@ Alle homogenen linearen gewöhnlichen Differentialgleichungen 2. Ordnung können in die Form der Gleichung \eqref{eq:sturm-liouville-equation} umgewandelt werden. +Damit es sich um ein Sturm-Liouville-Problem handelt, benötigt es noch die Randbedingung, die im nächsten Unterkapitel behandelt wird. + \subsection{Randbedingungen\label{sub:was-ist-das-slp-randbedingungen}} Geeignete Randbedingungen sind erforderlich, um die Lösungen einer Differentialgleichung genau zu bestimmen. @@ -64,39 +66,15 @@ Die Sturm-Liouville-Gleichung mit homogenen Randbedingungen des dritten Typs ist das klassische Sturm-Liouville-Problem. -\subsection{Eigenwertproblem} -Die Gleichungen \eqref{eq:sturm-liouville-equation} hat die Form eines -Eigenwertproblems. -Wenn bei der Sturm-Liouville-Gleichung \eqref{eq:sturm-liouville-equation} alles -konstant bleibt, aber der Wert von $\lambda$ sich ändert, erhält man eine andere -Eigenfunktion, weil man eine andere gewöhnliche Differentialgleichung löst; -der Parameter $\lambda$ wird als Eigenwert bezeichnet. -Es ist genau das gleiche Prinzip wie bei den Matrizen, andere Eigenwerte ergeben -andere Eigenvektoren. -Es besteht eine Korrespondenz zwischen den Eigenwerten und den Eigenvektoren. -Das gleiche gilt auch beim Sturm-Liouville-Problem, und zwar -\begin{equation} - \lambda \overset{Korrespondenz}\leftrightarrow y. -\end{equation} - -Die Theorie besagt, wenn $y_m$, $y_n$ Eigenfuktionen des -Sturm-Liouville-Problems sind, die verschiedene Eigenwerte $\lambda_m$, -$\lambda_n$ ($\lambda_m \neq \lambda_n$) entsprechen, so sind $y_m$, $y_n$ -orthogonal zu y - -dies gilt für das Intervall (a,b). -Somit ergibt die Gleichung -\begin{equation} - \label{eq:skalar-sturm-liouville} - \int_{a}^{b} w(x)y_m y_n = 0. -\end{equation} - -\subsection{Koeffizientenfunktionen} +\subsection{Koeffizientenfunktionen\label{sub:koeffizientenfunktionen}} Die Funktionen $p(x)$, $q(x)$ und $w(x)$ werden als Koeffizientenfunktionen mit ihren freien Variablen $x$ bezeichnet. +Diese Funktionen erhält man, indem man eine Differentialgleichung in die Sturm-Liouville-Form bringt. Die Funktion $w(x)$ (manchmal auch $r(x)$ genannt) wird als Gewichtsfunktion oder Dichtefunktion bezeichnet. -Die Eigenschaften der Koeffizientenfunktionen haben einen grossen Einfluss auf -die Lösbarkeit des Sturm-Liouville-Problems. +Die Eigenschaften der Koeffizientenfunktionen sowie andere Bedingungen haben einen großen Einfluss auf die Lösbarkeit des Sturm-Liouville-Problems und werden im nächsten Kapitel diskutiert. + + % %Kapitel mit "Das reguläre Sturm-Liouville-Problem" @@ -120,9 +98,7 @@ Bedingungen beachtet werden. $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. \end{itemize} \end{definition} -Bei einem regulären Sturm-Liouville-Problem geht es darum, wichtige -Eigenschaften der Eigenfunktionen beschreiben zu können, ohne sie genau zu -kennen. +Werden diese Bedingungen nicht erfüllt, so handelt es sich um ein singuläres Sturm-Liouville-Problem. \begin{beispiel} Das Randwertproblem @@ -136,7 +112,7 @@ kennen. Wenn man die Gleichung in die Sturm-Liouville Form umformen, dann ergeben die Koeffizientenfunktionen $p(x) = w(x) = x$ und $q(x) = -m^2/x$. Schaut man jetzt die Bedingungen im - Kapitel~\ref{sub:reguläre_sturm_liouville_problem} an und vergleicht diese + Kapitel~\ref{sub:reguläre_sturm_liouville_problem} an und vergleicht diese mit unseren Koeffizientenfunktionen, so erkennt man einige Probleme: \begin{itemize} \item $p(x)$ und $w(x)$ sind nicht positiv, wenn $x = 0$ ist. -- cgit v1.2.1 From 4185d85a5f36bb2f8e67c1342c12d45cf9fd67d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Tue, 23 Aug 2022 14:16:24 +0200 Subject: Eigenvalueproblem for matrices explained. --- buch/papers/sturmliouville/eigenschaften.tex | 38 ++++++++++++++++------------ 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 19fda59..b143b6e 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -28,33 +28,39 @@ Sturm-Liouville-Problems diskutiert. Im wesendlichen wird darauf eingegangen, wie die Orthogonalität der Lösungen zustande kommt, damit diese später bei den Beispielen verwendet werden kann. Dazu wird zunächst das Eigenwertproblem für Matrizen wiederholt und angeschaut -unter welchen Voraussetzungen die Lösungen orthogonal sind. +unter welchen Voraussetzungen die Lösungen dieses Problems orthogonal sind. Dann wird gezeigt, dass das Sturm-Liouville-Problem auch ein Eigenwertproblem dieser Art ist und es wird auf au die Orthogononalität der Lösungsfunktion geschlossen. -\subsection{Eigenwertprobleme mit Matrizen} -% TODO -Das Eigenwertproblem +\subsection{Eigenwertprobleme mit symmetrischen Matrizen} + +% TODO: intro + +Angenomen es sei eine reelle, symmetrische $n \times n$-Matrix $A$ gegeben. +Dass $A$ symmetrisch ist, bedeutet, dass \[ - A v + \langle Av, w \rangle = - \lambda v + \langle v, Aw \rangle \] -für die $n \times n$-Matrix $A$, dem Eigenwert $\lambda$ und dem Eigenvektor $v$ -in der linearen Algebra wird häufig im Zusammenhang mit -Matrixzerlegungen diskutiert. +für $v, w \in \mathbb{R}^n$ erfüllt ist. -Mittels Spektralsatzes kann zum Beispiel geschlossen werden, dass wenn +Für reelle, symmetrische Matrizen zeigt dies auch direkt, dass die Matrix +selbstadjungiert ist. +Das ist wichtig, da der Spektralsatz~\cite{sturmliouville:spektralsatz-wiki} +für selbstadjungierte Matrizen formuliert ist. + +Dieser sagt nun aus, dass die Matrix $A$ diagonalisierbar ist. +In anderen Worten bilden die Eigenvektoren $v_i \in \mathbb{R}^n$ des +Eigenwertproblems \[ - \langle Av, w \rangle + A v_i = - \langle v, Aw \rangle + \lambda_i v_i + \qquad \lambda_i \in \mathbb{R} \] -gilt, die Matrix A symmetrisch (und somit selbstadjungiert) ist und deshalb eine -Orthonormalbasis aus Eigenvektoren besitzt. -In aneren Worten: durch diese Eigenschaft ist gegeben, dass A diagonalisierbar -ist und alle Eigenvektoren orthogonal zueinander sind. +eine Orthogonalbasis. \subsection{Das Sturm-Liouville-Problem als Eigenwertproblem} -- cgit v1.2.1 From a2b36b7f9a4e4324ef827a6fdeb3e598e2b6fa6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Tue, 23 Aug 2022 14:59:24 +0200 Subject: Finished revised draft of solution properties. --- buch/papers/sturmliouville/eigenschaften.tex | 42 ++++++++++++++++++---------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index b143b6e..948217a 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -33,7 +33,8 @@ Dann wird gezeigt, dass das Sturm-Liouville-Problem auch ein Eigenwertproblem dieser Art ist und es wird auf au die Orthogononalität der Lösungsfunktion geschlossen. -\subsection{Eigenwertprobleme mit symmetrischen Matrizen} +\subsection{Eigenwertprobleme mit symmetrischen Matrizen +\label{sturmliouville:section:eigenvalue-problem-matrix}} % TODO: intro @@ -64,43 +65,56 @@ eine Orthogonalbasis. \subsection{Das Sturm-Liouville-Problem als Eigenwertproblem} -% TODO: check L for errors (- sign) - -Wie in Kapitel (??) bereits eingeführt, kann das Sturm-Liouville-Problem als -Eigenwertproblem geschrieben werden, indem der Operator +In Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} wurde bereits +der Operator \[ L = \frac{1}{w(x)}\left( -\frac{d}{dx}p(x) \frac{d}{dx} + q(x)\right) \] -eingeführt wird. -Mit diesem Operator kann nun +eingeführt. +Dieser wird nun verwendet um die Differenzialgleichung \[ (p(x)y'(x))' + q(x)y(x) = \lambda w(x) y(x) \] -umgeschrieben werden zu -\[ +in das Eigenwertproblem +\begin{equation} + \label{sturmliouville:eigenvalue-problem} L y = \lambda y. -\] +\end{equation} +umzuschreiben. \subsection{Orthogonalität der Lösungsfunktionen} -Nun wird das Eigenwertproblem weiter angeschaut. +Nun wird das Eigenwertproblem~\eqref{sturmliouville:eigenvalue-problem} näher +angeschaut. Um auf die Orthogonalität der Lösungsfunktion zu schliessen, wird dafür der Operator $L$ genauer betrachtet. -Analog zur Matrix $A$ aus Abschnitt (??) kann auch für $L$ gezeigt werden, -dass dieser Operator selbstadjungiert ist, also dass +Analog zur Matrix $A$ aus +Abschnitt~\ref{sturmliouville:section:eigenvalue-problem-matrix} kann auch für +$L$ gezeigt werden, dass dieser Operator selbstadjungiert ist, also dass \[ \langle L v, w\rangle = \langle v, L w\rangle \] gilt. -Wie in Kapitel (??) bereits gezeigt +Wie in Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} bereits +gezeigt, ist dies durch die Randbedingungen des Sturm-Liouville-Problems +sicher gestellt. + +Um nun über den Spektralsatz auf die Orthogonalität der Lösungsfunktion $y$ zu +schliessen, muss der Operator $L$ ein sogenannter \"kompakter Operator\" sein. +Bei einem regulären Sturm-Liouville-Problem ist diese für $L$ gegeben und wird +im Weiteren nicht näher diskutiert. + +Es kann nun also dank dem Spektralsatz darauf geschlossen werden, dass die +Lösungsfunktion $y$ eises regulären Sturm-Liouville-Problems eine +Linearkombination aus orthogonalen Basisfunktionen sein muss. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% OLD section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- cgit v1.2.1 From 18c6aa18da3ea994e9fd8075bc308eab0ed0dd41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Tue, 23 Aug 2022 15:10:56 +0200 Subject: Corrected quotation marks. --- buch/papers/sturmliouville/eigenschaften.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 948217a..7c52a5c 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -108,7 +108,7 @@ gezeigt, ist dies durch die Randbedingungen des Sturm-Liouville-Problems sicher gestellt. Um nun über den Spektralsatz auf die Orthogonalität der Lösungsfunktion $y$ zu -schliessen, muss der Operator $L$ ein sogenannter \"kompakter Operator\" sein. +schliessen, muss der Operator $L$ ein sogenannter ''kompakter Operator'' sein. Bei einem regulären Sturm-Liouville-Problem ist diese für $L$ gegeben und wird im Weiteren nicht näher diskutiert. -- cgit v1.2.1 From 905073fc0febc0af8aa43e58868b98f4f33b98fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Tue, 23 Aug 2022 15:46:42 +0200 Subject: Corrected all labels to comply with guidelines. --- buch/papers/sturmliouville/beispiele.tex | 2 +- buch/papers/sturmliouville/eigenschaften.tex | 10 ++--- buch/papers/sturmliouville/einleitung.tex | 45 +++++++++++++--------- .../sturmliouville/tschebyscheff_beispiel.tex | 16 ++++---- .../sturmliouville/waermeleitung_beispiel.tex | 4 +- 5 files changed, 43 insertions(+), 34 deletions(-) diff --git a/buch/papers/sturmliouville/beispiele.tex b/buch/papers/sturmliouville/beispiele.tex index 94082cf..c0a6e8f 100644 --- a/buch/papers/sturmliouville/beispiele.tex +++ b/buch/papers/sturmliouville/beispiele.tex @@ -4,7 +4,7 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % \section{Beispiele -\label{sturmliouville:section:examples}} +\label{sturmliouville:sec:examples}} \rhead{Beispiele} % Fourier: Erik work diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 7c52a5c..d8e2112 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -20,7 +20,7 @@ % 5. Base of orthonormal functions \section{Eigenschaften von Lösungen -\label{sturmliouville:section:solution-properties}} +\label{sturmliouville:sec:solution-properties}} \rhead{Eigenschaften von Lösungen} Im weiteren werden nun die Eigenschaften der Lösungen eines @@ -34,7 +34,7 @@ dieser Art ist und es wird auf au die Orthogononalität der Lösungsfunktion geschlossen. \subsection{Eigenwertprobleme mit symmetrischen Matrizen -\label{sturmliouville:section:eigenvalue-problem-matrix}} +\label{sturmliouville:sec:eigenvalue-problem-matrix}} % TODO: intro @@ -81,7 +81,7 @@ Dieser wird nun verwendet um die Differenzialgleichung \] in das Eigenwertproblem \begin{equation} - \label{sturmliouville:eigenvalue-problem} + \label{sturmliouville:eq:eigenvalue-problem} L y = \lambda y. @@ -90,12 +90,12 @@ umzuschreiben. \subsection{Orthogonalität der Lösungsfunktionen} -Nun wird das Eigenwertproblem~\eqref{sturmliouville:eigenvalue-problem} näher +Nun wird das Eigenwertproblem~\eqref{sturmliouville:eq:eigenvalue-problem} näher angeschaut. Um auf die Orthogonalität der Lösungsfunktion zu schliessen, wird dafür der Operator $L$ genauer betrachtet. Analog zur Matrix $A$ aus -Abschnitt~\ref{sturmliouville:section:eigenvalue-problem-matrix} kann auch für +Abschnitt~\ref{sturmliouville:sec:eigenvalue-problem-matrix} kann auch für $L$ gezeigt werden, dass dieser Operator selbstadjungiert ist, also dass \[ \langle L v, w\rangle diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index 4ed3752..2552574 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -32,12 +32,12 @@ partielle Differentialgleichung mit mehreren Variablen. \begin{definition} \index{Sturm-Liouville-Gleichung}% Wenn die lineare homogene Differentialgleichung -\begin{equation} +\[ \frac{d^2y}{dx^2} + a(x)\frac{dy}{dx} + b(x)y = 0 -\end{equation} +\] als \begin{equation} - \label{eq:sturm-liouville-equation} + \label{sturmliouville:eq:sturm-liouville-equation} \frac{d}{dx} (p(x) \frac{dy}{dx}) + (q(x) + \lambda w(x)) y = @@ -47,18 +47,20 @@ geschrieben werden kann, dann wird diese Gleichung als Sturm-Liouville-Gleichung bezeichnet. \end{definition} Alle homogenen linearen gewöhnlichen Differentialgleichungen 2. Ordnung können -in die Form der Gleichung \eqref{eq:sturm-liouville-equation} umgewandelt -werden. +in die Form der Gleichung \eqref{sturmliouville:eq:sturm-liouville-equation} +umgewandelt werden. -Damit es sich um ein Sturm-Liouville-Problem handelt, benötigt es noch die Randbedingung, die im nächsten Unterkapitel behandelt wird. +Damit es sich um ein Sturm-Liouville-Problem handelt, benötigt es noch die +Randbedingung, die im nächsten Unterkapitel behandelt wird. -\subsection{Randbedingungen\label{sub:was-ist-das-slp-randbedingungen}} +\subsection{Randbedingungen +\label{sturmliouville:sub:was-ist-das-slp-randbedingungen}} Geeignete Randbedingungen sind erforderlich, um die Lösungen einer Differentialgleichung genau zu bestimmen. Die Sturm-Liouville-Gleichung mit homogenen Randbedingungen des dritten Typs \begin{equation} \begin{aligned} - \label{eq:randbedingungen} + \label{sturmliouville:eq:randbedingungen} k_a y(a) + h_a p(a) y'(a) &= 0 \\ k_b y(b) + h_b p(b) y'(b) &= 0. \end{aligned} @@ -66,26 +68,28 @@ Die Sturm-Liouville-Gleichung mit homogenen Randbedingungen des dritten Typs ist das klassische Sturm-Liouville-Problem. -\subsection{Koeffizientenfunktionen\label{sub:koeffizientenfunktionen}} +\subsection{Koeffizientenfunktionen +\label{sturmliouville:sub:koeffizientenfunktionen}} Die Funktionen $p(x)$, $q(x)$ und $w(x)$ werden als Koeffizientenfunktionen mit ihren freien Variablen $x$ bezeichnet. -Diese Funktionen erhält man, indem man eine Differentialgleichung in die Sturm-Liouville-Form bringt. +Diese Funktionen erhält man, indem man eine Differentialgleichung in die +Sturm-Liouville-Form bringt. Die Funktion $w(x)$ (manchmal auch $r(x)$ genannt) wird als Gewichtsfunktion oder Dichtefunktion bezeichnet. -Die Eigenschaften der Koeffizientenfunktionen sowie andere Bedingungen haben einen großen Einfluss auf die Lösbarkeit des Sturm-Liouville-Problems und werden im nächsten Kapitel diskutiert. - - +Die Eigenschaften der Koeffizientenfunktionen sowie andere Bedingungen haben +einen großen Einfluss auf die Lösbarkeit des Sturm-Liouville-Problems und werden +im nächsten Kapitel diskutiert. % %Kapitel mit "Das reguläre Sturm-Liouville-Problem" % \subsection{Das reguläre oder singuläre Sturm-Liouville-Problem -\label{sub:reguläre_sturm_liouville_problem}} +\label{sturmliouville:sub:reguläre_sturm_liouville_problem}} Damit es sich um ein reguläres Sturm-Liouville-Problem handelt, müssen einige Bedingungen beachtet werden. \begin{definition} - \label{def:reguläres_sturm-liouville-problem} + \label{sturmliouville:def:reguläres_sturm-liouville-problem} \index{regläres Sturm-Liouville-Problem} Die Bedingungen für ein reguläres Sturm-Liouville-Problem sind: \begin{itemize} @@ -94,11 +98,13 @@ Bedingungen beachtet werden. \item sowie müssen in einem endlichen Intervall $[a,b]$ integrierbar sein. \item $p(x)$ und $w(x)$ sind $>0$. - \item Es gelten die Randbedingungen \eqref{eq:randbedingungen}, wobei + \item Es gelten die Randbedingungen + \eqref{sturmliouville:eq:randbedingungen}, wobei $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. \end{itemize} \end{definition} -Werden diese Bedingungen nicht erfüllt, so handelt es sich um ein singuläres Sturm-Liouville-Problem. +Werden diese Bedingungen nicht erfüllt, so handelt es sich um ein singuläres +Sturm-Liouville-Problem. \begin{beispiel} Das Randwertproblem @@ -112,8 +118,9 @@ Werden diese Bedingungen nicht erfüllt, so handelt es sich um ein singuläres S Wenn man die Gleichung in die Sturm-Liouville Form umformen, dann ergeben die Koeffizientenfunktionen $p(x) = w(x) = x$ und $q(x) = -m^2/x$. Schaut man jetzt die Bedingungen im - Kapitel~\ref{sub:reguläre_sturm_liouville_problem} an und vergleicht diese mit - unseren Koeffizientenfunktionen, so erkennt man einige Probleme: + Kapitel~\ref{sturmliouville:sub:reguläre_sturm_liouville_problem} an und + vergleicht diese mit unseren Koeffizientenfunktionen, so erkennt man einige + Probleme: \begin{itemize} \item $p(x)$ und $w(x)$ sind nicht positiv, wenn $x = 0$ ist. \item $q(x)$ ist nicht kontinuierlich, wenn $x = 0$ ist. diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index cad71d7..18e6198 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -5,15 +5,15 @@ % \subsection{Sind Tschebyscheff-Polynome orthogonal zueinander? -\label{sub:tschebyscheff-polynome}} +\label{sturmliouville:sub:tschebyscheff-polynome}} \subsubsection*{Definition der Koeffizientenfunktion} Im Kapitel \ref{sub:beispiele_sturm_liouville_problem} sind die Koeffizientenfunktionen, die man braucht, schon aufgeliste, und zwar mit \begin{align*} w(x) &= \frac{1}{\sqrt{1-x^2}} \\ p(x) &= \sqrt{1-x^2} \\ - q(x) &= 0 -\end{align*}. + q(x) &= 0. +\end{align*} Da die Sturm-Liouville-Gleichung \begin{equation} \label{eq:sturm-liouville-equation-tscheby} @@ -27,7 +27,7 @@ ob es sich um ein reguläres oder singuläres Sturm-Liouville-Problem handelt. \subsubsection*{regulär oder singulär?} Für das reguläre Problem laut der -Definition~\ref{def:reguläres_sturm-liouville-problem} muss die funktion +Definition~\ref{sturmliouville:def:reguläres_sturm-liouville-problem} muss die funktion $p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und $w(x) = \frac{1}{\sqrt{1-x^2}}$ stetig und reell sein --- und sie sind es auch. Auf dem Intervall $(-1,1)$ sind die Tschebyscheff-Polynome erster Art mit Hilfe @@ -55,7 +55,8 @@ ist die gleiche wie $w(x)$ und erfüllt die Bedingung. Für die Verifizierung der Randbedingungen benötigt man erneut $p(x)$. Da sich die Polynome nur auf dem Intervall $[ -1,1 ]$ orthogonal verhalten, sind $a = -1$ und $b = 1$ gesetzt. -Beim einsetzen in die Randbedingung \eqref{eq:randbedingungen}, erhält man +Beim einsetzen in die Randbedingung \eqref{sturmliouville:eq:randbedingungen}, +erhält man \begin{equation} \begin{aligned} k_a y(-1) + h_a y'(-1) &= 0\\ @@ -81,8 +82,9 @@ auf die Sturm-Liouville-Randbedingungen erfüllt und alle daraus resultierenden Lösungen orthogonal sind. \begin{beispiel} - Die Gleichung \eqref{eq:skalar-sturm-liouville} mit $y_m = T_1(x)$ und - $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ ergibt + Die Gleichung \eqref{eq:skalar-sturm-liouville} mit + $y_m = T_1(x)$ und $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ + ergibt \[ \int_{-1}^{1} w(x) x (2x^2-1) dx = 0. \] diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index 4992150..356e259 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -161,8 +161,8 @@ $p(x)$ benötigt. Dazu wird die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} mit der -Sturm-Liouville-Form~\eqref{eq:sturm-liouville-equation} verglichen, was zu -$p(x) = 1$ führt. +Sturm-Liouville-Form~\eqref{sturmliouville:eq:sturm-liouville-equation} +verglichen, was zu $p(x) = 1$ führt. Werden nun $p(x)$ und die Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant} -- cgit v1.2.1 From 3aba88ca005ce951e8052d41d1cb4b448971c3ad Mon Sep 17 00:00:00 2001 From: canuel Date: Tue, 23 Aug 2022 16:19:51 +0200 Subject: chapter about recurrence relation of Legendre Associated Functions and Spherical Harmonics --- buch/papers/kugel/packages.tex | 4 +- buch/papers/kugel/proofs.tex | 2 +- buch/papers/kugel/references.bib | 9 ++ buch/papers/kugel/spherical-harmonics.tex | 166 ++++++++++++++++++++++++++++-- 4 files changed, 169 insertions(+), 12 deletions(-) diff --git a/buch/papers/kugel/packages.tex b/buch/papers/kugel/packages.tex index ead7653..c02589f 100644 --- a/buch/papers/kugel/packages.tex +++ b/buch/papers/kugel/packages.tex @@ -16,5 +16,5 @@ \node[gray, anchor = center] at ({#1 / 2}, {#2 / 2}) {\Huge \ttfamily \bfseries TODO}; \end{tikzpicture}} -\DeclareMathOperator{\sphlaplacian}{\nabla^2_{\mathit{S}}} -\DeclareMathOperator{\surflaplacian}{\nabla^2_{\partial \mathit{S}}} +\DeclareMathOperator{\sphlaplacian}{\nabla^2_{S}} +\DeclareMathOperator{\surflaplacian}{\nabla^2_{\partial S}} diff --git a/buch/papers/kugel/proofs.tex b/buch/papers/kugel/proofs.tex index 143caa8..4fbef26 100644 --- a/buch/papers/kugel/proofs.tex +++ b/buch/papers/kugel/proofs.tex @@ -166,7 +166,7 @@ \end{proof} -\begin{lemma} +\begin{lemma}\label{kugel:lemma:sol_associated_leg_eq} If $Z_n(z)$ is a solution of the Legendre equation \eqref{kugel:eqn:legendre}, then \begin{equation*} diff --git a/buch/papers/kugel/references.bib b/buch/papers/kugel/references.bib index e5d6452..e3c0f85 100644 --- a/buch/papers/kugel/references.bib +++ b/buch/papers/kugel/references.bib @@ -17,6 +17,15 @@ file = {Submitted Version:/Users/npross/Zotero/storage/SN4YUNQC/Carvalhaes and de Barros - 2015 - The surface Laplacian technique in EEG Theory and.pdf:application/pdf}, } +@article{implementation, + title = {New Implementation of Legendre Polynomials for Solving Partial Differential Equations}, + issn = {272767969}, + url = {https://www.researchgate.net/publication/272767969_New_Implementation_of_Legendre_Polynomials_for_Solving_Partial_Differential_Equations}, + shorttitle = {Implementation og Legendre Polynom}, + date = {2013-12}, + author = {Ali Davari, Abozar Ahmadi} +} + @video{minutephysics_better_2021, title = {A Better Way To Picture Atoms}, url = {https://www.youtube.com/watch?v=W2Xb2GFK2yc}, diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 72f7402..7dcb461 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -313,22 +313,20 @@ obtain the \emph{associated Legendre functions}. The functions \begin{equation} P^m_n (z) = (1-z^2)^{\frac{m}{2}}\frac{d^{m}}{dz^{m}} P_n(z) - = \frac{1}{2^n n!}(1-z^2)^{\frac{m}{2}}\frac{d^{m+n}}{dz^{m+n}}(1-z^2)^n + = \frac{1}{2^n n!}(1-z^2)^{\frac{m}{2}}\frac{d^{m+n}}{dz^{m+n}}(1-z^2)^n, \quad |m| Date: Wed, 24 Aug 2022 08:30:28 +0200 Subject: Corrections in solution properties. --- buch/papers/sturmliouville/eigenschaften.tex | 35 +++++++++++++++------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index d8e2112..cef276b 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -23,14 +23,14 @@ \label{sturmliouville:sec:solution-properties}} \rhead{Eigenschaften von Lösungen} -Im weiteren werden nun die Eigenschaften der Lösungen eines +Im weiteren werden nun die Eigenschaften der Lösung eines Sturm-Liouville-Problems diskutiert. -Im wesendlichen wird darauf eingegangen, wie die Orthogonalität der Lösungen -zustande kommt, damit diese später bei den Beispielen verwendet werden kann. +Im wesentlichen wird darauf eingegangen, wie die Orthogonalität der Lösungen +zustande kommt, damit diese später in den Beispielen verwendet werden kann. Dazu wird zunächst das Eigenwertproblem für Matrizen wiederholt und angeschaut unter welchen Voraussetzungen die Lösungen dieses Problems orthogonal sind. Dann wird gezeigt, dass das Sturm-Liouville-Problem auch ein Eigenwertproblem -dieser Art ist und es wird auf au die Orthogononalität der Lösungsfunktion +dieser Art ist und es wird auf au die Orthogonalität der Lösungsfunktionen geschlossen. \subsection{Eigenwertprobleme mit symmetrischen Matrizen @@ -44,16 +44,17 @@ Dass $A$ symmetrisch ist, bedeutet, dass \langle Av, w \rangle = \langle v, Aw \rangle + \qquad + v, w \in \mathbb{R}^n \] -für $v, w \in \mathbb{R}^n$ erfüllt ist. +erfüllt ist. Für reelle, symmetrische Matrizen zeigt dies auch direkt, dass die Matrix selbstadjungiert ist. Das ist wichtig, da der Spektralsatz~\cite{sturmliouville:spektralsatz-wiki} -für selbstadjungierte Matrizen formuliert ist. - -Dieser sagt nun aus, dass die Matrix $A$ diagonalisierbar ist. -In anderen Worten bilden die Eigenvektoren $v_i \in \mathbb{R}^n$ des +für selbstadjungierte Matrizen formuliert ist. Dieser sagt nun aus, dass die +Matrix $A$ diagonalisierbar ist. +In anderen Worten bilden die Eigenvektoren $v_i \in \mathbb{R}^n$ des Eigenwertproblems \[ A v_i @@ -104,13 +105,15 @@ $L$ gezeigt werden, dass dieser Operator selbstadjungiert ist, also dass \] gilt. Wie in Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} bereits -gezeigt, ist dies durch die Randbedingungen des Sturm-Liouville-Problems -sicher gestellt. - -Um nun über den Spektralsatz auf die Orthogonalität der Lösungsfunktion $y$ zu -schliessen, muss der Operator $L$ ein sogenannter ''kompakter Operator'' sein. -Bei einem regulären Sturm-Liouville-Problem ist diese für $L$ gegeben und wird -im Weiteren nicht näher diskutiert. +gezeigt, ist dies durch die +Randbedingungen~\eqref{sturmliouville:eq:randbedingungen} des +Sturm-Liouville-Problems sicher gestellt. + +Um nun über den Spektralsatz~\cite{sturmliouville:spektralsatz-wiki} auf die +Orthogonalität der Lösungsfunktion $y$ zu schliessen, muss der Operator $L$ ein +sogenannter ''kompakter Operator'' sein. +Bei einem regulären Sturm-Liouville-Problem ist diese Eigenschaft für $L$ +gegeben und wird im Weiteren nicht näher diskutiert. Es kann nun also dank dem Spektralsatz darauf geschlossen werden, dass die Lösungsfunktion $y$ eises regulären Sturm-Liouville-Problems eine -- cgit v1.2.1 From f18756ab84dcbbee2c2fc03e241cd10ac63b78df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Wed, 24 Aug 2022 08:53:51 +0200 Subject: Added chapter intro. --- buch/papers/sturmliouville/main.tex | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/buch/papers/sturmliouville/main.tex b/buch/papers/sturmliouville/main.tex index d77e068..a36e85a 100644 --- a/buch/papers/sturmliouville/main.tex +++ b/buch/papers/sturmliouville/main.tex @@ -14,6 +14,15 @@ % -> Eigenschaften der Lösungen % -> Beispiele erwähnen +In diesem Kapitel wird zunächst nochmals ein Überblick über das +Sturm-Liouville-Problem und dessen Randbedingungen gegeben. +Dann wird ein Zusammenhang zwischen reellen symmetrischen Matrizen und +dem Sturm-Liouville-Operator $L$ hergestellt, um auf die Orthogonalität der +Lösungsfunktionen zu schliessen. +Zuletzt wird anhand von zwei Beispielen gezeigt, dass durch das +Sturm-Liouville-Problem die Eigenschaften der Lösungen bereits vor dem +vollständingen Lösen der Beispiele bekannt sind. + \input{papers/sturmliouville/einleitung.tex} %einleitung "was ist das sturm-liouville-problem" \input{papers/sturmliouville/eigenschaften.tex} -- cgit v1.2.1 From 0fca0c9be53d155cec883384d72ced8832736ec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= Date: Wed, 24 Aug 2022 11:40:46 +0200 Subject: First part of fourier example revised. --- buch/papers/sturmliouville/beispiele.tex | 1 - buch/papers/sturmliouville/main.tex | 1 - .../sturmliouville/waermeleitung_beispiel.tex | 93 ++++++++++++++-------- 3 files changed, 58 insertions(+), 37 deletions(-) diff --git a/buch/papers/sturmliouville/beispiele.tex b/buch/papers/sturmliouville/beispiele.tex index c0a6e8f..4df5619 100644 --- a/buch/papers/sturmliouville/beispiele.tex +++ b/buch/papers/sturmliouville/beispiele.tex @@ -5,7 +5,6 @@ % \section{Beispiele \label{sturmliouville:sec:examples}} -\rhead{Beispiele} % Fourier: Erik work \input{papers/sturmliouville/waermeleitung_beispiel.tex} diff --git a/buch/papers/sturmliouville/main.tex b/buch/papers/sturmliouville/main.tex index a36e85a..99a043d 100644 --- a/buch/papers/sturmliouville/main.tex +++ b/buch/papers/sturmliouville/main.tex @@ -9,7 +9,6 @@ \begin{refsection} \chapterauthor{Réda Haddouche und Erik Löffler} -% TODO: Leser Übersicht geben % -> Repetition: Was ist Sturm-Liouville-Problem % -> Eigenschaften der Lösungen % -> Beispiele erwähnen diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index 356e259..8e3be72 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -5,31 +5,31 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\subsection{Fourierreihe als Lösung des Sturm-Liouville-Problems -(Wärmeleitung)} +\subsection{Wärmeleitung in homogenem Stab} +\rhead{Wärmeleitung in homogenem Stab} In diesem Abschnitt wird das Problem der Wärmeleitung in einem homogenen Stab betrachtet und wie das Sturm-Liouville-Problem bei der Beschreibung dieses physikalischen Phänomenes auftritt. -% TODO: u is dependent on 2 variables (t, x) -% TODO: mention initial conditions u(0, x) - Zunächst wird ein eindimensionaler homogener Stab der Länge $l$ und -Wärmeleitkoeffizient $\kappa$ betrachtet. -Es ergibt sich für das Wärmeleitungsproblem -die partielle Differentialgleichung +Wärmeleitkoeffizient $\kappa$ betrachtet dessen initiale Wärmeverteilung durch +$u(t=0, x)$ gegeben ist. +Es ergibt sich für das Wärmeleitungsproblem die partielle Differentialgleichung \begin{equation} \label{sturmliouville:eq:example-fourier-heat-equation} - \frac{\partial u}{\partial t} = - \kappa \frac{\partial^{2}u}{{\partial x}^{2}}, + \frac{\partial u(t, x)}{\partial t} = + \kappa \frac{\partial^{2}u(t, x)}{{\partial x}^{2}}, \end{equation} wobei der Stab in diesem Fall auf der $x$-Achse im Intervall $[0,l]$ liegt. -Da diese Differentialgleichung das Problem allgemein für einen homogenen -Stab beschreibt, werden zusätzliche Bedingungen benötigt, um beispielsweise -die Lösung für einen Stab zu finden, bei dem die Enden auf konstanter -Tempreatur gehalten werden. +Damit die Sturm-Liouville-Theorie auf das +Problem~\eqref{sturmliouville:eq:example-fourier-heat-equation} angewendet +werden kann, werden noch Randbedingungen benötigt, welche in Kürze +vorgestellt werden. +Aus physikalischer Sicht geben diese Randbedingungen vor, ob die Enden des +Stabes thermisch isoliert sind oder ob sie auf konstanter Temperatur gehalten +werden. % % Randbedingungen für Stab mit konstanten Endtemperaturen @@ -56,8 +56,10 @@ als Randbedingungen. \subsubsection{Randbedingungen für Stab mit isolierten Enden} -Bei isolierten Enden des Stabes können beliebige Temperaturen für $x = 0$ und -$x = l$ auftreten. In diesem Fall ist es nicht erlaubt, dass Wärme vom Stab +Bei isolierten Enden des Stabes können grundsätzlich beliebige Temperaturen für +$x = 0$ und $x = l$ auftreten. +Die einzige Einschränkung liefert die Anfangsbedingung $u(0, x)$. +Im Fall des isolierten Stabes ist es nicht erlaubt, dass Wärme vom Stab an die Umgebung oder von der Umgebung an den Stab abgegeben wird. Aus der Physik ist bekannt, dass Wärme immer von der höheren zur tieferen @@ -82,15 +84,16 @@ als Randbedingungen. \subsubsection{Lösung der Differenzialgleichung} -Da die Lösungsfunktion von zwei Variablen abhängig ist, wird als Lösungsansatz -die Separationsmethode verwendet. +Da die Lösungsfunktion $u$ von zwei Variablen abhängig ist, wird die +Gleichung~\eqref{sturmliouville:eq:example-fourier-heat-equation} zunächst +mittels Separation in zwei gewöhnliche Differentialgleichungen überführt. Dazu wird \[ u(t,x) = T(t)X(x) \] -in die partielle +in die partielle Differenzialgleichung~\eqref{sturmliouville:eq:example-fourier-heat-equation} eingesetzt. Daraus ergibt sich @@ -136,9 +139,12 @@ Erfüllen die Randbedingungen des Stab-Problems auch die Randbedingungen des Sturm-Liouville-Problems, kann bereits die Aussage getroffen werden, dass alle Lösungen für die Gleichung in $x$ orthogonal sein werden. -Da die Bedingungen des Stab-Problem nur Anforderungen an $x$ stellen, können -diese direkt für $X(x)$ übernomen werden. Es gilt also $X(0) = X(l) = 0$. -Damit die Lösungen von $X$ orthogonal sind, müssen also die Gleichungen +Da die Bedingungen des Stab-Problems nur Anforderungen an $x$ stellen, können +diese direkt für $X(x)$ übernomen werden. +Es gilt also beispielsweise wegen +\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant}, +dass $X(0) = X(l) = 0$. +Damit die Lösungen von $X$ orthogonal sind, müssen nun also die Gleichungen \begin{equation} \begin{aligned} \label{sturmliouville:eq:example-fourier-randbedingungen} @@ -156,18 +162,32 @@ erfüllt sein und es muss ausserdem \end{equation} gelten. -Um zu verifizieren, ob die Randbedingungen erfüllt sind, wird zunächst -$p(x)$ -benötigt. +Um zu verifizieren, ob die Randbedingungen erfüllt sind, werden also die +Koeffizientenfunktionen $p(x)$, $q(x)$ und $w(x)$ benötigt. Dazu wird die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} mit der Sturm-Liouville-Form~\eqref{sturmliouville:eq:sturm-liouville-equation} -verglichen, was zu $p(x) = 1$ führt. +verglichen, was zu +\[ +\begin{aligned} + p(x) &= 1 \\ + q(x) &= 0 \\ + w(x) &= 1 +\end{aligned} +\] +führt. + +Diese können bereits auf die Bedingungen in +Definition~\ref{sturmliouville:def:reguläres_sturm-liouville-problem} geprüft +werden. +Es ist schnell ersichtlich, dass die ersten drei Kriterien erfüllt sind. +Werden nun auch noch die Randbedingungen erfüllt, handelt es sich also um ein +reguläres Sturm-Liouville-Problem. -Werden nun $p(x)$ und die +Es werden nun $p(x)$ und die Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant} -in \eqref{sturmliouville:eq:example-fourier-randbedingungen} eigesetzt, erhält -man +in \eqref{sturmliouville:eq:example-fourier-randbedingungen} eigesetzt und man +erhält \[ \begin{aligned} k_a y(0) + h_a y'(0) &= h_a y'(0) = 0 \\ @@ -181,17 +201,20 @@ erfüllt sein und da $y(0) = 0$ und $y(l) = 0$ sind, können belibige $k_a \neq und $k_b \neq 0$ gewählt werden. Somit ist gezeigt, dass die Randbedingungen des Stab-Problems für Enden auf -konstanter Temperatur auch die Sturm-Liouville-Randbedingungen erfüllen und -alle daraus reultierenden Lösungen orthogonal sind. +konstanter Temperatur auch die Sturm-Liouville-Randbedingungen erfüllen. +Daraus folg zunächst, dass es sich um ein reguläres Sturm-Liouville-Problem +handelt und weiter, dass alle daraus reultierenden Lösungen orthogonal sind. Analog dazu kann gezeit werden, dass die Randbedingungen für einen Stab mit -isolierten Enden ebenfalls die Sturm-Liouville-Randbedingungen erfüllen und +isolierten +Enden~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-isolated} +ebenfalls die Sturm-Liouville-Randbedingungen erfüllen und somit auch zu orthogonalen Lösungen führen. % % Lösung von X(x), Teil mu % -\subsubsection{Lösund der Differentialgleichung in $x$} +\subsubsection{Lösung der Differentialgleichung in $x$} Als erstes wird auf die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} eingegangen. Aufgrund der Struktur der Gleichung @@ -316,7 +339,7 @@ Durch alanoges Vorgehen kann nun auch das Problem mit isolierten Enden gelöst werden. Setzt man nun die Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-isolated} -in $X^{\prime}$ ein, beginnend für $x = 0$. Es ergibt sich +in $X^{\prime}$ ein, beginnend für $x = 0$, ergibt sich \[ X^{\prime}(0) = @@ -351,7 +374,7 @@ und somit \] Es ergibt sich also sowohl für einen Stab mit Enden auf konstanter Temperatur -wie auch mit isolierten Enden +wie auch für den Stab mit isolierten Enden \begin{equation} \label{sturmliouville:eq:example-fourier-mu-solution} \mu -- cgit v1.2.1 From a966f864bde5198499f4066d2c1c97d44e51cb02 Mon Sep 17 00:00:00 2001 From: haddoucher Date: Wed, 24 Aug 2022 12:55:52 +0200 Subject: Korrekturen Wurde einiges korrigiert. Heute abend wirds noch einmal durchgelesen. --- buch/papers/sturmliouville/einleitung.tex | 59 +++++++------- .../sturmliouville/tschebyscheff_beispiel.tex | 92 +++++++++++----------- 2 files changed, 74 insertions(+), 77 deletions(-) diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index 2552574..08e25f2 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -15,19 +15,20 @@ % Check for readability \section{Was ist das Sturm-Liouville-Problem\label{sturmliouville:section:teil0}} -\rhead{Einleitung} +\rhead{Was ist das Sturm-Liouville-Problem} Das Sturm-Liouville-Problem wurde benannt nach dem schweizerisch-französischen Mathematiker und Physiker Jacques Charles Fran\c{c}ois Sturm und dem französischen Mathematiker Joseph Liouville. Gemeinsam haben sie in der mathematischen Physik die Sturm-Liouville-Theorie -entwickelt und gilt für die Lösung von gewöhnlichen Differentialgleichungen, -jedoch verwendet man die Theorie öfters bei der Lösung von partiellen +entwickelt. +Dies gilt für die Lösung von gewöhnlichen Differentialgleichungen, +jedoch verwendet man die Theorie beim lösen von partiellen Differentialgleichungen. -Normalerweise betrachtet man für das Strum-Liouville-Problem eine gewöhnliche -Differentialgleichung 2. Ordnung, und wenn es sich um eine partielle -Differentialgleichung handelt, kann man sie in mehrere gewöhnliche -Differentialgleichungen umwandeln. Wie z. B. den Separationsansatz, die -partielle Differentialgleichung mit mehreren Variablen. +Man betrachtet für das Strum-Liouville-Problem eine gewöhnliche +Differentialgleichung 2. Ordnung. +Wenn es sich um eine partielle +Differentialgleichung handelt, kann man sie mittels Separation in mehrere gewöhnliche +Differentialgleichungen umwandeln. \begin{definition} \index{Sturm-Liouville-Gleichung}% @@ -43,7 +44,7 @@ als = 0 \end{equation} -geschrieben werden kann, dann wird diese Gleichung als Sturm-Liouville-Gleichung +geschrieben werden kann, dann wird die Gleichung \eqref{sturmliouville:eq:sturm-liouville-equation} als Sturm-Liouville-Gleichung bezeichnet. \end{definition} Alle homogenen linearen gewöhnlichen Differentialgleichungen 2. Ordnung können @@ -51,7 +52,7 @@ in die Form der Gleichung \eqref{sturmliouville:eq:sturm-liouville-equation} umgewandelt werden. Damit es sich um ein Sturm-Liouville-Problem handelt, benötigt es noch die -Randbedingung, die im nächsten Unterkapitel behandelt wird. +Randbedingung, die im nächsten Unterkapitel behandelt wird. \subsection{Randbedingungen \label{sturmliouville:sub:was-ist-das-slp-randbedingungen}} @@ -62,7 +63,7 @@ Die Sturm-Liouville-Gleichung mit homogenen Randbedingungen des dritten Typs \begin{aligned} \label{sturmliouville:eq:randbedingungen} k_a y(a) + h_a p(a) y'(a) &= 0 \\ - k_b y(b) + h_b p(b) y'(b) &= 0. + k_b y(b) + h_b p(b) y'(b) &= 0 \end{aligned} \end{equation} ist das klassische Sturm-Liouville-Problem. @@ -70,21 +71,21 @@ ist das klassische Sturm-Liouville-Problem. \subsection{Koeffizientenfunktionen \label{sturmliouville:sub:koeffizientenfunktionen}} -Die Funktionen $p(x)$, $q(x)$ und $w(x)$ werden als Koeffizientenfunktionen mit -ihren freien Variablen $x$ bezeichnet. +Die Funktionen $p(x)$, $q(x)$ und $w(x)$ werden als Koeffizientenfunktionen +bezeichnet. Diese Funktionen erhält man, indem man eine Differentialgleichung in die -Sturm-Liouville-Form bringt. +Sturm-Liouville-Form bringt und dann die Koeffizientenfunktionen vergleicht. Die Funktion $w(x)$ (manchmal auch $r(x)$ genannt) wird als Gewichtsfunktion oder Dichtefunktion bezeichnet. Die Eigenschaften der Koeffizientenfunktionen sowie andere Bedingungen haben einen großen Einfluss auf die Lösbarkeit des Sturm-Liouville-Problems und werden -im nächsten Kapitel diskutiert. +im nächsten Kapitel diskutiert. % %Kapitel mit "Das reguläre Sturm-Liouville-Problem" % -\subsection{Das reguläre oder singuläre Sturm-Liouville-Problem +\subsection{Das reguläre und singuläre Sturm-Liouville-Problem \label{sturmliouville:sub:reguläre_sturm_liouville_problem}} Damit es sich um ein reguläres Sturm-Liouville-Problem handelt, müssen einige Bedingungen beachtet werden. @@ -94,8 +95,8 @@ Bedingungen beachtet werden. Die Bedingungen für ein reguläres Sturm-Liouville-Problem sind: \begin{itemize} \item Die Funktionen $p(x), p'(x), q(x)$ und $w(x)$ müssen stetig und - reell sein. - \item sowie müssen in einem endlichen Intervall $[a,b]$ integrierbar + reell sein + \item sowie in einem endlichen Intervall $[a,b]$ integrierbar sein. \item $p(x)$ und $w(x)$ sind $>0$. \item Es gelten die Randbedingungen @@ -103,36 +104,32 @@ Bedingungen beachtet werden. $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. \end{itemize} \end{definition} -Werden diese Bedingungen nicht erfüllt, so handelt es sich um ein singuläres +Wird eine oder mehrere dieser Bedingungen nicht erfüllt, so handelt es sich um ein singuläres Sturm-Liouville-Problem. \begin{beispiel} Das Randwertproblem \begin{equation} \begin{aligned} - x^2y'' + xy' + (\lambda^2x^2 - m^2)y &= 0, 01$ und $x<-1$ sehen die Polynome wie folgt aus: -\begin{equation} - T_n(x) = \left\{\begin{array}{ll} \cosh (n \arccos x), & x > 1\\ - (-1)^n \cosh (n \arccos (-x)), & x<-1 \end{array}\right. -\end{equation}, -jedoch ist die Orthogonalität nur auf dem Intervall $[ -1, 1]$ sichergestellt. -Die nächste Bedingung beinhaltet, dass die Funktion $p(x)$ und $w(x)>0$ sein -müssen. -Die Funktion -\begin{equation*} - p(x)^{-1} = \frac{1}{\sqrt{1-x^2}} -\end{equation*} -ist die gleiche wie $w(x)$ und erfüllt die Bedingung. +Zunächst werden jedoch die Randbedingungen betrachtet. \subsubsection*{Randwertproblem} Für die Verifizierung der Randbedingungen benötigt man erneut $p(x)$. -Da sich die Polynome nur auf dem Intervall $[ -1,1 ]$ orthogonal verhalten, -sind $a = -1$ und $b = 1$ gesetzt. -Beim einsetzen in die Randbedingung \eqref{sturmliouville:eq:randbedingungen}, +Die Randwerte setzt man $a = -1$ und $b = 1$. +Beim Einsetzen in die Randbedingung \eqref{sturmliouville:eq:randbedingungen}, erhält man \begin{equation} -\begin{aligned} - k_a y(-1) + h_a y'(-1) &= 0\\ - k_b y(-1) + h_b y'(-1) &= 0. -\end{aligned} + \begin{aligned} + k_a y(-1) + h_a y'(-1) &= 0\\ + k_b y(-1) + h_b y'(-1) &= 0. + \end{aligned} \end{equation} Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome (siehe \ref{sub:definiton_der_tschebyscheff-Polynome}). Die Funktion $y(x)$ wird nun mit der Funktion $T_n(x)$ ersetzt und für die -Verifizierung der Randbedingung wählt man $n=2$. +Verifizierung der Randbedingung wählt man $n=0$. Somit erhält man \begin{equation} \begin{aligned} - k_a T_2(-1) + h_a T_{2}'(-1) &= k_a = 0\\ - k_b T_2(1) + h_b T_{2}'(1) &= k_b = 0. + k_a T_0(-1) + h_a T_{0}'(-1) &= k_a = 0\\ + k_b T_0(1) + h_b T_{0}'(1) &= k_b = 0. \end{aligned} \end{equation} Ähnlich wie beim Beispiel der Wärmeleitung in einem homogenen Stab kann man, -damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, können beliebige +damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, beliebige $h_a \ne 0$ und $h_b \ne 0$ gewählt werden. -Somit ist erneut gezeigt, dass die Randbedingungen der Tschebyscheff-Polynome -auf die Sturm-Liouville-Randbedingungen erfüllt und alle daraus resultierenden -Lösungen orthogonal sind. +Es wird also erneut gezeigt, dass die Randbedingungen $[-1,1]$, +die Sturm-Liouville-Randbedingungen erfüllen. + +\subsubsection*{regulär oder singulär?} +Für das reguläre Problem muss laut der +Definition~\ref{sturmliouville:def:reguläres_sturm-liouville-problem} die funktion +$p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und +$w(x) = \frac{1}{\sqrt{1-x^2}}$ stetig und reell sein. +Auf dem Intervall $(-1,1)$ sind die Tschebyscheff-Polynome erster Art +\begin{equation} + T_n(x) + = + \cos n (\arccos x). +\end{equation} +Die nächste Bedingung, laut der Definition \ref{sturmliouville:def:reguläres_sturm-liouville-problem}, beinhaltet, dass die Funktion $p(x)$ und $w(x)>0$ sein +müssen. +Die Funktion +\begin{equation*} + p(x)^{-1} = \frac{1}{\sqrt{1-x^2}} +\end{equation*} +ist die gleiche wie $w(x)$ und erfüllt die Bedingung. + + \begin{beispiel} - Die Gleichung \eqref{eq:skalar-sturm-liouville} mit - $y_m = T_1(x)$ und $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ + Die Gleichung + \[ + \int_{a}^{b} w(x) y_m y_n = 0 + \] + + mit + $y_m(x) = T_1(x)$ und $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ ergibt \[ \int_{-1}^{1} w(x) x (2x^2-1) dx = 0. -- cgit v1.2.1 From 4d49e23d6382999ed696c403c46a6b8290ca2f72 Mon Sep 17 00:00:00 2001 From: "samuel.niederer" Date: Wed, 24 Aug 2022 21:52:46 +0200 Subject: einarbeitung der Korrekturen --- buch/papers/kra/anwendung.tex | 22 +++++++++++++++++----- buch/papers/kra/loesung.tex | 40 +++++++++++++++++++++++++++++++--------- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/buch/papers/kra/anwendung.tex b/buch/papers/kra/anwendung.tex index 6390d4f..704de43 100644 --- a/buch/papers/kra/anwendung.tex +++ b/buch/papers/kra/anwendung.tex @@ -6,6 +6,7 @@ Die Matrix-Riccati Differentialgleichung findet unter anderem Anwendung in der R Im folgenden Abschnitt möchten wir uns an einem Beispiel anschauen wie wir mit Hilfe der Matrix-Riccati-Differentialgleichung (\ref{kra:equation:matrixriccati}) ein Feder-Masse-System untersuchen können \cite{kra:riccati}. \subsection{Feder-Masse-System} +\label{kra:subsection:feder-masse-system} Die einfachste Form eines Feder-Masse-Systems ist dargestellt in Abbildung~\ref{kra:fig:simple_mass_spring}. Es besteht aus einer reibungsfrei gelagerten Masse $m$, welche an eine Feder mit der Federkonstante $k$ gekoppelt ist. Die im System wirkenden Kräfte teilen sich auf in die auf dem hookeschen Gesetz basierenden Rückstellkraft $F_R = k \Delta_x$ und der auf dem Aktionsprinzip basierenden Kraft $F_a = am = \ddot{x} m$. @@ -35,6 +36,7 @@ Die Funktion die diese Differentialgleichung löst, ist die harmonische Schwingu \end{figure} \subsection{Hamilton-Funktion} +\label{kra:subsection:hamilton-funktion} Die Bewegung der Masse $m$ kann mit Hilfe der hamiltonschen Mechanik im Phasenraum untersucht werden. Die hamiltonschen Gleichungen verwenden dafür die verallgemeinerten Ortskoordinaten $q = (q_{1}, q_{2}, ..., q_{n})$ und die verallgemeinerten Impulskoordinaten $p = (p_{1}, p_{2}, ..., p_{n})$, wobei der Impuls definiert ist als $p_k = m_k \cdot v_k$. @@ -95,7 +97,7 @@ Die Hamilton-Funktion ist also \begin{align*} \begin{split} H &= T + V \\ - &= \frac{p_1^2}{2m_1} + \frac{p_2^2}{2m_2} + \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2} + &= \frac{p_1^2}{2m_1} + \frac{p_2^2}{2m_2} + \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2} \end{split} \end{align*} Die Bewegungsgleichungen \eqref{kra:equation:bewegungsgleichung} liefern @@ -160,7 +162,14 @@ In Matrixschreibweise erhalten wir \end{equation} \subsection{Phasenraum} -Der Phasenraum erlaubt die eindeutige Beschreibung aller möglichen Bewegungszustände eines mechanischen Systems durch einen Punkt. +\subsubsection{Motivation} +Die Beschreibung eines klassischen physikalischen Systems führt in der Newtonschen-Mechanik, wie wir in \ref{kra:subsection:feder-masse-system} gesehen haben, auf eine DGL 2. Ordung der Dimension $n$. +Zur Betrachung des Systems verwenden wir dabei den Konfigurationsraum, ein Raum $\mathbb{R}^n$, bei dem ein einziger Punkt die Position aller $n$ Teilchen festlegt. +Der Nachteil des Konfigurationsraums ist dabei, dass dieser nur die Positionen der Teilchen widerspiegelt. +Um den Zustand eines Systems vollständig zu beschreiben, muss man aber nicht nur wissen wo sich die Teilchen zu einem bestimmten Zeitpunkt befinden, sondern auch wie sie sich bewegen. + +Im Gegensatz dazu führt die Beschreibung des Systems mit Hilfe der Hamilton-Mechanik \ref{kra:subsection:hamilton-funktion}, auf eine DGL 1. Ordnung der Dimension $2n$. +Die Betrachtung erfolgt im einem Raum $\mathbb{R}^{2n}$, bei dem ein einzelner Punkt den Bewegungszustand vollständig beschreibt, dem sogennanten Phasenraum. Die Phasenraumdarstellung eignet sich somit sehr gut für die systematische Untersuchung der Feder-Masse-Systeme. \subsubsection{Harmonischer Oszillator} @@ -205,6 +214,7 @@ Ausgeschrieben folgt \dot{P} = CQ + DP \end{align*} \begin{equation} + \label{kra:equation:feder-masse-riccati-matrix} \begin{split} \dt U &= \dot{P} Q^{-1} + P \dt Q^{-1} \\ &= (CQ + DP) Q^{-1} - P (Q^{-1} \dot{Q} Q^{-1}) \\ @@ -213,7 +223,9 @@ Ausgeschrieben folgt &= C + DU - UA - UBU \end{split} \end{equation} -was uns auf die Matrix-Riccati Gleichung \eqref{kra:equation:matrixriccati} führt. +was uns direkt auf die Matrix-Riccati Gleichung \eqref{kra:equation:matrixriccati} führt. +Wir sehen das sich die Dimension der DGL reduziert, dabei aber gleichzeitig der Grad erhöht. -% @TODO Einfluss auf anfangsbedingungen, plots? -% @TODO Fazit ? +\subsection{Fazit} +Wir haben gezeigt wie wir ein Federmassesystem mit Hilfe der Hamilton-Funktion Beschreiben und im Phasenraum untersuchen können. +Ausserdem haben wir gesehen, dass sich bei der Entstehung der Riccati-Gleichung \eqref{kra:equation:feder-masse-riccati-matrix} die Dimension auf Kosten des Grades reduziert wird. \ No newline at end of file diff --git a/buch/papers/kra/loesung.tex b/buch/papers/kra/loesung.tex index dbbb7f6..18ac853 100644 --- a/buch/papers/kra/loesung.tex +++ b/buch/papers/kra/loesung.tex @@ -49,8 +49,33 @@ Diese kann nun mit den Methoden zur Lösung von linearen Differentialgleichungen Durch die Rücksubstitution \eqref{kra:equation:backsubstitution} erhält man dann die Lösung von \eqref{kra:equation:riccati}. \subsection{Matrix-Riccati-Differentialgleichung} \label{kra:loesung:riccati} -% Lösung matrix riccati -Die Lösung der Matrix-Riccati-Gleichung \ref{kra:equation:matrixriccati} erhalten wir nach \cite{kra:kalmanisae} folgendermassen +Im Folgenden wollen wir uns anschauen wie die Matrix-Riccati-DGL entsteht und wie sie gelöst werden kann. +Der Ausgangspunkt bildet die Matrix-Differentialgleichung +\begin{equation} + \label{kra:equation:matrix-dgl} + \begin{pmatrix} + \dot{X}(t) \\ + \dot{Y}(t) + \end{pmatrix} + = + \underbrace{ + \begin{pmatrix} + A & B \\ + C & D + \end{pmatrix} + }_{\displaystyle{H}}, +\end{equation} +mit den allgemeinen quadratischen Matrizen $A, B, C$ und $D$ welche zusammen die sogennante Hamilonsche-Matrix bilden. +Betrachten wir das Verhältniss von $Y$ zu $X$ +\[ + P(t) = Y(t)X^{-1} +\] +und deren Ableitung $\dot{P}(t)$, so erhalten wir die Riccati-Matrix-DGL +\[ + \dot{P}(t) = C + DU - UA - UBU. +\] + +Die Lösung erhalten wir dann mit \begin{equation} \label{kra:matrixriccati-solution} \begin{pmatrix} @@ -61,7 +86,7 @@ Die Lösung der Matrix-Riccati-Gleichung \ref{kra:equation:matrixriccati} erhalt \Phi(t_0, t) \begin{pmatrix} I(t) \\ - U_0(t) + P_0(t) \end{pmatrix} = \begin{pmatrix} @@ -70,11 +95,11 @@ Die Lösung der Matrix-Riccati-Gleichung \ref{kra:equation:matrixriccati} erhalt \end{pmatrix} \begin{pmatrix} I(t) \\ - U_0(t) + P_0(t) \end{pmatrix} \end{equation} \begin{equation} - U(t) = + P(t) = \begin{pmatrix} \Phi_{21}(t_0, t) + \Phi_{22}(t_0, t) \end{pmatrix} @@ -83,7 +108,4 @@ Die Lösung der Matrix-Riccati-Gleichung \ref{kra:equation:matrixriccati} erhalt \end{pmatrix} ^{-1} \end{equation} -wobei $\Phi(t, t_0)$ die sogenannte Zustandsübergangsmatrix ist. -\begin{equation} - \Phi(t_0, t) = e^{H(t - t_0)} -\end{equation} +wobei $\Phi(t_0, t) = e^{H(t - t_0)}$ die sogenannte Zustandsübergangsmatrix von \eqref{kra:equation:matrix-dgl} ist \cite{kra:kalmanisae}. -- cgit v1.2.1 From 2ea641baa5990d5439f8e626618d5ff0968f61ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Thu, 25 Aug 2022 12:48:21 +0200 Subject: Revision of fourier example done. --- .../sturmliouville/waermeleitung_beispiel.tex | 101 ++++++++++++++------- 1 file changed, 68 insertions(+), 33 deletions(-) diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index 8e3be72..2104645 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -321,8 +321,8 @@ Es bleibt noch nach $\beta$ aufzulösen: \[ \begin{aligned} \sin(\beta l) &= 0 \\ - \beta l &= n \pi \qquad n \in \mathbb{N} \\ - \beta &= \frac{n \pi}{l} \qquad n \in \mathbb{N} + \beta l &= n \pi \qquad n \in \mathbb{N}_0 \\ + \beta &= \frac{n \pi}{l} \qquad n \in \mathbb{N}_0 \end{aligned} \] @@ -364,8 +364,8 @@ Es folgt nun \[ \begin{aligned} \sin(\alpha l) &= 0 \\ - \alpha l &= n \pi \qquad n \in \mathbb{N} \\ - \alpha &= \frac{n \pi}{l} \qquad n \in \mathbb{N} + \alpha l &= n \pi \qquad n \in \mathbb{N}_0 \\ + \alpha &= \frac{n \pi}{l} \qquad n \in \mathbb{N}_0 \end{aligned} \] und somit @@ -382,24 +382,32 @@ wie auch für den Stab mit isolierten Enden -\frac{n^{2}\pi^{2}}{l^{2}}. \end{equation} -% TODO: infinite base vectors and fourier series -\subsubsection{TODO: Auf Anzahl Lösungen und Fourierreihe eingehen} +\subsubsection{Fourierreihe als Lösung} -% TODO: check ease of reading -\subsubsection{Berechnung der Koeffizienten} - -% TODO: move explanation A/B -> a_n/b_n to fourier subsection - -% -% Lösung von X(x), Teil: Koeffizienten a_n und b_n mittels skalarprodukt. -% +Das Resultat~\eqref{sturmliouville:eq:example-fourier-mu-solution} gibt nun +wegen der neuen Variablen $n \in \mathbb{N}_0$ vor, dass es potentiell +unendlich viele Lösungen gibt. +Dies bedeutet auch, dass es nicht ein $A$ und ein $B$ gibt, sondern einen +Koeffizienten für jede Lösungsfunktion. +Wir schreiben deshalb den Lösungsansatz zur Linearkombination +\[ + X(x) + = + \sum_{n = 0}^{\infty} a_n\cos\left(\frac{n\pi}{l}x\right) + + + \sum_{n = 0}^{\infty} b_n\sin\left(\frac{n\pi}{l}x\right) +\] +aus allen möglichen Lösungen um. -Bisher wurde über die Koeffizienten $A$ und $B$ noch nicht viel ausgesagt. -Zunächst ist wegen vorhergehender Rechnung ersichtlich, dass es sich bei -$A$ und $B$ nicht um einzelne Koeffizienten handelt. -Stattdessen können die Koeffizienten für jedes $n \in \mathbb{N}$ -unterschiedlich sein. -Die Lösung $X(x)$ wird nun umgeschrieben zu +Als nächstes werden noch die Summanden für $n = 0$ aus den Summen herausgezogen, +da +\[ + \begin{aligned} + a_0 \cos\left(\frac{0 \pi}{l}\right) &= a_0 \\ + b_0 \sin\left(\frac{0 \pi}{l}\right) &= 0 + \end{aligned} +\] +gilt endet man somit bei \[ X(x) = @@ -409,10 +417,33 @@ Die Lösung $X(x)$ wird nun umgeschrieben zu + \sum_{n = 1}^{\infty} b_n\sin\left(\frac{n\pi}{l}x\right). \] +Dies ist die allgemeine Fourierreihe, welche unsere Stab-Probleme löst. +Wie zuvor bereits erwähnt, wissen wir dass sämtliche Lösungsfunktionen +orthogonal zueinander sind, da es sich hier um die Lösung eines +Sturm-Liouville-Problems handelt. +Es gilt also +\[ +\begin{aligned} + \int_{-l}^{l}\cos\left(\frac{n \pi}{l}x\right) + \cos\left(\frac{m \pi}{l}x\right)dx + &= 0 \qquad n \neq m \\ + \int_{-l}^{l}\sin\left(\frac{n \pi}{l}x\right) + \sin\left(\frac{m \pi}{l}x\right)dx + &= 0 \qquad n \neq m \\ + \int_{-l}^{l}\cos\left(\frac{n \pi}{l}x\right) + \sin\left(\frac{m \pi}{l}x\right)dx + &= 0. +\end{aligned} +\] + +\subsubsection{Berechnung der Fourierkoeffizienten} + +% +% Lösung von X(x), Teil: Koeffizienten a_n und b_n mittels skalarprodukt. +% -Um eine eindeutige Lösung für $X(x)$ zu erhalten werden noch weitere -Bedingungen benötigt. -Diese sind die Startbedingungen oder $u(0, x) = X(x)$ für $t = 0$. +Um eine eindeutige Lösung für $X(x)$ zu erhalten wird nun die initiale +Wärmeverteilung oder $u(0, x) = X(x)$ für $t = 0$ benötigt. Es gilt also nun die Gleichung \begin{equation} \label{sturmliouville:eq:example-fourier-initial-conditions} @@ -479,8 +510,8 @@ gerade, respektive ungerade auf $[-l, l]$ fortsetzen: \end{aligned} \] -Die Konsequenz davon ist, dass nun das Resultat der Integrale um den Faktor zwei -skalliert wurde, also gilt nun +Diese Funktionen wurden gerade so gewählt, dass nun das Resultat der Integrale +um den Faktor zwei skalliert wurde, also gilt \[ \begin{aligned} \int_{-l}^{l}\hat{u}_c(0, x)\cos\left(\frac{m \pi}{l}x\right)dx @@ -587,7 +618,7 @@ $ \sin\left(\frac{m \pi}{l}x\right) $ gezeigt werden, dass gilt. Etwas anders ist es allerdings bei $a_0$. -Wie der Name bereits suggeriert, handelt es sich hierbei um den Koeffizienten +Wie zuvor bereits erwähnt, handelt es sich hierbei um den Koeffizienten zur Basisfunktion $\cos\left(\frac{0 \pi}{l}x\right)$ beziehungsweise der konstanten Funktion $1$. Um einen Ausdruck für $a_0$ zu erhalten, wird wiederum auf beiden Seiten @@ -615,14 +646,14 @@ Skalarprodukt mit der konstanten Basisfunktion $1$ gebildet: \] Hier fallen nun alle Terme, die $\sin$ oder $\cos$ beinhalten weg, da jeweils -über ein Vielfaches der Periode integriert wird. +über ein ganzzahliges Vielfaches der Periode integriert wird. Es bleibt also noch \[ 2\int_{0}^{l}u(0, x)dx = - a_0 \int_{-l}^{l}dx + a_0 \int_{-l}^{l}dx, \] -, was sich wie folgt nach $a_0$ auflösen lässt: +was sich wie folgt nach $a_0$ auflösen lässt: \[ \begin{aligned} 2\int_{0}^{l}u(0, x)dx @@ -651,13 +682,19 @@ Es bleibt also noch \subsubsection{Lösung der Differentialgleichung in $t$} Zuletzt wird die zweite Gleichung der Separation~\eqref{sturmliouville:eq:example-fourier-separated-t} betrachtet. -Diese wird über das charakteristische Polynom +Dazu betrachtet man das charakteristische Polynom \[ \lambda - \kappa \mu = 0 \] -gelöst. +der Gleichung +\[ + T^{\prime}(t) - \kappa \mu T(t) + = + 0 +\] +und löst dieses. Es ist direkt ersichtlich, dass $\lambda = \kappa \mu$ gelten muss, was zur Lösung @@ -677,8 +714,6 @@ ergibt. Dieses Resultat kann nun mit allen vorhergehenden Resultaten zusammengesetzt werden um die vollständige Lösung für das Stab-Problem zu erhalten. -% TODO: elaborate - \subsubsection{Lösung für einen Stab mit Enden auf konstanter Temperatur} \[ \begin{aligned} -- cgit v1.2.1 From 2053717fd33afc91d07e00b2d36cb97e3ad0a156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Thu, 25 Aug 2022 13:38:43 +0200 Subject: Minor changes. --- buch/papers/sturmliouville/einleitung.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index 08e25f2..4701b8a 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -1,5 +1,6 @@ % % einleitung.tex -- Beispiel-File für die Einleitung +% Author: Réda Haddouche % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % @@ -7,7 +8,7 @@ % TODO: % order: % 1. State goal of showing examples in intro -% 2. Show Sturm-Liouville form +% 2. Show Sturm-Liouville form % 3. Explain boundary conditions as necessary in regards to examples % (make singular property brief) % -- cgit v1.2.1 From a2a2826f4def7a43570e521e9ad9b5b653f34456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Thu, 25 Aug 2022 13:40:26 +0200 Subject: Recommiting, something went wrong last time. --- buch/papers/sturmliouville/tschebyscheff_beispiel.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index 8f673a5..b247441 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -1,5 +1,6 @@ % % tschebyscheff_beispiel.tex +% Author: Réda Haddouche % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -- cgit v1.2.1 From 4241483d86a2803e284f734af690d88c0d1f6dfe Mon Sep 17 00:00:00 2001 From: haddoucher Date: Thu, 25 Aug 2022 16:59:37 +0200 Subject: korrigiert Tschebyscheff-Polynome und Einleitung --- buch/papers/sturmliouville/einleitung.tex | 24 ++++++------ .../sturmliouville/tschebyscheff_beispiel.tex | 44 ++++++++++++++-------- 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index 08e25f2..6c5fb59 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -21,14 +21,11 @@ Mathematiker und Physiker Jacques Charles Fran\c{c}ois Sturm und dem französischen Mathematiker Joseph Liouville. Gemeinsam haben sie in der mathematischen Physik die Sturm-Liouville-Theorie entwickelt. -Dies gilt für die Lösung von gewöhnlichen Differentialgleichungen, -jedoch verwendet man die Theorie beim lösen von partiellen -Differentialgleichungen. -Man betrachtet für das Strum-Liouville-Problem eine gewöhnliche -Differentialgleichung 2. Ordnung. +Dieses gilt für die Lösung von gewöhnlichen Differentialgleichungen oder +partielle Differentialgleichung. Wenn es sich um eine partielle -Differentialgleichung handelt, kann man sie mittels Separation in mehrere gewöhnliche -Differentialgleichungen umwandeln. +Differentialgleichung handelt, kann man sie mittels Separation in +mehrere gewöhnliche Differentialgleichungen umwandeln. \begin{definition} \index{Sturm-Liouville-Gleichung}% @@ -52,7 +49,7 @@ in die Form der Gleichung \eqref{sturmliouville:eq:sturm-liouville-equation} umgewandelt werden. Damit es sich um ein Sturm-Liouville-Problem handelt, benötigt es noch die -Randbedingung, die im nächsten Unterkapitel behandelt wird. +Randbedingungen, die im nächsten Unterkapitel behandelt wird. \subsection{Randbedingungen \label{sturmliouville:sub:was-ist-das-slp-randbedingungen}} @@ -77,9 +74,9 @@ Diese Funktionen erhält man, indem man eine Differentialgleichung in die Sturm-Liouville-Form bringt und dann die Koeffizientenfunktionen vergleicht. Die Funktion $w(x)$ (manchmal auch $r(x)$ genannt) wird als Gewichtsfunktion oder Dichtefunktion bezeichnet. -Die Eigenschaften der Koeffizientenfunktionen sowie andere Bedingungen haben +Die Eigenschaften der Koeffizientenfunktionen haben einen großen Einfluss auf die Lösbarkeit des Sturm-Liouville-Problems und werden -im nächsten Kapitel diskutiert. +im nächsten Abschnitt diskutiert. % %Kapitel mit "Das reguläre Sturm-Liouville-Problem" @@ -130,6 +127,7 @@ Sturm-Liouville-Problem. \end{itemize} \end{beispiel} -Verwendet man das reguläre Sturm-Liouville-Problem, obwohl eine oder mehrere -Bedingungen nicht erfüllt sind, dann ist es schwierig zu sagen, ob die Lösung -eindeutig ist. +Bei einem regulärem Problem, besteht die Lösung nur aus Eigenvektoren. +Handelt es sich um ein singuläres Problem, so besteht die Lösung im Allgemeinen +nicht mehr nur aus Eigenvektoren. + diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index 8f673a5..dfc6798 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -7,6 +7,13 @@ \subsection{Tschebyscheff-Polynome \label{sturmliouville:sub:tschebyscheff-polynome}} \rhead{Tschebyscheff-Polynome} +In diesem Unterkapitel wird anhand der +Tschebyscheff-Differentialgleichung~\eqref{buch:potenzen:tschebyscheff:dgl} gezeigt, dass die Tschebyscheff-Polynome orthogonal zueinander sind. +Zu diesem Zweck werden die Koeffizientenfunktionen nochmals dargestellt, so dass +überprüft werden kann, ob die Randbedingungen erfüllt werden können. +Sobald feststeht, ob das Problem regulär oder singulär ist, zeigt eine +kleine Rechnung, dass die Lösungen orthogonal sind. + \subsubsection*{Definition der Koeffizientenfunktion} Im Kapitel \ref{sub:beispiele_sturm_liouville_problem} sind die Koeffizientenfunktionen, die man braucht, schon aufgelistet: @@ -34,8 +41,8 @@ Beim Einsetzen in die Randbedingung \eqref{sturmliouville:eq:randbedingungen}, erhält man \begin{equation} \begin{aligned} - k_a y(-1) + h_a y'(-1) &= 0\\ - k_b y(-1) + h_b y'(-1) &= 0. + k_a y(-1) + h_a p(-1) y'(-1) &= 0\\ + k_b y(1) + h_b p(1) y'(-1) &= 0. \end{aligned} \end{equation} Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome @@ -45,17 +52,16 @@ Verifizierung der Randbedingung wählt man $n=0$. Somit erhält man \begin{equation} \begin{aligned} - k_a T_0(-1) + h_a T_{0}'(-1) &= k_a = 0\\ - k_b T_0(1) + h_b T_{0}'(1) &= k_b = 0. + k_a T_0(-1) + h_a p(-1) T_{0}'(-1) &= k_a = 0\\ + k_b T_0(1) + h_b p(1) T_{0}'(1) &= k_b = 0. \end{aligned} \end{equation} -Ähnlich wie beim Beispiel der Wärmeleitung in einem homogenen Stab kann man, +Ähnlich wie beim Beispiel der Wärmeleitung in einem homogenen Stab können, damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, beliebige $h_a \ne 0$ und $h_b \ne 0$ gewählt werden. -Es wird also erneut gezeigt, dass die Randbedingungen $[-1,1]$, -die Sturm-Liouville-Randbedingungen erfüllen. +Es wurde somit gezeigt, dass die Sturm-Liouville-Randbedingungen erfüllt sind. -\subsubsection*{regulär oder singulär?} +\subsubsection*{Handelt es sich um ein reguläres oder Singuläres Problem?} Für das reguläre Problem muss laut der Definition~\ref{sturmliouville:def:reguläres_sturm-liouville-problem} die funktion $p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und @@ -73,19 +79,27 @@ Die Funktion p(x)^{-1} = \frac{1}{\sqrt{1-x^2}} \end{equation*} ist die gleiche wie $w(x)$ und erfüllt die Bedingung. - +Es zeigt sich also, dass $p(x)$, $p'(x)$, $q(x)$ und $w(x)$ +die Bedingungen erfüllen. +Da auch die Randbedingungen erfüllt sind, handelt es sich um ein reguläres Sturm-Liouville-Problem. \begin{beispiel} - Die Gleichung + In diesem Beispiel wird zuletzt die Orthogonalität der Lösungsfunktion + illustriert. + Dazu verwendet man das Skalarprodukt \[ - \int_{a}^{b} w(x) y_m y_n = 0 + \int_{a}^{b} w(x) y_m y_n = 0. \] - - mit - $y_m(x) = T_1(x)$ und $y_n(x) = T_2(x)$ eingesetzt sowie $a=-1$ und $b = 1$ + Eigesetzt ergibt dies $y_m(x) = T_1(x)$ und $y_n(x) = T_2(x)$, sowie $a=-1$ und $b = 1$ ergibt \[ - \int_{-1}^{1} w(x) x (2x^2-1) dx = 0. + \begin{aligned} + \int_{-1}^{1} \frac{1}{\sqrt{1-x^2}} x (2x^2-1) dx &= + \lbrack - \frac{\sqrt{1-x^2}(2x^2+1)}{3}\rbrack_{-1}^{1}\\ + &= 0. + \end{aligned} \] + Somit ist gezeigt, dass $T_1(x)$ und $T_2(x)$ orthogonal sind. + Analog kann Orthogonalität für alle $y_n(x)$ und $y_m(x)$ mit $n \ne m$ gezeigt werden. \end{beispiel} -- cgit v1.2.1 From a1a9823fa9396d39d77b11d0c77b62df09a3bac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Thu, 25 Aug 2022 21:38:04 +0200 Subject: Some corrections in intro and chebyshev example. --- buch/papers/sturmliouville/einleitung.tex | 26 +++++++--------------- .../sturmliouville/tschebyscheff_beispiel.tex | 13 ++++++----- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index b2d01f0..2299c3c 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -5,16 +5,6 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -% TODO: -% order: -% 1. State goal of showing examples in intro -% 2. Show Sturm-Liouville form -% 3. Explain boundary conditions as necessary in regards to examples -% (make singular property brief) -% -% Remove Eigenvaluedecomposition -> is discussed in properties of solutions -% Check for readability - \section{Was ist das Sturm-Liouville-Problem\label{sturmliouville:section:teil0}} \rhead{Was ist das Sturm-Liouville-Problem} Das Sturm-Liouville-Problem wurde benannt nach dem schweizerisch-französischen @@ -22,10 +12,9 @@ Mathematiker und Physiker Jacques Charles Fran\c{c}ois Sturm und dem französischen Mathematiker Joseph Liouville. Gemeinsam haben sie in der mathematischen Physik die Sturm-Liouville-Theorie entwickelt. -Dieses gilt für die Lösung von gewöhnlichen Differentialgleichungen oder -partielle Differentialgleichung. -Wenn es sich um eine partielle -Differentialgleichung handelt, kann man sie mittels Separation in +Diese gilt für die Lösung von gewöhnlichen Differentialgleichungen. +Handelt es sich um eine partielle +Differentialgleichung, kann man sie mittels Separation in mehrere gewöhnliche Differentialgleichungen umwandeln. \begin{definition} @@ -42,8 +31,9 @@ als = 0 \end{equation} -geschrieben werden kann, dann wird die Gleichung \eqref{sturmliouville:eq:sturm-liouville-equation} als Sturm-Liouville-Gleichung -bezeichnet. +geschrieben werden kann, dann wird die +Gleichung~\eqref{sturmliouville:eq:sturm-liouville-equation} als +Sturm-Liouville-Gleichung bezeichnet. \end{definition} Alle homogenen linearen gewöhnlichen Differentialgleichungen 2. Ordnung können in die Form der Gleichung \eqref{sturmliouville:eq:sturm-liouville-equation} @@ -102,8 +92,8 @@ Bedingungen beachtet werden. $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. \end{itemize} \end{definition} -Wird eine oder mehrere dieser Bedingungen nicht erfüllt, so handelt es sich um ein singuläres -Sturm-Liouville-Problem. +Wird eine oder mehrere dieser Bedingungen nicht erfüllt, so handelt es sich um +ein singuläres Sturm-Liouville-Problem. \begin{beispiel} Das Randwertproblem diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index 5ede99d..5fb3a0c 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -9,9 +9,10 @@ \label{sturmliouville:sub:tschebyscheff-polynome}} \rhead{Tschebyscheff-Polynome} In diesem Unterkapitel wird anhand der -Tschebyscheff-Differentialgleichung~\eqref{buch:potenzen:tschebyscheff:dgl} gezeigt, dass die Tschebyscheff-Polynome orthogonal zueinander sind. +Tschebyscheff-Differentialgleichung~\eqref{buch:potenzen:tschebyscheff:dgl} +gezeigt, dass die Tschebyscheff-Polynome orthogonal zueinander sind. Zu diesem Zweck werden die Koeffizientenfunktionen nochmals dargestellt, so dass -überprüft werden kann, ob die Randbedingungen erfüllt werden können. +überprüft werden kann, ob die Randbedingungen erfüllt werden. Sobald feststeht, ob das Problem regulär oder singulär ist, zeigt eine kleine Rechnung, dass die Lösungen orthogonal sind. @@ -43,7 +44,7 @@ erhält man \begin{equation} \begin{aligned} k_a y(-1) + h_a p(-1) y'(-1) &= 0\\ - k_b y(1) + h_b p(1) y'(-1) &= 0. + k_b y(1) + h_b p(1) y'(1) &= 0. \end{aligned} \end{equation} Die Funktion $y(x)$ und $y'(x)$ sind in diesem Fall die Tschebyscheff Polynome @@ -62,7 +63,7 @@ damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, beliebige $h_a \ne 0$ und $h_b \ne 0$ gewählt werden. Es wurde somit gezeigt, dass die Sturm-Liouville-Randbedingungen erfüllt sind. -\subsubsection*{Handelt es sich um ein reguläres oder Singuläres Problem?} +\subsubsection*{Handelt es sich um ein reguläres oder singuläres Problem?} Für das reguläre Problem muss laut der Definition~\ref{sturmliouville:def:reguläres_sturm-liouville-problem} die funktion $p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und @@ -92,8 +93,8 @@ Da auch die Randbedingungen erfüllt sind, handelt es sich um ein reguläres Stu \[ \int_{a}^{b} w(x) y_m y_n = 0. \] - Eigesetzt ergibt dies $y_m(x) = T_1(x)$ und $y_n(x) = T_2(x)$, sowie $a=-1$ und $b = 1$ - ergibt + mit $y_m(x) = T_1(x)$ und $y_n(x) = T_2(x)$, sowie $a=-1$ und $b = 1$. + Eigesetzt ergibt dies \[ \begin{aligned} \int_{-1}^{1} \frac{1}{\sqrt{1-x^2}} x (2x^2-1) dx &= -- cgit v1.2.1 From 41ce2627d6ad8179498107414c7b456219db13b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Thu, 25 Aug 2022 21:40:36 +0200 Subject: Removed some TODO's. --- buch/papers/sturmliouville/main.tex | 4 ---- 1 file changed, 4 deletions(-) diff --git a/buch/papers/sturmliouville/main.tex b/buch/papers/sturmliouville/main.tex index 99a043d..887e085 100644 --- a/buch/papers/sturmliouville/main.tex +++ b/buch/papers/sturmliouville/main.tex @@ -9,10 +9,6 @@ \begin{refsection} \chapterauthor{Réda Haddouche und Erik Löffler} -% -> Repetition: Was ist Sturm-Liouville-Problem -% -> Eigenschaften der Lösungen -% -> Beispiele erwähnen - In diesem Kapitel wird zunächst nochmals ein Überblick über das Sturm-Liouville-Problem und dessen Randbedingungen gegeben. Dann wird ein Zusammenhang zwischen reellen symmetrischen Matrizen und -- cgit v1.2.1 From 08f2fa49aebb5880f5b510196f693f4cb68d439d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Thu, 25 Aug 2022 22:36:30 +0200 Subject: Final corrections before pull request. --- buch/papers/sturmliouville/eigenschaften.tex | 87 +--------------------- .../sturmliouville/waermeleitung_beispiel.tex | 67 +++++++++-------- 2 files changed, 37 insertions(+), 117 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index cef276b..8616172 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -116,90 +116,5 @@ Bei einem regulären Sturm-Liouville-Problem ist diese Eigenschaft für $L$ gegeben und wird im Weiteren nicht näher diskutiert. Es kann nun also dank dem Spektralsatz darauf geschlossen werden, dass die -Lösungsfunktion $y$ eises regulären Sturm-Liouville-Problems eine +Lösungsfunktion $y$ eines regulären Sturm-Liouville-Problems eine Linearkombination aus orthogonalen Basisfunktionen sein muss. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% OLD section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\iffalse - -\section{OLD: Eigenschaften von Lösungen -%\label{sturmliouville:section:solution-properties} -} -\rhead{Eigenschaften von Lösungen} - -Im weiteren werden nun die Eigenschaften der Lösungen eines -Sturm-Liouville-Problems diskutiert und aufgezeigt, wie diese Eigenschaften -zustande kommen. - -Dazu wird der Operator $L_0$ welcher bereits in -Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} betrachtet -wurde, noch etwas genauer angeschaut. -Es wird also im Folgenden -\[ - L_0 - = - -\frac{d}{dx}p(x)\frac{d}{dx} -\] -zusammen mit den Randbedingungen -\[ - \begin{aligned} - k_a y(a) + h_a p(a) y'(a) &= 0 \\ - k_b y(b) + h_b p(b) y'(b) &= 0 - \end{aligned} -\] -verwendet. -Wie im Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} bereits -gezeigt, resultieren die Randbedingungen aus der Anforderung den Operator $L_0$ -selbsadjungiert zu machen. -Es wurde allerdings noch nicht darauf eingegangen, welche Eigenschaften dies -für die Lösungen des Sturm-Liouville-Problems zur Folge hat. - -\subsubsection{Exkurs zum Spektralsatz} - -Um zu verstehen welche Eigenschaften der selbstadjungierte Operator $L_0$ in -den Lösungen hervorbringt, wird der Spektralsatz benötigt. - -Dieser wird in der linearen Algebra oft verwendet um zu zeigen, dass eine Matrix -diagonalisierbar ist, beziehungsweise dass eine Orthonormalbasis existiert. - -Im Fall einer gegebenen $n\times n$-Matrix $A$ mit reellen Einträgen wird dazu -zunächst gezeigt, dass $A$ selbstadjungiert ist, also dass -\[ - \langle Av, w \rangle - = - \langle v, Aw \rangle -\] -für $ v, w \in \mathbb{R}^n$ gilt. -Ist dies der Fall, kann die Aussage des Spektralsatzes -\cite{sturmliouville:spektralsatz-wiki} verwended werden. -Daraus folgt dann, dass eine Orthonormalbasis aus Eigenvektoren existiert, -wenn $A$ nur Eigenwerte aus $\mathbb{R}$ besitzt. - -Dies ist allerdings nicht die Einzige Version des Spektralsatzes. -Unter anderen gibt es den Spektralsatz für kompakte Operatoren -\cite{sturmliouville:spektralsatz-wiki}, welcher für das -Sturm-Liouville-Problem von Bedeutung ist. -Welche Voraussetzungen erfüllt sein müssen, um diese Version des -Satzes verwenden zu können, wird hier aber nicht diskutiert und kann bei den -Beispielen in diesem Kapitel als gegeben betrachtet werden. -Grundsätzlich ist die Aussage in dieser Version dieselbe, wie bei den Matrizen, -also dass für ein Operator eine Orthonormalbasis aus Eigenvektoren existiert, -falls er selbstadjungiert ist. - -\subsubsection{Anwendung des Spektralsatzes auf $L_0$} - -Der Spektralsatz besagt also, dass, weil $L_0$ selbstadjungiert ist, eine -Orthonormalbasis aus Eigenvektoren existiert. -Genauer bedeutet dies, dass alle Eigenvektoren, beziehungsweise alle Lösungen -des Sturm-Liouville-Problems orthogonal zueinander sind bezüglich des -Skalarprodukts, in dem $L_0$ selbstadjungiert ist. - -Erfüllt also eine Differenzialgleichung die in -Abschnitt~\ref{sturmliouville:section:teil0} präsentierten Eigenschaften und -erfüllen die Randbedingungen der Differentialgleichung die Randbedingungen -des Sturm-Liouville-Problems, kann bereits geschlossen werden, dass die -Lösungsfunktion des Problems eine Linearkombination aus orthogonalen -Basisfunktionen ist. - -\fi diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index 2104645..0ef1072 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -9,11 +9,12 @@ \rhead{Wärmeleitung in homogenem Stab} In diesem Abschnitt wird das Problem der Wärmeleitung in einem homogenen Stab -betrachtet und wie das Sturm-Liouville-Problem bei der Beschreibung dieses -physikalischen Phänomenes auftritt. +betrachtet, angeschaut wie das Sturm-Liouville-Problem bei der Beschreibung +dieses physikalischen Phänomenes auftritt und hergeleitet wie die Fourierreihe +als Lösung des Problems zustande kommt. Zunächst wird ein eindimensionaler homogener Stab der Länge $l$ und -Wärmeleitkoeffizient $\kappa$ betrachtet dessen initiale Wärmeverteilung durch +Wärmeleitkoeffizient $\kappa$ betrachtet, dessen initiale Wärmeverteilung durch $u(t=0, x)$ gegeben ist. Es ergibt sich für das Wärmeleitungsproblem die partielle Differentialgleichung \begin{equation} @@ -58,7 +59,7 @@ als Randbedingungen. Bei isolierten Enden des Stabes können grundsätzlich beliebige Temperaturen für $x = 0$ und $x = l$ auftreten. -Die einzige Einschränkung liefert die Anfangsbedingung $u(0, x)$. +Die einzige Einschränkung liefert die initiale Wärmeverteilung $u(0, x)$. Im Fall des isolierten Stabes ist es nicht erlaubt, dass Wärme vom Stab an die Umgebung oder von der Umgebung an den Stab abgegeben wird. @@ -144,6 +145,7 @@ diese direkt für $X(x)$ übernomen werden. Es gilt also beispielsweise wegen \eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant}, dass $X(0) = X(l) = 0$. + Damit die Lösungen von $X$ orthogonal sind, müssen nun also die Gleichungen \begin{equation} \begin{aligned} @@ -162,7 +164,7 @@ erfüllt sein und es muss ausserdem \end{equation} gelten. -Um zu verifizieren, ob die Randbedingungen erfüllt sind, werden also die +Um zu verifizieren, dass die Randbedingungen erfüllt sind, werden also die Koeffizientenfunktionen $p(x)$, $q(x)$ und $w(x)$ benötigt. Dazu wird die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} mit der @@ -186,8 +188,8 @@ reguläres Sturm-Liouville-Problem. Es werden nun $p(x)$ und die Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant} -in \eqref{sturmliouville:eq:example-fourier-randbedingungen} eigesetzt und man -erhält +des Stab-Problems in \eqref{sturmliouville:eq:example-fourier-randbedingungen} +eigesetzt und man erhält \[ \begin{aligned} k_a y(0) + h_a y'(0) &= h_a y'(0) = 0 \\ @@ -203,7 +205,7 @@ und $k_b \neq 0$ gewählt werden. Somit ist gezeigt, dass die Randbedingungen des Stab-Problems für Enden auf konstanter Temperatur auch die Sturm-Liouville-Randbedingungen erfüllen. Daraus folg zunächst, dass es sich um ein reguläres Sturm-Liouville-Problem -handelt und weiter, dass alle daraus reultierenden Lösungen orthogonal sind. +handelt und weiter, dass alle daraus resultierenden Lösungen orthogonal sind. Analog dazu kann gezeit werden, dass die Randbedingungen für einen Stab mit isolierten Enden~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-isolated} @@ -285,14 +287,15 @@ Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends und \eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-isolated} benötigt. -Da die Koeffizienten $A$ und $B$, sowie die Parameter $\alpha$ uns $\beta$ im -allgemeninen ungleich $0$ sind, müssen die Randbedingungen durch die +Da die Koeffizienten $A$ und $B$, sowie die Parameter $\alpha$ und $\beta$ im +allgemeinen ungleich $0$ sind, müssen die Randbedingungen durch die trigonometrischen Funktionen erfüllt werden. Es werden nun die Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant} für einen Stab mit Enden auf konstanter Temperatur in die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} eingesetzt. + Betrachten wir zunächst die Bedingung für $x = 0$. Dies fürht zu \[ @@ -315,7 +318,6 @@ sich B \sin(\beta l) = 0. \] - $\beta$ muss also so gewählt werden, dass $\sin(\beta l) = 0$ gilt. Es bleibt noch nach $\beta$ aufzulösen: \[ @@ -335,11 +337,11 @@ Ausserdem ist zu bemerken, dass dies auch gleich $-\alpha^{2}$ ist. Da aber $A = 0$ gilt und der Summand mit $\alpha$ verschwindet, ist dies keine Verletzung der Randbedingungen. -Durch alanoges Vorgehen kann nun auch das Problem mit isolierten Enden gelöst +Durch analoges Vorgehen kann nun auch das Problem mit isolierten Enden gelöst werden. -Setzt man nun die +Setzt man die Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-isolated} -in $X^{\prime}$ ein, beginnend für $x = 0$, ergibt sich +in $X^{\prime}$ ein, beginnend mit $x = 0$, ergibt sich \[ X^{\prime}(0) = @@ -358,7 +360,7 @@ folgt nun = 0. \] -Wiedrum muss über die $\sin$-Funktion sicher gestellt werden, dass der +Wiederum muss über die $\sin$-Funktion sicher gestellt werden, dass der Ausdruck den Randbedingungen entspricht. Es folgt nun \[ @@ -385,7 +387,7 @@ wie auch für den Stab mit isolierten Enden \subsubsection{Fourierreihe als Lösung} Das Resultat~\eqref{sturmliouville:eq:example-fourier-mu-solution} gibt nun -wegen der neuen Variablen $n \in \mathbb{N}_0$ vor, dass es potentiell +wegen der neuen Variablen $n \in \mathbb{N}_0$ vor, dass es potenziell unendlich viele Lösungen gibt. Dies bedeutet auch, dass es nicht ein $A$ und ein $B$ gibt, sondern einen Koeffizienten für jede Lösungsfunktion. @@ -399,15 +401,15 @@ Wir schreiben deshalb den Lösungsansatz zur Linearkombination \] aus allen möglichen Lösungen um. -Als nächstes werden noch die Summanden für $n = 0$ aus den Summen herausgezogen, -da +Als nächstes werden noch die Summanden für $n = 0$ aus den Summen herausgezogen. +Da \[ \begin{aligned} a_0 \cos\left(\frac{0 \pi}{l}\right) &= a_0 \\ b_0 \sin\left(\frac{0 \pi}{l}\right) &= 0 \end{aligned} \] -gilt endet man somit bei +gilt, endet man somit bei \[ X(x) = @@ -483,13 +485,13 @@ gebildet: Bevor diese Form in die Integralform umgeschrieben werden kann, muss überlegt sein, welche Integralgrenzen zu verwenden sind. In diesem Fall haben die $\sin$ und $\cos$ Terme beispielsweise keine ganze -Periode im Intervall $x \in [0, l]$ für ungerade $n$ und $m$. +Periode im Intervall $x \in [0, l]$ für ungerade $n$ und ungerade $m$. Um die Skalarprodukte aber korrekt zu berechnen, muss über ein ganzzahliges Vielfaches der Periode der trigonometrischen Funktionen integriert werden. Dazu werden die Integralgrenzen $-l$ und $l$ verwendet und es werden ausserdem neue Funktionen $\hat{u}_c(0, x)$ für die Berechnung mit Cosinus und $\hat{u}_s(0, x)$ für die Berechnung mit Sinus angenomen, welche $u(0, t)$ -gerade, respektive ungerade auf $[-l, l]$ fortsetzen: +gerade, respektive ungerade auf $[-l, 0]$ fortsetzen: \[ \begin{aligned} \hat{u}_c(0, x) @@ -511,21 +513,22 @@ gerade, respektive ungerade auf $[-l, l]$ fortsetzen: \] Diese Funktionen wurden gerade so gewählt, dass nun das Resultat der Integrale -um den Faktor zwei skalliert wurde, also gilt +um den Faktor zwei skalliert wurde. +Es gilt also \[ -\begin{aligned} \int_{-l}^{l}\hat{u}_c(0, x)\cos\left(\frac{m \pi}{l}x\right)dx - &= + = 2\int_{0}^{l}u(0, x)\cos\left(\frac{m \pi}{l}x\right)dx - \\ +\] +und +\[ \int_{-l}^{l}\hat{u}_s(0, x)\sin\left(\frac{m \pi}{l}x\right)dx - &= + = 2\int_{0}^{l}u(0, x)\sin\left(\frac{m \pi}{l}x\right)dx. -\end{aligned} \] -Zunächst wird nun das Skalaprodukt~\eqref{sturmliouville:eq:dot-product-cosine} -berechnet: +Als nächstes wird nun das +Skalaprodukt~\eqref{sturmliouville:eq:dot-product-cosine} berechnet: \[ \begin{aligned} \int_{-l}^{l}\hat{u}_c(0, x)\cos\left(\frac{m \pi}{l}x\right)dx @@ -574,13 +577,15 @@ orthogonal zueinander stehen und \] da Sinus- und Cosinus-Funktionen ebenfalls orthogonal zueinander sind. -Es bleibt also lediglich der Summand für $a_m$ stehen, was die Gleichung zu +Es bleibt also lediglich der Summand mit $a_m$ stehen, was die Gleichung zu \[ 2\int_{0}^{l}u(0, x)\cos\left(\frac{m \pi}{l}x\right)dx = a_m\int_{-l}^{l}\cos^2\left(\frac{m\pi}{l}x\right)dx \] -vereinfacht. Im nächsten Schritt wird nun das Integral auf der rechten Seite +vereinfacht. + +Im nächsten Schritt wird nun das Integral auf der rechten Seite berechnet und dann nach $a_m$ aufgelöst. Am einnfachsten geht dies, wenn zuerst mit $u = \frac{m \pi}{l}x$ substituiert wird: \[ -- cgit v1.2.1 From 0b3bf5fb8563de4eb3d51e803718baf018e35c10 Mon Sep 17 00:00:00 2001 From: haddoucher Date: Fri, 26 Aug 2022 10:50:47 +0200 Subject: Korrekturen Wahrscheinlich die letzten --- buch/papers/sturmliouville/beispiele.tex | 9 --------- buch/papers/sturmliouville/einleitung.tex | 6 +++--- buch/papers/sturmliouville/main.tex | 13 +++++++++---- .../papers/sturmliouville/tschebyscheff_beispiel.tex | 16 ++++++++-------- .../papers/sturmliouville/waermeleitung_beispiel.tex | 20 ++++++++++---------- 5 files changed, 30 insertions(+), 34 deletions(-) diff --git a/buch/papers/sturmliouville/beispiele.tex b/buch/papers/sturmliouville/beispiele.tex index c0a6e8f..82046ba 100644 --- a/buch/papers/sturmliouville/beispiele.tex +++ b/buch/papers/sturmliouville/beispiele.tex @@ -3,12 +3,3 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Beispiele -\label{sturmliouville:sec:examples}} -\rhead{Beispiele} - -% Fourier: Erik work -\input{papers/sturmliouville/waermeleitung_beispiel.tex} - -% Tschebyscheff -\input{papers/sturmliouville/tschebyscheff_beispiel.tex} \ No newline at end of file diff --git a/buch/papers/sturmliouville/einleitung.tex b/buch/papers/sturmliouville/einleitung.tex index 6c5fb59..9912595 100644 --- a/buch/papers/sturmliouville/einleitung.tex +++ b/buch/papers/sturmliouville/einleitung.tex @@ -36,7 +36,7 @@ Wenn die lineare homogene Differentialgleichung als \begin{equation} \label{sturmliouville:eq:sturm-liouville-equation} - \frac{d}{dx} (p(x) \frac{dy}{dx}) + (q(x) + + \frac{d}{dx} \biggl ( p(x) \frac{dy}{dx}\biggr ) + (q(x) + \lambda w(x)) y = 0 @@ -49,12 +49,12 @@ in die Form der Gleichung \eqref{sturmliouville:eq:sturm-liouville-equation} umgewandelt werden. Damit es sich um ein Sturm-Liouville-Problem handelt, benötigt es noch die -Randbedingungen, die im nächsten Unterkapitel behandelt wird. +Randbedingungen, die im nächsten Unterkapitel behandelt werden. \subsection{Randbedingungen \label{sturmliouville:sub:was-ist-das-slp-randbedingungen}} Geeignete Randbedingungen sind erforderlich, um die Lösungen einer -Differentialgleichung genau zu bestimmen. +Differentialgleichung eindeutig zu bestimmen. Die Sturm-Liouville-Gleichung mit homogenen Randbedingungen des dritten Typs \begin{equation} \begin{aligned} diff --git a/buch/papers/sturmliouville/main.tex b/buch/papers/sturmliouville/main.tex index a36e85a..9d4ce96 100644 --- a/buch/papers/sturmliouville/main.tex +++ b/buch/papers/sturmliouville/main.tex @@ -23,12 +23,17 @@ Zuletzt wird anhand von zwei Beispielen gezeigt, dass durch das Sturm-Liouville-Problem die Eigenschaften der Lösungen bereits vor dem vollständingen Lösen der Beispiele bekannt sind. -\input{papers/sturmliouville/einleitung.tex} %einleitung "was ist das sturm-liouville-problem" -\input{papers/sturmliouville/eigenschaften.tex} +\input{papers/sturmliouville/einleitung.tex} + %Eigenschaften von Lösungen eines solchen Problems -\input{papers/sturmliouville/beispiele.tex} -%Beispiele sind: Wärmeleitung in einem Stab, Tschebyscheff-Polynome +\input{papers/sturmliouville/eigenschaften.tex} + +% Fourier: Erik work +\input{papers/sturmliouville/waermeleitung_beispiel.tex} + +% Tschebyscheff +\input{papers/sturmliouville/tschebyscheff_beispiel.tex} \printbibliography[heading=subbibliography] \end{refsection} diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index dfc6798..d5c2dc6 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -4,7 +4,7 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\subsection{Tschebyscheff-Polynome +\section{Tschebyscheff-Polynome \label{sturmliouville:sub:tschebyscheff-polynome}} \rhead{Tschebyscheff-Polynome} In diesem Unterkapitel wird anhand der @@ -14,7 +14,7 @@ Zu diesem Zweck werden die Koeffizientenfunktionen nochmals dargestellt, so dass Sobald feststeht, ob das Problem regulär oder singulär ist, zeigt eine kleine Rechnung, dass die Lösungen orthogonal sind. -\subsubsection*{Definition der Koeffizientenfunktion} +\subsection*{Definition der Koeffizientenfunktion} Im Kapitel \ref{sub:beispiele_sturm_liouville_problem} sind die Koeffizientenfunktionen, die man braucht, schon aufgelistet: \begin{align*} @@ -25,8 +25,8 @@ Koeffizientenfunktionen, die man braucht, schon aufgelistet: Da die Sturm-Liouville-Gleichung \begin{equation} \label{eq:sturm-liouville-equation-tscheby} - \frac{d}{dx} (\sqrt{1-x^2} \frac{dy}{dx}) + - (0 + \lambda \frac{1}{\sqrt{1-x^2}}) y + \frac{d}{dx} \biggl (\sqrt{1-x^2} \frac{dy}{dx}\biggr ) + + \biggl (0 + \lambda \frac{1}{\sqrt{1-x^2}}\biggr ) y = 0 \end{equation} @@ -34,7 +34,7 @@ nun mit den Koeffizientenfunktionen aufgestellt werden kann, bleibt die Frage, ob es sich um ein reguläres oder singuläres Sturm-Liouville-Problem handelt. Zunächst werden jedoch die Randbedingungen betrachtet. -\subsubsection*{Randwertproblem} +\subsection*{Randwertproblem} Für die Verifizierung der Randbedingungen benötigt man erneut $p(x)$. Die Randwerte setzt man $a = -1$ und $b = 1$. Beim Einsetzen in die Randbedingung \eqref{sturmliouville:eq:randbedingungen}, @@ -61,7 +61,7 @@ damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, beliebige $h_a \ne 0$ und $h_b \ne 0$ gewählt werden. Es wurde somit gezeigt, dass die Sturm-Liouville-Randbedingungen erfüllt sind. -\subsubsection*{Handelt es sich um ein reguläres oder Singuläres Problem?} +\subsection*{Handelt es sich um ein reguläres oder Singuläres Problem?} Für das reguläre Problem muss laut der Definition~\ref{sturmliouville:def:reguläres_sturm-liouville-problem} die funktion $p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und @@ -89,14 +89,14 @@ Da auch die Randbedingungen erfüllt sind, handelt es sich um ein reguläres Stu illustriert. Dazu verwendet man das Skalarprodukt \[ - \int_{a}^{b} w(x) y_m y_n = 0. + \int_{a}^{b} w(x) y_m(x) y_n(x) = 0. \] Eigesetzt ergibt dies $y_m(x) = T_1(x)$ und $y_n(x) = T_2(x)$, sowie $a=-1$ und $b = 1$ ergibt \[ \begin{aligned} \int_{-1}^{1} \frac{1}{\sqrt{1-x^2}} x (2x^2-1) dx &= - \lbrack - \frac{\sqrt{1-x^2}(2x^2+1)}{3}\rbrack_{-1}^{1}\\ + \biggl [ - \frac{\sqrt{1-x^2}(2x^2+1)}{3} \biggr ]_{-1}^{1}\\ &= 0. \end{aligned} \] diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index 356e259..f888d02 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -5,7 +5,7 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\subsection{Fourierreihe als Lösung des Sturm-Liouville-Problems +\section{Fourierreihe als Lösung des Sturm-Liouville-Problems (Wärmeleitung)} In diesem Abschnitt wird das Problem der Wärmeleitung in einem homogenen Stab @@ -34,7 +34,7 @@ Tempreatur gehalten werden. % % Randbedingungen für Stab mit konstanten Endtemperaturen % -\subsubsection{Randbedingungen für Stab mit Enden auf konstanter Temperatur} +\subsection{Randbedingungen für Stab mit Enden auf konstanter Temperatur} Die Enden des Stabes auf konstanter Temperatur zu halten bedeutet, dass die Lösungsfunktion $u(t,x)$ bei $x = 0$ und $x = l$ nur die vorgegebene @@ -54,7 +54,7 @@ als Randbedingungen. % Randbedingungen für Stab mit isolierten Enden % -\subsubsection{Randbedingungen für Stab mit isolierten Enden} +\subsection{Randbedingungen für Stab mit isolierten Enden} Bei isolierten Enden des Stabes können beliebige Temperaturen für $x = 0$ und $x = l$ auftreten. In diesem Fall ist es nicht erlaubt, dass Wärme vom Stab @@ -80,7 +80,7 @@ als Randbedingungen. % Lösung der Differenzialgleichung mittels Separation % -\subsubsection{Lösung der Differenzialgleichung} +\subsection{Lösung der Differenzialgleichung} Da die Lösungsfunktion von zwei Variablen abhängig ist, wird als Lösungsansatz die Separationsmethode verwendet. @@ -191,7 +191,7 @@ somit auch zu orthogonalen Lösungen führen. % Lösung von X(x), Teil mu % -\subsubsection{Lösund der Differentialgleichung in $x$} +\subsection{Lösund der Differentialgleichung in $x$} Als erstes wird auf die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} eingegangen. Aufgrund der Struktur der Gleichung @@ -360,10 +360,10 @@ wie auch mit isolierten Enden \end{equation} % TODO: infinite base vectors and fourier series -\subsubsection{TODO: Auf Anzahl Lösungen und Fourierreihe eingehen} +\subsection{TODO: Auf Anzahl Lösungen und Fourierreihe eingehen} % TODO: check ease of reading -\subsubsection{Berechnung der Koeffizienten} +\subsection{Berechnung der Koeffizienten} % TODO: move explanation A/B -> a_n/b_n to fourier subsection @@ -625,7 +625,7 @@ Es bleibt also noch % Lösung von T(t) % -\subsubsection{Lösung der Differentialgleichung in $t$} +\subsection{Lösung der Differentialgleichung in $t$} Zuletzt wird die zweite Gleichung der Separation~\eqref{sturmliouville:eq:example-fourier-separated-t} betrachtet. Diese wird über das charakteristische Polynom @@ -656,7 +656,7 @@ werden um die vollständige Lösung für das Stab-Problem zu erhalten. % TODO: elaborate -\subsubsection{Lösung für einen Stab mit Enden auf konstanter Temperatur} +\subsection{Lösung für einen Stab mit Enden auf konstanter Temperatur} \[ \begin{aligned} u(t,x) @@ -670,7 +670,7 @@ werden um die vollständige Lösung für das Stab-Problem zu erhalten. \end{aligned} \] -\subsubsection{Lösung für einen Stab mit isolierten Enden} +\subsection{Lösung für einen Stab mit isolierten Enden} \[ \begin{aligned} u(t,x) -- cgit v1.2.1 From c73e95e3b92f7e4552e24466e4de956ec5ce2d16 Mon Sep 17 00:00:00 2001 From: Alain Date: Fri, 26 Aug 2022 11:07:32 +0200 Subject: final? --- buch/papers/parzyl/teil0.tex | 2 +- buch/papers/parzyl/teil1.tex | 5 ++++- buch/papers/parzyl/teil2.tex | 4 ++-- buch/papers/parzyl/teil3.tex | 15 ++++++++++----- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/buch/papers/parzyl/teil0.tex b/buch/papers/parzyl/teil0.tex index eb1a152..e6d27b9 100644 --- a/buch/papers/parzyl/teil0.tex +++ b/buch/papers/parzyl/teil0.tex @@ -202,7 +202,7 @@ Mit dem Laplace Operator aus \eqref{parzyl:eq:laplaceInParZylCor} lautet die Hel = \lambda f(\sigma,\tau,z). \end{equation} -Diese partielle Differentialgleichung kann mit Hilfe von Separation gelöst werden, dazu wird +Diese partielle Differentialgleichung kann mit Hilfe von Separation gelöst werden. Dazu wird \begin{equation} f(\sigma,\tau,z) = g(\sigma)h(\tau)i(z) \end{equation} diff --git a/buch/papers/parzyl/teil1.tex b/buch/papers/parzyl/teil1.tex index e6a55b2..1f9db85 100644 --- a/buch/papers/parzyl/teil1.tex +++ b/buch/papers/parzyl/teil1.tex @@ -6,7 +6,10 @@ \section{Lösung \label{parzyl:section:teil1}} \rhead{Lösung} -\subsection{Lösung harmonischer Oszillator} +Zur Lösung der Helmholtz-Gleichung müssen erst die Lösungen der separierten +Differentialgleichungen \eqref{parzyl:sep_dgl_1} bis \eqref{parzyl:sep_dgl_3} +gefunden werden. +\subsection{Lösung der Schwingungsgleichung \eqref{parzyl:sep_dgl_3}} \eqref{parzyl:sep_dgl_3} beschriebt einen ungedämpften harmonischen Oszillator. Die Lösung ist somit \begin{equation} diff --git a/buch/papers/parzyl/teil2.tex b/buch/papers/parzyl/teil2.tex index 1b63c8e..705dbef 100644 --- a/buch/papers/parzyl/teil2.tex +++ b/buch/papers/parzyl/teil2.tex @@ -14,7 +14,7 @@ Die parabolischen Zylinderfunktionen können auch als Potenzreihen geschrieben werden. Parabolische Zylinderfunktionen sind Linearkombinationen $A(\alpha)w_1(\alpha, x) + B(\alpha)w_2(\alpha, x)$ aus einem geraden Teil $w_1(\alpha, x)$ -und einem ungeraden Teil $w_2(\alpha, x)$, welche als Potenzreihen +und einem ungeraden Teil $w_2(\alpha, x)$, welche als Potenzreihen geschrieben \begin{align} w_1(\alpha,x) &= @@ -75,7 +75,7 @@ Dies geschieht bei $w_1(\alpha,x)$, falls \begin{equation} \alpha = -n \qquad n \in \mathbb{N}_0 % \sigma = U(x,y) = \sqrt{\frac{\sqrt{x^2+y^2} + x}{2}}. - c_1 = U(x,y) = \sqrt{\frac{\sqrt{x^2+y^2} + x}{2}}. +% c_1 = U(x,y) = \sqrt{\frac{\sqrt{x^2+y^2} + x}{2}}. \end{equation} und bei $w_2(\alpha,x)$ falls \begin{equation} diff --git a/buch/papers/parzyl/teil3.tex b/buch/papers/parzyl/teil3.tex index 12c28fe..4176b55 100644 --- a/buch/papers/parzyl/teil3.tex +++ b/buch/papers/parzyl/teil3.tex @@ -15,8 +15,9 @@ Die parabolischen Zylinderkoordinaten tauchen auf, wenn man das elektrische Feld \caption{Semi-infinite Leiterplatte} \label{parzyl:fig:leiterplatte} \end{figure} -Die Äquipotentiallinien sind dabei in rot ,die des elektrischen Feldes in grün und semi-infinite Platte ist in blau dargestellt. -Das dies so ist kann im Zweidimensionalen mit Hilfe von komplexen Funktionen gezeigt werden. Die Platte ist dann nur eine Halbgerade, was man in Abbildung \ref{parzyl:fig:leiterplatte_2d} sieht. +Die Äquipotentiallinien sind dabei in rot, die des elektrischen Feldes in grün und +semi-infinite Platte ist in blau dargestellt. +Das dies so ist, kann im Zweidimensionalen mit Hilfe von komplexen Funktionen gezeigt werden. Die Platte ist dann nur eine Halbgerade, was man in Abbildung \ref{parzyl:fig:leiterplatte_2d} sieht. \begin{figure} \centering \includegraphics[width=0.6\textwidth]{papers/parzyl/img/Plane_2D.png} @@ -95,9 +96,9 @@ Dies kann umgeformt werden zu \begin{equation} F(s) = - \underbrace{\sqrt{\frac{\sqrt{x^2+y^2} + x}{2}}}_{U(x,y)} + \underbrace{\sqrt{\frac{\sqrt{x^2+y^2} + x}{2}}}_{\displaystyle{U(x,y)}} + - i\underbrace{\sqrt{\frac{\sqrt{x^2+y^2} - x}{2}}}_{V(x,y)} + i\underbrace{\sqrt{\frac{\sqrt{x^2+y^2} - x}{2}}}_{\displaystyle{V(x,y)}} . \end{equation} @@ -143,7 +144,11 @@ Werden diese Formeln nun nach $x$ und $y$ aufgelöst so beschreiben sie mit $\tau = c_1 \sqrt{2}$ und $\sigma = c_2 \sqrt{2}$ die Beziehung zwischen dem parabolischen Zylinderkoordinatensystem und dem kartesischen Koordinatensystem. -Nun wurde gezeigt wieso sich das parabolische Zylinderkoordinatensystem am besten eignet um das Potential und das elektrische Feld einer semi-infiniten Leiterplatte zu beschreien. Falls man nun die Helmholtz-Gleichung in diesem Bereich lösen müsste, da man zum Beispiel am Verhalten einer elektromagnetischne Welle in der Nähe der Platte interessiert wäre, so würde man auf die parabolischen Zylinderfunktionen kommen. +Nun wurde gezeigt, wieso sich das parabolische Zylinderkoordinatensystem am besten eignet, um +das Potential und das elektrische Feld einer semi-infiniten Leiterplatte zu beschreiben. +Um die Helmholtz-Gleichung in diesem Bereich zu lösen, +da man zum Beispiel am Verhalten einer elektromagnetische Welle in der Nähe +der Platte interessiert ist, kann man jetzt die parabolischen Zylinderfunktionen verwenden. %Werden diese Formeln nun nach $x$ und $y$ aufgelöst %\begin{equation} % x = \sigma \tau, -- cgit v1.2.1 From 14cc0d2e128ce21fdeddc47f29e4b462bc65c0d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Fri, 26 Aug 2022 11:54:13 +0200 Subject: Cleaned up folder. --- buch/papers/sturmliouville/Makefile.inc | 1 - buch/papers/sturmliouville/beispiele.tex | 5 ----- buch/papers/sturmliouville/waermeleitung_beispiel.tex | 4 ++-- 3 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 buch/papers/sturmliouville/beispiele.tex diff --git a/buch/papers/sturmliouville/Makefile.inc b/buch/papers/sturmliouville/Makefile.inc index 7ffdad2..4000fa7 100644 --- a/buch/papers/sturmliouville/Makefile.inc +++ b/buch/papers/sturmliouville/Makefile.inc @@ -9,6 +9,5 @@ dependencies-sturmliouville = \ papers/sturmliouville/references.bib \ papers/sturmliouville/einleitung.tex \ papers/sturmliouville/eigenschaften.tex \ - papers/sturmliouville/beispiele.tex \ papers/sturmliouville/waermeleitung_beispiel.tex \ papers/sturmliouville/tschebyscheff_beispiel.tex diff --git a/buch/papers/sturmliouville/beispiele.tex b/buch/papers/sturmliouville/beispiele.tex deleted file mode 100644 index 82046ba..0000000 --- a/buch/papers/sturmliouville/beispiele.tex +++ /dev/null @@ -1,5 +0,0 @@ -% -% teil2.tex -- Beispiel-File für teil2 -% -% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil -% diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index 290bf35..19dad5e 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -216,7 +216,7 @@ somit auch zu orthogonalen Lösungen führen. % Lösung von X(x), Teil mu % -\subsection{Lösund der Differentialgleichung in $x$} +\subsection{Lösung der Differentialgleichung in \texorpdfstring{$x$}{x}} Als erstes wird auf die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} eingegangen. Aufgrund der Struktur der Gleichung @@ -684,7 +684,7 @@ was sich wie folgt nach $a_0$ auflösen lässt: % Lösung von T(t) % -\subsection{Lösung der Differentialgleichung in $t$} +\subsection{Lösung der Differentialgleichung in \texorpdfstring{$t$}{t}} Zuletzt wird die zweite Gleichung der Separation~\eqref{sturmliouville:eq:example-fourier-separated-t} betrachtet. Dazu betrachtet man das charakteristische Polynom -- cgit v1.2.1 From 241305e4f895dfb63b57a9e54b6ec661f8999c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Fri, 26 Aug 2022 13:18:40 +0200 Subject: Grammar and formatting mistakes corrected in solution properties and fourier example. --- buch/papers/sturmliouville/eigenschaften.tex | 18 ++--------- .../sturmliouville/waermeleitung_beispiel.tex | 36 +++++++++++----------- 2 files changed, 20 insertions(+), 34 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 8616172..fc9c3da 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -5,20 +5,6 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -% TODO: -% state goal -% use only what is necessary -% make sure it is easy enough to understand (sentences as shot as possible) -% -> Eigenvalue problem with matrices only -% -> prepare reader for following examples -% -% order: -% 1. Eigenvalue problems with matrices -% 2. Sturm-Liouville is an Eigenvalue problem -% 3. Sturm-Liouville operator (self-adjacent) -% 4. Spectral theorem (brief) -% 5. Base of orthonormal functions - \section{Eigenschaften von Lösungen \label{sturmliouville:sec:solution-properties}} \rhead{Eigenschaften von Lösungen} @@ -99,9 +85,9 @@ Analog zur Matrix $A$ aus Abschnitt~\ref{sturmliouville:sec:eigenvalue-problem-matrix} kann auch für $L$ gezeigt werden, dass dieser Operator selbstadjungiert ist, also dass \[ - \langle L v, w\rangle + \langle L u, v\rangle = - \langle v, L w\rangle + \langle u, L v\rangle \] gilt. Wie in Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} bereits diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index 19dad5e..30ba8f6 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -5,12 +5,11 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Fourierreihe als Lösung des Sturm-Liouville-Problems -(Wärmeleitung)} +\section{Wärmeleitung in homogenem Stab} In diesem Abschnitt wird das Problem der Wärmeleitung in einem homogenen Stab betrachtet, angeschaut wie das Sturm-Liouville-Problem bei der Beschreibung -dieses physikalischen Phänomenes auftritt und hergeleitet wie die Fourierreihe +dieses physikalischen Phänomens auftritt und hergeleitet wie die Fourierreihe als Lösung des Problems zustande kommt. Zunächst wird ein eindimensionaler homogener Stab der Länge $l$ und @@ -113,7 +112,7 @@ der neuen Variablen $\mu$ gekoppelt werden: = \frac{X^{\prime \prime}(x)}{X(x)} = - \mu + \mu. \] Durch die Einführung von $\mu$ kann das Problem nun in zwei separate Differenzialgleichungen aufgeteilt werden: @@ -127,7 +126,7 @@ Differenzialgleichungen aufgeteilt werden: \label{sturmliouville:eq:example-fourier-separated-t} T^{\prime}(t) - \kappa \mu T(t) = - 0 + 0. \end{equation} % @@ -137,7 +136,7 @@ Differenzialgleichungen aufgeteilt werden: Es ist an dieser Stelle zu bemerken, dass die Gleichung in $x$ in Sturm-Liouville-Form ist. Erfüllen die Randbedingungen des Stab-Problems auch die Randbedingungen des -Sturm-Liouville-Problems, kann bereits die Aussage getroffen werden, dass alle +Sturm-Liouville-Problems, kann bereits die Aussage gemacht werden, dass alle Lösungen für die Gleichung in $x$ orthogonal sein werden. Da die Bedingungen des Stab-Problems nur Anforderungen an $x$ stellen, können @@ -259,14 +258,14 @@ ergibt dies = 0 \] -und durch umformen somit +und durch Umformen somit \[ -\alpha^{2}A\cos(\alpha x) - \beta^{2}B\sin(\beta x) = \mu A\cos(\alpha x) + \mu B\sin(\beta x). \] -Mittels Koeffizientenvergleich von +Mittels Koeffizientenvergleich auf beiden Seiten von \[ \begin{aligned} -\alpha^{2}A\cos(\alpha x) @@ -297,7 +296,7 @@ für einen Stab mit Enden auf konstanter Temperatur in die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} eingesetzt. Betrachten wir zunächst die Bedingung für $x = 0$. -Dies fürht zu +Dies führt zu \[ X(0) = @@ -324,7 +323,7 @@ Es bleibt noch nach $\beta$ aufzulösen: \begin{aligned} \sin(\beta l) &= 0 \\ \beta l &= n \pi \qquad n \in \mathbb{N}_0 \\ - \beta &= \frac{n \pi}{l} \qquad n \in \mathbb{N}_0 + \beta &= \frac{n \pi}{l} \qquad n \in \mathbb{N}_0. \end{aligned} \] @@ -472,14 +471,14 @@ Skalarprodukt mit der Basisfunktion $ \cos\left(\frac{m \pi}{l}x\right)$ gebildet: \begin{equation} \label{sturmliouville:eq:dot-product-cosine} - \langle u(0, x), \cos\left(\frac{m \pi}{l}x\right) \rangle + \biggl\langle u(0, x), \cos\left(\frac{m \pi}{l}x\right) \biggr\rangle = - \langle a_0 + \biggl\langle a_0 + \sum_{n = 1}^{\infty} a_n\cos\left(\frac{n\pi}{l}x\right) + \sum_{n = 1}^{\infty} b_n\sin\left(\frac{n\pi}{l}x\right), - \cos\left(\frac{m \pi}{l}x\right)\rangle + \cos\left(\frac{m \pi}{l}x\right)\biggr\rangle \end{equation} Bevor diese Form in die Integralform umgeschrieben werden kann, muss überlegt @@ -513,7 +512,7 @@ gerade, respektive ungerade auf $[-l, 0]$ fortsetzen: \] Diese Funktionen wurden gerade so gewählt, dass nun das Resultat der Integrale -um den Faktor zwei skalliert wurde. +um den Faktor $2$ skalliert wurde. Es gilt also \[ \int_{-l}^{l}\hat{u}_c(0, x)\cos\left(\frac{m \pi}{l}x\right)dx @@ -586,8 +585,9 @@ Es bleibt also lediglich der Summand mit $a_m$ stehen, was die Gleichung zu vereinfacht. Im nächsten Schritt wird nun das Integral auf der rechten Seite -berechnet und dann nach $a_m$ aufgelöst. Am einnfachsten geht dies, wenn zuerst -mit $u = \frac{m \pi}{l}x$ substituiert wird: +berechnet und dann nach $a_m$ aufgelöst. +Am einfachsten geht dies, wenn zuerst mit $u = \frac{m \pi}{l}x$ substituiert +wird: \[ \begin{aligned} 2\int_{0}^{l}u(0, x)\cos\left(\frac{m \pi}{l}x\right)dx @@ -609,7 +609,7 @@ mit $u = \frac{m \pi}{l}x$ substituiert wird: \\ a_m &= - \frac{2}{l} \int_{0}^{l}u(0, x)\cos\left(\frac{m \pi}{l}x\right)dx + \frac{2}{l} \int_{0}^{l}u(0, x)\cos\left(\frac{m \pi}{l}x\right)dx. \end{aligned} \] @@ -676,7 +676,7 @@ was sich wie folgt nach $a_0$ auflösen lässt: \\ a_0 &= - \frac{1}{l} \int_{0}^{l}u(0, x)dx + \frac{1}{l} \int_{0}^{l}u(0, x)dx. \end{aligned} \] -- cgit v1.2.1 From ad4935f4a4cf53e4456b7bef5fbf4462e8a03f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Fri, 26 Aug 2022 13:46:45 +0200 Subject: Adjusted sections/subsections in fourier example. --- buch/papers/sturmliouville/waermeleitung_beispiel.tex | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index 30ba8f6..c01a164 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -5,7 +5,7 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Wärmeleitung in homogenem Stab} +\section{Beispiel: Wärmeleitung in homogenem Stab} In diesem Abschnitt wird das Problem der Wärmeleitung in einem homogenen Stab betrachtet, angeschaut wie das Sturm-Liouville-Problem bei der Beschreibung @@ -34,7 +34,8 @@ werden. % % Randbedingungen für Stab mit konstanten Endtemperaturen % -\subsection{Randbedingungen für Stab mit Enden auf konstanter Temperatur} +\subsection{Randbedingungen} +\subsubsection{Randbedingungen für Stab mit Enden auf konstanter Temperatur} Die Enden des Stabes auf konstanter Temperatur zu halten bedeutet, dass die Lösungsfunktion $u(t,x)$ bei $x = 0$ und $x = l$ nur die vorgegebene @@ -54,7 +55,7 @@ als Randbedingungen. % Randbedingungen für Stab mit isolierten Enden % -\subsection{Randbedingungen für Stab mit isolierten Enden} +\subsubsection{Randbedingungen für Stab mit isolierten Enden} Bei isolierten Enden des Stabes können grundsätzlich beliebige Temperaturen für $x = 0$ und $x = l$ auftreten. @@ -82,7 +83,7 @@ als Randbedingungen. % Lösung der Differenzialgleichung mittels Separation % -\subsection{Lösung der Differenzialgleichung} +\subsection{Separation der Differenzialgleichung} Da die Lösungsfunktion $u$ von zwei Variablen abhängig ist, wird die Gleichung~\eqref{sturmliouville:eq:example-fourier-heat-equation} zunächst @@ -716,10 +717,12 @@ führt und mit dem Resultat~\eqref{sturmliouville:eq:example-fourier-mu-solution \] ergibt. -Dieses Resultat kann nun mit allen vorhergehenden Resultaten zusammengesetzt +\subsection{Lösung des Wärmeleitungsproblems} + +Nun können alle vorhergehenden Resultate zusammengesetzt werden um die vollständige Lösung für das Stab-Problem zu erhalten. -\subsection{Lösung für einen Stab mit Enden auf konstanter Temperatur} +\subsubsection{Lösung für einen Stab mit Enden auf konstanter Temperatur} \[ \begin{aligned} u(t,x) @@ -733,7 +736,7 @@ werden um die vollständige Lösung für das Stab-Problem zu erhalten. \end{aligned} \] -\subsection{Lösung für einen Stab mit isolierten Enden} +\subsubsection{Lösung für einen Stab mit isolierten Enden} \[ \begin{aligned} u(t,x) -- cgit v1.2.1 From b974a188da38b2ce84423718df982561630f8448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Fri, 26 Aug 2022 14:27:04 +0200 Subject: Reordered small section in fourier example to make more sense. --- .../sturmliouville/waermeleitung_beispiel.tex | 62 ++++++++++++---------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index c01a164..f346fa2 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -131,14 +131,33 @@ Differenzialgleichungen aufgeteilt werden: \end{equation} % -% Überprüfung Orthogonalität der Lösungen +% Überprüfung SLP, dann Orthogonalität der Lösungen % -Es ist an dieser Stelle zu bemerken, dass die Gleichung in $x$ in -Sturm-Liouville-Form ist. -Erfüllen die Randbedingungen des Stab-Problems auch die Randbedingungen des -Sturm-Liouville-Problems, kann bereits die Aussage gemacht werden, dass alle -Lösungen für die Gleichung in $x$ orthogonal sein werden. +An dieser Stelle wird nun gezeigt, dass die Gleichung in $x$ ein +Sturm-Liouville-Problem ist. +Dazu werden zunächst die Koeffizientenfunktionen $p(x)$, $q(x)$ und $w(x)$ +benötigt. +Dafür wird die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} +mit der +Sturm-Liouville-Form~\eqref{sturmliouville:eq:sturm-liouville-equation} +verglichen, was zu +\[ +\begin{aligned} + p(x) &= 1 \\ + q(x) &= 0 \\ + w(x) &= 1 +\end{aligned} +\] +führt. + +Diese können bereits auf die Bedingungen in +Definition~\ref{sturmliouville:def:reguläres_sturm-liouville-problem} geprüft +werden. +Es ist schnell ersichtlich, dass die ersten drei Kriterien erfüllt sind. +Werden nun auch noch die Randbedingungen erfüllt, handelt es sich also um ein +reguläres Sturm-Liouville-Problem und es kann bereits die Aussage gemacht +werden, dass alle Lösungen für die Gleichung in $x$ orthogonal sein werden. Da die Bedingungen des Stab-Problems nur Anforderungen an $x$ stellen, können diese direkt für $X(x)$ übernomen werden. @@ -146,7 +165,7 @@ Es gilt also beispielsweise wegen \eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant}, dass $X(0) = X(l) = 0$. -Damit die Lösungen von $X$ orthogonal sind, müssen nun also die Gleichungen +Damit die Lösungen von $X$ orthogonal sind, müssen also noch die Gleichungen \begin{equation} \begin{aligned} \label{sturmliouville:eq:example-fourier-randbedingungen} @@ -164,28 +183,6 @@ erfüllt sein und es muss ausserdem \end{equation} gelten. -Um zu verifizieren, dass die Randbedingungen erfüllt sind, werden also die -Koeffizientenfunktionen $p(x)$, $q(x)$ und $w(x)$ benötigt. -Dazu wird die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} -mit der -Sturm-Liouville-Form~\eqref{sturmliouville:eq:sturm-liouville-equation} -verglichen, was zu -\[ -\begin{aligned} - p(x) &= 1 \\ - q(x) &= 0 \\ - w(x) &= 1 -\end{aligned} -\] -führt. - -Diese können bereits auf die Bedingungen in -Definition~\ref{sturmliouville:def:reguläres_sturm-liouville-problem} geprüft -werden. -Es ist schnell ersichtlich, dass die ersten drei Kriterien erfüllt sind. -Werden nun auch noch die Randbedingungen erfüllt, handelt es sich also um ein -reguläres Sturm-Liouville-Problem. - Es werden nun $p(x)$ und die Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant} des Stab-Problems in \eqref{sturmliouville:eq:example-fourier-randbedingungen} @@ -204,6 +201,7 @@ und $k_b \neq 0$ gewählt werden. Somit ist gezeigt, dass die Randbedingungen des Stab-Problems für Enden auf konstanter Temperatur auch die Sturm-Liouville-Randbedingungen erfüllen. + Daraus folg zunächst, dass es sich um ein reguläres Sturm-Liouville-Problem handelt und weiter, dass alle daraus resultierenden Lösungen orthogonal sind. Analog dazu kann gezeit werden, dass die Randbedingungen für einen Stab mit @@ -291,6 +289,9 @@ Da die Koeffizienten $A$ und $B$, sowie die Parameter $\alpha$ und $\beta$ im allgemeinen ungleich $0$ sind, müssen die Randbedingungen durch die trigonometrischen Funktionen erfüllt werden. +\subsubsection{Einsetzen der +Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant}} + Es werden nun die Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant} für einen Stab mit Enden auf konstanter Temperatur in die @@ -337,6 +338,9 @@ Ausserdem ist zu bemerken, dass dies auch gleich $-\alpha^{2}$ ist. Da aber $A = 0$ gilt und der Summand mit $\alpha$ verschwindet, ist dies keine Verletzung der Randbedingungen. +\subsubsection{Einsetzen der +Randbedingungen~\eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-isolated}} + Durch analoges Vorgehen kann nun auch das Problem mit isolierten Enden gelöst werden. Setzt man die -- cgit v1.2.1 From fefadac123a94fd60a2e20a05e2cf2461f1892d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Fri, 26 Aug 2022 15:01:14 +0200 Subject: Added reference to modified dot product to solution properties. --- buch/papers/sturmliouville/eigenschaften.tex | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index fc9c3da..2e3d4fd 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -83,13 +83,25 @@ Um auf die Orthogonalität der Lösungsfunktion zu schliessen, wird dafür der Operator $L$ genauer betrachtet. Analog zur Matrix $A$ aus Abschnitt~\ref{sturmliouville:sec:eigenvalue-problem-matrix} kann auch für -$L$ gezeigt werden, dass dieser Operator selbstadjungiert ist, also dass +$L$ gezeigt werden, dass dieser Operator selbstadjungiert ist. + +Dazu wird das modifizierte Skalarprodukt +\begin{equation} + \label{sturmliouville:eq:modified-dot-product} + \langle f, g \rangle_w + = + \int_a^b f(x)g(x)w(x)\,dx +\end{equation} +aus Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} verwendet, +welches auch die Gewichtsfunktion $w(x)$ berücksichtigt. +Damit $L$ bezüglich dieses Skalarproduktes selbstadjungiert ist, muss also \[ - \langle L u, v\rangle + \langle L u, v\rangle_w = - \langle u, L v\rangle + \langle u, L v\rangle_w \] -gilt. +gelten. + Wie in Kapitel~\ref{buch:integrale:subsection:sturm-liouville-problem} bereits gezeigt, ist dies durch die Randbedingungen~\eqref{sturmliouville:eq:randbedingungen} des -- cgit v1.2.1 From 2160618b9c1ed8b6c8171bbbcb742cadd6e18257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Fri, 26 Aug 2022 15:44:27 +0200 Subject: Embedded modified dot product into fourier example. --- .../sturmliouville/waermeleitung_beispiel.tex | 26 +++++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index f346fa2..ff32bf1 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -83,7 +83,8 @@ als Randbedingungen. % Lösung der Differenzialgleichung mittels Separation % -\subsection{Separation der Differenzialgleichung} +\subsection{Separation der Differenzialgleichung +\label{sturmliouville:subsec:separation}} Da die Lösungsfunktion $u$ von zwei Variablen abhängig ist, wird die Gleichung~\eqref{sturmliouville:eq:example-fourier-heat-equation} zunächst @@ -425,8 +426,20 @@ gilt, endet man somit bei \] Dies ist die allgemeine Fourierreihe, welche unsere Stab-Probleme löst. Wie zuvor bereits erwähnt, wissen wir dass sämtliche Lösungsfunktionen -orthogonal zueinander sind, da es sich hier um die Lösung eines -Sturm-Liouville-Problems handelt. +orthogonal zueinander sind bezüglich des +Skalarproduktes~\eqref{sturmliouville:eq:modified-dot-product}. +Dieses vereinfacht sich noch etwas, da aus +Abschnitt~\ref{sturmliouville:subsec:separation} bereits $w(x) = 1$ gegeben ist. +Somit ist das Skalarprodukt +\begin{equation} + \label{sturmliouville:eq:example-fourier-dot-product} + \langle f, g \rangle_w + = + \int_a^b f(x)g(x)w(x)\,dx + = + \int_a^b f(x)g(x)\,dx. +\end{equation} + Es gilt also \[ \begin{aligned} @@ -464,7 +477,8 @@ Es gilt also nun die Gleichung nach allen $a_n$ und $b_n$ aufzulösen. Da aber $a_n$ und $b_n$ jeweils als Faktor zu einer trigonometrischen Funktion gehört, von der wir wissen, dass sie orthogonal zu allen anderen -trigonometrischen Funktionen der Lösung ist, kann direkt das Skalarprodukt +trigonometrischen Funktionen der Lösung ist, kann direkt das +Skalarprodukt~\eqref{sturmliouville:eq:example-fourier-dot-product} verwendet werden um die Koeffizienten $a_n$ und $b_n$ zu bestimmen. Es wird also die Tatsache ausgenutzt, dass die Gleichheit in \eqref{sturmliouville:eq:example-fourier-initial-conditions} nach Anwendung des @@ -476,14 +490,14 @@ Skalarprodukt mit der Basisfunktion $ \cos\left(\frac{m \pi}{l}x\right)$ gebildet: \begin{equation} \label{sturmliouville:eq:dot-product-cosine} - \biggl\langle u(0, x), \cos\left(\frac{m \pi}{l}x\right) \biggr\rangle + \biggl\langle u(0, x), \cos\left(\frac{m \pi}{l}x\right) \biggr\rangle _w = \biggl\langle a_0 + \sum_{n = 1}^{\infty} a_n\cos\left(\frac{n\pi}{l}x\right) + \sum_{n = 1}^{\infty} b_n\sin\left(\frac{n\pi}{l}x\right), - \cos\left(\frac{m \pi}{l}x\right)\biggr\rangle + \cos\left(\frac{m \pi}{l}x\right)\biggr\rangle _w \end{equation} Bevor diese Form in die Integralform umgeschrieben werden kann, muss überlegt -- cgit v1.2.1 From 0f9fe03b68dc81c69a2f926d2a6782fe933d70f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20L=C3=B6ffler?= <100943759+erik-loeffler@users.noreply.github.com> Date: Fri, 26 Aug 2022 16:51:57 +0200 Subject: Final corrections. --- buch/papers/sturmliouville/eigenschaften.tex | 2 +- buch/papers/sturmliouville/tschebyscheff_beispiel.tex | 2 +- buch/papers/sturmliouville/waermeleitung_beispiel.tex | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/buch/papers/sturmliouville/eigenschaften.tex b/buch/papers/sturmliouville/eigenschaften.tex index 2e3d4fd..0f1f235 100644 --- a/buch/papers/sturmliouville/eigenschaften.tex +++ b/buch/papers/sturmliouville/eigenschaften.tex @@ -9,7 +9,7 @@ \label{sturmliouville:sec:solution-properties}} \rhead{Eigenschaften von Lösungen} -Im weiteren werden nun die Eigenschaften der Lösung eines +Im Weiteren werden nun die Eigenschaften der Lösung eines Sturm-Liouville-Problems diskutiert. Im wesentlichen wird darauf eingegangen, wie die Orthogonalität der Lösungen zustande kommt, damit diese später in den Beispielen verwendet werden kann. diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index c509b96..5d13df6 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -63,7 +63,7 @@ damit die Bedingung $|k_i|^2 + |h_i|^2\ne 0$ erfüllt ist, beliebige $h_a \ne 0$ und $h_b \ne 0$ gewählt werden. Es wurde somit gezeigt, dass die Sturm-Liouville-Randbedingungen erfüllt sind. -\subsection*{Handelt es sich um ein reguläres oder Singuläres Problem?} +\subsection*{Handelt es sich um ein reguläres oder singuläres Problem?} Für das reguläre Problem muss laut der Definition~\ref{sturmliouville:def:reguläres_sturm-liouville-problem} die funktion $p(x) = \sqrt{1-x^2}$, $p'(x) = -2x$, $q(x) = 0$ und diff --git a/buch/papers/sturmliouville/waermeleitung_beispiel.tex b/buch/papers/sturmliouville/waermeleitung_beispiel.tex index ff32bf1..93a1eb0 100644 --- a/buch/papers/sturmliouville/waermeleitung_beispiel.tex +++ b/buch/papers/sturmliouville/waermeleitung_beispiel.tex @@ -139,8 +139,8 @@ An dieser Stelle wird nun gezeigt, dass die Gleichung in $x$ ein Sturm-Liouville-Problem ist. Dazu werden zunächst die Koeffizientenfunktionen $p(x)$, $q(x)$ und $w(x)$ benötigt. -Dafür wird die Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} -mit der +Um diese zu erhalten, wird die +Gleichung~\eqref{sturmliouville:eq:example-fourier-separated-x} mit der Sturm-Liouville-Form~\eqref{sturmliouville:eq:sturm-liouville-equation} verglichen, was zu \[ @@ -166,7 +166,7 @@ Es gilt also beispielsweise wegen \eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-constant}, dass $X(0) = X(l) = 0$. -Damit die Lösungen von $X$ orthogonal sind, müssen also noch die Gleichungen +Damit die Lösungen von $X$ orthogonal sind, müssen also die Gleichungen \begin{equation} \begin{aligned} \label{sturmliouville:eq:example-fourier-randbedingungen} @@ -287,7 +287,7 @@ und \eqref{sturmliouville:eq:example-fourier-boundary-condition-ends-isolated} benötigt. Da die Koeffizienten $A$ und $B$, sowie die Parameter $\alpha$ und $\beta$ im -allgemeinen ungleich $0$ sind, müssen die Randbedingungen durch die +Allgemeinen ungleich $0$ sind, müssen die Randbedingungen durch die trigonometrischen Funktionen erfüllt werden. \subsubsection{Einsetzen der @@ -425,7 +425,7 @@ gilt, endet man somit bei \sum_{n = 1}^{\infty} b_n\sin\left(\frac{n\pi}{l}x\right). \] Dies ist die allgemeine Fourierreihe, welche unsere Stab-Probleme löst. -Wie zuvor bereits erwähnt, wissen wir dass sämtliche Lösungsfunktionen +Wie zuvor bereits erwähnt, wissen wir, dass sämtliche Lösungsfunktionen orthogonal zueinander sind bezüglich des Skalarproduktes~\eqref{sturmliouville:eq:modified-dot-product}. Dieses vereinfacht sich noch etwas, da aus @@ -706,7 +706,7 @@ was sich wie folgt nach $a_0$ auflösen lässt: \subsection{Lösung der Differentialgleichung in \texorpdfstring{$t$}{t}} Zuletzt wird die zweite Gleichung der Separation~\eqref{sturmliouville:eq:example-fourier-separated-t} betrachtet. -Dazu betrachtet man das charakteristische Polynom +Dazu nimmt man das charakteristische Polynom \[ \lambda - \kappa \mu = -- cgit v1.2.1 From f07871bd3ce9cfc41ecfc29b66c07d4377b8f9a7 Mon Sep 17 00:00:00 2001 From: canuel Date: Fri, 26 Aug 2022 16:59:18 +0200 Subject: added the chapter about spherical harmonic expansion and corrected some errors --- buch/papers/kugel/preliminaries.tex | 7 +- buch/papers/kugel/proofs.tex | 2 +- buch/papers/kugel/spherical-harmonics.tex | 183 ++++++++++++++++++++++-------- 3 files changed, 143 insertions(+), 49 deletions(-) diff --git a/buch/papers/kugel/preliminaries.tex b/buch/papers/kugel/preliminaries.tex index e48abe4..1fa78d7 100644 --- a/buch/papers/kugel/preliminaries.tex +++ b/buch/papers/kugel/preliminaries.tex @@ -1,6 +1,6 @@ % vim:ts=2 sw=2 et spell tw=78: -\section{Preliminaries} +\section{Preliminaries}\label{kugel:sec:preliminaries} The purpose of this section is to dust off some concepts that will become important later on. This will enable us to be able to get a richer and more @@ -318,11 +318,12 @@ convergence. \end{definition} \begin{theorem}[Fourier Theorem] - \[ + \label{fourier-theorem-1D} + \begin{equation*} \lim_{N \to \infty} \left \| f(x) - \sum_{n = -N}^N \hat{f}(n) E_n(x) \right \|_2 = 0 - \] + \end{equation*} \end{theorem} \begin{lemma} diff --git a/buch/papers/kugel/proofs.tex b/buch/papers/kugel/proofs.tex index 4fbef26..93b3857 100644 --- a/buch/papers/kugel/proofs.tex +++ b/buch/papers/kugel/proofs.tex @@ -1,5 +1,5 @@ % vim:ts=2 sw=2 et spell tw=80: -\section{Proofs} +\section{(long) Proofs} \subsection{Legendre Functions} \label{kugel:sec:proofs:legendre} diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index b3487be..f51a772 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -111,7 +111,10 @@ that satisfy the equation \surflaplacian f = -\lambda f. \end{equation} Perhaps it may not be obvious at first glance, but we are in fact dealing with a -partial differential equation (PDE) \kugeltodo{Boundary conditions?}. If we +partial differential equation (PDE)\footnote{ + Considering the fact that we are dealing with a PDE, + you may be wondering what are the boundary conditions. Well, since this eigenvalue problem is been developed on + the spherical surface (boundary of a sphere), the boundary in this case are empty, i.e no boundary condition has to be considered.}. unpack the notation of the operator $\nabla^2_{\partial S}$ according to definition \ref{kugel:def:surface-laplacian}, we get: @@ -283,7 +286,7 @@ representation} which are \end{equation*} respectively, both of which we will not prove (see chapter 3 of \cite{bell_special_2004} for a proof). Now that we have a solution for the -Legendre equation, we can make use of the following lemma patch the solutions +Legendre equation, we can make use of the following lemma to patch the solutions such that they also become solutions of the associated Legendre equation \eqref{kugel:eqn:associated-legendre}. @@ -317,7 +320,7 @@ obtain the \emph{associated Legendre functions}. \end{equation} are known as Ferrers or associated Legendre functions. \end{definition} -The constraint $|m| Date: Fri, 26 Aug 2022 18:01:19 +0200 Subject: Changed one title. --- buch/papers/sturmliouville/tschebyscheff_beispiel.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex index 5d13df6..341a358 100644 --- a/buch/papers/sturmliouville/tschebyscheff_beispiel.tex +++ b/buch/papers/sturmliouville/tschebyscheff_beispiel.tex @@ -5,7 +5,7 @@ % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Tschebyscheff-Polynome +\section{Beispiel: Tschebyscheff-Polynome \label{sturmliouville:sub:tschebyscheff-polynome}} \rhead{Tschebyscheff-Polynome} In diesem Unterkapitel wird anhand der -- cgit v1.2.1 From b6cedd9a91b2a6d67693a9271f9e7a30525646e1 Mon Sep 17 00:00:00 2001 From: canuel Date: Fri, 26 Aug 2022 23:01:40 +0200 Subject: some minor corrections --- buch/papers/kugel/references.bib | 2 +- buch/papers/kugel/spherical-harmonics.tex | 62 ++++++++++++++++++------------- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/buch/papers/kugel/references.bib b/buch/papers/kugel/references.bib index e3c0f85..984d555 100644 --- a/buch/papers/kugel/references.bib +++ b/buch/papers/kugel/references.bib @@ -17,7 +17,7 @@ file = {Submitted Version:/Users/npross/Zotero/storage/SN4YUNQC/Carvalhaes and de Barros - 2015 - The surface Laplacian technique in EEG Theory and.pdf:application/pdf}, } -@article{implementation, +@article{usecase_recursion_paper, title = {New Implementation of Legendre Polynomials for Solving Partial Differential Equations}, issn = {272767969}, url = {https://www.researchgate.net/publication/272767969_New_Implementation_of_Legendre_Polynomials_for_Solving_Partial_Differential_Equations}, diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index f51a772..9349b61 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -685,23 +685,26 @@ harmonics, so from now on, unless specified otherwise when we say spherical harmonics or write $Y^m_n$, we mean the orthonormal spherical harmonics of definition \ref{kugel:def:spherical-harmonics-orthonormal}. -\subsection{Recurrence Relations}\kugeltodo[replace x with z] +\subsection{Recurrence Relations}\kugeltodo{replace x with z} The idea of this subsection is to introduce first some recursive relations regarding the Associated Legendre Functions, defined in eq.\eqref{kugel:def:ferrers-functions}. Subsequently we will extend them, in order to derive recurrence formulas for the case of Spherical Harmonic functions as well. \subsubsection{Associated Legendre Functions} To start this journey, we can first write the following equations, which relate the Associated Legendre functions of different indeces $m$ and $n$ recursively: -\begin{enumerate}[(i)] - \item $(2n+1) x P^m_n(z)= (m+n) P^m_{n-1}(z) + (n-m+1) P^m_{n+1}(z)$, \label{kugel:eq:rec_rel_1} - \item $\dfrac{2mz}{\sqrt{1-z^2}} P^m_n(z) = P^{m+1}_n(z) + [n(n+1)-m(m-1)] P^{m-1}_n(z)$, \label{kugel:eq:rec_rel_2} - \item $\sqrt{1-z^2} P^m_n(z) = \dfrac{1}{2n+1} \left[ P^{m+1}_{n+1}(z) - P^{m+1}_{n-1}(z) \right]$, \label{kugel:eq:rec_rel_3} - \item $\sqrt{1-z^2} P^m_n(z) = \dfrac{1}{2n+1} \left[ (n+m)(n+m-1)P^{m-1}_{n-1}(z) - (n-m+1)(n-m+2)P^{m-1}_{n+1}(z) \right]$. \label{kugel:eq:rec_rel_4} -\end{enumerate} +\begin{subequations} + \begin{align} + P^m_n(z) &= \dfrac{1}{(2n+1)x} \left[ (m+n) P^m_{n-1}(z) + (n-m+1) P^m_{n+1}(z) \right] \label{kugel:eq:rec-leg-1} \\ + P^m_n(z) &= \dfrac{\sqrt{1-z^2}}{2mz} \left[ P^{m+1}_n(z) + [n(n+1)-m(m-1)] P^{m-1}_n(z) \right] \label{kugel:eq:rec-leg-2} \\ + P^m_n(z) &= \dfrac{1}{(2n+1)\sqrt{1-z^2}} \left[ P^{m+1}_{n+1}(z) - P^{m+1}_{n-1}(z) \right] \label{kugel:eq:rec-leg-3} \\ + P^m_n(z) &= \dfrac{1}{(2n+1)\sqrt{1-z^2}} \left[ (n+m)(n+m-1)P^{m-1}_{n-1}(z) - (n-m+1)(n-m+2)P^{m-1}_{n+1}(z) \right] \label{kugel:eq:rec-leg-4} + \end{align} +\end{subequations} Much of the effort will be proving this bunch of equalities. Then, in the second part, where we will derive the recursion equations for $Y^m_n(\vartheta,\varphi)$, we will basically reuse the ones presented above. -Maybe it is worth mentioning at least one use case for these relations: They are widely used in some software implementations, as they lead to better numerical accuracy and computational cost lower by a factor of six\cite{usecase_recursion_paper}. +Maybe it is worth mentioning at least one use case for these relations: In some software implementations (that include lighting computations in computer graphics, antenna modelling softwares, 3-D modelling in medical applications, etc.) +they are widely used, as they lead to better numerical accuracy and computational cost lower by a factor of six\cite{usecase_recursion_paper}. \begin{enumerate}[(i)] \item \begin{proof} - This is the relation that links the associated Legendre functions with the same $m$ index but different $n$. Using \ref{} \kugeltodo{ref alla recurrence dei polinomi di legendre (è da qualche parte nel libro)}, we have + This is the relation that links the associated Legendre functions with the same $m$ index but different $n$. Using \ref{} \kugeltodo{search the general equation of recursion for orthogonal polynomials (is somewhere in the book)}, we have \begin{equation*} (n+1)P_{n+1}(z)-(2n+1)xP_n(z)+nP_{n-1}(z)=0, \end{equation*} @@ -749,9 +752,9 @@ Maybe it is worth mentioning at least one use case for these relations: They are \begin{equation*} P^{m+2}_n(x) - \frac{2(m+1)x}{\sqrt{1-x^2}}P^{m+1}_n(x) + [n(n+1)-m(m+1)]P^m_n(x)=0. \end{equation*} - Furthermore, we can adjust the indeces and terms, obtaining + Further, we can adjust the indeces and terms, obtaining \begin{equation*} - \frac{2mx}{\sqrt{(1-x^2)}} P^m_n(x) = P^{m+1}_n(x) + [n(n+1)-m(m-1)] P^{m-1}_n(x) + \frac{2mx}{\sqrt{(1-x^2)}} P^m_n(x) = P^{m+1}_n(x) + [n(n+1)-m(m-1)] P^{m-1}_n(x). \end{equation*} \end{proof} @@ -774,7 +777,7 @@ Maybe it is worth mentioning at least one use case for these relations: They are \item \begin{proof} - For this proof we can rely on (\ref{kugel:eq:rec_rel_1}), and therefore rewrite (\ref{kugel:eq:rec_rel_2}) as + For this proof we can rely on eq.\eqref{kugel:eq:rec-leg-1}, and therefore rewrite eq.\eqref{kugel:eq:rec-leg-2} as \begin{equation*} \frac{2m}{(2n+1)\sqrt{1-x^2}} \left[ (m+n)P^m_{n-1}(x) + (n-m+1)P^m_{n+1}(x) \right] = P^{m+1}_n(x) + [ n(n+1)-m(m-1) ]P^{m-1}_n(x). \end{equation*} @@ -793,18 +796,26 @@ Maybe it is worth mentioning at least one use case for these relations: They are \subsubsection{Spherical Harmonics} The goal of this subsection's part is to apply the recurrence relations of the $P^m_n(z)$ functions to the Spherical Harmonics. - With some little adjustments we will be able to have recursion equations for them too. As previously written the most of the work is already done. Now it is only a matter of minor mathematical operations/rearrangements. We can start by listing all of them: +\begin{subequations} + \begin{align} + Y^m_n(\vartheta, \varphi) &= \dfrac{1}{(2n+1)\cos \vartheta} \left[ (m+n)Y^m_{n-1}(\vartheta, \varphi) + (m-n+1)Y^m_{n+1}(\vartheta, \varphi) \right] \label{kugel:eq:rec-sph_harm-1} \\ + Y^m_n(\vartheta, \varphi) &= \dfrac{\tan \vartheta}{2m}\left[ Y^{m+1}_n(\vartheta, \varphi)e^{-i\varphi} + [n(n+1)-m(m-1)]Y^{m-1}_n(\vartheta, \varphi)e^{i\varphi} \right] \label{kugel:eq:rec-sph_harm-2} \\ + Y^m_n(\vartheta, \varphi) &= \dfrac{e^{-i\varphi}}{ (2n+1)\sin \vartheta } \left[ Y^{m+1}_{n+1}(\vartheta, \varphi) - Y^{m+1}_{n-1}(\vartheta, \varphi) \right] \label{kugel:eq:rec-sph_harm-3} \\ + Y^m_n(\vartheta, \varphi) &= \dfrac{e^{i\varphi}}{(2n+1)\sin \vartheta} \left[ (n+m)(n+m-1)Y^{m-1}_{n-1}(\vartheta, \varphi) - (n-m+1)(n-m+2)Y^{m-1}_{n+1}(\vartheta, \varphi) \right] \label{kugel:eq:rec-sph_harm-4} + \end{align} +\end{subequations} + \begin{enumerate}[(i)] - \item $Y^m_n(\vartheta, \varphi) = \dfrac{1}{(2n+1)\cos \vartheta} \left[ (m+n)Y^m_{n-1}(\vartheta, \varphi) + (m-n+1)Y^m_{n+1}(\vartheta, \varphi) \right]$ + \item \begin{proof} - We can multiply both sides of equality in eq.\eqref{} by $e^{im \varphi}$ and perform the substitution $z=\cos \vartheta$. After a few simple algebraic steps, we will obtain the relation we are looking for + We can multiply both sides of equality in eq.\eqref{kugel:eq:rec-leg-1} by $e^{im \varphi}$ and perform the substitution $z=\cos \vartheta$. After a few simple algebraic steps, we will obtain the relation we are looking for \end{proof} - \item $Y^m_n(\vartheta, \varphi) = \dfrac{\tan \vartheta}{2m}\left[ Y^{m+1}_n(\vartheta, \varphi)e^{-i\varphi} + [n(n+1)-m(m-1)]Y^{m-1}_n(\vartheta, \varphi)e^{i\varphi} \right]$ + \item \begin{proof} - In this proof, as before, we can perform the substitution $z=\cos \vartheta$, and notice that $\sqrt{1-z^2}=\sin \vartheta$, hence, the relation in eq.\eqref{} will be + In this proof, as before, we can perform the substitution $z=\cos \vartheta$, and notice that $\sqrt{1-z^2}=\sin \vartheta$, hence, the relation in eq.\eqref{kugel:eq:rec-leg-2} will be \begin{equation*} \frac{2m \cos \vartheta}{\sin \vartheta} P^m_n(\cos \vartheta) = P^{m+1}_n(\cos \vartheta) + [n(n+1)-m(m-1)]P^{m-1}_n P^m_n(\cos \vartheta). \end{equation*} @@ -812,34 +823,35 @@ We can start by listing all of them: \begin{align*} \frac{2m \cos \vartheta}{\sin \vartheta} P^m_n(\cos \vartheta)e^{im\varphi} &= P^{m+1}_n(\cos \vartheta)e^{im\varphi} + [n(n+1)-m(m-1)]P^{m-1}_n P^m_n(\cos \vartheta)e^{im\varphi} \\ &= P^{m+1}_n(\cos \vartheta)e^{i(m+1)\varphi}e^{-i\varphi} + [n(n+1)-m(m-1)]P^{m-1}_n (\cos \vartheta)e^{i(m-1)\varphi}e^{i\varphi} \\ - &= Y^{m+1}_n(\vartheta, \varphi)e^{-i\varphi} + [n(n+1)-m(m-1)]Y^{m-1}_n(\vartheta, \varphi)e^{i\varphi} \\ + &= Y^{m+1}_n(\vartheta, \varphi)e^{-i\varphi} + [n(n+1)-m(m-1)]Y^{m-1}_n(\vartheta, \varphi)e^{i\varphi}. \end{align*} Finally, after some ``cleaning'' \begin{equation*} Y^m_n(\vartheta, \varphi) = \frac{\tan \vartheta}{2m} \left[ Y^{m+1}_n(\vartheta, \varphi)e^{-i\varphi} + [n(n+1)-m(m-1)]Y^{m-1}_n(\vartheta, \varphi)e^{i\varphi} \right] \end{equation*} \end{proof} - \item $Y^m_n(\vartheta, \varphi) = \dfrac{e^{-i\varphi}}{ (2n+1)\sin \vartheta } \left[ Y^{m+1}_{n+1}(\vartheta, \varphi) - Y^{m+1}_{n-1}(\vartheta, \varphi) \right]$ + \item \begin{proof} - Now we can consider eq.\eqref{}, and multiply it by $e^{im\varphi}$. After the usual substitution $z=\cos \vartheta$, we have + Now we can consider eq.\eqref{kugel:eq:rec-leg-3}, and multiply it by $e^{im\varphi}$. After the usual substitution $z=\cos \vartheta$, we have \begin{align*} \sin \vartheta P^m_n(\cos \vartheta)e^{im\varphi} &= \dfrac{e^{im\varphi}}{2n+1}\left[ P^{m+1}_{n+1}(\cos \vartheta) - P^{m+1}_{n-1}(\cos \vartheta)\right] \\ - &= \dfrac{e^{-i\varphi}}{2n+1}\left[ P^{m+1}_{n+1}(\cos \vartheta)e^{i(m+1)\varphi} - P^{m+1}_{n-1}(\cos \vartheta)e^{i(m+1)\varphi}\right] \\ + &= \dfrac{e^{-i\varphi}}{2n+1}\left[ P^{m+1}_{n+1}(\cos \vartheta)e^{i(m+1)\varphi} - P^{m+1}_{n-1}(\cos \vartheta)e^{i(m+1)\varphi}\right]. \end{align*} A few manipulations later, we will obtain \begin{equation*} - Y^m_n(\vartheta, \varphi) = \frac{e^{-i\varphi}}{(2n+1)\sin \vartheta} \left[ Y^{m+1}_{n+1}(\vartheta, \varphi)-Y^{m+1}_{n-1}(\vartheta, \varphi) \right] + Y^m_n(\vartheta, \varphi) = \frac{e^{-i\varphi}}{(2n+1)\sin \vartheta} \left[ Y^{m+1}_{n+1}(\vartheta, \varphi)-Y^{m+1}_{n-1}(\vartheta, \varphi) \right]. \end{equation*} \end{proof} - \item $Y^m_n(\vartheta, \varphi) = \dfrac{e^{i\varphi}}{(2n+1)\sin \vartheta} \left[ (n+m)(n+m-1)Y^{m-1}_{n-1}(\vartheta, \varphi) - (n-m+1)(n-m+2)Y^{m-1}_{n+1}(\vartheta, \varphi) \right]$ + \item \begin{proof} This proof is very similar to the previous one. We just have to perform the substitution $z = \cos \vartheta$, as always. Secondly we can multiply the right side by $e^{im\varphi}$ and the left one too but in a different form, namely $e^{im\varphi}=e^{i(m-1)\varphi}e^{i\varphi}$. Then it is only a question of recalling the definition of $Y^m_n(\vartheta, \varphi)$. \end{proof} \end{enumerate} \section{Series Expansions in $L^2(S^2)$} - -We want now to recall the definition of the inner product on the spherical surface of definition \ref{kugel:def:inner-product-s2} +We have now reach a point where we have all the tools that are necessary to build something truly amazing: a general series expansion formula for +function on the surface of the sphere. +Before starting we want to recall the definition of the inner product on the spherical surface of definition \ref{kugel:def:inner-product-s2} \begin{equation*} \langle f, g \rangle = \int_{0}^\pi \int_0^{2\pi} -- cgit v1.2.1