diff options
author | Patrik Müller <36931350+p1mueller@users.noreply.github.com> | 2022-07-19 07:55:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-19 07:55:33 +0200 |
commit | 2f2762eb04c6d881c902dc5e4e31d0122717aaf6 (patch) | |
tree | f15e603f580872868c7024f723cc82b3f3cbe2c4 /buch | |
parent | Fix merge issue (diff) | |
parent | makefile fix (diff) | |
download | SeminarSpezielleFunktionen-2f2762eb04c6d881c902dc5e4e31d0122717aaf6.tar.gz SeminarSpezielleFunktionen-2f2762eb04c6d881c902dc5e4e31d0122717aaf6.zip |
Merge branch 'AndreasFMueller:master' into master
Diffstat (limited to '')
233 files changed, 10401 insertions, 1010 deletions
diff --git a/buch/chapters/000-einleitung/Makefile.inc b/buch/chapters/000-einleitung/Makefile.inc index 5840050..2c4e046 100644 --- a/buch/chapters/000-einleitung/Makefile.inc +++ b/buch/chapters/000-einleitung/Makefile.inc @@ -5,4 +5,7 @@ # CHAPTERFILES += \ - chapters/000-einleitung/chapter.tex + chapters/000-einleitung/chapter.tex \ + chapters/000-einleitung/funktionsbegriff.tex \ + chapters/000-einleitung/speziellefunktionen.tex \ + chapters/000-einleitung/inhalt.tex diff --git a/buch/chapters/000-einleitung/chapter.tex b/buch/chapters/000-einleitung/chapter.tex index 559a468..e53eafb 100644 --- a/buch/chapters/000-einleitung/chapter.tex +++ b/buch/chapters/000-einleitung/chapter.tex @@ -7,110 +7,8 @@ \lhead{Einleitung} \rhead{} \addcontentsline{toc}{chapter}{Einleitung} -Eine Polynomgleichung wie etwa -\begin{equation} -p(x) = ax^2+bx+c = 0 -\label{buch:einleitung:quadratisch} -\end{equation} -kann manchmal dadurch gelöst werden, dass man die Nullstellen errät -und damit eine Faktorisierung $p(x)=a(x-x_1)(x-x_2)$ konstruiert. -Doch im Allgemeinen wird man die Lösungsformel für quadratische -Gleichungen verwenden, die auf quadratischem Ergänzen basiert. -Es erlaubt die Gleichung~\eqref{buch:einleitung:quadratisch} umzwandeln in -\[ -\biggl(x + \frac{b}{2a}\biggr)^2 -= --\frac{c}{a} + \frac{b^2}{4a^2} -= -\frac{b^2-4ac}{4a^2}. -\] -Um diese Gleichung nach $x$ aufzulösen, muss man die inverse Funktion -der Quadratfunktion zur Verfügung haben, die Wurzelfunktion. -Dies ist wohl das älteste Beispiel einer speziellen Funktion, -die man zu dem Zweck eingeführt hat, spezielle algebraische Gleichungen -lösen zu können. -Sie liefert die bekannte Lösungsformel -\[ -x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} -\] -für die quadratische Gleichung. - -Durch die Definition der Wurzelfunktion ist das Problem der numerischen -Berechnung der Nullstelle natürlich noch nicht gelöst, aber man hat -ein handliches mathematisches Symbol gewonnen, mit dem man die Lösungen -übersichtlich beschreiben und algebraisch manipulieren kann. -Diese Idee steht hinter allen weiteren in diesem Buch diskutierten -Funktionen: wann immer ein wichtiges mathematisches Konzept sich nicht -direkt durch die bereits entwickelten Funktionen ausdrücken lässt, -erfindet man dafür eine neue Funktion oder Familie von Funktionen. -Beispielsweise hat sich die Darstellung von Zahlen $x$ als Potenzen -einer gemeinsamen Basis, zum Beispiel $x=10^y$, als sehr nützlich -herausgestellt, um Multiplikationen auf die von Hand leichter -ausführbaren Additionen zurückzuführen. -Man braucht also die Fähigkeit, die Abhängigkeit des Exponenten $y$ -von $x$ auszudrücken, mit anderen Worten, man braucht die Logarithmusfunktion. - -Spezielle Funktionen wie die Wurzelfunktion und die Logarithmusfunktion -werden also zu Bausteinen, die in der Lösung algebraischer oder auch -analytischer Probleme verwendet werden können. -Die Erfahrung zeigt, dass diese Funktionen immer wieder nützlich -sind, es lohnt sich also, ihre Berechnung zum Beispiel in einer -Bibliothek zu implementieren. -Spezielle Funktionen sind in diesem Sinn eine mathematische Form -des informatischen Prinzips des ``code reuse''. - -Die trigonometrischen Funktionen kann man als Lösungen des geometrischen -Problems der Parametrisierung eines Kreises verstehen. -Alternativ kann man $\sin x$ und $\cos x$ als spezielle Lösungen der -Differentialgleichung $y''=-y$ verstehen. -Viele andere Funktionen wie die hyperbolischen Funktionen oder die -Bessel-Funktionen sind ebenfalls Lösungen spezieller Differentialgleichungen. -Auch die Theorie der partiellen Differentialgleichungen gibt Anlass -zu interessanten Lösungsfunktionen. -Die Separation des Poisson-Problems in Kugelkoordinaten führt zum Beispiel -auf die Kugelfunktionen, mit denen sich beliebige Funktionen auf einer -Kugeloberfläche analysieren und synthetisieren lassen. - -Die Lösungen einer linearer gewöhnlicher Differentialgleichung können -oft mit Hilfe von Potenzreihen dargestellt werden. -So kann man zum Beispiel die Potenzreihenentwicklung der Exponentialfunktion -und der trigonometrischen Funktionen finden. -Die Konvergenz einer Potenzreihe wird aber durch Singularitäten -eingeschränkt. -Komplexe Potenzreihen ermöglichen aber, solche Stellen zu ``umgehen''. -Die Theorie der komplex differenzierbaren Funktionen bildet einen -allgemeinen Rahmen, mit solchen Funktionen umzugehen und ist zum -Beispiel nötig, um die Bessel-Funktionen der zweiten Art zu konstruieren, -die ebenfalls Lösungen ger Bessel-Gleichung sind, aber bei $x=0$ -eine Singularität aufweisen. - -Die Stammfunktion $F(x)$ einer gegebenen Funktion $f(x)$ ist natürlich -auch die Lösung der besonders einfachen Differentialgleichung $F'=f$. -Ein bekanntes Beispiel ist die Stammfunktion der Wahrscheinlichkeitsdichte -\[ -\varphi(x) -= -\frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}}, -\] -der Normalverteilung, für die aber keine geschlossene Darstellung -mit bekannten Funktionen bekannt ist. -Sie kann aber durch die Fehlerfunktion -\[ -\operatorname{erf}(x) -= -\frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2}\,dt -\] -dargestellt werden. -Mit dem Risch-Algorithmus kann man nachweisen, dass es tatsächlich -keine Möglichkeit gibt, die Stammfunktion in geschlossener Form durch -die bereits bekannten Funktionen darzustellen, die Definition einer -neuen speziellen Funktion ist also der einzige Ausweg. -Die Fehlerfunktion ist heute in der Standardbibliothek enthalten auf -gleicher Stufe wie Wurzeln, trigonometrische Funktionen, -Exponentialfunktionen oder Logarithmen. - -Die nachstehenden Kapitel sollen die vielfältigen Arten illustrieren, -wie diese Prinzipien zu neuen und nützlichen speziellen Funktionen -und ihren Anwendungen führen können. +\input{chapters/000-einleitung/funktionsbegriff.tex} +\input{chapters/000-einleitung/speziellefunktionen.tex} +\input{chapters/000-einleitung/inhalt.tex} diff --git a/buch/chapters/000-einleitung/funktionsbegriff.tex b/buch/chapters/000-einleitung/funktionsbegriff.tex new file mode 100644 index 0000000..e684f82 --- /dev/null +++ b/buch/chapters/000-einleitung/funktionsbegriff.tex @@ -0,0 +1,74 @@ +% +% Der Funktionsbegriff +% +\subsection*{Der mathematische Funktionsbegriff} +Der moderne mathematische Funktionsbegriff ist die Krönungn einer +langen Entwicklung. +Erste Ansätze sind in der Darstellung voneinander abhängiger Grössen +in einem Koordinatensystem durch Nikolaus von Oresme im 14.~Jahrhundert +zu erkennen. +Dieser Ansatz, Funktionen einfach nur als Kurven zu betrachten, +war bis ins 17.~Jahrhundert verbreitet. +Der Begriff {\em Funktion} selbst geht wahrscheinlich auf Leibniz +zurück. + +Euler verwendete den Begriff oft austauschbar für zwei im Prinzip +verschiedene Vorstellungen. +Einerseits sah er jeden ``analytischen Ausdruck'' in einer Variablen +$x$ als eine Funktion an, andererseits betrachtete er eine in einem +Koordinatensystem freihändig gezeichnete Kurve als eine Funktion. +Heute unterscheiden wir zwischen der Funktion, also der Zuordnung +von $x$ zu den Funktionswerten $f(x)$ und dem Graphen, also der +von Paaren $(x,f(x))$ gebildeten Kurve in einem Koordinatensystem. +Nach letzterer Vorstellung ist auch die Wurzelfunktion, +die Umkehrfunktion der Quadratfunktion, $f(x)=x^2$ eine Funktion. +Da zu jedem Argument zwei verschiedene Werte $\pm\sqrt{x}$ +für die Wurzel möglich sind, lässt sich diese ``Funktion'' nicht +durch einen ``analytischen Ausdruck'' beschrieben. +Euler beschrieb diese Situation als {\em mehrdeutige Funktion}. + +Was ``analytische Ausdrücke'' alles umfassen sollen, ist ebenfalls +nicht scharf definiert. +Dahinter verbergen sich viele versteckte Annahmen, zum Beispiel +dass Funktionen automatisch stetig und möglicherweise sogar +differenzierbar sind. +Für Lagrange waren nur Funktionen akzeptabel, die durch Potenzreihen +definiert waren, solche Funktionen nennen wir heute {\em analytisch}. +Die Wahl von Potenzreihen zur Definition von Funktion ist einerseits +willkürlich, warum nicht Linearkombinationen von trigonometrischen +Funktionen? +Andererseits gibt es beliebig oft differenzierbare Funktionen, +deren Potenzreihe nicht gegen die Funktion konvergiert. + +Im 19.~Jahrhundert erfuhr die Analysis eine Reformierung. +Ausgehend vom nun präzis gefassten Grenzwertbegriff wurden Stetigkeit +und Differenzierbarkeit als eigenständige Eigenschaften von +Funktionen erkannt. +Eine Funktion war jetzt nur noch eine eindeutige Zuordnung +$x\mapsto f(x)$. +Stetigkeit ist die Eigenschaft, dass der Grenzwert in einem +Punkt des Definitionsbereichs existiert und mit dem Funktionswert +in diesem Punkt übereinstimmt. +Später wurden auch Differenzierbarkeit und Integrierbarkeit als +Eigenschaften von Funktionen erkannt, die vorhanden sein können, +aber nicht müssen. + +Der nun präzis gefasste Funktionsbegriff ist nur selten direkt anwendbar. +In der Physik treten Funktionen als Lösungen von Differentialgleichungen +auf. +Sie sind also immer mindestens differenzierbar, haben aber typischerweise +noch viele weitere Eigenschaften. +So sind zum Beispiel die Lösungen der Differentialgleichung +$y''=-n^2 y$ auf dem Intervall $[-\pi,\pi]$ die Funktionen +$\sin(nx)$ und $\cos(nx)$ für $n\in\mathbb{N}$. +Wie Fourier herausgefunden hat, lässt sich jede stetige $2\pi$-periodische +Funktion als Linearkombination dieser Funktionen approximieren. + +Eine Familie von Differentialgleichungen, die durch wenige Parameter +charakterisiert ist, führt auch zu einer Familie von Lösungsfunktionen, die +sich durch die gleichen Parameter beschreiben lassen. +Sie ist unmittelbar nützlich, da sie jedes Anwendungsproblem löst, +welches durch diese Differentialgleichung modelliert werden kann. +In diesem Sinne ist eine solche spezielle Funktionenfamilie interessanter +als eine beliebige differenzierbare Funktion. + diff --git a/buch/chapters/000-einleitung/inhalt.tex b/buch/chapters/000-einleitung/inhalt.tex new file mode 100644 index 0000000..1b9f35b --- /dev/null +++ b/buch/chapters/000-einleitung/inhalt.tex @@ -0,0 +1,153 @@ +% +% Was ist zu erwarten +% +\subsection*{Was ist zu erwarten?} +Spezielle Funktionen wie die eben angedeuteten werden also zu +Bausteinen, die in der Lösung algebraischer oder auch analytischer +Probleme verwendet werden können. +Die Erfahrung zeigt, dass diese Funktionen immer wieder nützlich +sind, es lohnt sich also, ihre Berechnung zum Beispiel in einer +Bibliothek zu implementieren. +Spezielle Funktionen sind in diesem Sinn eine mathematische Form +des informatischen Prinzips des ``code reuse''. + +Die nachstehenden Kapitel sollen die vielfältigen Arten illustrieren, +wie diese Prinzipien zu neuen und nützlichen speziellen Funktionen +und ihren Anwendungen führen können. +Hier eine kurze Übersicht über ihren Inhalt. +\begin{enumerate} +\item +Potenzen und Wurzeln: Potenzen und Polynome sind die einfachsten +Funktionen, die sich unmittelbar aus den arithmetischen Operationen +konstruieren lassen. +Die zugehörigen Umkehrfunktionen sind die Wurzelfunktionen, +sie lösen gewisse algebraische Gleichungen. +Aus den Polynomen lassen sich weiter rationale Funktionen und +Potenzreihen konstruieren, die als wichtige Werkzeuge zur Konstruktion +spezieller Funktionen in späteren Kapiteln sind. +\item +Exponentialfunktion und Exponentialgleichungen. +Die Exponentialfunktion entsteht aus dem Zinsproblem durch Grenzwert, +die Jost Bürgi zur Berechnung seiner Logarithmentabelle verwendet hat. +Hier zeigt sich die Nützlichkeit spezieller Funktionen als Grundlage +für die numerische Rechnung: Logarithmentafeln waren über Jahrhunderte +das zentrale Werkzeug für die Durchführung numerischer Rechnung. +Besonders nützlich ist aber auch die Potenzreihendarstellung der +Exponentialdarstellung, die meist für die numerische Berechnung +verwendet wird. +Die Lambert-$W$-schliesslich löst gewisse Exponentialgleichungen. +\item +Spezielle Funktionen aus der Geometrie. +Dieses Kapitel startet mit der langen Geschichte der trigonometrischen +Funktionen, den wahrscheinlich wichtigsten speziellen Funktionen für +geometrische Anwendungen. +Es führt aber auch die Kegelschnitte, die hyperbolischen Funktionen +und andere Parametrisierungen der Kegelschnitte ein, die später +wichtig werden. +Es beginnt auch die Diskussion einiger geometrischer Fragestellungen +die sich oft nur durch Definition neuer spezieller Funktionen lösen +lassen, wie zum Beispiel das Problem der Kurvenlänge auf einer +Ellipse. +\item +Spezielle Funktionen und Rekursion. +Viele Probleme lassen eine Lösung in rekursiver Form zu. +Zum Beispiel lässt sich die Fakultät durch eine Rekursionsbeziehung +vollständig definieren. +Dieses Kapitel zeigt, wie sich die Fakultät zur Gamma-Funktion +$\Gamma(x)$ erweitern lässt, die für beliebige reelle $x$ +definiert ist. +Sie ist aber nur die Spitze eines Eisbergs von weiteren wichtigen +Funktionen. +Die Beta-Integrale sind ebenfalls durch Rekursionsbeziehungen +charakterisiert, lassen sich durch Gamma-Funktionen ausdrücken und +haben als Anwendung die Verteilungsfunktionen der Ordnungsstatistiken. +Lineare Differenzengleichungen sind Rekursionsgleichungen, die sich +besonders leicht mit Potenzfunktionen lösen lassen. +Alle diese Funktionen sind Speziallfälle einer sehr viel grösseren +Klasse von Funktionen, den hypergeometrischen Funktionen, die sich +durch eine Rekursionsbeziehung der Koeffizienten ihrer +Potenzreihenentwicklung auszeichnen. +Es wird sich in nächsten Kapitel zeigen, dass sie besonders gut +geeignet sind, Lösungen von linearen Differentialgleichungen zu +beschreiben. +\item +Differentialgleichungen. +Lösungsfunktionen von Differentialgleichungen sind meistens die +erste Anwendung, in der man die klassschen speziellen Funktionen +kennenlernt. +Sie entstehen mit Hilfe der Potenzreihenmethode und können daher +als hypergeometrische Funktionen geschrieben werden. +Sie sind aber von derart grosser Bedeutung für die Anwendung, +dass viele dieser Funktionen als eigenständige Funktionenfamilien +definiert worden sind. +Die Bessel-Funktionen werden in diesem Zusammenhang eingehend +behandelt. +\item +Integrale können als Lösungen sehr spezieller Differentialgleichungen +betrachtet werden. +Eine Stammfunktion $F(x)$ der Funktion $f(x)$ hat als Ableitung die +ursprüngliche Funktion: $F'(x)=f(x)$. +Während Ableiten ein einfacher, algebraischer Prozess ist, +scheint das Finden einer Stammfunktion sehr viel anspruchsvoller +zu sein. +Spezielle Funktionen sinnvoll sein, wenn eine Stammfunktion sich nicht +mit den bereits definierten Funktionen ausdrücken lässt. +Es gibt eine systematische Methode zu entscheiden, ob eine Stammfunktion +sich durch ``elementare Funktionen'' ausdrücken lässt, sie wird oft +der Risch-Algorithmus genannt. +\item +Orthogonalität. +Mit dem Integral lassen sich auch für Funktionen Skalarprodukte +definieren. +Orthogonalität zwischen Funktionen zeichnet dann Funktionen aus, die +sich besonders gut zur Darstellung beliebiger stetiger oder +integrierbarer Funktionen eignen. +Die Fourier-Theorie und ihre vielen Varianten sind ein Resultat. +Besonders einfache orthogonale Funktionenfamilien sind die orthogonalen +Polynome, die ausserdem zu ausserordentlich genauen numerischen +Integrationsverfahren führen. +\item +Integraltransformationen. +Die trigonometrischen Funktionen sind die Grundlage der Fourier-Theorie. +Doch auch andere spezielle Funktionenfamilien können ähnlich +nützliche Integraltransformationen hergeben. +Die Bessel-Funktionen stellen sich in diesem Zusammenhang als die +Polarkoordinaten-Variante der Fourier-Theorie in der Ebene heraus. +\item +Funktionentheorie. +Einige Eigenschaften der Lösungen gewöhnlicher Differentialgleichung +sind allein mit der reellen Analysis nicht zu bewältigen. +In der Welt der speziellen Funktionen hat man aber strengere +Anforderungen an Funktionen, sie lassen sich immer als Funktionen +einer komplexen Variablen verstehen. +Dieses Kapitel stellt die wichtigsten Eigenschaften komplex +differenzierbarer Funktionen zusammen und wendet sie zum Beispiel +auf das Problem an, weitere Lösungen der Bessel-Differentialgleichung +zu finden. +\item +Partielle Differentialgleichungen sind eine der wichtigsten Quellen +der gewöhnlichen Differentialgleichungen, die nur mit speziellen +Funktionen gelöst werden können. +So führen rotationssymmetrische Wellenprobleme in der Ebene +ganz natürlich auf die Besselsche Differentialgleichung und damit +auf die Bessel-Funktionen als Lösungsfunktionen. +\item +Elliptische Funktionen. +Einige der in Kapitel~\ref{buch:chapter:geometrie} angesprochenen +Fragestellungen wie der Berechnung der Bogenlänge auf einer Ellipse +lassen sich mit keiner der bisher vorgestellten Technik lösen. +In diesem Kapitel werden die elliptischen Integrale und die +zugehörigen Umkehrfunktionen vorgestellt. +Die Jacobischen elliptischen Funktionen verallgemeinern +die trigonometrischen Funktionen und können gewisse nichtlineare +Differentialgleichungen lösen. +Sie finden auch Anwendungen im Design elliptischer Filter +(siehe Kapitel~\ref{chapter:ellfilter}). +\end{enumerate} + +Natürlich ist damit das weite Gebiet der speziellen Funktionen +nur ganz grob umrissen. +Weitere Aspekte und Anwendungen werden in den Artikeln im zweiten +Teil vorgestellt. +Eine Übersicht dazu findet der Leser auf Seite~\pageref{buch:uebersicht}. + diff --git a/buch/chapters/000-einleitung/speziellefunktionen.tex b/buch/chapters/000-einleitung/speziellefunktionen.tex new file mode 100644 index 0000000..8ca71bc --- /dev/null +++ b/buch/chapters/000-einleitung/speziellefunktionen.tex @@ -0,0 +1,150 @@ +% +% Spezielle Funktionen +% +\subsection*{Spezielle Funktionen} +Der abstrakte Funktionsbegriff auferlegt einer Funktion nur ganz wenige +Einschränkungen. +Damit lässt sich zwar eine mathematische Theorie entwickeln, die +klärt, unter welchen Umständen zusätzliche Eigenschaften wie Stetigkeit +und Differenzierbarkeit zu erwarten sind. +Allgemeine Berechnungen kann man mit diesem Begriff aber nicht durchführen, +seine Anwendbarkeit ist beschränkt. +Praktisch nützlich wird der Funktionsbegriff also erst, wenn man ihn +einschränkt auf anwendungsrelevante Eigenschaften. +Die Mathematik hat in ihrer Geschichte genau dies immer wieder +getan, wie im Folgenden kurz skizziert werden soll. + +% +% Polynome und Wurzeln +% +\subsubsection{Polynome und Wurzeln} +Eine Polynomgleichung wie etwa +\begin{equation} +p(x) = ax^2+bx+c = 0 +\label{buch:einleitung:quadratisch} +\end{equation} +kann manchmal dadurch gelöst werden, dass man die Nullstellen errät +und damit eine Faktorisierung $p(x)=a(x-x_1)(x-x_2)$ konstruiert. +Doch im Allgemeinen wird man die Lösungsformel für quadratische +Gleichungen verwenden, die auf quadratischem Ergänzen basiert. +Es erlaubt die Gleichung~\eqref{buch:einleitung:quadratisch} umzwandeln in +\[ +\biggl(x + \frac{b}{2a}\biggr)^2 += +-\frac{c}{a} + \frac{b^2}{4a^2} += +\frac{b^2-4ac}{4a^2}. +\] +Um diese Gleichung nach $x$ aufzulösen, muss man die inverse Funktion +der Quadratfunktion zur Verfügung haben, die Wurzelfunktion. +Dies ist wohl das älteste Beispiel einer speziellen Funktion, +die man zu dem Zweck eingeführt hat, spezielle algebraische Gleichungen +lösen zu können. +Sie liefert die bekannte Lösungsformel +\[ +x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} +\] +für die quadratische Gleichung. + +% +% Exponential- und Logarithmusfunktion +% +\subsubsection{Exponential- und Logarithmusfunktion} +Durch die Definition der Wurzelfunktion ist das Problem der numerischen +Berechnung der Nullstelle natürlich noch nicht gelöst, aber man hat +ein handliches mathematisches Symbol gewonnen, mit dem man die Lösungen +übersichtlich beschreiben und algebraisch manipulieren kann. +Diese Idee steht hinter allen weiteren in diesem Buch diskutierten +Funktionen: wann immer ein wichtiges mathematisches Konzept sich nicht +direkt durch die bereits entwickelten Funktionen ausdrücken lässt, +erfindet man dafür eine neue Funktion oder Familie von Funktionen. +Beispielsweise hat sich die Darstellung von Zahlen $x$ als Potenzen +einer gemeinsamen Basis, zum Beispiel $x=10^y$, als sehr nützlich +herausgestellt, um Multiplikationen auf die von Hand leichter +ausführbaren Additionen zurückzuführen. +Man braucht also die Fähigkeit, die Abhängigkeit des Exponenten $y$ +von $x$ auszudrücken, mit anderen Worten, man braucht die +Logarithmusfunktion. + +Auch die Logarithmusfunktion erlaubt nicht, die Gleichungen $xe^x=y$ +nach $x$ aufzulösen. +Solche Exponentialgleichungen treten in verschiedenster Form auch in +Anwendungen auf. +Die Lambert-$W$-Funktion, die in Abschnitt~\ref{buch:section:lambertw} +eingeführt wird, löst genau diese Aufgabe. + + +% +% Geometrisch definierte spezielle Funktionen +% +\subsubsection{Geometrisch definierte spezielle Funktionen} +Die trigonometrischen Funktionen entstanden bereits im Altertum +um das Problem der Vermessung der Himmelskugel zu lösen. +Man kann sie aber auch zur Parametrisierung eines Kreises oder +zur Beschreibung von Drehungen mit Drehmatrizen verwenden. +Sie stellen auch eine Zusammenhang zwischen der Bogenlänge +entlang eines Kreises und der zugehörigen Sehne her. +Diese Ideen lassen sich auf eine grössere Klasse von Kurven, +nämlich die Kegelschnitte verallgemeinern. +Diese werden in Kapitel~\ref{buch:chapter:geometrie} eingeführt. +Die Parametrisierungen der Hyperbeln zum Beispiel führt auf +hyperbolische Funktion und macht eine Verbindung zu Exponential- +und Logarithmusfunktion sichtbar. + +% +% Lösungen von Differentialgleichungen +% +\subsubsection{Lösungen von Differentialgleichungen} +Alternativ kann man $\sin x$ und $\cos x$ als spezielle Lösungen der +Differentialgleichung $y''=-y$ verstehen. +Viele andere Funktionen wie die hyperbolischen Funktionen oder die +Bessel-Funktionen sind ebenfalls Lösungen spezieller Differentialgleichungen. + +Auch die Theorie der partiellen Differentialgleichungen, auf die +im Kapitel~\ref{buch:chapter:pde} eingegangen wird, gibt Anlass +zu interessanten Lösungsfunktionen. +Die Separation des Poisson-Problems in Kugelkoordinaten führt zum Beispiel +auf die Kugelfunktionen, mit denen sich beliebige Funktionen auf einer +Kugeloberfläche analysieren und synthetisieren lassen. +Die Lösungen einer linearer gewöhnlicher Differentialgleichung können +oft mit Hilfe von Potenzreihen dargestellt werden. +So kann man zum Beispiel die Potenzreihenentwicklung der Exponentialfunktion +und der trigonometrischen Funktionen finden. +Die Konvergenz einer Potenzreihe wird aber durch Singularitäten +eingeschränkt. +Komplexe Potenzreihen ermöglichen aber, solche Stellen zu ``umgehen''. +Die Theorie der komplex differenzierbaren Funktionen bildet einen +allgemeinen Rahmen, mit solchen Funktionen umzugehen und ist zum +Beispiel nötig, um die Bessel-Funktionen der zweiten Art zu konstruieren, +die ebenfalls Lösungen ger Bessel-Gleichung sind, aber bei $x=0$ +eine Singularität aufweisen. + +% +% Stammfunktionen +% +\subsubsection{Stammfunktionen} +Die Stammfunktion $F(x)$ einer gegebenen Funktion $f(x)$ ist natürlich +auch die Lösung der besonders einfachen Differentialgleichung $F'=f$. +Ein bekanntes Beispiel ist die Stammfunktion der Wahrscheinlichkeitsdichte +\[ +\varphi(x) += +\frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}}, +\] +der Normalverteilung, für die aber keine geschlossene Darstellung +mit bekannten Funktionen bekannt ist. +Sie kann aber durch die Fehlerfunktion +\[ +\operatorname{erf}(x) += +\frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2}\,dt +\] +dargestellt werden. +Mit dem Risch-Algorithmus kann man nachweisen, dass es tatsächlich +keine Möglichkeit gibt, die Stammfunktion in geschlossener Form durch +die bereits bekannten Funktionen darzustellen, die Definition einer +neuen speziellen Funktion ist also der einzige Ausweg. +Die Fehlerfunktion ist heute in der Standardbibliothek enthalten auf +gleicher Stufe wie Wurzeln, trigonometrische Funktionen, +Exponentialfunktionen oder Logarithmen. + diff --git a/buch/chapters/010-potenzen/Makefile.inc b/buch/chapters/010-potenzen/Makefile.inc index 27ccdae..87afe38 100644 --- a/buch/chapters/010-potenzen/Makefile.inc +++ b/buch/chapters/010-potenzen/Makefile.inc @@ -8,6 +8,7 @@ CHAPTERFILES += \ chapters/010-potenzen/loesbarkeit.tex \ chapters/010-potenzen/polynome.tex \ chapters/010-potenzen/tschebyscheff.tex \ + chapters/010-potenzen/rational.tex \ chapters/010-potenzen/potenzreihen.tex \ chapters/010-potenzen/uebungsaufgaben/101.tex \ chapters/010-potenzen/uebungsaufgaben/102.tex \ diff --git a/buch/chapters/010-potenzen/chapter.tex b/buch/chapters/010-potenzen/chapter.tex index 7dc30d4..a1cce60 100644 --- a/buch/chapters/010-potenzen/chapter.tex +++ b/buch/chapters/010-potenzen/chapter.tex @@ -18,10 +18,13 @@ Diskussion rechtfertigen. \begin{enumerate} \item Die Umkehrfunktion der Potenzfunktion sind viel schwieriger zu +\index{Potenzfunktion}% berechnen und können als eine besonders einfache Art von speziellen Funktionen betrachtet werden. Die in Abschnitt~\ref{buch:potenzen:section:loesungen} definierten Wurzelfunktionen sind der erste Schritt zur Lösung von Polynomgleichungen. +\index{Wurzelfunktion}% +\index{Polynomgleichung}% \item Es lassen sich interessante Familien von Funktionen definieren, die zum Teil aus Polynomen bestehen. @@ -32,6 +35,7 @@ Abschnitt~\ref{buch:polynome:section:tschebyscheff} vorgestellt. \item Alles speziellen Funktionen sind analytisch, sie haben eine konvergente Potenzreihenentwicklung. +\index{Potenzreihe}% Die Partialsummen einer Potenzreihenentwicklung sind Approximationen An die wichtigsten Eigenschaften von Potenzreihen wird in Abschnitt~\ref{buch:potenzen:section:potenzreihen} erinnert. @@ -40,6 +44,7 @@ Abschnitt~\ref{buch:potenzen:section:potenzreihen} erinnert. \input{chapters/010-potenzen/polynome.tex} \input{chapters/010-potenzen/loesbarkeit.tex} \input{chapters/010-potenzen/tschebyscheff.tex} +\input{chapters/010-potenzen/rational.tex} \input{chapters/010-potenzen/potenzreihen.tex} \section*{Übungsaufgaben} diff --git a/buch/chapters/010-potenzen/loesbarkeit.tex b/buch/chapters/010-potenzen/loesbarkeit.tex index 692192d..a9f273a 100644 --- a/buch/chapters/010-potenzen/loesbarkeit.tex +++ b/buch/chapters/010-potenzen/loesbarkeit.tex @@ -20,8 +20,22 @@ für ein Polynome $p(x)$ und eine Konstante $c\in\mathbb{C}$. % Fundamentalsatz der Algebra % \subsection{Fundamentalsatz der Algebra} +In Abschnitt~\ref{buch:polynome:subsection:faktorisierung-und-nullstellen} +wurde gezeigt, dass sich jede Nullstellen $\alpha$ eines Polynoms als +Faktor $x-\alpha$ abspalten lässt. +Jedes Polynom liess sich in ein Produkt von Linearfaktoren und +einen Faktor zerlegen, der keine Nullstellen hat. +Zum Beispiel hat das Polynom $x^2+1\in\mathbb{R}[x]$ keine +Nullstellen in $\mathbb{R}$. +Eine solche Nullstelle müsste eine Quadratwurzel von $-1$ sein. +Die komplexen Zahlen $\mathbb{C}$ wurden genau mit dem Ziel konstruiert, +dass $i=\sqrt{-1}$ sinnvoll wird. +Der Fundamentalsatz der Algebra zeigt, dass $\mathbb{C}$ alle +Nullstellen von Polynomen enthält. \begin{satz}[Gauss] +\index{Satz!Fundamentalsatz der Algebra}% +\index{Fundamentalsatz der Algebra}% \label{buch:potenzen:satz:fundamentalsatz} Jedes Polynom $p(x)=a_nx^n+\dots + a_2x^2 + a_1x + a_0\in\mathbb{C}[x]$ zerfällt in ein Produkt @@ -34,6 +48,7 @@ a_n für Nullstellen $\alpha_k\in\mathbb{C}$. \end{satz} + % % Lösbarkeit durch Wurzelausdrücke % @@ -143,8 +158,63 @@ höheren Grades nicht mit einer Lösung durch Wurzelausdrücke rechnen kann. \begin{satz}[Abel] +\index{Satz!von Abel} \label{buch:potenzen:satz:abel} Für Polynomegleichungen vom Grad $n\ge 5$ gibt es keine allgemeine Lösung durch Wurzelausdrücke. \end{satz} + + +% +% Algebraische Zahlen +% +\subsection{Algebraische Zahlen} +Die Verwendung der komplexen Zahlen ist für numerische Rechnungen +zweckmässig. +In den Anwendungen der Computer-Algebra hingegen erwartet man zum +Beispiel exakte Formeln für eine Stammfunktion. +Nicht rationale Zahlen können nur exakt verarbeitet werden, wenn +Sie sich algebraisch in endlich vielen Schritten charakterisieren +lassen. +Dies ist zum Beispiel für rationale Zahlen $\mathbb{Q}$ möglich. +Gewisse irrationale Zahlen kann man charakterisieren durch +die Eigenschaft, Nullstelle eines Polynoms $p(x)\in\mathbb{Q}[x]$ +mit rationalen Koeffizienten zu sein. + +\begin{definition} +Eine Zahl $\alpha$ heisst {\em algebraisch} über $\mathbb{Q}$, +wenn es ein Polynom +\index{algebraische Zahl}% +$p(x)\in \mathbb{Q}[x]$ gibt, welches $\alpha$ als Nullstelle hat. +Eine Zahl heisst transzendent über $\mathbb{Q}$, wenn sie nicht algebraisch ist +über $\mathbb{Q}$. +\end{definition} + +Die Zahlen $i=\sqrt{-1}$ und $\sqrt{n\mathstrut}$ für $n\in\mathbb{N}$ +sind also algebraisch über $\mathbb{Z}$. +Es ist gezeigt worden, dass $\pi$ und $e$ nicht nur irrational +sind, sondern sogar transzendent. + +Eine Polynomgleichung $p(\alpha)=0$ mit $p(x)\in\mathbb{Q}[x]$ +hat eine Rechenregel für $\alpha$ zur Folge. +Dazu schreibt man +\[ +p_n\alpha^n + p_{n-1}\alpha^{n-1} + \dots + a_1\alpha + a_0 =0 +\qquad\Rightarrow\qquad +\alpha^n = -\frac{1}{p_n}\bigl( +p_{n-1}\alpha^{n-1}+\dots+a_1\alpha+a_0 +\bigr). +\] +Diese Regel erlaubt, jede Potenz $\alpha^k$ mit $k\ge n$ durch +Potenzen von $\alpha^l$ mit $l<n$ auszudrücken. +Die Zahlen, die sich durch arithmetische Operationen aus +$\alpha$ bilden lassen, lassen sich also sogar durch lineare +Operationen aus $1,\alpha,\alpha^2,\dots,\alpha^{n-1}$ +bilden. +Sie bilden einen endlichdimensionalen Vektorraum über $\mathbb{Q}$. +Rechnen mit algebraischen Zahlen ist also in einem CAS exakt möglich, +wie das in Abschnitt~\ref{buch:integrale:section:dkoerper} +für die Berechnung von Stammfunktionen illustriert wird. + + diff --git a/buch/chapters/010-potenzen/polynome.tex b/buch/chapters/010-potenzen/polynome.tex index 5f119e5..ce5e521 100644 --- a/buch/chapters/010-potenzen/polynome.tex +++ b/buch/chapters/010-potenzen/polynome.tex @@ -13,20 +13,32 @@ Operationen konstruieren lassen, sind die Polynome. \index{Polynom}% Ein {\em Polynome} vom Grad $n$ ist die Funktion \[ -p(x) = a_nx^2n + a_{n-1}x^{n-1} + \dots + a_2x^2 + a_1x + a_0, +p(x) = a_nx^n + a_{n-1}x^{n-1} + \dots + a_2x^2 + a_1x + a_0, \] wobei $a_n\ne 0$ sein muss. Das Polynom heisst {\em normiert}, wenn $a_n=1$ ist. \index{normiert}% +\index{Grad eines Polynoms}% +\index{Polynom!Grad}% Die Menge aller Polynome mit Koeffizienten in der Menge $K$ wird mit $K[x]$ bezeichnet. \end{definition} Die Menge $K[x]$ ist heisst auch der {\em Polynomring}, weil $K[x]$ -mit der Addition, Subtraktion und Multiplikation von Polynomen ein -Ring mit $1$ ist. -Im Folgenden werden wir uns auf die Fälle $K=\mathbb{R}$ und $K=\mathbb{C}$ -beschränken. +\index{Polynomring}% +mit der Addition, Subtraktion und Multiplikation von Polynomen eine +algebraische Struktur bildet, die man einen Ring mit $1$ nennt. +\index{Ring}% +Im Folgenden werden wir uns auf die Fälle $K=\mathbb{Q}$, $K=\mathbb{R}$ +und $K=\mathbb{C}$ beschränken. + +Für den Grad eines Polynoms gelten die bekannten Rechenregeln +\begin{align*} +\deg (a(x) + b(x)) &\le \operatorname{max}(\deg a(x), \deg b(x)) +\\ +\deg (a(x)\cdot b(x)) &=\deg a(x) + \deg b(x) +\end{align*} +für beliebige Polynome $a(x),b(x)\in K[x]$. In Abschnitt~\ref{buch:orthogonalitaet:section:orthogonale-funktionen} werden Familien von Polynomen konstruiert werden, die sich durch eine @@ -35,12 +47,14 @@ Diese Polynome lassen sich typischerweise auch als Lösungen von Differentialgleichungen finden. Ausserdem werden hypergeometrische Funktionen \[ -\mathstrut_pF_q\biggl(\begin{matrix}a_1,\dots,a_p\\b_1,\dots,b_q\end{matrix};z\biggr), +\mathstrut_pF_q\biggl( +\begin{matrix}a_1,\dots,a_p\\b_1,\dots,b_q\end{matrix};z +\biggr), \] die in Abschnitt~\ref{buch:rekursion:section:hypergeometrische-funktion} definiert werden, zu Polynomen, wenn mindestens einer der Parameter $a_k$ negativ ganzzahlig ist. -Polynome sind also bereits eine Vielfältige Quelle von speziellen +Polynome sind also bereits eine vielfältige Quelle von speziellen Funktionen. Viele spezielle Funktionen werden aber komplizierter sein und @@ -52,7 +66,10 @@ Berechnungsverfahren für die speziellen Funktionen zu konstruieren. Dank des folgenden Satzes kann dies immer mit Polynomen geschehen. \begin{satz}[Weierstrass] +\index{Satz!Weierstrass}% +\index{Weierstrasse, Karl}% \label{buch:potenzen:satz:weierstrass} +\index{Weierstrass, Satz von}% Eine auf einem kompakten Intervall $[a,b]$ stetige Funktion $f(x)$ lässt sich durch eine Folge $p_n(x)$ von Polynomen gleichmässig approximieren. @@ -60,7 +77,9 @@ approximieren. Der Satz sagt in dieser Form nichts darüber aus, wie die Approximationspolynome konstruiert werden sollen. +\index{Approximationspolynom}% Von Bernstein gibt es konstruktive Beweise dieses Satzes, +\index{Bernstein-Polynom}% welche auch explizit eine Folge von Approximationspolynomen konstruieren. In der späteren Entwicklung werden wir für die meisten @@ -69,19 +88,372 @@ ebenfalls als Approximationen dienen können. Weitere Möglichkeiten liefern Interpolationsmethoden der numerischen Mathematik. -\subsection{Faktorisierung und Nullstellen} +Diese Betrachtungsweise von Polynomen als Funktionen trägt +aber den zusätzlichen algebraischen Eigenschaften des Polynomringes +nicht ausreichend Rechnung. +Zum Beispiel bedeutet Gleichheit von zwei reellen Funktion $f(x)$ und +$g(x)$, dass man $f(x)=g(x)$ für alle $x\in\mathbb{R}$ nachprüfen +muss. +Für Polynome reicht es jedoch, die Funktionswerte in nur wenigen +Punkten zu vergleichen. +Dies äussert sich zum Beispiel auch im Prinzip des +Koeffizientenvergleichs von +Satz~\ref{buch:polynome:satz:koeffizientenvergleich}. +Im Gegensatz zu beliebigen Funktionen kann man daher Aussagen +über Polynomen immer mit endlich Algorithmen entscheiden. +Die nächsten Abschnitte sollen diese algebraischen Eigenschaften +zusammenfassen. + +% +% Polynomdivision, Teilbarkeit und ggT +% +\subsection{Polynomdivision, Teilbarkeit und grösster gemeinsamer Teiler} +Der schriftliche Divisionsalgorithmus für Zahlen funktioniert +auch für die Division von Polynomen. +\index{Polynome!Divisionsalgorithmus}% +Zu zwei beliebigen Polynomen $p(x)$ und $q(x)$ lassen sich also +immer zwei Polynome $a(x)$ und $r(x)$ finden derart, dass +$p(x) = a(x) q(x) + r(x)$. +Das Polynom $a(x)$ heisst der {\em Quotient}, $r(x)$ der {\em Rest} +der Division. +Das Polynom $p(x)$ heisst {\em teilbar} durch $q(x)$, geschrieben +\index{teilbar}% +\index{Polynome!teilbar}% +$q(x)\mid p(x)$, wenn $r(x)=0$ ist. + +% +% Grösster gemeinsamer Teiler +% +\subsubsection{Grösster gemeinsamer Teiler} +Mit dem Begriff der Teilbarkeit geht auch die Idee des grössten +gemeinsamen Teilers einher. +Ein gemeinsamer Teiler zweier Polynome $a(x)$ und $b(x)$ +\index{gemeinsamer Teiler}% +ist ein Polynom $g(x)$, welches beide Polynome teilt, also +$g(x)\mid a(x)$ und $g(x)\mid b(x)$. +\index{grösster gemeinsamer Teiler}% +\index{Polynome!grösster gemeinsamer Teiler}% +Ein Polynom $g(x)$ heisst {\em grösster gemeinsamer Teiler} von $a(x)$ +und $b(x)$, wenn jeder andere gemeinsame Teiler $f(x)$ von $a(x)$ +und $b(x)$ auch ein Teiler von $g(x)$ ist. +Man beachte, dass die skalaren Vielfachen eines grössten gemeinsamen +Teilers ebenfalls grösste gemeinsame Teiler sind, der grösste gemeinsame +Teiler ist also nicht eindeutig bestimmt. + +% +% Der euklidische Algorithmus +% +\subsubsection{Der euklidische Algorithmus} +\index{Algorithmus!euklidisch}% +\index{euklidischer Algorithmus}% +Zur Berechnung eines grössten gemeinsamen Teilers steht wie bei den +ganzen Zahlen der euklidische Algorithmus zur Verfügung. +Dazu bildet man die Folgen von Polynomen +\[ +\begin{aligned} +a_0(x)&=a(x) & b_0(x) &= b(x) +& +&\Rightarrow& +a_0(x)&=b_0(x) q_0(x) + r_0(x) && +\\ +a_1(x)&=b_0(x) & b_1(x) &= r_0(x) +& +&\Rightarrow& +a_1(x)&=b_1(x) q_1(x) + r_1(x) && +\\ +a_2(x)&=b_1(x) & b_2(x) &= r_1(x) +& +&\Rightarrow& +a_2(x)&=b_2(x) q_2(x) + r_2(x) && +\\ +&&&&&\hspace*{2mm}\vdots&& +\\ +a_{m-1}(x)&=b_{m-2}(x) & b_{m-1}(x) &= r_{m-2}(x) +& +&\Rightarrow& +a_{m-1}(x)&=b_{m-1}(x)q_{m-1}(x) + r_{m-1}(x) &\text{mit }r_{m-1}(x)&\ne 0 +\\ +a_m(x)&=b_{m-1}(x) & b_m(x)&=r_{m-1}(x) +& +&\Rightarrow& +a_m(x)&=b_m(x)q_m(x).&& +\end{aligned} +\] +Der Index $m$ ist der Index, bei dem zum ersten Mal $r_m(x)=0$ ist. +Dann ist $g(x)=r_{m-1}(x)$ ein grösster gemeinsamer Teiler. + +% +% Der erweiterte euklidische Algorithmus +% +\subsubsection{Der erweiterte euklidische Algorithmus} +\index{Polynome!erweiterter euklidischer Algorithmus}% +\index{erweiterter euklidischer Algorithmus}% +\index{euklidischer Algorithmus!erweitert}% +Die Konstruktion der Folgen $a_n(x)$ und $b_n(x)$ kann in Matrixform +kompakter geschrieben werden als +\[ +\begin{pmatrix} +a_k(x)\\ +b_k(x) +\end{pmatrix} += +\begin{pmatrix} +b_{k-1}(x)\\ +r_{k-1}(x) +\end{pmatrix} += +\begin{pmatrix} +0 & 1\\ +1 & -q_{k-1}(x) +\end{pmatrix} +\begin{pmatrix} +a_{k-1}(x)\\ +b_{k-1}(x) +\end{pmatrix}. +\] +Kürzen wir die $2\times 2$-Matrix als +\[ +Q_k(x) = \begin{pmatrix} 0&1\\1&-q_k(x)\end{pmatrix} +\] +ab, dann ergibt das Produkt der Matrizen $Q_0(x)$ bis $Q_{m}(x)$ +\[ +\begin{pmatrix} +g(x)\\ +0 +\end{pmatrix} += +\begin{pmatrix} +r_{m-1}(x)\\ +r_{m}(x) +\end{pmatrix} += +Q_{m}(x) +Q_{m-1}(x) +\cdots +Q_1(x) +Q_0(x) +\begin{pmatrix} +a(x)\\ +b(x) +\end{pmatrix}. +\] +Zur Berechnung des Produktes der Matrizen $Q_k(x)$ kann man rekursiv +vorgehen mit der Rekursionsformel +\[ +S_{k}(x) = Q_{k}(x) S_{k-1}(x) +\qquad\text{mit}\qquad +S_{-1}(x) += +\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}. +\] +Ausgeschrieben bedeutet dies Matrixrekursionsformel +\[ +S_{k-1}(x) += +\begin{pmatrix} +c_{k-1} & d_{k-1} \\ +c_k & d_k +\end{pmatrix} +\qquad\Rightarrow\qquad +Q_{k}(x) S_{k-1}(x) += +\begin{pmatrix} +0&1\\1&-q_k(x) +\end{pmatrix} +\begin{pmatrix} +c_{k-1} & d_{k-1} \\ +c_k & d_k +\end{pmatrix} += +\begin{pmatrix} +c_k&d_k\\ +c_{k+1}&d_{k+1} +\end{pmatrix}. +\] +Daraus lässt sich für die Matrixelemente die Rekursionsformel +\[ +\begin{aligned} +c_{k+1} &= c_{k-1} - q_k(x) c_k(x) \\ +d_{k+1} &= d_{k-1} - q_k(x) d_k(x) +\end{aligned} +\quad +\bigg\} +\qquad +\text{mit Startwerten} +\qquad +\bigg\{ +\begin{aligned} +\quad +c_{-1} &= 1, & c_0 &= 0 \\ +d_{-1} &= 0, & d_0 &= 1. +\end{aligned} +\] +Wendet man die Matrix $S_m(x)$ auf den Vektor mit den Komponenten +$a(x)$ und $b(x)$, erhält man die Beziehungen +\[ +g(x) = c_{k-1}(x) a(x) + d_{k-1}(x) b(x) +\qquad\text{und}\qquad +0 = c_k(x) a(x) + d_k(x) b(x). +\] +Dieser Algorithmus heisst der erweiterte euklidische Algorithmus. +Wir fassen die Resultate zusammen im folgenden Satz. + +\begin{satz} +Zu zwei Polynomen $a(x),b(x) \in K[x]$ gibt es Polynome +$g(x),c(x),d(x)\in K[x]$ +derart, dass $g(x)$ ein grösster gemeinsamer Teiler von $a(x)$ und $b(x)$ +ist, und ausserdem +\[ +g(x) = c(x)a(x)+d(x)b(x) +\] +gilt. +\end{satz} + +% +% Faktorisierung und Nullstellen +% +\subsection{Faktorisierung und Nullstellen +\label{buch:polynome:subsection:faktorisierung-und-nullstellen}} % wird später gebraucht um bei der Definition der hypergeometrischen Reihe % die Zaehler- und Nenner-Polynome als Pochhammer-Symbole zu entwickeln +Ist $\alpha$ eine Nullstelle des Polynoms $a(x)$, also $a(\alpha)=0$. +Der Divisionsalgorithmus mit für die Polynome $a(x)$ und $b(x)=x-\alpha$ +liefert zwei Polynome $q(x)$ für den Quotienten und $r(x)$ für den Rest +mit den Eigenschaften +\[ +a(x) += +q(x) b(x) ++r(x) += +q(x)(x-\alpha)+r(x) +\qquad\text{mit}\qquad +\deg r < \deg b(x)=1. +\] +Der Rest $r(x)$ ist somit eine Konstante. +Setzt man $x=\alpha$ ein, folgt +\[ +0 += +a(\alpha) += +q(\alpha)(\alpha-\alpha)+r(\alpha) += +r(\alpha), +\] +der Rest $r(x)$ muss also verschwinden. +Für eine Nullstelle $\alpha$ von $a(x)$ ist $a(x)$ durch $(x-\alpha)$ +teilbar. +Daraus folgt auch, dass ein Polynom $a(x)$ vom Grad $n=\deg a(x)$ höchstens +$n$ verschiedene Nullstellen haben kann. + +Sind $\alpha_1,\dots,\alpha_k$ alle Nullstellen von $a(x)$, dann lässt +sich $a(x)$ zerlegen in Faktoren +\[ +a(x) += +(x-\alpha_1)^{m_1} +(x-\alpha_2)^{m_2} +\cdots +(x-\alpha_k)^{m_k} +b(x). +\] +Das Polynom $b(x)\in K[x]$ hat keine Nullstellen in $K$. +Wenn zwei Polynome $a(x)$ und $b(x)$ eine gemeinsame Nullstelle $\alpha$ +haben, dann ist $(x-\alpha)$ ein Teiler beider Polynome und somit auch +ein Teiler eines grössten gemeinsamer Teiler. +Insbesondere sind die Nullstellen des grössten gemeinsamen Teilers +gemeinsame Nullstellen von $a(x)$ und $b(x)$. + +% +% Koeffizienten-Vergleich +% \subsection{Koeffizienten-Vergleich} % Wird gebraucht für die Potenzreihen-Methode % Muss später ausgedehnt werden auf Potenzreihen +Wenn zwei Polynome $a(x)$ und $b(x)$ vom Grad $\le n$ die gleichen +Koeffizienten haben, dann sind sie selbstverständlich gleich. +Weniger klar ist, ob zwei Polynome, die die gleichen Werte für beliebige +$x$ haben, auch die gleichen Koeffizienten haben. +Wir nehmen also an, dass $a(x)=b(x)$ gilt für jedes $x\in K$ und +wollen daraus ableiten, dass die Koeffizienten übereinstimmen müssen. +Seien $x_1,\dots,x_n$ verschiedene Elemente in $K$, dann +hat das Polynom $p(x)=a(x)-b(x)$, welches Grad $\le n$ hat, +die $n$ Nullstellen $x_k$ für $k=1,\dots,n$. +$p(x)$ ist also durch alle Polynome $x-x_k$ teilbar. +Weil $\deg p\le n$ ist, muss +\[ +0 += +a(x)-b(x) += +p(x) += +p_n +(x-x_1)(x-x_2)\cdots (x-x_n) +\] +sein. +Ist $y\in K$ verschieden von den Nullstellen $x_i$, dann ist +in $y-x_i\ne 0$ für alle $i$. +Für das Produkt gilt dann +\[ +0 += +p(y) += +p_n +(\underbrace{x-x_1}_{\displaystyle \ne 0}) +\cdots +(\underbrace{x-x_n}_{\displaystyle \ne 0}), +\] +so dass $p_n=0$ sein muss, was schliesslich dazu führt, dass alle +Koeffizienten von $a(x)-b(x)$ verschwinden. +Daraus folgt das Prinzip des Koeffizientenvergleichs: +\index{Koeffizientenvergleich}% +\index{Polynome!Koeffizientenvergleich}% + +\begin{satz}[Koeffizientenvergleich] +\index{Satz!Koeffizientenvergleich}% +\label{buch:polynome:satz:koeffizientenvergleich} +Zwei Polynome $a(x)$ und $b(x)$ stimmen genau dann überein, wenn +sie die gleichen Koeffizienten haben. +\end{satz} + +Man beachte, dass dieses Prinzip nur funktioniert, wenn es genügend +viele verschiedene Elemente in $K$ gibt. +Für die endlichen Körper $\mathbb{F}_p$ gilt dies nicht, denn es gilt +\[ +a(x) += +x^p-x\equiv 0\mod p +\] +für jede Zahl $x\in\mathbb{F}_p$, das Polynom $a(x)$ mit Grad $p$ +hat also genau $p$ Nullstellen, es gibt aber keine weitere Nullstelle, +mit der man wie oben schliessen könnte, dass $a(x)$ das Nullpolynom ist. + +% +% Berechnung von Polynom-Werten +% +\subsection{Berechnung von Polynom-Werten} +Die naive Berechnung der Werte eines Polynoms $p(x)$ vom Grad $n$ +beginnt mit der Berechnung der Potenzen von $x$. +Da alle Potenzen benötigt werden, wird man dazu $n-1$ Multiplikationen +benötigen. +Die Potenzen müssen anschliessend mit den Koeffizienten multipliziert +werden, dazu sind weitere $n$ Multiplikationen nötig. +Der Wert des Polynoms kann also erhalten werden mit $2n-1$ Multiplikationen +und $n$ Additionen. -\subsection{Polynom-Berechnung} -Die naive Berechnung der Werte eines Polynoms beginnt mit der Berechnung -der Potenzen. -Die Anzahl nötiger Multiplikationen kann minimiert werden, indem man -das Polynom als +Die Anzahl nötiger Multiplikationen kann mit dem folgenden Vorgehen +reduziert werden, welches auch als das {\em Horner-Schema} bekannt ist. +\index{Horner-Schema}% +\index{Polynome!Horner-Schema}% +Statt erst am Schluss alle Terme zu addieren, addiert man so früh +wie möglich. +Zum Beispiel multipliziert man $(a_nx+a_{n-1})$ mit $x$, was auf +die Multiplikationen beider Terme mit $x$ hinausläuft. +Mit dieser Idee kann man das Polynom als \[ a_nx^n + @@ -95,10 +467,10 @@ a_0 = ((\dots((a_nx+a_{n-1})x+a_{n-2})x+\dots )x+a_1)x+a_0 \] -schreibt. +schreiben. Beginnend bei der innersten Klammer sind genau $n$ Multiplikationen -und $n+1$ Additionen nötig, im Gegensatz zu $2n$ Multiplikationen -und $n$ Additionen bei der naiven Vorgehensweise. +und $n$ Additionen nötig, man spart mit diesem Vorgehen also +$n-1$ Multiplikationen. diff --git a/buch/chapters/010-potenzen/potenzreihen.tex b/buch/chapters/010-potenzen/potenzreihen.tex index a003fcb..994f99f 100644 --- a/buch/chapters/010-potenzen/potenzreihen.tex +++ b/buch/chapters/010-potenzen/potenzreihen.tex @@ -105,6 +105,7 @@ Für $|z|<1$ geht $z^n\to 0$ für $n\to\infty$, die Partialsummen konvergieren und wir erhalten das Resultat des folgenden Satzes. \begin{satz} +\index{Satz!geometrische Reihe}% \label{buch:polynome:satz:geometrischereihe} Die geometrische Reihe $a+az+az^2+\dots$ konvergiert für $|z|<1$ und hat die Summe @@ -124,6 +125,7 @@ als konvergent erkannten Reihen nachweisbar. Dies ist der Inhalt des folgenden, wohlbekannten Majorantenkriteriums. \begin{satz}[Majorantenkriterium] +\index{Satz!Majorantenkriterium}% \label{buch:polynome:satz:majorantenkriterium} \index{Majorantenkriterium} Seien $a_k$ und $b_k$ die Glieder zweier unendlicher Reihen. @@ -142,6 +144,7 @@ Potenzreihen mit der geometrischen Reihe zu vergleichen und liefert damit einfach anzuwende Kriterien für die Konvergenz. \begin{satz}[Quotientenkriterium] +\index{Satz!Quotientenkriterium}% \label{buch:polynome:satz:quotientenkriterium} \index{Quotientenkriterium}% Eine Reihe @@ -175,6 +178,7 @@ die unter der gegebenen Voraussetzung konvergiert. \end{proof} \begin{satz}[Wurzelkriterium] +\index{Satz!Wurzelkriterium}% \label{buch:polynome:satz:wurzelkriterium} \index{Wurzelkriterium} Falls @@ -203,6 +207,9 @@ das Reststück der Reihe ab Index $N$ ist daher wieder majorisiert durch eine konvergente geometrische Reihe. \end{proof} +% +% Konvergenzradius +% \subsubsection{Konvergenzradius} Das Quotienten- und das Wurzel-Kriterium ist auf beliebige Reihen anwendbar, es berücksichtigt nicht, dass in einer Potenzreihe @@ -224,6 +231,7 @@ um den Punkt $z_0$ ist \end{definition} \begin{satz} +\index{Satz!Konvergenzradius}% \label{buch:polynome:satz:konvergenzradius} Der Konvergenzradius $\varrho$ einer Potenzreihe $\sum_{k=0}^\infty a_k(z-z_0)^k$ ist @@ -420,7 +428,7 @@ $z_0$ ist die Summe \frac{f^{(k)}(z_0)}{k!} (z-z_0)^k \label{buch:polynome:eqn:taylor-polynom} \end{equation} -\index{Taylor-Reihe} +\index{Taylor-Reihe}% Die {\em Taylor-Reihe} der Funktion $f(z)$ ist die Reihe \begin{equation} \mathscr{T}_{z_0}f (z) @@ -431,7 +439,9 @@ Die {\em Taylor-Reihe} der Funktion $f(z)$ ist die Reihe \end{equation} \end{definition} - +% +% Analytische Funktionen +% \subsubsection{Analytische Funktionen} Das Taylor-Polynom $\mathscr{T}_{z_0}^nf(z)$ hat an der Stelle $z_0$ die gleichen Funktionswerte und Ableitungen wie die Funktion $f(z)$, diff --git a/buch/chapters/010-potenzen/rational.tex b/buch/chapters/010-potenzen/rational.tex new file mode 100644 index 0000000..f1957ac --- /dev/null +++ b/buch/chapters/010-potenzen/rational.tex @@ -0,0 +1,61 @@ +% +% rational.tex +% +% (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\section{Rationale Funktionen +\label{buch:polynome:section:rationale-funktionen}} +\rhead{Rationale Funktionen} +Polynome sind sehr einfach auszuwerten und können auf einem +Interval jede stetige Funktion beliebig gut approximieren. +Auf einem unbeschränkten Definitionsbereich wachsen Polynome aber +immer unbeschränkt an. +Der führende Term $a_nx^n$ dominiert das Verhalten eines Polynoms +für $x\to\infty$ wegen +\[ +\lim_{x\to\infty} a_nx^n += +\operatorname{sgn} a_n \cdot\infty +\qquad\text{und}\qquad +\lim_{x\to-\infty} a_nx^n += +(-1)^n \operatorname{sgn} a_n\cdot \infty. +\] +Insbesondere kann man nicht erwarten, dass sich eine beschränkte +Funktion wie $\sin x$ durch Polynome auf dem ganzen Definitionsbereich +gut approximieren lässt. +Der Unterschied $p(x)-\sin x$ wird für jedes beliebige Polynome $p(x)$ +für $x\to\pm\infty$ unbeschränkt anwachsen. + +Eine weitere Einschränkung ist, dass die Menge der Polynome bezüglich +der arithmetischen Operationen nicht abgeschlossen ist. +Man kann zwar Polynome addieren und multiplizieren, aber der Quotient +ist nicht notwendigerweise ein Polynom. +Abhilfe schafft nur, wenn man Quotienten von Polynomen zulässt. + +\begin{definition} +Eine Funktion $f(x)$ heisst {\em rationale Funktion}, wenn sie Quotient +\index{rationale Funktion}% +zweier Polynome ist, wenn es also Polynome $p(x), q(x)\in K[x]$ gibt mit +\[ +f(x) = \frac{p(x)}{q(x)}. +\] +Die Menge der rationalen Funktione mit Koeffizienten in $K$ wird mit +$K(x)$ bezeichnet. +\end{definition} + +Polynome sind rationale Funktionen, deren Nennergrad $1$ ist. +Rationale Funktionen können ebenfalls zur Approximation von Funktionen +verwendet werden. +Da sie beschränkt sein können, haben sie das Potential, +beschränkte Funktionen besser zu approximieren, als dies mit +Polynomen allein möglich wäre. +Die Theorie der Padé-Approximation, wie sie zum Beispiel im Buch +\index{Pade-Approximation@Padé-Approximation}% +\cite{buch:pade} dargestellt ist, ist zum Beispiel auch in der +Regelungstechnik von Interesse, da sich rationale Funktionen mit +linearen Komponenten schaltungstechnisch realisieren lassen. +Weitere Anwendungen werden in Kapitel~\ref{chapter:transfer} +gezeigt. + + diff --git a/buch/chapters/010-potenzen/tschebyscheff.tex b/buch/chapters/010-potenzen/tschebyscheff.tex index 29d1d4b..ccc2e97 100644 --- a/buch/chapters/010-potenzen/tschebyscheff.tex +++ b/buch/chapters/010-potenzen/tschebyscheff.tex @@ -241,12 +241,16 @@ Die Rekursionsformel kann auch dazu verwendet werden, Werte der Tschebyscheff-Polynome sehr effizient zu berechnen. +% +% Multiplikationsformel +% \subsubsection{Multiplikationsformel} Aus der Definition mit Hilfe trigonometrischer Funktionen lässt sich auch eine Multiplikationsformel ableiten. \index{Multiplikationsformel}% \begin{satz} +\index{Satz!Multiplikationsformel für Tschebyscheff-Polynome}% Es gilt \begin{align} T_m(x)T_n(x)&=\frac12\bigl(T_{m+n}(x) + T_{m-n}(x)\bigr) @@ -300,4 +304,82 @@ T_{mn}(x). Damit ist auch \eqref{buch:potenzen:tschebyscheff:mult2} bewiesen. \end{proof} +% +% Differentialgleichung +% +\subsubsection{Tschebyscheff-Differentialgleichung} +Die Ableitungen der Tschebyscheff-Polynome sind +\begin{align*} +T_n(x) +&= +\cos (ny(x)) +&& +&& +\\ +\frac{d}{dx} T_n(x) +&= +\frac{d}{dx} \cos(ny(x)) += +n\sin(ny(x)) \cdot \frac{dy}{dx} +& +&\text{mit}& +\frac{dy}{dx} +&= +-\frac{1}{\sqrt{1-x^2}} +\\ +\frac{d^2}{dx^2} T_n(x) +&= +-n^2\cos(ny(x)) \biggl(\frac{dy}{dx}\biggr)^2 + n\sin(ny(x)) \frac{d^2y}{dx^2} +& +&\text{mit}& +\frac{d^2y}{dx^2} +&= +-\frac{x}{(1-x^2)^{\frac32}}. +\end{align*} +Wir suchen eine verschwindende Linearkombination dieser drei Terme +mit Funktionen von $x$ als Koeffizienten. +Wir setzen daher an +\begin{align*} +0 +&= +\alpha(x) T_n''(x) ++ +\beta(x) T_n'(x) ++ +\gamma(x) T_n(x) +\\ +&= +\biggl( +-\frac{n^2\alpha(x)}{1-x^2} ++ +\gamma(x) +\biggr) +\cos(ny(x)) ++ +\biggl( +-\frac{nx\alpha(x)}{(1-x^2)^{\frac32}} +-\frac{n\beta(x)}{\sqrt{1-x^2}} +\biggr) +\sin(ny(x)) +\end{align*} +Die grossen Klammern müssen verschwinden, was nur möglich ist, wenn zu +gegebenem $\alpha(x)$ die anderen beiden Koeffizienten +\begin{align*} +\beta(x) &= -\frac{x\alpha(x)}{1-x^2} \\ +\gamma(x) &= n^2 \frac{\alpha(x)}{1-x^2} +\end{align*} +sind. +Die Koeffizienten werden besonders einfach, wenn man $\alpha(x)=1-x^2$ wählt. +Die Tschebyscheff-Polynome sind Lösungen der Differentialgleichung +\begin{equation} +(1-x^2) T_n''(x) -x T_n'(x) +n^2 T_n(x) = 0. +\label{buch:potenzen:tschebyscheff:dgl} +\end{equation} +Die Differentialgleichung~\eqref{buch:potenzen:tschebyscheff:dgl} +heisst {\em Tschebyscheff-Differentialgleichung}. +\index{Tschebyscheff-Differentialgleichung}% +\index{Differentialgleichung!Tschebyscheff-}% + + + diff --git a/buch/chapters/020-exponential/chapter.tex b/buch/chapters/020-exponential/chapter.tex index 1ab4769..eaa777d 100644 --- a/buch/chapters/020-exponential/chapter.tex +++ b/buch/chapters/020-exponential/chapter.tex @@ -12,8 +12,8 @@ \input{chapters/020-exponential/zins.tex} \input{chapters/020-exponential/log.tex} \input{chapters/020-exponential/lambertw.tex} -\input{chapters/020-exponential/dilog.tex} -\input{chapters/020-exponential/eili.tex} +%\input{chapters/020-exponential/dilog.tex} +%\input{chapters/020-exponential/eili.tex} \section*{Übungsaufgaben} \rhead{Übungsaufgaben} diff --git a/buch/chapters/020-exponential/lambertw.tex b/buch/chapters/020-exponential/lambertw.tex index 2b023cc..d78fdc3 100644 --- a/buch/chapters/020-exponential/lambertw.tex +++ b/buch/chapters/020-exponential/lambertw.tex @@ -17,6 +17,11 @@ der Unbekannten und der Exponentialfunktion, also $xe^x$ auftreten. Die Lambert $W$-Funktion ermöglicht, die Lösungen solcher Gleichungen darzustellen. +Als Anwendung der Theorie der Lambert-$W$-Funktion wird in +Kapitel~\ref{chapter:lambertw} +eine Parametrisierung einer Verfolgungskurve mit Hilfe von $W(x)$ +bestimmt. + % % Die Funktion xe^x % @@ -57,8 +62,10 @@ invertierbar. \begin{definition} Die inverse Funktion der Funktion $[-1,\infty)\to[-1/e,\infty):x\mapsto xe^x=y$ heisst die Lambert $W$-Funktion, geschrieben $W(y)$ oder $W_0(y)$. +\index{Lambert-W-Funktion@Lambert-$W$-Funktion!Definition}% Die inverse Funktion der Funktion $(-\infty,-1)\to[-1/e,0)$ wird mit $W_{-1}$ bezeichnet. +\index{Lambert-W-Funktion@Lambert-$W$-Funktion!Graph}% \end{definition} \begin{figure} @@ -78,7 +85,11 @@ erfüllen sie W(x) e^{W(x)} = x. \] +% +% Ableitung der W-Funktion +% \subsubsection{Ableitung der Funktionen $W(x)$ und $W_{-1}(x)$} +\index{Lambert-W-Funktion@Lambert-$W$-Funktion!Ableitung} Die Umkehrfunktion $f^{-1}(y)$ einer Funktion $f(x)$ erfüllt \( f^{-1}(f(x)) = x. @@ -204,7 +215,12 @@ P_{n+1}(t) \] mit $P_1(t)=1$. +% +% Differentialgleichung und Stammfunktion +% \subsubsection{Differentialgleichung und Stammfunktion} +\index{Lambert-W-Funktion@Lambert-$W$-Funktion!Differentialgleichung}% +\index{Differentialgleichung!der Lambert-$W$-Funktion}% Die Ableitungsformel \eqref{buch:lambert:eqn:ableitung} bedeutet auch, dass die $W$-Funktion eine Lösung der Differentialgleichung \[ @@ -223,6 +239,7 @@ Diese Gleichung kann separiert werden in \] Eine Stammfunktion +\index{Lambert-W-Funktion@Lambert-$W$-Funktion!Stammfunktion}% \[ F(y) = @@ -260,6 +277,8 @@ für die Stammfunktion von $W(y)$. \label{buch:subsection:loesung-von-exponentialgleichungen}} Die Lambert $W$-Funktion kann zur Lösung von Exponentialgleichungen verwendet werden. +\index{Lambert-W-Funktion@Lambert-$W$-Funktion!Exponentialgleichungen}% +\index{Exponentialgleichungen}% \begin{aufgabe} Gesucht ist eine Lösung der Gleichung @@ -319,7 +338,10 @@ W(-cbe^{ac}) Die Gleichung hat eine Lösung wenn $-cbe^{ac} > -1/e$ ist. \end{proof} -\subsection{Numerische Berechnung +% +% Numerische Berechnung +% +\subsection{Numerische Berechnung der Lambert-$W$-Funktion \label{buch:subsection:lambertberechnung}} Die $W$-Funktionen sind nur dann nützlich, wenn man sie effizient berechnen kann. @@ -327,13 +349,19 @@ Leider ist sie nicht Teil der C- oder C++-Standardbibliothek, man muss sich also mit einer spezialisierten Bibliothek oder einer eigenen Implementation behelfen. +% +% Berechnung mit dem Newton-Algorithmus +% \subsubsection{Berechnung mit dem Newton-Algorithmus} Für $x>-1$ ist die Funktion $W(x)$ ist die Umkehrfunktion der streng monoton wachsenden und konvexen Funktion $f(x)=xe^x$. In dieser Situation konvergiert der Newton-Algorithmus zur Bestimmung +\index{Newton-Algorithmus}% +\index{Algorithmus!Newton-}% der Nullstelle $x=W_0(y)$ von $f(x)-y$ für alle Werte von $y>-1/e$. Für $W_{-1}(y)$ ist die Situation etwas komplizierter, da für $x<-1$ die Funktion $f(x)$ nicht konvex ist. +\index{Lambert-W-Funktion@Lambert-$W$-Funktion!Newton-Algorithmus} Ausgehend vom Startwert $x_0$ ist die Iterationsfolge definiert durch @@ -361,12 +389,7 @@ bestimmt werden. \subsubsection{GNU scientific library} Die Lambert $W$-Funktionen $W_0(x)$ und $W_{-1}(x)$ sind auch in der GNU scientific library \cite{buch:library:gsl} implementiert. - -% -% Verfolgungskurven -% -\subsection{Verfolgungskurven -\label{buch:subsection:verfolgungskurven}} +\index{GNU scientifi library}% diff --git a/buch/chapters/030-geometrie/chapter.tex b/buch/chapters/030-geometrie/chapter.tex index f3f1d39..24fc089 100644 --- a/buch/chapters/030-geometrie/chapter.tex +++ b/buch/chapters/030-geometrie/chapter.tex @@ -32,6 +32,7 @@ der Strahlensatz muss durch den Satz von Menelaos ersetzt werden. Es ergibt sich eine Methode, beliebige Dreiecke auf einer Kugeloberfläche ganz analog zum Vorgehen bei ebenen Dreiecken zu berechnen. Diese sphärische Trigonometrie ist die Basis der Navigation +(siehe Kapitel~\ref{chapter:nav}) und aller astrometrischer Berechnungen. Die Analysis hat die Möglichkeit geschaffen, die Länge von Kurven @@ -42,7 +43,7 @@ wie die Berechnung der Länge von Ellipsen- oder Hyperbelbögen auf die Notwendigkeit führt, neue spezielle Funktionen zu definieren. \input{chapters/030-geometrie/trigonometrisch.tex} -\input{chapters/030-geometrie/sphaerisch.tex} +%\input{chapters/030-geometrie/sphaerisch.tex} \input{chapters/030-geometrie/hyperbolisch.tex} \input{chapters/030-geometrie/laenge.tex} \input{chapters/030-geometrie/flaeche.tex} @@ -54,5 +55,6 @@ die Notwendigkeit führt, neue spezielle Funktionen zu definieren. %\uebungsaufgabe{0} \uebungsaufgabe{1} \uebungsaufgabe{2} +\uebungsaufgabe{3} \end{uebungsaufgaben} diff --git a/buch/chapters/030-geometrie/hyperbolisch.tex b/buch/chapters/030-geometrie/hyperbolisch.tex index 72c2cb4..2938316 100644 --- a/buch/chapters/030-geometrie/hyperbolisch.tex +++ b/buch/chapters/030-geometrie/hyperbolisch.tex @@ -355,6 +355,7 @@ heissen der {\em hyperbolische Tangens} und der {\em hyperbolische Kotangens}. \end{definition} \begin{satz} +\index{Satz!hyperbolische Gruppe}% \label{buch:geometrie:hyperbolisch:Hparametrisierung} Die orientierungserhaltenden $2\times 2$-Matrizen, die das Minkowski-Skalarprodukt invariant lassen und die Zeitrichtung diff --git a/buch/chapters/030-geometrie/images/einheitskreis.pdf b/buch/chapters/030-geometrie/images/einheitskreis.pdf Binary files differindex 0b514eb..d708377 100644 --- a/buch/chapters/030-geometrie/images/einheitskreis.pdf +++ b/buch/chapters/030-geometrie/images/einheitskreis.pdf diff --git a/buch/chapters/030-geometrie/images/einheitskreis.tex b/buch/chapters/030-geometrie/images/einheitskreis.tex index c38dc19..a194190 100644 --- a/buch/chapters/030-geometrie/images/einheitskreis.tex +++ b/buch/chapters/030-geometrie/images/einheitskreis.tex @@ -41,6 +41,7 @@ \fill[color=blue] (\a:\r) circle[radius=0.05]; \draw[color=blue,line width=1.4pt] (\r,0) -- (\r,{\r*tan(\a)}); +\fill[color=blue] (\r,{\r*tan(\a)}) circle[radius=1.0pt]; \node[color=blue] at (\r,{0.5*\r*tan(\a)}) [right] {$\tan\alpha$}; \draw[color=blue,line width=0.4pt] ({\r*cos(\a)},0) -- (\a:\r); @@ -53,6 +54,7 @@ \draw[color=blue] (-0.1,{\r*sin(\a)}) -- (0.1,{\r*sin(\a)}); \draw[color=blue,line width=1.4pt] (0,\r) -- ({\r/tan(\a)},\r); +\fill[color=blue] ({\r/tan(\a)},\r) circle[radius=1.0pt]; \node[color=blue] at ({0.5*\r/tan(\a)},\r) [above] {$\cot\alpha$}; \draw[color=darkgreen,line width=1pt] (0,0) -- (\b:\r); @@ -61,9 +63,11 @@ \fill[color=darkgreen] (\b:\r) circle[radius=0.05]; \draw[color=darkgreen,line width=1.4pt] (0,\r) -- ({\r/tan(\b)},\r); +\fill[color=darkgreen] ({\r/tan(\b)},\r) circle[radius=1.0pt]; \node[color=darkgreen] at ({0.5*\r/tan(\b)},\r) [above] {$\cot\beta$}; \draw[color=darkgreen,line width=1.4pt] (\r,0) -- (\r,{\r*tan(\b)}); +\fill[color=darkgreen] (\r,{\r*tan(\b)}) circle[radius=1.0pt]; \node[color=darkgreen] at (\r,{0.5*\r*tan(\b)}) [right] {$\tan\beta$}; \draw[color=darkgreen,line width=0.4pt] (\b:\r) -- (0,{\r*sin(\b)}); diff --git a/buch/chapters/030-geometrie/trigonometrisch.tex b/buch/chapters/030-geometrie/trigonometrisch.tex index dc1f46a..643c8f2 100644 --- a/buch/chapters/030-geometrie/trigonometrisch.tex +++ b/buch/chapters/030-geometrie/trigonometrisch.tex @@ -167,11 +167,11 @@ und umgekehrt: \[ \sin\alpha = -\sqrt{1-\cos^2\alpha\mathstrut} +\sqrt{1-{\cos\mathstrut\!}^2\,\alpha\mathstrut} \qquad\text{und}\qquad \cos\alpha = -\sqrt{1-\sin^2\alpha\mathstrut} +\sqrt{1-{\sin\mathstrut\!}^2\,\alpha\mathstrut} \] Da sich alle Funktionen durch $\cos\alpha$ und $\sin\alpha$ ausdrücken lassen, können alle auch nur durch eine ausgedrückt werden. @@ -197,7 +197,7 @@ Tabelle~\ref{buch:geometrie:tab:trigo} zusammengestellt ist. &\displaystyle\frac{\sqrt{\csc^2\alpha-1}}{\csc\alpha} \\ \cos\alpha - &\sqrt{1-\sin^2\alpha\mathstrut} + &\sqrt{1-\sin{\!}^2\,\alpha\mathstrut} &\cos\alpha &\displaystyle\frac{1}{\sqrt{1+\tan^2\alpha}} &\displaystyle\frac{\cot\alpha}{\sqrt{1+\cot^2\alpha}} @@ -205,7 +205,7 @@ Tabelle~\ref{buch:geometrie:tab:trigo} zusammengestellt ist. &\displaystyle\frac{1}{\csc\alpha} \\ \tan\alpha - &\displaystyle\frac{\sin\alpha}{\sqrt{1-\sin^2\alpha\mathstrut}} + &\displaystyle\frac{\sin\alpha}{\sqrt{1-\sin{\!}^2\,\alpha\mathstrut}} &\displaystyle\frac{\sqrt{1-\cos^2\alpha\mathstrut}}{\cos\alpha} &\tan\alpha &\displaystyle\frac{1}{\cot\alpha} @@ -213,7 +213,7 @@ Tabelle~\ref{buch:geometrie:tab:trigo} zusammengestellt ist. &\displaystyle\sqrt{\csc^2\alpha-1} \\ \cot\alpha - &\displaystyle\frac{\sqrt{1-\sin^2\alpha\mathstrut}}{\sin\alpha} + &\displaystyle\frac{\sqrt{1-\sin{\!}^2\,\alpha\mathstrut}}{\sin\alpha} &\displaystyle\frac{\cos\alpha}{\sqrt{1-\cos^2\alpha\mathstrut}} &\displaystyle\frac{1}{\tan\alpha} &\cot\alpha @@ -229,7 +229,7 @@ Tabelle~\ref{buch:geometrie:tab:trigo} zusammengestellt ist. &\displaystyle\frac{\csc\alpha}{\sqrt{\csc^2\alpha-1}} \\ \csc\alpha - &\displaystyle\frac{1}{\sqrt{1-\sin^2\alpha\mathstrut}} + &\displaystyle\frac{1}{\sqrt{1-\sin{\!}^2\,\alpha\mathstrut}} &\displaystyle\frac{1}{\cos\alpha} &\displaystyle\sqrt{1+\tan^2\alpha} &\displaystyle\frac{\sqrt{1+\cot^2\alpha}}{\cot\alpha} @@ -394,6 +394,7 @@ D_{\alpha}D_{\beta} Aus dem Vergleich der beiden Matrizen liest man die Additionstheoreme. \begin{satz} +\index{Satz!Drehmatrizen}% Für $\alpha,\beta\in\mathbb{R}$ gilt \begin{align*} \sin(\alpha\pm\beta) diff --git a/buch/chapters/030-geometrie/uebungsaufgaben/3.tex b/buch/chapters/030-geometrie/uebungsaufgaben/3.tex new file mode 100644 index 0000000..6a501fb --- /dev/null +++ b/buch/chapters/030-geometrie/uebungsaufgaben/3.tex @@ -0,0 +1,169 @@ +\def\cas{\operatorname{cas}} +Die Funktion $\cas$ definiert durch +$\cas x = \cos x + \sin x$ hat einige interessante Eigenschaften. +Wie die gewöhnlichen trigonometrischen Funktionen $\sin x$ und $\cos x$ +ist $\cas x$ $2\pi$-periodisch. +Die Ableitung und das Additionstheorem benötigen bei den gewöhnlichen +trigonometrischen Funktionen aber beide Funktionen, im Gegensatz zu den +im folgenden hergeleiteten Formeln, die nur die Funktion $\cas x$ brauchen. +\begin{teilaufgaben} +\item +Drücken Sie die Ableitung von $\cas x$ allein durch Werte der +$\cas$-Funktion aus. +\item +Zeigen Sie, dass +\[ +\cas x += +\sqrt{2} \sin\biggl(x+\frac{\pi}4\biggr) += +\sqrt{2} \cos\biggl(x-\frac{\pi}4\biggr). +\] +\item +Beweisen Sie das Additionstheorem für die $\cas$-Funktion +\begin{equation} +\cas(x+y) += +\frac12\bigl( +\cas(x)\cas(y) + \cas x\cas (-y) + \cas(-x)\cas(y) -\cas(-x)\cas(-y) +\bigr) +\label{buch:geometrie:uebung3:eqn:addition} +\end{equation} +\end{teilaufgaben} +Youtuber Dr Barker hat die Funktion $\cas$ im Video +{\small\url{https://www.youtube.com/watch?v=bn38o3u0lDc}} vorgestellt. + +\begin{loesung} +\begin{teilaufgaben} +\item +Die Ableitung ist +\[ +\frac{d}{dx}\cas x += +\frac{d}{dx}(\cos x + \sin x) += +-\sin x + \cos x += +\sin(-x) + \cos(-x) += +\cas(x). +\] +\item +Die Additionstheoreme angewendet auf die trigonometrischen Funktionen +auf der rechten Seite ergibt +\begin{align*} +\sin\biggl(x+\frac{\pi}4\biggr) +&= +\sin x \cos\frac{\pi}4 + \cos x \sin\frac{\pi}4 +&&& +\cos\biggl(x-\frac{\pi}4\biggr) +&= +\cos(x)\cos\frac{\pi}4 -\sin x \sin\biggl(-\frac{\pi}4\biggr) +\\ +&= +\frac{1}{\sqrt{2}} \sin x ++ +\frac{1}{\sqrt{2}} \cos x +&&& +&= +\frac{1}{\sqrt{2}} \cos x ++ +\frac{1}{\sqrt{2}} \sin x +\\ +&=\frac{1}{\sqrt{2}} \cas x +&&& +&= +\frac{1}{\sqrt{2}} \cas x. +\end{align*} +Multiplikation mit $\sqrt{2}$ ergibt die behaupteten Relationen. +\item +Substituiert man die Definition von $\cas(x)$ auf der rechten Seite von +\eqref{buch:geometrie:uebung3:eqn:addition} und multipliziert aus, +erhält man +\begin{align*} +\eqref{buch:geometrie:uebung3:eqn:addition} +&= +{\textstyle\frac12}\bigl( +(\cos x + \sin x) +(\cos y + \sin y) ++ +(\cos x + \sin x) +(\cos y - \sin y) +\\ +&\qquad ++ +(\cos x - \sin x) +(\cos y + \sin y) +- +(\cos x - \sin x) +(\cos y - \sin y) +\bigr) +\\ +&= +\phantom{-\mathstrut} +{\textstyle\frac12}\bigl( +\cos x\cos y ++ +\cos x\sin y ++ +\sin x\cos y ++ +\sin x\sin y +\\ +& +\phantom{=-\mathstrut{\textstyle\frac12}\bigl(}\llap{$\mathstrut +\mathstrut$} +\cos x\cos y +- +\cos x\sin y ++ +\sin x\cos y +- +\sin x\sin y +\\ +& +\phantom{=-\mathstrut{\textstyle\frac12}\bigl(}\llap{$\mathstrut +\mathstrut$} +\cos x\cos y ++ +\cos x\sin y +- +\sin x\cos y +- +\sin x\sin y +\bigr) +\\ +& +\phantom{=} +-\mathstrut{\textstyle\frac12}\bigl( +\cos x\cos y +- +\cos x\sin y +- +\sin x\cos y ++ +\sin x\sin y +\bigr) +\\ +&= \cos x \cos y ++ +\cos x \sin y ++ +\sin x \cos y +- +\sin x \sin y. +\intertext{Die äussersten zwei Terme passen zum Additionstheorem für den +Kosinus, die beiden inneren Terme dagegen zum Sinus. +Fasst man sie zusammen, erhält man} +&= +(\sin x\cos y + \cos x \sin y) ++ +(\cos x\cos y - \sin x \sin y) +\\ +&= +\sin (x+y) + \cos(x+y) += +\cas(x+y). +\end{align*} +Damit ist das Additionstheorem für die Funktion $\cas$ bewiesen. +\qedhere +\end{teilaufgaben} +\end{loesung} diff --git a/buch/chapters/040-rekursion/beta.tex b/buch/chapters/040-rekursion/beta.tex index ff59bad..20e3f0e 100644 --- a/buch/chapters/040-rekursion/beta.tex +++ b/buch/chapters/040-rekursion/beta.tex @@ -8,12 +8,14 @@ Die Eulersche Integralformel für die Gamma-Funktion in Definition~\ref{buch:rekursion:def:gamma} wurde in Abschnitt~\ref{buch:subsection:integral-eindeutig} -mit dem Satz von Mollerup gerechtfertigt. +mit dem Satz~\ref{buch:satz:bohr-mollerup} +von Bohr-Mollerup gerechtfertigt. Man kann Sie aber auch als Grenzfall der Beta-Funktion verstehen, die in diesem Abschnitt dargestellt wird. -\subsection{Beta-Integral} +\subsection{Beta-Integral +\label{buch:rekursion:gamma:subsection:integralbeweis}} In diesem Abschnitt wird das Beta-Integral eingeführt, eine Funktion von zwei Variablen, welches eine Integral-Definition mit einer reichaltigen Menge von Rekursionsbeziehungen hat, die sich direkt auf @@ -30,6 +32,7 @@ B(x,y) \int_0^1 t^{x-1} (1-t)^{y-1}\,dt \] für $\operatorname{Re}x>0$, $\operatorname{Re}y>0$. +\index{Beta-Integral}% \end{definition} Aus der Definition kann man sofort ablesen, dass $B(x,y)=B(y,x)$. @@ -231,6 +234,7 @@ Durch Einsetzen der Integralformel im Ausdruck Satz. \begin{satz} +\index{Satz!Beta-Funktion und Gamma-Funktion}% Die Beta-Funktion kann aus der Gamma-Funktion nach \begin{equation} B(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} @@ -320,6 +324,9 @@ $(-\frac12)!$ als Wert \] der Gamma-Funktion interpretiert. +% +% Alternative Parametrisierung +% \subsubsection{Alternative Parametrisierungen} Die Substitution $t=\sin^2 s$ hat im vorangegangenen Abschnitt ermöglicht, $\Gamma(\frac12)$ zu ermitteln. @@ -382,8 +389,10 @@ wobei wir \] verwendet haben. Diese Darstellung des Beta-Integrals wird später -% XXX Ort ergänzen +in Satz~\ref{buch:funktionentheorie:satz:spiegelungsformel} dazu verwendet, die Spiegelungsformel für die Gamma-Funktion +\index{Gamma-Funktion!Spiegelungsformel}% +\index{Spiegelungsformel der Gamma-Funktion}% herzuleiten. Eine weitere mögliche Parametrisierung verwendet $t = (1+s)/2$ @@ -407,17 +416,23 @@ B(x,y) \label{buch:rekursion:gamma:beta:symm} \end{equation} +% +% +% \subsubsection{Die Verdoppelungsformel von Legendre} Die trigonometrische Substitution kann dazu verwendet werden, die Legendresche Verdoppelungsformel für die Gamma-Funktion herzuleiten. \begin{satz}[Legendre] +\index{Satz!Verdoppelungsformel@Verdoppelungsformel für $\Gamma(x)$}% \[ \Gamma(x)\Gamma(x+{\textstyle\frac12}) = 2^{1-2x}\sqrt{\pi} \Gamma(2x) \] +\index{Verdoppelungsformel}% +\index{Gamma-Funktion!Verdoppelungsformel von Legendre}% \end{satz} \begin{proof}[Beweis] diff --git a/buch/chapters/040-rekursion/bohrmollerup.tex b/buch/chapters/040-rekursion/bohrmollerup.tex index cd9cadc..57e503a 100644 --- a/buch/chapters/040-rekursion/bohrmollerup.tex +++ b/buch/chapters/040-rekursion/bohrmollerup.tex @@ -5,12 +5,27 @@ % \subsection{Der Satz von Bohr-Mollerup \label{buch:rekursion:subsection:bohr-mollerup}} +\begin{figure} +\centering +\includegraphics{chapters/040-rekursion/images/loggammaplot.pdf} +\caption{Der Graph der Funktion $\log|\Gamma(x)|$ ist für $x>0$ konvex. +Die blau hinterlegten Bereiche zeigen an, wo die Gamma-Funktion +negative Werte annimmt. +\label{buch:rekursion:gamma:loggammaplot}} +\end{figure} Die Integralformel und die Grenzwertdefinition für die Gamma-Funktion zeigen beide, dass das Problem der Ausdehnung der Fakultät zu einer Funktion $\mathbb{C}\to\mathbb{C}$ eine Lösung hat, aber es ist noch nicht klar, in welchem Sinn dies die einzig mögliche Lösung ist. Der Satz von Bohr-Mollerup gibt darauf eine Antwort. +Der Graph +in Abbildung~\ref{buch:rekursion:gamma:loggammaplot} +zeigt, dass die Werte der Gamma-Funktion für $x>0$ so schnell +anwachsen, dass sogar die Funktion $\log|\Gamma(x)|$ konvex ist. +Der Satz von Bohr-Mollerup besagt, dass diese Eigenschaft zur +Charakterisierung der Gamma-Funktion verwendet werden kann. + \begin{satz} \label{buch:satz:bohr-mollerup} Eine Funktion $f\colon \mathbb{R}^+\to\mathbb{R}$ mit den Eigenschaften @@ -20,6 +35,8 @@ Eine Funktion $f\colon \mathbb{R}^+\to\mathbb{R}$ mit den Eigenschaften \item die Funktion $\log f(t)$ ist konvex \end{enumerate} ist die Gamma-Funktion: $f(t)=\Gamma(t)$. +\index{Satz!von Bohr-Mollerup}% +\index{Bohr-Mollerup, Satz von}% \end{satz} Für den Beweis verwenden wir die folgende Eigenschaft einer konvexen diff --git a/buch/chapters/040-rekursion/chapter.tex b/buch/chapters/040-rekursion/chapter.tex index 165c48e..1771200 100644 --- a/buch/chapters/040-rekursion/chapter.tex +++ b/buch/chapters/040-rekursion/chapter.tex @@ -8,6 +8,25 @@ \label{buch:chapter:rekursion}} \lhead{Spezielle Funktionen und Rekursion} \rhead{} +Die Fakultät $n!=1\cdot 2\cdots n$ ist eine ersten Funktionen, für die +man normalerweise auch eine rekursive Definition kennenlernt. +Rekursion ist eine besonders gut der numerischen Berechnung zugängliche +Art, spezielle Funktionen zu definieren. +In diesem Kapitel sollen daher in +Abschnitt~\ref{buch:rekursion:section:gamma} +zunächst die Gamma-Funktion als Verallgemeinerung konstruiert +und charakterisiert werden. +Die Beta-Funktion in +Abschnitt~\ref{buch:rekursion:gamma:section:beta} +verallgemeinert diese Rekursionsbeziehungen. +Abschnitt~\ref{buch:rekursion:section:linear} +erinnert an die Methoden, mit denen lineare Rekursionsgleichungen +gelöst werden können. +Erfüllten die Koeffizienten einer Potenzreihe eine spezielle +Rekursionsbeziehung, entsteht die besonders vielfältige Familie +der hypergeometrischen Funktionen, die in +Abschnitt~\ref{buch:rekursion:section:hypergeometrische-funktion} +eingeführt werden. \input{chapters/040-rekursion/gamma.tex} \input{chapters/040-rekursion/beta.tex} diff --git a/buch/chapters/040-rekursion/gamma.tex b/buch/chapters/040-rekursion/gamma.tex index 7d4453b..7f19637 100644 --- a/buch/chapters/040-rekursion/gamma.tex +++ b/buch/chapters/040-rekursion/gamma.tex @@ -20,6 +20,8 @@ für alle natürlichen Zahlen $x\in\mathbb{N}$ definiert werden. \end{equation} Kann man eine reelle oder komplexe Funktion finden, die die Funktionalgleichung~\eqref{buch:rekursion:eqn:gammadef} +\index{Gamma-Funktion!Funktionalgleichung}% +\index{Funktionalgleichung der Gamma-Funktion}% erfüllt und damit die Fakultät auf beliebige Argumente ausdehnt? \subsection{Definition als Grenzwert} @@ -71,6 +73,9 @@ gilt. Der Plan ist, dies so umzuformen, dass man für $x$ eine beliebige komplexe Zahl einsetzen kann. +% +% Pochhammer-Symbol +% \subsubsection{Pochhammer-Symbol} Die spezielle Form des Nenners und des zweiten Faktors im Zähler von \eqref{buch:rekursion:gamma:eqn:fakultaet} @@ -113,6 +118,9 @@ x! Der erste Faktor in diesem Ausdruck enthält jetzt nur noch Dinge, die für beliebige $x\in\mathbb{C}$ definiert sind. +% +% Grenwertdefinition +% \subsubsection{Grenzwertdefinition} Der zweite Bruch in \eqref{buch:rekursion:gamma:eqn:produkt3} besteht aus Termen, die zwar nur für natürliches $x$ definiert sind, @@ -141,8 +149,13 @@ $x\in\mathbb{C}\setminus\{0,-1,-2,-3,\dots\}$ ist der Grenzwert \[ \Gamma(x) = \lim_{n\to\infty} \frac{n!\,n^{x-1}}{(x)_n}. \] +\index{Grenzwertdefinition der Gamma-Funktion}% +\index{Gamma-Funktion!Grenzwertdefinition}% \end{definition} +% +% Rekursionsgleichung für Gamma(x) +% \subsubsection{Rekursionsgleichung für $\Gamma(x)$} Es ist aus der Herleitung klar, dass $\Gamma(n)=(n-1)!$ sein muss. Wir sollten dies aber auch direkt aus der @@ -195,15 +208,85 @@ x\lim_{n\to\infty} \frac{n^{x-1}}{(n+1)^{x-1}} \\ &= +x \Gamma(x) \lim_{n\to\infty} \biggl(\frac{n}{n+1}\biggr)^{x-1} = -\Gamma(x), +x\Gamma(x), \end{align*} Weil $n/(n+1)\to 1$ ist und die Funktion $z\mapsto z^{x-1}$ für alle nach der Definition zulässigen Werte von $x$ eine stetige Funktion ist. +% +% Gamma-Funktion und Pochhammer-Symbol +% +\subsubsection{Gamma-Funktion und Pochhammer-Symbol} +Durch Iteration der Rekursionsformel für $\Gamma(x)$ folgt jetzt +\begin{align*} +\Gamma(x+n) +&= +(x+n-1) \Gamma(x+n-1) +\\ +&= +(x+n-1)(x+n-2)\Gamma(x+n-2) +\\ +&= +\underbrace{ +(x+n-1)(x+n-2)\cdots(x-1)(x) +}_{\text{$n$ Faktoren}} \Gamma(x) +\\ +&=(x)_n \Gamma(x). +\end{align*} +Damit folgt + +\begin{satz} +\index{Satz!Pochhammer-Symbol@Pochhammer-Symbol und $\Gamma(x)$}% +\label{buch:rekursion:gamma:satz:gamma-pochhammer} +Die Rekursionsformel für die Gamma-Funktion kann geschrieben werden als +\[ +\Gamma(x+n) = (x)_n \Gamma(x). +\] +Das Pochhammer-Symbol $(x)_n$ ist für alle natürlichen $n$ gegeben durch +\[ +(x)_n = \frac{\Gamma(x+n)}{\Gamma(x)}. +\] +\end{satz} + +% +% Numerische Unzulänglichkeit der Grenzwertdefinition +% \subsubsection{Numerische Unzulänglichkeiten der Grenzwertdefinition} +\begin{table} +\centering +%\renewcommand{\arraystretch}{1.1} +\begin{tabular}{|>{$}c<{$}|>{$}r<{$}|>{$}l<{$}|>{$}l<{$}|} +\hline +\log_{10} n& n&n!n^{x-1}/(x)_n\mathstrut & \text{Fehler% +\vrule height12pt depth6pt width0pt} \\ +\hline +\text{\vrule height12pt depth0pt width0pt} + 1& 10&1.\underline{7}947392559855804&0.0222854050800643\\ + 2& 100&1.\underline{77}46707942830697&0.0022169433775536\\ + 3& 1000&1.\underline{772}6754214755178&0.0002215705700017\\ + 4& 10000&1.\underline{7724}760067171375&0.0000221558116213\\ + 5& 100000&1.\underline{77245}60664742375&0.0000022155687214\\ + 6& 1000000&1.\underline{77245}40724623101&0.0000002215567940\\ + 7& 10000000&1.\underline{7724538}730613721&0.0000000221558560\\ + 8& 100000000&1.\underline{77245385}31233258&0.0000000022178097\\ + 9& 1000000000&1.\underline{77245385}11320680&0.0000000002265519\\ + 10& 10000000000&1.\underline{772453850}9261316&0.0000000000206155\\ + 11&100000000000&1.\underline{77245385}14549788&0.0000000005494627\\ + & \infty&1.\underline{7724538509055161}& +\text{\vrule height12pt depth6pt width0pt} \\ +\hline +\end{tabular} +\caption{Numerische Berechnung mit der Grenzwertdefinition +und rekursiver Berechnung von $n!/(x)_n$ mit Hilfe der Folge +\eqref{buch:rekursion:gamma:pnfolge}. +Die Konvergenz ist sehr langsam, die Anzahl korrekter Stellen +wächst logarithmisch mit $n$. +\label{buch:rekursion:gamma:produktberechnung}} +\end{table} Die Grenzwertdefinition~\ref{buch:rekursion:gamma:def:definition} ist zwar zweifellos richtig, kann aber nicht für die numerische Berechnung der Gamma-Funktion verwendet werden. @@ -237,6 +320,24 @@ ist. Die Approximation mit Hilfe der Grenzwertdefinition kann also grundsätzlich nicht mehr als zwei korrekte Nachkommastellen liefern. +Den Quotienten $n!/(x)_n$ kann man mit Hilfe der Rekursionsformel +\begin{equation} +p_n = p_{n-1}\cdot \frac{n}{x+n-1},\qquad +p_0 = 0 +\label{buch:rekursion:gamma:pnfolge} +\end{equation} +etwas effizienter berechnen. +Insbesondere umgeht man damit das Problem, dass $n!$ den Wertebereich +des \texttt{double} Datentyps sprengt. +Der Wert der Gamma-Funktion kann dann durch $p_nn^{x-1}$ approximiert +werden. +Die Tabelle~\ref{buch:rekursion:gamma:produktberechnung} fasst die +Resultate zusammen und zeigt, dass die Konvergenz logarithmisch ist: +die Anzahl korrekter Nachkommastellen ist $\log_{10}n$. + +% +% Produktformel +% \subsection{Produktformel} Ein möglicher Ausweg aus den numerischen Schwierigkeiten mit der Grenzwertdefinition ist, den schnell wachsenden Faktor $n!$ @@ -244,6 +345,7 @@ in den Zähler zu bringen, so dass er der Konvergenz etwas nachhilft. Wir berechnen daher den Kehrwert $1/\Gamma(x)$. \begin{satz} +\index{Satz!Produktformel@Produktformel für $\Gamma(x)$}% \label{buch:rekursion:gamma:satz:produktformel} Der Kehrwert der Gamma-Funktion kann geschrieben werden als \begin{equation} @@ -253,8 +355,10 @@ xe^{\gamma x} \prod_{k=1}^\infty \biggl(1+\frac{x}k\biggr)\,e^{-\frac{x}{k}}, \label{buch:rekursion:gamma:eqn:produktformel} +\index{Gamma-Funktion!Produktformel}% \end{equation} wobei $\gamma$ die Euler-Mascheronische Konstante +\index{Euler-Mascheronische Konstante}% \[ \gamma = @@ -262,6 +366,8 @@ wobei $\gamma$ die Euler-Mascheronische Konstante \biggl(\sum_{k=1}^n\frac{1}{k}-\log n\biggr) \] ist. +\index{Gamma-Funktion!Produktformel}% +\index{Produktformel für die Gamma-Funkion}% \end{satz} \begin{proof}[Beweis] @@ -368,16 +474,20 @@ vollständig bewiesen. \begin{table} \centering -\begin{tabular}{|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|} +\begin{tabular}{|>{$}c<{$}|>{$}r<{$}|>{$}c<{$}|>{$}c<{$}|} \hline -k & \Gamma(\frac12,n) & \Gamma(\frac12) - \Gamma(\frac12,n) \\ +k & n & \Gamma(\frac12,n) & \Gamma(\frac12) - \Gamma(\frac12,n)% +\text{\vrule height12pt depth6pt width0pt} \\ \hline -1 & 1.\underline{7}518166478 & -0.0206372031 \\ -2 & 1.\underline{77}02543372 & -0.0021995137 \\ -3 & 1.\underline{772}2324556 & -0.0002213953 \\ -4 & 1.\underline{7724}316968 & -0.0000221541 \\ -5 & 1.\underline{77245}16354 & -0.0000022156 \\ -6 & 1.\underline{772453}6293 & -0.0000002216 \\ +\text{\vrule height12pt depth0pt width0pt} + 1& 10& 1.\underline{7}518166478& -0.0206372031 \\ + 2& 100& 1.\underline{77}02543372& -0.0021995137 \\ + 3& 1000& 1.\underline{772}2324556& -0.0002213953 \\ + 4& 10000& 1.\underline{7724}316968& -0.0000221541 \\ + 5& 100000& 1.\underline{77245}16354& -0.0000022156 \\ + 6&1000000& 1.\underline{772453}6293& -0.0000002216 \\ +\infty& & 1.\underline{7724538509}& +\text{\vrule height12pt depth6pt width0pt} \\ \hline \end{tabular} \caption{Werte $\Gamma(\frac12,n)$ von $\Gamma(\frac12)$ berechnet mit @@ -385,6 +495,9 @@ $n=10^k$ Faktoren der Produktformel~\eqref{buch:rekursion:gamma:eqn:produktformel} und der zugehörige Fehler. Die korrekten Nachkommastellen sind unterstrichen. +Die Konvergenz ist genau gleich langsam wie in der Berechnung mit +Hilfe der Grenzwert-Definition in +Tabelle~\ref{buch:rekursion:gamma:produktberechnung}. \label{buch:rekursion:gamma:gammatabelle}} \end{table} @@ -422,6 +535,8 @@ z \mapsto \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}\,dt \] +\index{Gamma-Funktion!Integraldefinition}% +\index{Integraldefinition der Gamma-Funktion}% \end{definition} Man beachte, dass das Integral für $x=0$ nicht definiert ist, eine @@ -436,6 +551,9 @@ die richtigen Werte für natürliche Argumente hat, es wird aber auch gezeigt, dass dies nicht ausreicht um zu schliessen, dass die Integralformel mit der früher definierten Gamma-Funktion übereinstimmt. +% +% Funktionalgleichung für die Integraldefinition +% \subsubsection{Funktionalgleichung für die Integraldefinition} Tatsächlich ist es einfach nachzuprüfen, dass die Funktionalgleichung der Gamma-Funktion auch für die Definition~\ref{buch:rekursion:def:gamma} @@ -480,8 +598,8 @@ ganzzahlige Argumente übereinstimmen. Der folgende Abschnitt macht deutlich, dass es sehr viele Funktionen gibt, die ebenfalls die Funktionalgleichung erfüllen. Eine vollständige Rechtfertigung für diese Definition wird später -in Abschnitt~\ref{buch:rekursion:gamma:subsection:beta} -\eqref{buch:rekursion:gamma:integralbeweis} +in Abschnitt~\ref{buch:rekursion:gamma:subsection:integralbeweis} +in Formel~\eqref{buch:rekursion:gamma:integralbeweis} auf Seite~\pageref{buch:rekursion:gamma:integralbeweis} gegeben. @@ -494,9 +612,13 @@ die Werte der Fakultät annimmt. \label{buch:rekursion:fig:gamma}} \end{figure} +% +% Der Wert Gamma(1/2) +% \subsubsection{Der Wert $\Gamma(\frac12)$} Die Integraldarstellung kann dazu verwendet werden, $\Gamma(\frac12)$ zu berechnen. +\index{Gamma-Funktion!WertGamma12@Wert von $\Gamma(\frac12)$}% Dazu verwendet man die Substition $t=s^2$ in der Integraldefinition der Gamma-Funktion und berechnen \begin{align} @@ -511,12 +633,16 @@ der Gamma-Funktion und berechnen \int_{-\infty}^\infty e^{-s^2}\,ds = \sqrt{\pi}. -\label{buch:rekursion:gamma:betagamma} +\label{buch:rekursion:gamma:wert12} \end{align} Der Integrand im letzten Integral ist die Wahrscheinlichkeitsdichte einer Normalverteilung, deren Integral wohlbekannt ist. -\subsubsection{Alternative Lösungen} +% +% Alternative Lösungen +% +\subsubsection{Alternative Lösungen der +Funktionalgleichung~\ref{buch:rekursion:eqn:gammadef}} Die Funktion $\Gamma(z)$ ist nicht die einzige Funktion, die natürlichen Zahlen die Werte $\Gamma(n+1) = n!$ der Fakultät annimmt. Indem man eine beliebige Funktion $f(z)$ addiert, die auf alle @@ -547,6 +673,8 @@ Von Wielandt stammt das folgende, noch etwas speziellere Resultat, welches hier nicht bewiesen wird. \begin{satz}[Wielandt] +\index{Satz!von Wielandt}% +\index{Wielandt, Satz von}% Ist $f(z)$ eine für $\operatorname{Re}z>0$ definiert Funktion mit den folgenden drei Eigenschaften \begin{enumerate} @@ -560,11 +688,16 @@ Dann ist $ f(z) = \Gamma(z) $. % XXX Gamma in the interval (1,2) %Man beachte, dass +% +% Laplace-Transformierte der Potenzfunktion +% \subsubsection{Laplace-Transformierte der Potenzfunktion} Die Integraldarstellung der Gamma-Funktion erlaubt jetzt auch, die Laplace-Transformation der Potenzfunktion zu berechnen. +\index{Laplace-Transformierte der Potenzfunktion}% \begin{satz} +\index{Satz!Laplace-Transformierte der Potenzfunktion}% Die Laplace-Transformierte der Potenzfunktion $f(t)=t^\alpha$ ist \[ (\mathscr{L}f)(s) @@ -594,7 +727,11 @@ Durch die Substitution $st = u$ oder $t=\frac{u}{s}$ wird daraus \] \end{proof} +% +% Pol erster Ordnung bei z=0 +% \subsubsection{Pol erster Ordnung bei $z=0$} +\index{Gamma-Funktion!Pol@Pol bei $z=0$}% Wir haben zu prüfen, dass sowohl der Wert $\Gamma(1)$ korrekt ist als auch die Rekursionsformel~\eqref{buch:rekursion:eqn:gammadef} gilt. Der Wert für $z=1$ ist @@ -644,7 +781,12 @@ Daraus ergibt sich für $\Gamma(z)$ der Ausdruck \] Die Gamma-Funktion hat daher an der Stelle $z=0$ einen Pol erster Ordnung. +% +% Ausdehnung auf Re(z) < 0 +% \subsubsection{Ausdehnung auf $\operatorname{Re}z<0$} +\index{Gamma-Funktion!analytische Fortsetzung}% +\index{analytische Fortsetzung der Gamma-Funktion}% Die Integralformel konvergiert nicht für $\operatorname{Re}z\le 0$. Durch analytische Fortsetzung, wie sie im Abschnitt~\ref{buch:funktionentheorie:section:fortsetzung} @@ -683,22 +825,29 @@ Somit hat $\Gamma(z)$ Pole erster Ordnung bei den negativen ganzen Zahlen und bei $0$, wie sie in Abbildung~\ref{buch:rekursion:fig:gamma} gezeigt werden. +% +% Numerische Berechnung +% \subsubsection{Numerische Berechnung} \begin{table} \centering -\begin{tabular}{|>{$}c<{$}|>{$}c<{$}>{$}c<{$}|} +\begin{tabular}{|>{$}c<{$}|>{$}r<{$}|>{$}c<{$}>{$}c<{$}|} \hline -k & y(10^k) & y(10^k) - \Gamma(\frac{5}{2}) \\ +k & n=10^k & y(n) & y(n) - \Gamma(\frac{5}{3}) +\text{\vrule height12pt depth6pt width0pt} \\ \hline -1 & 0.0000000000 & -0.9027452930 \\ -2 & 0.3319129461 & -0.5708323468 \\ -3 & 0.\underline{902}5209490 & -0.0002243440 \\ -4 & 0.\underline{902745}1207 & -0.0000001723 \\ -5 & 0.\underline{902745}0962 & -0.0000001968 \\ -6 & 0.\underline{902745}0962 & -0.0000001968 \\ +\text{\vrule height12pt depth0pt width0pt} +1 & 10 & 0.0000000000 & -0.9027452930 \\ +2 & 100 & 0.3319129461 & -0.5708323468 \\ +3 & 1000 & 0.\underline{902}5209490 & -0.0002243440 \\ +4 & 10000 & 0.\underline{902745}1207 & -0.0000001723 \\ +5 & 100000 & 0.\underline{902745}0962 & -0.0000001968 \\ +6 & 1000000 & 0.\underline{902745}0962 & -0.0000001968 \\ + & \infty & 0.\underline{9027452929} & +\text{\vrule height12pt depth6pt width0pt} \\ \hline \end{tabular} -\caption{Resultate der Berechnung von $\Gamma(\frac{5}{2})$ mit Hilfe +\caption{Resultate der Berechnung von $\Gamma(\frac{5}{3})$ mit Hilfe der Differentialgleichung \eqref{buch:rekursion:gamma:eqn:gammadgl}. Die korrekten Stellen sind unterstrichen. Es sind immerhin sechs korrekte Stellen gefunden, wobei nur 337 @@ -708,19 +857,24 @@ Auswertungen des Integranden notwendig waren. Im Prinzip könnte die Integraldefinition der numerischen Berechnung entgegenkommen. Um diese Hypothese zu prüfen, berechnen wir das Integral für -$z=\frac52$ mit Hilfe der äquivalenten Differentialgleichungen +$z=\frac53$ mit Hilfe der äquivalenten Differentialgleichungen \begin{equation} \dot{y}(t) = t^{z-1}e^{-t} -\qquad\text{mit Anfangsbedingung $y(0)=0$}. +\qquad +\text{mit Anfangsbedingung $y(0)=0$}. \label{buch:rekursion:gamma:eqn:gammadgl} \end{equation} +\index{Gamma-Funktion!Loesung@Lösung mit Differentialgleichung} Der gesuchte Wert ist der Grenzwert $\lim_{t\to\infty} y(t)$. In der Tabelle~\ref{buch:rekursion:gamma:table:gammaintegral} sind die Werte von $y(10^k)$ sowie die Differenzen -$y(10^k) - \Gamma(\frac{5}{2})$ zusammengefasst. +$y(10^k) - \Gamma(\frac{5}{3})$ zusammengefasst. Die Genauigkeit erreicht sechs korrekte Nachkommastellen mit nur 337 Auswertungen des Integranden. +Eine noch wesentlich effizientere Auswertung des $\Gamma$-Integrals +mit Hilfe der Gauss-Laguerre-Quadratur wird in Kapitel~\ref{chapter:laguerre} +von Patrick Müller dargestellt. % % diff --git a/buch/chapters/040-rekursion/gammalimit/Makefile b/buch/chapters/040-rekursion/gammalimit/Makefile new file mode 100644 index 0000000..0804e74 --- /dev/null +++ b/buch/chapters/040-rekursion/gammalimit/Makefile @@ -0,0 +1,11 @@ +# +# Makefile -- build gamma limit test programm +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +l: l.cpp + g++ -O2 -g -Wall `pkg-config --cflags gsl` `pkg-config --libs gsl` \ + -o l l.cpp + +test: l + ./l diff --git a/buch/chapters/040-rekursion/gammalimit/l.cpp b/buch/chapters/040-rekursion/gammalimit/l.cpp new file mode 100644 index 0000000..7a86800 --- /dev/null +++ b/buch/chapters/040-rekursion/gammalimit/l.cpp @@ -0,0 +1,26 @@ +/* + * l.cpp + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ +#include <cstdlib> +#include <cmath> +#include <cstdio> + +int main(int argc, char *argv[]) { + double x = 0.5; + double g = tgamma(x); + printf("limit: %20.16f\n", g); + double p = 1; + long long N = 100000000000; + long long n = 10; + for (long long k = 1; k <= N; k++) { + p = p * k / (x + k - 1); + if (0 == k % n) { + double gval = p * pow(k, x-1); + printf("%12ld %20.16f %20.16f\n", k, gval, gval - g); + n = n * 10; + } + } + return EXIT_SUCCESS; +} diff --git a/buch/chapters/040-rekursion/gammalimit/l.m b/buch/chapters/040-rekursion/gammalimit/l.m new file mode 100644 index 0000000..32b6442 --- /dev/null +++ b/buch/chapters/040-rekursion/gammalimit/l.m @@ -0,0 +1,19 @@ +# +# l.m -- Berechnung der Gamma-Funktion +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +global N; +N = 10000; + +function retval = gamma(x, n) + p = 1; + for k = (1:n) + p = p * k / (x + k - 1); + end + retval = p * n^(x-1); +endfunction + +for n = (100:100:N) + printf("Gamma(%4d) = %10f\n", n, gamma(0.5, n)); +end diff --git a/buch/chapters/040-rekursion/hypergeometrisch.tex b/buch/chapters/040-rekursion/hypergeometrisch.tex index d92e594..13ba3b2 100644 --- a/buch/chapters/040-rekursion/hypergeometrisch.tex +++ b/buch/chapters/040-rekursion/hypergeometrisch.tex @@ -16,22 +16,38 @@ n^3S_{n} mit Anfangswerten $S_0=1$ und $S_1=8$ angeben? Dies scheint auf den ersten Blick unmöglich kompliziert, man kann aber zeigen, dass -\[ +\begin{equation} S_n = \sum_{k=0}^n \binom{2n-2k}{n-k}^2 \binom{2k}{k}^2 -\] +\label{buch:rekursion:hypergeometrisch:eqn:Sn} +\end{equation} gilt (\cite[p.~xi]{buch:ab}). Die Lösung ist also eine Summe von Summanden, die sehr viel einfacher aussehen und vor allem die besondere Eigenschaft haben, dass die -Quotienten aufeinanderfolgender Terme rationale Funktionen von von $k$ +Quotienten aufeinanderfolgender Terme rationale Funktionen von $k$ sind. -% XXX Quotient berechnen -Eine besonders simple solche Funktion ist die geometrische Reihe, die -im Abschnitt~\ref{buch:rekursion:hypergeometrisch:geometrisch} -in Erinnerung gerufen wird. +\begin{definition} +Ein Folge heisst {\em hypergeometrisch}, wenn der Quotient aufeinanderfolgender +\index{hypergeometrische Folge}% +\index{Folge, hypergeometrisch}% +Terme eine rationale Funktion des Folgenindex ist. +\end{definition} + +Die Terme der Reihenentwicklungen aller bisher behandelten speziellen +Funktionen waren hypergeometrisch. +Im aktuellen Abschnitt soll daher die Klasse der sogenannten +hypergeometrischen Funktionen untersucht werden, die durch diese +Eigenschaft charakterisiert sind. + +In Abschnitt~\ref{buch:rekursion:hypergeometrisch:binomialkoeffizienten} +wird klar, dass Folgen, deren Terme aus Fakultäten und Binomialkoeffizienten +immer hypergeometrisch sind. +Die Untersuchung der geometrischen Reihe in +Abschnitt~\ref{buch:rekursion:hypergeometrisch:geometrisch} +motiviert die Namensgebung. Abschnitt~\ref{buch:rekursion:hypergeometrisch:reihen} definiert den Begriff der hypergeometrischen Reihe und zeigt, wie sie in eine Standardform gebracht werden können. @@ -39,22 +55,101 @@ In Abschnitt~\ref{buch:rekursion:hypergeometrisch:beispiele} schliesslich wird an Hand von Beispielen gezeigt, wie bekannte Funktionen als hypergeometrische Funktionen interpretiert werden können. +% +% Quotienten von Binomialkoeffizienten +% +\subsection{Quotienten von Binomialkoeffizienten +\label{buch:rekursion:hypergeometrisch:binomialkoeffizienten}} +Aufeinanderfolgende Terme der Summe +\eqref{buch:rekursion:hypergeometrisch:eqn:Sn} +sollen als Quotienten eine rationale Funktion haben. +Dies ist eine allgemeine Eigenschaft von Folgen, die durch Fakultäten +oder Binomialkoeffizienten definiert sind, wie die beiden folgenden +Sätze zeigen. + +\begin{satz} +\index{Satz!Quotienten von Fakultäten}% +\label{buch:rekursion:hypergeometrisch:satz:fakquo} +Der Quotient aufeinanderfolgender Folgenglieder +der Folge $c_k=(a+bk)!$ ist der ein Polynom vom Grad $b$. +\end{satz} +\begin{proof}[Beweis] +\begin{align*} +\frac{c_{k+1}}{c_k} +&= +\frac{(a+b(k+1))!}{(a+bk)!} += +\frac{(a+bk+b)!}{(a+b)!} +\\ +&= +(a+bk+1)(a+bk+2)\cdots(a+bk+b) += +(a+bk+1)_b +\end{align*} +Das Pochhammer-Symbol hat $b$ Faktoren, es ist ein Polynom vom Grad $b$. +\end{proof} + +\begin{satz} +\index{Satz!Quotienten von Binomialkoeffizienten}% +\label{buch:rekursion:hypergeometrisch:satz:binomquo} +Die Quotienten aufeinanderfolgender Werte der Binomialkoeffizienten +\[ +f_k += +\binom{a+bk}{c+dk} +\] +ist eine rationale Funktion von $k$ mit Zähler- und Nennergrad $b$. +\end{satz} + +\begin{proof}[Beweis] +Indem man die Binomialkoeffizienten mit Fakultäten als +\[ +\binom{a+bk}{c+dk} += +\frac{(a+bk)!}{(c+dk)!(a-c+(b-d)k)!} +\] +ausschreibt, findet man mit +Satz~\ref{buch:rekursion:hypergeometrisch:satz:fakquo} +für die Quotienten +\begin{align} +\frac{f_{k+1}}{f_k} +&= +\frac{(a+bk+1)_b}{(c+dk+1)_d\cdot(a-c+(b-d)k+1)_{b-d}} +\label{buch:rekursion:eqn:binomquotient} +\end{align} +Die Pochhammer-Symbole sind Polynome vom Grad $b$, $d$ bzw.~$b-d$. +Insbesondere ist auch das Nenner-Polynom vom Grad $d+(b-d)=b$. +\end{proof} + +Aus den Sätzen~\ref{buch:rekursion:hypergeometrisch:satz:fakquo} +und +\ref{buch:rekursion:hypergeometrisch:satz:binomquo} +folgt jetzt sofort, dass auch der Quotient aufeinanderfolgender +Summanden der Summe~\eqref{buch:rekursion:hypergeometrisch:eqn:Sn} +eine rationale Funktion von $k$ ist. + +% +% Die geometrische Reihe +% \subsection{Die geometrische Reihe \label{buch:rekursion:hypergeometrisch:geometrisch}} -Die besonders einfache Potenzreihe +Die Reihe \[ f(q) = \sum_{k=0}^\infty aq^k \] -heisst die {\em geometrische Reihe}. +heisst die {\em geometrische Reihe} ist besonders einfache +Reihe mit einer hypergeometrischen Folge von Termen. +\index{geometrische Reihe}% +\index{Reihe!geometrische}% Die Partialsummen \[ S_n = \sum_{k=0}^n aq^k \] -kann mit der Differenz +können aus der Differenz \begin{equation} (1-q)S_n = @@ -75,8 +170,7 @@ a\frac{1-q^{n+1}}{1-q} \label{buch:rekursion:hypergeometrisch:eqn:geomsumme} \end{equation} auflösen kann. - -Fü $q<1$ geht $q^n\to 0$ und damit konvergiert +Für $q<1$ geht $q^n\to 0$ und damit konvergiert $S_n$ gegen \[ \sum_{k=0}^\infty aq^k @@ -97,6 +191,9 @@ Die Berechnung der Summe in beruht darauf, dass die Multiplikation mit $q$ einen ``anderen'' Teil der Summe ergibt, der sich in der Differenze weghebt. +% +% Hypergeometrische Reihen +% \subsection{Hypergeometrische Reihen \label{buch:rekursion:hypergeometrisch:reihen}} Es ist plausibel, dass eine etwas lockerere Bedingung an die @@ -105,11 +202,15 @@ ermöglichen wird, interessante Aussagen über die durch die Reihe beschriebenen Funktionen zu machen. \begin{definition} -Eine Reihe +\label{buch:rekursion:hypergeometrisch:def:allg} +Eine durch die Reihe \[ f(x) = \sum_{k=0}^\infty a_k x^k \] -heisst {\em hypergeometrisch}, wenn der Quotient aufeinanderfolgender +definierte Funktion $f(x)$ heisst {\em hypergeometrisch}, +wenn der Quotient aufeinanderfolgender +\index{hypergeometrisch} +\index{Reihe!hypergeometrisch} Koeffizienten eine rationale Funktion von $k$ ist, wenn also \[ @@ -120,9 +221,13 @@ wenn also mit Polynomen $p(k)$ und $q(k)$ ist. \end{definition} +% +% Beispiele von hypergeometrischen Funktionen +% +\subsubsection{Beispiele von hypergeometrischen Funktionen} Die geometrische Reihe ist natürlich eine hypergeometrische Reihe, wobei $p(k)/q(k)=1$ ist. -Etwas interessanter ist die Exponentialfunktion, durch die Taylor-Reihe +Etwas interessanter ist die Exponentialfunktion, die durch die Taylor-Reihe \[ e^x = \sum_{k=0}^\infty \frac{x^k}{k!} \] @@ -165,7 +270,30 @@ eine rationale Funktion mit Zählergrad $0$ und Nennergrad $2$. Es gibt also eine hypergeometrische Reihe $f(z)$ derart, dass $\cos x = f(x^2)$ ist. -Seien $p(k)$ und $q(k)$ zwei Polynome derart, dass +% +% Die hypergeometrischen Funktione pFq +% +\subsubsection{Die hypergeometrischen Funktionen $\mathstrut_pF_q$} +Die Definition~\ref{buch:rekursion:hypergeometrisch:def:allg} +einer hypergeometrischen Funktion wie auch die Verschiedenartigkeit +der Beispiele kännen den Eindruck vermitteln, dass die diese Klasse +von Funktionen unübersichtlich gross sein könnte. +Dem ist jedoch nicht so. +In diesem Abschnitt soll gezeigt werden, dass alle hypergeometrischen +Funktionen durch die in +Definition~\ref{buch:rekursion:hypergeometrisch:def} definierten +Funktionen $\mathstrut_pF_q$ ausgedrückt werden. +Die hypergeometrischen Funktionen können also vollständig parametrisiert +werden. + +Zu diesem Zweick sie +\[ +f(x) += +\sum_{k=0}^\infty a_kx^k +\] +eine hypergeometrische Funktion und +seien $p(k)$ und $q(k)$ zwei Polynome derart, dass \[ \frac{a_{k+1}}{a_k} = \frac{p(k)}{q(k)}. \] @@ -201,12 +329,12 @@ Dazu nehmen wir an, dass $a_i$, $i=1,\dots,n$ die Nullstellen von $p(k)$ sind und $b_j$, $j=1,\dots,m$ die Nullstellen von $q(k)$, dass man also die Polynome als \begin{align*} -p(k) &= x(k-a_1)(k-a_2)\cdots(k-a_n) +p(k) &= s(k-a_1)(k-a_2)\cdots(k-a_n) \\ q(k) &= (k-b_1)(k-b_2)\cdots(k-b_m) \end{align*} schreiben kann. -Der Faktor $x$ ist nötig, weil die Polynome $p(k)$ und $q(k)$ nicht +Der Faktor $s$ ist nötig, weil die Polynome $p(k)$ und $q(k)$ nicht notwendigerweise normiert sind. Um das Produkt der Quotienten zu vereinfachen, nehmen wir für den Moment @@ -216,14 +344,14 @@ Dann ist nach \[ a_{k} = -x^{k} +s^{k} \frac{ (k-1-a_1) \cdots (2-a_1)(1-a_1)(0-a_1) }{ (k-1-b_1) \cdots (2-b_1)(1-b_1)(0-b_1) } = -\frac{(-a_1)_k}{(-b_1)_k} x^k. +\frac{(-a_1)_k}{(-b_1)_k} s^k. \] Die Koeffizienten können daher als Quotienten von Pochhammer-Symbolen geschrieben werden. @@ -233,13 +361,16 @@ von der Form a_k = \frac{(-a_1)_k(-a_2)_k\cdots (-a_n)_k}{(-b_1)_k(-b_2)_k\cdots(-b_m)_k} -x^ka_0. +s^ka_0. \] -Jede hypergeometrische Reihe kann daher in der Form +Jede hypergeometrische Funktion kann daher in der Form \[ +f(x) += a_0 \sum_{k=0}^\infty \frac{(-a_1)_k(-a_2)_k\cdots (-a_n)_k}{(-b_1)_k(-b_2)_k\cdots(-b_m)_k} +s^k x^k \] geschrieben werden. @@ -273,9 +404,10 @@ zusätzlichen Faktor $(1)_k$ im Zähler des Bruchs von Pochhammer-Symbolen kompensieren, wodurch sich der Grad $p$ des Zählers natürlich um $1$ erhöht. -Die oben analysierte Summe $S$ kann mit der Definition als +Die oben analysierte Summe für $f(x)$ kann mit der +Definition~\ref{buch:rekursion:hypergeometrisch:def} als \[ -S +f(x) = a_0 \cdot @@ -283,11 +415,75 @@ a_0 \begin{matrix} -a_1,-a_2,\dots,-a_n,1\\ -b_1,-b_2,\dots,-a_m -\end{matrix}; x +\end{matrix}; sx \biggr) \] beschrieben werden. +% +% Elementare Rechenregeln +% +\subsubsection{Elementare Rechenregeln} +Die Funktionen $\mathstrut_pF_q$ sind nicht alle unabhängig. +In Abschnitt~\ref{buch:rekursion:hypergeometrisch:stammableitung} +wird gezeigt werden, dass Ableitung und Stammfunktion einer hypergeometrischen +Funktion durch Manipulation der Parameter $a_k$ und $b_k$ bestimmt werden +können. +Viel einfacher sind jedoch die folgenden, aus +Definition~\ref{buch:rekursion:hypergeometrisch:def} +offensichtlichen Regeln: + +\begin{satz}[Permutationsregel] +\index{Satz!Permutationsregel für hypergeometrische Funktionen}% +\label{buch:rekursion:hypergeometrisch:satz:permuationsregel} +Sei $\pi$ eine beliebige Permutation der Zahlen $1,\dots,p$ und $\sigma$ eine +beliebige Permutation der Zahlen $1,\dots,q$, dann ist +\begin{equation} +\mathstrut_pF_q\biggl( +\begin{matrix} +a_1,\dots,a_p\\b_1,\dots,a_q +\end{matrix} +;x +\biggr) += +\mathstrut_pF_q\biggl( +\begin{matrix} +a_{\pi(1)},\dots,a_{\pi(p)}\\b_{\sigma(1)},\dots,b_{\sigma(q)} +\end{matrix} +;x +\biggr). +\label{buch:rekursion:hypergeometrisch:eqn:permuationsregel} +\end{equation} +\end{satz} + +\begin{satz}[Kürzungsformel] +\index{Satz!Kürzungsformel für hypergeometrische Funktionen}% +\label{buch:rekursion:hypergeometrisch:satz:kuerzungsregel} +Stimmt einer der Koeffizienten $a_k$ mit einem der Koeffizienten $b_i$ +überein, dann können sie weggelassen werden: +\begin{equation} +\mathstrut_{p+1}F_{q+1}\biggl( +\begin{matrix} +c,a_1,\dots,a_p\\ +c,b_1,\dots,b_q +\end{matrix}; +x +\biggr) += +\mathstrut_{p}F_{q}\biggl( +\begin{matrix} +a_1,\dots,a_p\\ +b_1,\dots,b_q +\end{matrix}; +x +\biggr). +\label{buch:rekursion:hypergeometrisch:eqn:kuerzungsregel} +\end{equation} +\end{satz} + +% +% Beispiele von hypergeometrischen Funktionen +% \subsection{Beispiele von hypergeometrischen Funktionen \label{buch:rekursion:hypergeometrisch:beispiele}} Viele der bekannten Reihenentwicklungen häufig verwendeter Funktionen @@ -295,6 +491,9 @@ lassen sich durch die hypergeometrischen Funktionen von Definition~\ref{buch:rekursion:hypergeometrisch:def} ausdrücken. In diesem Abschnitt werden einige Beispiel dazu gegeben. +% +% Die geometrische Reihe +% \subsubsection{Die geometrische Reihe} In der geometrischen Reihe fehlt der Nenner $k!$, es braucht daher einen Term $(1)_k$ im Zähler, um den Nenner zu kompensieren. @@ -312,6 +511,9 @@ a\sum_{k=0}^\infty a\cdot\mathstrut_1F_0(1,x). \] +% +% Die Exponentialfunktion +% \subsubsection{Exponentialfunktion} Die Exponentialfunktion ist die Reihe \[ @@ -323,7 +525,10 @@ benötigt, es ist daher e^x = \mathstrut_0F_0(x). \] -\subsubsection{Wurzelfunktion} +% +% Wurzelfunktionen +% +\subsubsection{Wurzelfunktionen} Die Wurzelfunktion $x\mapsto \sqrt{x}$ hat keine Taylor-Entwicklung in $x=0$, aber die Funktion $x\mapsto\sqrt{1+x}$ hat die Taylor-Reihe \[ @@ -412,11 +617,33 @@ Die Wurzelfunktion ist daher die hypergeometrische Funktion \sqrt{1\pm x} = \sum_{k=0}^\infty -\biggl(-\frac12\biggr)_k \frac{(-x)^k}{k!} +\biggl(-\frac12\biggr)_k \frac{(\pm x)^k}{k!} = \mathstrut_1F_0(-{\textstyle\frac12};\mp x). \] +Mit der Newtonschen Binomialreihe, die in +Abschnitt~\ref{buch:differentialgleichungen:subsection:newtonschereihe} +hergleitet wird, +kann man ganz analog jede beliebige Wurzelfunktion +\begin{align*} +(1+x)^\alpha +&= +1+\alpha x + \frac{\alpha(\alpha-1)}{2!}x^2 + \frac{\alpha(\alpha-1)(\alpha-2)}{3!}x^3+\dots +%\\ +%& += +\sum_{k=0}^\infty \frac{(-\alpha)_k}{k!}x^k += +\mathstrut_1F_0\biggl(\begin{matrix}-\alpha\\\text{---}\end{matrix};-x\biggr) +\end{align*} +durch $\mathstrut_1F_0$ ausdrücken. +Dieses Resultat ist der Inhalt von +Satz~\ref{buch:differentialgleichungen:satz:newtonschereihe} + +% +% Logarithmusfunktion +% \subsubsection{Logarithmusfunktion} Für $x\in (-1,1)$ konvergiert die Taylor-Reihe \[ @@ -483,8 +710,11 @@ x\cdot \mathstrut_2F_1\biggl(\begin{matrix}1,1\\2\end{matrix};-x\biggr). \] - +% +% Trigonometrische Funktionen +% \subsubsection{Trigonometrische Funktionen} +\index{trigonometrische Funktionen!als hypergeometrische Funktionen}% Die Kosinus-Funktion wurde bereits als hypergeometrische Funktion erkannt, im Folgenden soll dies auch noch für die Sinus-Funktion durchgeführt werden. @@ -509,7 +739,7 @@ x f(-x^2). Die Funktion $f(z)$ soll jetzt als hypergeometrische Funktion geschrieben werden. Dazu muss zunächst wieder der Nenner $k!$ wiederhergestellt werden: -\[ +\begin{equation*} f(z) = 1 @@ -521,7 +751,7 @@ f(z) \frac{3!}{7!}\cdot \frac{z^3}{3!} + \dots -\] +\end{equation*} Die Koeffizienten $k!/(2k+1)!$ müssen jetzt durch Pochhammer-Symbole mit jeweils $k$ Faktoren ausgedrückt werden. Dazu muss die Fakultät $(2k+1)!$ in zwei Produkte @@ -561,15 +791,27 @@ müssen wird mit $2^{2k}$ kompensieren: (1)_k\cdot \biggl(\frac{3}{2}\biggr)_k \end{align*} Setzt man dies in die Reihe ein, wird -\[ +\begin{equation} f(z) = \sum_{k=0}^\infty \frac{(1)_k}{(1)_k\cdot (\frac{3}{2})_k\cdot 4^k} z^k = -\mathstrut_1F_2\biggl(1;1,\frac{3}{2};\frac{z}4\biggr). -\] +\mathstrut_1F_2\biggl( +\begin{matrix}1\\1,\frac{3}{2}\end{matrix};\frac{z}4 +\biggr) += +\mathstrut_0F_1\biggl( +\begin{matrix}\text{---}\\\frac{3}{2}\end{matrix};\frac{z}4 +\biggr). +\label{buch:rekursion:hyperbolisch:eqn:hilfsfunktionf} +\end{equation} +Im letzten Schritt wurde die Kürzungsregel +\eqref{buch:rekursion:hypergeometrisch:eqn:kuerzungsregel} +von +Satz~\ref{buch:rekursion:hypergeometrisch:satz:kuerzungsregel} +angewendet. Damit lässt sich die Sinus-Funktion als \begin{equation} \sin x @@ -585,28 +827,35 @@ x\cdot\mathstrut_0F_1\biggl( \end{equation} durch eine hypergeometrische Funktion ausdrücken. +% +% Hyperbolische Funktionen +% \subsubsection{Hyperbolische Funktionen} +\index{hyperbolische Funktionen!als hypergeometrische Funktionen}% Die für die Sinus-Funktion angewendete Methode lässt sich auch auf die Funktion \begin{align*} \sinh x &= \sum_{k=0}^\infty \frac{x^{2k+1}}{(2k+1)!} -\\ -&= +%\\ +%& += x \, \biggl( 1+\frac{x^2}{3!} + \frac{x^4}{5!}+\frac{x^6}{7!}+\dots \biggr) -\\ +\intertext{Die Reihe in der Klammer lässt sich mit der Funktion +$f$ von \eqref{buch:rekursion:hyperbolisch:eqn:hilfsfunktionf} +schreiben als} &= -xf(-x^2) -= -x\,\mathstrut_1F_2\biggl( -\begin{matrix}1\\1,\frac{3}{2}\end{matrix} -;\frac{x^2}{4} -\biggr) +x\,f(-x^2) +%= +%x\cdot\mathstrut_1F_2\biggl( +%\begin{matrix}1\\1,\frac{3}{2}\end{matrix} +%;\frac{x^2}{4} +%\biggr) = x\cdot\mathstrut_0F_1\biggl( \begin{matrix}\text{---}\\\frac{3}{2}\end{matrix} @@ -618,18 +867,85 @@ ist diese Darstellung identisch mit der von $\sin x$. Dies illustriert die Rolle der hypergeometrischen Funktionen als ``grosse Vereinheitlichung'' der bekannten speziellen Funktionen. +% +% Tschebyscheff-Polynome +% \subsubsection{Tschebyscheff-Polynome} +\index{Tschebyscheff-Polynome}% +Man kann zeigen, dass auch die Tschebyscheff-Polynome sich durch die +hypergeometrischen Funktionen +\begin{equation} +T_n(x) += +\mathstrut_2F_1\biggl( +\begin{matrix}-n,n\\\frac12\end{matrix} +; +\frac12(1-x) +\biggr) +\label{buch:rekursion:hypergeometrisch:tschebyscheff2f1} +\end{equation} +ausdrücken lassen. +Beweisen kann man diese Beziehung zum Beispiel mit Hilfe der +Differentialgleichungen, denen die Funktionen genügen. +Diese Methode wird in +Abschnitt~\ref{buch:differentialgleichungen:section:hypergeometrisch} +von Kapitel~\ref{buch:chapter:differential} vorgestellt. + +Die Tschebyscheff-Polynome sind nicht die einzigen Familien von Polynomen, +\index{Tschebyscheff-Polynome!als hypergeometrische Funktion} +die sich durch $\mathstrut_pF_q$ ausdrücken lassen. +Für die zahlreichen Familien von orthogonalen Polynomen, die in +Kapitel~\ref{buch:chapter:orthogonalitaet} untersucht werden, +trifft dies auch zu. +Ein Funktion +\[ +\mathstrut_pF_q +\biggl( +\begin{matrix} +a_1,\dots,a_p\\ +b_1,\dots,b_q +\end{matrix} +;z +\biggr) +\] +ist genau dann ein Polynom, wenn mindestens einer der Parameter +$a_k$ eine negative ganze Zahl ist. +Der Grad des Polynoms ist der kleinste Betrag der negativ ganzzahligen +Werte unter den Parametern $a_k$. + +% +% Die Funktionen 0F1 +% +\subsubsection{Die Funktionen $\mathstrut_0F_1$} +\begin{figure} +\centering +\includegraphics{chapters/040-rekursion/images/0f1.pdf} +\caption{Graphen der Funktionen $\mathstrut_0F_1(;\alpha;x)$ für +verschiedene Werte von $\alpha$. +\label{buch:rekursion:hypergeometrisch:0f1}} +\end{figure} +Die Funktionen $\mathstrut_0F_1$ sind in den Beispielen mit der +beschränkten trigonometrischen Funktion $\sin x$ und mit der +exponentiell unbeschränkten Funktion $\sinh x$ mit dem gleichen +Wert des Parameters und nur einem Wechsel des Vorzeichens des +Arguments verbunden worden. +Die Graphen der Funktionen $\mathstrut_0F_1$, die in +Abbildung~\ref{buch:rekursion:hypergeometrisch:0f1} dargestellt sind, +machen dieses Verhalten plausibel. +Es wird sich später zeigen, dass $\mathstrut_0F_1$ auch mit den Bessel- +und den Airy-Funktionen verwandt sind. -TODO -\url{https://en.wikipedia.org/wiki/Chebyshev_polynomials} % % Ableitung und Stammfunktion % -\subsection{Ableitung und Stammfunktion hypergeometrischer Funktionen} +\subsection{Ableitung und Stammfunktion hypergeometrischer Funktionen +\label{buch:rekursion:hypergeometrisch:stammableitung}} Sowohl Ableitung wie auch Stammfunktion einer hypergeometrischen Funktion lässt sich immer durch hypergeometrische Reihen ausdrücken. - +% +% Ableitung +% \subsubsection{Ableitung} Wir gehen aus von der Funktion \begin{equation} @@ -743,7 +1059,7 @@ Damit kann jetzt die Kosinus-Funktion als \frac{1}{(\frac12)_k} \frac{1}{k!}\biggl(\frac{-x^2}{4}\biggr)^k = -\mathstrut_0F_1\biggl(;\frac12;-\frac{x^2}4\biggr) +\mathstrut_0F_1\biggl(\begin{matrix}\text{---}\\\frac12\end{matrix};-\frac{x^2}4\biggr) \end{align*} geschrieben werden kann. @@ -752,16 +1068,22 @@ Die Ableitung der Kosinus-Funktion ist daher \frac{d}{dx} \cos x &= \frac{d}{dx} -\mathstrut_0F_1\biggl(;\frac12;-\frac{x^2}4\biggr) +\mathstrut_0F_1\biggl( +\begin{matrix}\text{---}\\\frac12\end{matrix};-\frac{x^2}4 +\biggr) = \frac{1}{\frac12} \, -\mathstrut_0F_1\biggl(;\frac32;-\frac{x^2}4\biggr) +\mathstrut_0F_1\biggl( +\begin{matrix}\text{---}\\\frac32\end{matrix};-\frac{x^2}4 +\biggr) \cdot\biggl(-\frac{x}2\biggr) = -x \cdot -\mathstrut_0F_1\biggl(;\frac32;-\frac{x^2}4\biggr) +\mathstrut_0F_1\biggl( +\begin{matrix}\text{---}\\\frac32\end{matrix};-\frac{x^2}4 +\biggr) \intertext{Dies stimmt mit der in \eqref{buch:rekursion:hypergeometrisch:eqn:sinhyper} gefundenen Darstellung der Sinusfunktion mit Hilfe der hypergeometrischen @@ -771,6 +1093,9 @@ Funktion $\mathstrut_0F_1$ überein, es ist also wie erwartet} \end{align*} \end{beispiel} +% +% Stammfunktion +% \subsubsection{Stammfunktion} Eine Stammfunktion kann man auf die gleiche Art und Weise wie die Ableitung finden. diff --git a/buch/chapters/040-rekursion/images/0f1.cpp b/buch/chapters/040-rekursion/images/0f1.cpp new file mode 100644 index 0000000..24ca3f1 --- /dev/null +++ b/buch/chapters/040-rekursion/images/0f1.cpp @@ -0,0 +1,94 @@ +/* + * 0f1.cpp + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ +#include <cstring> +#include <cstdio> +#include <cstdlib> +#include <cmath> +#include <string> +#include <iostream> +#include <fstream> + +static int N = 100; +static double xmin = -50; +static double xmax = 30; +static int points = 200; + +double f(double b, double x) { + double s = 1; + double p = 1; + for (int k = 1; k < N; k++) { + p = p * x / (k * (b + k - 1.)); + s += p; + } + return s; +} + +typedef std::pair<double, double> point_t; + +point_t F(double b, double x) { + return std::make_pair(x, f(b, x)); +} + +std::string ff(double f) { + if (f > 1000) { f = 1000; } + if (f < -1000) { f = -1000; } + char b[128]; + snprintf(b, sizeof(b), "%.4f", f); + return std::string(b); +} + +std::ostream& operator<<(std::ostream& out, const point_t& p) { + char b[128]; + out << "({" << ff(p.first) << "*\\dx},{" << ff(p.second) << "*\\dy})"; + return out; +} + +void curve(std::ostream& out, double b, const std::string& name) { + double h = (xmax - xmin) / points; + out << "\\def\\kurve" << name << "{"; + out << std::endl << "\t" << F(b, xmin); + for (int i = 1; i <= points; i++) { + double x = xmin + h * i; + out << std::endl << "\t-- " << F(b, x); + } + out << std::endl; + out << "}" << std::endl; +} + +int main(int argc, char *argv[]) { + std::ofstream out("0f1data.tex"); + + double s = 13/(xmax-xmin); + out << "\\def\\dx{" << ff(s) << "}" << std::endl; + out << "\\def\\dy{" << ff(s) << "}" << std::endl; + out << "\\def\\xmin{" << ff(s * xmin) << "}" << std::endl; + out << "\\def\\xmax{" << ff(s * xmax) << "}" << std::endl; + + curve(out, 0.5, "one"); + curve(out, 1.5, "two"); + curve(out, 2.5, "three"); + curve(out, 3.5, "four"); + curve(out, 4.5, "five"); + curve(out, 5.5, "six"); + curve(out, 6.5, "seven"); + curve(out, 7.5, "eight"); + curve(out, 8.5, "nine"); + curve(out, 9.5, "ten"); + + curve(out,-0.5, "none"); + curve(out,-1.5, "ntwo"); + curve(out,-2.5, "nthree"); + curve(out,-3.5, "nfour"); + curve(out,-4.5, "nfive"); + curve(out,-5.5, "nsix"); + curve(out,-6.5, "nseven"); + curve(out,-7.5, "neight"); + curve(out,-8.5, "nnine"); + curve(out,-9.5, "nten"); + + out.close(); + return EXIT_SUCCESS; +} diff --git a/buch/chapters/040-rekursion/images/0f1.pdf b/buch/chapters/040-rekursion/images/0f1.pdf Binary files differnew file mode 100644 index 0000000..2c35813 --- /dev/null +++ b/buch/chapters/040-rekursion/images/0f1.pdf diff --git a/buch/chapters/040-rekursion/images/0f1.tex b/buch/chapters/040-rekursion/images/0f1.tex new file mode 100644 index 0000000..1bc8b87 --- /dev/null +++ b/buch/chapters/040-rekursion/images/0f1.tex @@ -0,0 +1,86 @@ +% +% 0f1.tex -- template for standalon tikz images +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{txfonts} +\usepackage{pgfplots} +\usepackage{csvsimple} +\usetikzlibrary{arrows,intersections,math} +\begin{document} +\def\skala{1} +\input{0f1data.tex} +\definecolor{darkgreen}{rgb}{0,0.6,0} +\begin{tikzpicture}[>=latex,thick,scale=\skala] + +\begin{scope} +\clip (\xmin,-1) rectangle (\xmax,5); +\draw[color=blue!5!red,line width=1.4pt] \kurveone; +\draw[color=blue!16!red,line width=1.4pt] \kurvetwo; +\draw[color=blue!26!red,line width=1.4pt] \kurvethree; +\draw[color=blue!37!red,line width=1.4pt] \kurvefour; +\draw[color=blue!47!red,line width=1.4pt] \kurvefive; +\draw[color=blue!57!red,line width=1.4pt] \kurvesix; +\draw[color=blue!68!red,line width=1.4pt] \kurveseven; +\draw[color=blue!78!red,line width=1.4pt] \kurveeight; +\draw[color=blue!89!red,line width=1.4pt] \kurvenine; +\draw[color=blue!100!red,line width=1.4pt] \kurveten; +\def\ds{0.4} +\begin{scope}[yshift=0.5cm] +\node[color=blue!5!red] at (\xmin,{1*\ds}) [right] {$\alpha=0.5$}; +\node[color=blue!16!red] at (\xmin,{2*\ds}) [right] {$\alpha=1.5$}; +\node[color=blue!26!red] at (\xmin,{3*\ds}) [right] {$\alpha=2.5$}; +\node[color=blue!37!red] at (\xmin,{4*\ds}) [right] {$\alpha=2.5$}; +\node[color=blue!47!red] at (\xmin,{5*\ds}) [right] {$\alpha=3.5$}; +\node[color=blue!57!red] at (\xmin,{6*\ds}) [right] {$\alpha=5.5$}; +\node[color=blue!68!red] at (\xmin,{7*\ds}) [right] {$\alpha=6.5$}; +\node[color=blue!78!red] at (\xmin,{8*\ds}) [right] {$\alpha=7.5$}; +\node[color=blue!89!red] at (\xmin,{9*\ds}) [right] {$\alpha=8.5$}; +\node[color=blue!100!red]at (\xmin,{10*\ds}) [right] {$\alpha=9.5$}; +\end{scope} +\node at (-1.7,4.5) {$\displaystyle +y=\mathstrut_0F_1\biggl(\begin{matrix}\text{---}\\\alpha\end{matrix};x\biggr)$}; +\end{scope} + +\draw[->] (\xmin-0.2,0) -- (\xmax+0.3,0) coordinate[label=$x$]; +\draw[->] (0,-0.5) -- (0,5.3) coordinate[label={right:$y$}]; + +\begin{scope}[yshift=-6.5cm] +\begin{scope} +\clip (\xmin,-5) rectangle (\xmax,5); + +\draw[color=darkgreen!5!red,line width=1.4pt] \kurvenone; +\draw[color=darkgreen!16!red,line width=1.4pt] \kurventwo; +\draw[color=darkgreen!26!red,line width=1.4pt] \kurventhree; +\draw[color=darkgreen!37!red,line width=1.4pt] \kurvenfour; +\draw[color=darkgreen!47!red,line width=1.4pt] \kurvenfive; +\draw[color=darkgreen!57!red,line width=1.4pt] \kurvensix; +\draw[color=darkgreen!68!red,line width=1.4pt] \kurvenseven; +\draw[color=darkgreen!78!red,line width=1.4pt] \kurveneight; +\draw[color=darkgreen!89!red,line width=1.4pt] \kurvennine; +\draw[color=darkgreen!100!red,line width=1.4pt] \kurventen; +\end{scope} + +\draw[->] (\xmin-0.2,0) -- (\xmax+0.3,0) coordinate[label=$x$]; +\draw[->] (0,-5.2) -- (0,5.3) coordinate[label={right:$y$}]; +\def\ds{-0.4} +\begin{scope}[yshift=-0.5cm] +\node[color=darkgreen!5!red] at (\xmax,{1*\ds}) [left] {$\alpha=-0.5$}; +\node[color=darkgreen!16!red] at (\xmax,{2*\ds}) [left] {$\alpha=-1.5$}; +\node[color=darkgreen!26!red] at (\xmax,{3*\ds}) [left] {$\alpha=-2.5$}; +\node[color=darkgreen!37!red] at (\xmax,{4*\ds}) [left] {$\alpha=-2.5$}; +\node[color=darkgreen!47!red] at (\xmax,{5*\ds}) [left] {$\alpha=-3.5$}; +\node[color=darkgreen!57!red] at (\xmax,{6*\ds}) [left] {$\alpha=-5.5$}; +\node[color=darkgreen!68!red] at (\xmax,{7*\ds}) [left] {$\alpha=-6.5$}; +\node[color=darkgreen!78!red] at (\xmax,{8*\ds}) [left] {$\alpha=-7.5$}; +\node[color=darkgreen!89!red] at (\xmax,{9*\ds}) [left] {$\alpha=-8.5$}; +\node[color=darkgreen!100!red]at (\xmax,{10*\ds}) [left] {$\alpha=-9.5$}; +\end{scope} +\end{scope} + +\end{tikzpicture} +\end{document} + diff --git a/buch/chapters/040-rekursion/images/Makefile b/buch/chapters/040-rekursion/images/Makefile index 86dfa1e..54ed23b 100644 --- a/buch/chapters/040-rekursion/images/Makefile +++ b/buch/chapters/040-rekursion/images/Makefile @@ -3,7 +3,8 @@ # # (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule # -all: gammaplot.pdf fibonacci.pdf order.pdf beta.pdf +all: gammaplot.pdf fibonacci.pdf order.pdf beta.pdf loggammaplot.pdf \ + 0f1.pdf gammaplot.pdf: gammaplot.tex gammapaths.tex pdflatex gammaplot.tex @@ -29,4 +30,17 @@ beta.pdf: beta.tex betapaths.tex betapaths.tex: betadist.m octave betadist.m +loggammaplot.pdf: loggammaplot.tex loggammadata.tex + pdflatex loggammaplot.tex +loggammadata.tex: loggammaplot.m + octave loggammaplot.m + +0f1: 0f1.cpp + g++ -O -Wall -g -o 0f1 0f1.cpp + +0f1data.tex: 0f1 + ./0f1 + +0f1.pdf: 0f1.tex 0f1data.tex + pdflatex 0f1.tex diff --git a/buch/chapters/040-rekursion/images/loggammaplot.m b/buch/chapters/040-rekursion/images/loggammaplot.m new file mode 100644 index 0000000..5456e4f --- /dev/null +++ b/buch/chapters/040-rekursion/images/loggammaplot.m @@ -0,0 +1,43 @@ +# +# loggammaplot.m +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +xmax = 10; +xmin = 0.1; +N = 500; + +fn = fopen("loggammadata.tex", "w"); + +fprintf(fn, "\\def\\loggammapath{\n ({%.4f*\\dx},{%.4f*\\dy})", + xmax, log(gamma(xmax))); +xstep = (xmax - 1) / N; +for x = (xmax:-xstep:1) + fprintf(fn, "\n\t-- ({%.4f*\\dx},{%.4f*\\dy})", x, log(gamma(x))); +endfor +for k = (0:0.2:10) + x = exp(-k); + fprintf(fn, "\n\t-- ({%.4f*\\dx},{%.4f*\\dy})", x, log(gamma(x))); +endfor +fprintf(fn, "\n}\n"); + +function retval = lgp(fn, x0, name) + fprintf(fn, "\\def\\loggammaplot%s{\n", name); + fprintf(fn, "\\draw[color=red,line width=1pt] "); + for k = (-7:0.1:7) + x = x0 + 0.5 * tanh(k); + if (k > -5) + fprintf(fn, "\n\t-- "); + end + fprintf(fn, "({%.4f*\\dx},{%.4f*\\dy})", x, log(gamma(x))); + endfor + fprintf(fn, ";\n}\n"); +endfunction + +lgp(fn, -0.5, "zero"); +lgp(fn, -1.5, "one"); +lgp(fn, -2.5, "two"); +lgp(fn, -3.5, "three"); +lgp(fn, -4.5, "four"); + +fclose(fn); diff --git a/buch/chapters/040-rekursion/images/loggammaplot.pdf b/buch/chapters/040-rekursion/images/loggammaplot.pdf Binary files differnew file mode 100644 index 0000000..a2963f2 --- /dev/null +++ b/buch/chapters/040-rekursion/images/loggammaplot.pdf diff --git a/buch/chapters/040-rekursion/images/loggammaplot.tex b/buch/chapters/040-rekursion/images/loggammaplot.tex new file mode 100644 index 0000000..8ca4e1c --- /dev/null +++ b/buch/chapters/040-rekursion/images/loggammaplot.tex @@ -0,0 +1,89 @@ +% +% tikztemplate.tex -- template for standalon tikz images +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{txfonts} +\usepackage{pgfplots} +\usepackage{csvsimple} +\usetikzlibrary{arrows,intersections,math} +\begin{document} +\def\skala{1} +\input{loggammadata.tex} +\begin{tikzpicture}[>=latex,thick,scale=\skala] + +% add image content here + +\def\dx{1} +\def\dy{0.6} +\def\xmax{8} +\def\xmin{-4.9} +\def\ymax{8} +\def\ymin{-3.1} + +\fill[color=blue!20] ({\xmin*\dx},{\ymin*\dy}) rectangle ({-4*\dx},{\ymax*\dy}); +\fill[color=blue!20] ({-3*\dx},{\ymin*\dy}) rectangle ({-2*\dx},{\ymax*\dy}); +\fill[color=blue!20] ({-1*\dx},{\ymin*\dy}) rectangle ({-0*\dx},{\ymax*\dy}); + +\draw[->] ({\xmin*\dx-0.1},0) -- ({\xmax*\dx+0.3},0) + coordinate[label={$x$}]; +\draw[->] (0,{\ymin*\dy-0.1}) -- (0,{\ymax*\dy+0.3}) + coordinate[label={right:$y$}]; + +\begin{scope} +\clip ({\xmin*\dx},{\ymin*\dy}) rectangle ({\xmax*\dx},{\ymax*\dy}); + +\foreach \x in {-1,-2,-3,-4}{ + \draw[color=blue,line width=0.3pt] + ({\x*\dx},{\ymin*\dy}) -- ({\x*\dx},{\ymax*\dy}); +} + +\draw[color=red,line width=1pt] \loggammapath; + +\loggammaplotzero +\loggammaplotone +\loggammaplottwo +\loggammaplotthree +\loggammaplotfour + +\end{scope} + +\foreach \y in {0.1,10,100,1000,1000}{ + \draw[line width=0.3pt] + ({\xmin*\dx},{ln(\y)*\dy}) + -- + ({\xmax*\dx},{ln(\y)*\dy}) ; +} + +\foreach \x in {1,...,8}{ + \draw ({\x*\dx},{-0.05}) -- ({\x*\dx},{0.05}); + \node at ({\x*\dx},0) [below] {$\x$}; +} + +\foreach \x in {-1,...,-4}{ + \draw ({\x*\dx},{-0.05}) -- ({\x*\dx},{0.05}); +} +\foreach \x in {-1,...,-3}{ + \node at ({\x*\dx},0) [below right] {$\x$}; +} +\node at ({-4*\dx},0) [below left] {$-4$}; + +\def\htick#1#2{ + \draw (-0.05,{ln(#1)*\dy}) -- (0.05,{ln(#1)*\dy}); + \node at (0,{ln(#1)*\dy}) [above right] {#2}; +} + +\htick{10}{$10^1$} +\htick{100}{$10^2$} +\htick{1000}{$10^3$} +\htick{0.1}{$10^{-1}$} + +\node[color=red] at ({3*\dx},{ln(30)*\dy}) {$y=\log|\Gamma(x)|$}; + + +\end{tikzpicture} +\end{document} + diff --git a/buch/chapters/040-rekursion/uebungsaufgaben/404.tex b/buch/chapters/040-rekursion/uebungsaufgaben/404.tex index f9d014e..5d76598 100644 --- a/buch/chapters/040-rekursion/uebungsaufgaben/404.tex +++ b/buch/chapters/040-rekursion/uebungsaufgaben/404.tex @@ -1,5 +1,5 @@ Finden Sie einen einfachen Ausdruck für $(\frac12)_n$, der nur -Fakultäten und andere elmentare Funktionen verwendet. +Fakultäten und andere elementare Funktionen verwendet. \begin{loesung} Das Pochhammer-Symbol $(\frac12)_n$ kann wie folgt durch bekanntere diff --git a/buch/chapters/050-differential/bessel.tex b/buch/chapters/050-differential/bessel.tex index 383c360..ac509ba 100644 --- a/buch/chapters/050-differential/bessel.tex +++ b/buch/chapters/050-differential/bessel.tex @@ -18,6 +18,9 @@ die sich durch bekannte Funktionen ausdrücken lassen, es ist also nötig, eine neue Familie von speziellen Funktionen zu definieren, die Bessel-Funktionen. +% +% Besselsche Differentialgleichung +% \subsection{Die Besselsche Differentialgleichung} % XXX Wo taucht diese Gleichung auf Die Besselsche Differentialgleichung ist die Differentialgleichung @@ -25,16 +28,22 @@ Die Besselsche Differentialgleichung ist die Differentialgleichung x^2\frac{d^2y}{dx^2} + x\frac{dy}{dx} + (x^2-\alpha^2)y = 0 \label{buch:differentialgleichungen:eqn:bessel} \end{equation} +\index{Differentialgleichung!Besselsche}% +\index{Besselsche Differentialgleichung}% zweiter Ordnung für eine auf dem Interval $[0,\infty)$ definierte Funktion $y(x)$. Der Parameter $\alpha$ ist eine beliebige komplexe Zahl $\alpha\in \mathbb{C}$, die Lösungsfunktionen hängen daher von $\alpha$ ab. +% +% Eigenwertproblem +% \subsubsection{Eigenwertproblem} Die Besselsche Differentialgleichung \eqref{buch:differentialgleichungen:eqn:bessel} kann man auch als Eigenwertproblem für den Bessel-Operator \index{Bessel-Operator}% +\index{Operator!Bessel-}% \begin{equation} B = x^2\frac{d^2}{dx^2} + x\frac{d}{dx} + x^2 \label{buch:differentialgleichungen:bessel-operator} @@ -46,12 +55,15 @@ erfüllt \[ By = -x^2y''+xy+x^2y +x^2y''+xy'+x^2y =\alpha^2 y, \] ist also eine Eigenfunktion des Bessel-Operators zum Eigenwert $\alpha^2$. +% +% Indexgleichung +% \subsubsection{Indexgleichung} Die Besselsche Differentialgleichung ist eine Differentialgleichung der Art~\eqref{buch:differentialgleichungen:eqn:dglverallg} mit @@ -117,9 +129,11 @@ Nur eine Lösung kann man finden, wenn \] ist. - - -\subsection{Bessel-Funktionen erster Art} +% +% Bessel-Funktionen erster Art +% +\subsection{Bessel-Funktionen erster Art +\label{buch:differentialgleichungen:subsection:bessel1steart}} Für $\alpha \ge 0$ gibt es immer mindestens eine Lösung der Besselgleichung als verallgemeinerte Potenzreihe mit $\varrho=\alpha$. Die Funktion $q(x)=x^2-\alpha^2$ ist ein Polynom, die einzigen @@ -138,6 +152,9 @@ Da $F(\varrho+1)\ne 0$ ist, folgt dass $a_1=0$ sein muss. % Fall n=1 gesondert behandeln +% +% Der allgemeine Fall +% \subsubsection{Der allgemeine Fall} Für die höheren Potenzen $n>1$ wird die Rekursionsformel für die Koeffizienten $a_n$ der verallgemeinerten Potenzreihe @@ -201,10 +218,11 @@ x^\varrho\biggl( x^\varrho \sum_{k=0}^\infty \frac{1}{(\varrho+1)_k} \frac{(-x^2/4)}{k!} = +x^\varrho +\cdot \mathstrut_0F_1\biggl(;\varrho+1;-\frac{x^2}{4}\biggr) \end{align*} -Falls also $\alpha$ kein ganzzahliges Vielfaches von $\frac12$ ist, finden -wir zwei Lösungsfunktionen +Wir finden also zwei Lösungsfunktionen \begin{align} y_1(x) %J_\alpha(x) @@ -214,8 +232,10 @@ x^{\alpha\phantom{-}} \frac{1}{(\alpha+1)_k} \frac{(-x^2/4)^k}{k!} = +x^\alpha +\cdot \mathstrut_0F_1\biggl(;\alpha+1;-\frac{x^2}{4}\biggr), -\label{buch:differentialgleichunge:bessel:erste} +\label{buch:differentialgleichunge:bessel:eqn:erste} \\ y_2(x) %J_{-\alpha}(x) @@ -223,32 +243,50 @@ y_2(x) x^{-\alpha} \sum_{k=0}^\infty \frac{1}{(-\alpha+1)_k} \frac{(-x^2/4)^k}{k!} = +x^{-\alpha} +\cdot \mathstrut_0F_1\biggl(;-\alpha+1;-\frac{x^2}{4}\biggr). -\label{buch:differentialgleichunge:bessel:zweite} +\label{buch:differentialgleichunge:bessel:eqn:zweite} \end{align} +Man beachte, dass die zweite Lösung für ganzzahliges $\alpha>0$ nicht +definiert ist. +Man kann auch direkt nachrechnen, dass diese Funktionen Lösungen +der Besselschen Differentialgleichung sind. +% +% Bessel-Funktionen +% \subsubsection{Bessel-Funktionen} Da die Besselsche Differentialgleichung linear ist, ist auch jede Linearkombination der Funktionen -\eqref{buch:differentialgleichunge:bessel:erste} +\eqref{buch:differentialgleichunge:bessel:eqn:erste} und -\eqref{buch:differentialgleichunge:bessel:zweite} +\eqref{buch:differentialgleichunge:bessel:eqn:zweite} eine Lösung. -Man kann zum Beispiel das Pochhammer-Symbol im Nenner loswerden, -wenn man im Nenner mit $\Gamma(\alpha+1)$ -multipliziert: +Satz~\ref{buch:rekursion:gamma:satz:gamma-pochhammer} +ermöglicht, das Pochhammer-Symbol durch Werte der Gamma-Funktion +wie in \[ -\frac{(1/2)^\alpha}{\Gamma(\alpha+1)} +(\alpha+1)_n = \frac{\Gamma(\alpha+k+1)}{\Gamma(\alpha+1)} +\] +auszudrücken. +Damit wird +\begin{align} y_1(x) +&= +x^\alpha +\sum_{k=0}^\infty +\frac{\Gamma(\alpha+1)}{\Gamma(\alpha+k+1)} +\frac{(-x^2/4)^k}{k!} = +\Gamma(\alpha+1) 2^{\alpha} \biggl(\frac{x}{2}\biggr)^\alpha \sum_{k=0}^\infty -\frac{(-1)^k}{k!\,\Gamma(\alpha+k+1)} -\biggl(\frac{x}{2}\biggr)^{2k}. -\] -Dabei haben wir es durch -Multiplikation mit $(\frac12)^\alpha$ auch geschafft, die Funktion -einheitlich als Funktion von $x/2$ auszudrücken. +\frac{(-1)^k}{k!\,\Gamma(\alpha+k+1)} \biggl(\frac{x}{2}\biggr)^{2k} +\label{buch:differentialgleichungen:bessel:normierungsgleichung} +\end{align} +Nur gerade der Faktor $2^\alpha\Gamma(\alpha+1)$ ist von $k$ und $x$ +unabhängig, daher ist die folgende Definition sinnvoll: \begin{definition} \label{buch:differentialgleichungen:bessel:definition} @@ -262,12 +300,34 @@ J_{\alpha}(x) \biggl(\frac{x}{2}\biggr)^{2k} \] heisst {\em Bessel-Funktion erster Art der Ordnung $\alpha$}. +\index{Bessel-Funktion!erster Art}% \end{definition} +Die Bessel-Funktion $J_\alpha(x)$ der Ordnung $\alpha$ unterscheidet sich +nur durch einen Normierungsfaktor von der Lösung $y_1(x)$. +Dasselbe gilt für $J_{-\alpha}(x)$ und $y_2(x)$: +\begin{align*} +J_{\alpha}(x) +&= +\frac{1}{2^\alpha\Gamma(\alpha+1)} +\cdot +y_1(x) +\\ +J_{-\alpha}(x) +&= +\frac{1}{2^{-\alpha}\Gamma(-\alpha+1)} +\cdot +y_2(x). +\end{align*} + +% +% Ganzzahlige Ordnung +% +\subsubsection{Besselfunktionen ganzzahliger Ordnung} Man beachte, dass diese Definition für beliebige ganzzahlige $\alpha$ funktioniert. Ist $\alpha=-n<0$, $n\in\mathbb{N}$, dann hat der Nenner Pole -an den Stellen $k=0,1,\dots,n-$. +an den Stellen $k=0,1,\dots,n-1$. Die Summe beginnt also erst bei $k=n$ oder \begin{align*} J_{-n}(x) @@ -285,7 +345,22 @@ J_{-n}(x) (-1)^n J_{n}(x). \end{align*} +Insbesondere unterscheiden sich $J_n(x)$ und $J_{-n}(x)$ nur durch +ein Vorzeichen. + +Als lineare Differentialgleichung zweiter Ordnung erwarten wir noch +eine zweite, linear unabhängige Lösung. +Diese kann jedoch nicht allein mit der Potenzreihenmethode, +dazu sind die Methoden der Funktionentheorie nötig. +Im Abschnitt~\ref{buch:funktionentheorie:subsection:dglsing} +wird gezeigt, wie dies möglich ist und auf +Seite~\pageref{buch:funktionentheorie:subsubsection:bessel2art} +werden die damit zu findenden Bessel-Funktionen 0-ter Ordnung und +zweiter Art vorgestellt. +% +% Erzeugende Funktione +% \subsubsection{Erzeugende Funktion} \begin{figure} \centering @@ -388,11 +463,15 @@ Die beiden Exponentialreihen sind \notag \end{align} +% +% Additionstheorem +% \subsubsection{Additionstheorem} Die erzeugende Funktion kann dazu verwendet werden, das Additionstheorem für die Besselfunktionen zu beweisen. \begin{satz} +\index{Satz!Additionstheorem für Besselfunktionen}% Für $l\in\mathbb{Z}$ und $x,y\in\mathbb{R}$ gilt \[ J_l(x+y) = \sum_{m=-\infty}^\infty J_m(x)J_{l-m}(y). @@ -438,7 +517,9 @@ J_l(x+y) &= \sum_{m=-\infty}^\infty J_m(x)J_{l-m}(y) für alle $l$. \end{proof} - +% +% Der Fall \alpha=0 +% \subsubsection{Der Fall $\alpha=0$} Im Fall $\alpha=0$ hat das Indexpolynom eine doppelte Nullstelle, wir können daher nur eine Lösung erwarten. @@ -453,8 +534,10 @@ J_0(x) \] geschrieben werden kann. -% XXX Zweite Lösung explizit durchrechnen +% +% Der Fall \alpha=p, p\in \mathbb{N} +% \subsubsection{Der Fall $\alpha=p$, $p\in\mathbb{N}, p > 0$} In diesem Fall kann nur die erste Lösung~\eqref{buch:differentialgleichunge:bessel:erste} @@ -467,8 +550,9 @@ J_p(x) \frac{(-1)^k}{k!(p+k)!}\biggl(\frac{x}{2}\biggr)^{p+2k}. \] -TODO: Lösung für $\alpha=-n$ - +% +% Der Fall $\alpha=n+\frac12$ +% \subsubsection{Der Fall $\alpha=n+\frac12$, $n\in\mathbb{N}$} Obwohl $2\alpha$ eine Ganzzahl ist, sind die beiden Lösungen \label{buch:differentialgleichunge:bessel:erste} @@ -491,7 +575,7 @@ Es ist = \frac{1}{2^k}\bigl(3\cdot 5\cdot\ldots\cdot (2k+1)\bigr) = -\frac{(2k+1)!}{2^{2k+1}\cdot k!} +\frac{(2k+1)!}{2^{2k}\cdot k!} \\ \biggl(-\frac12 + 1\biggr)_k &= @@ -508,63 +592,181 @@ Es ist = \frac{1}{2^k}\bigl(1\cdot 3 \cdot\ldots\cdot (2(k-1)+1)\bigr) = -\frac{(2k-1)!}{2^{2k}\cdot (k-1)!} +\frac{(2k-1)!}{2^{2k-1}\cdot (k-1)!} \end{align*} Damit können jetzt die Reihenentwicklungen der Lösung wie folgt umgeformt werden \begin{align*} y_1(x) &= -\sqrt{x} +x^\alpha \sum_{k=0}^\infty \frac{1}{(\alpha+1)_k} \frac{(-x^2/4)^k}{k!} = \sqrt{x} \sum_{k=0}^\infty -\frac{2^{2k+1}k!}{(2k+1)!} +\frac{2^{2k}k!}{(2k+1)!} \frac{(-x^2/4)^k}{k!} = \sqrt{x} \sum_{k=0}^\infty (-1)^k -\frac{2\cdot x^{2k}}{(2k+1)!} +\frac{x^{2k}}{(2k+1)!} \\ &= -\frac{1}{2\sqrt{x}} +\frac{1}{\sqrt{x}} \sum_{k=0}^\infty (-1)^k \frac{x^{2k+1}}{(2k+1)!} = -\frac{1}{2\sqrt{x}} \sin x +\frac{1}{\sqrt{x}} \sin x \\ y_2(x) &= -\frac{1}{\sqrt{x}} +x^{-\alpha} \sum_{k=0}^\infty -\frac{2^{2k}\cdot (k-1)!}{(2k-1)!} +\frac{1}{(-\alpha+1)_k} \frac{(-x^2/4)^k}{k!} = -\frac{1}{\sqrt{x}} +x^{-\frac12} \sum_{k=0}^\infty -(-1)^k -\frac{x^{2k}}{(2k-1)!\cdot k} +\frac{2^{2k-1}\cdot (k-1)!}{(2k-1)!} +\frac{(-x^2/4)^k}{k!} \\ &= -\frac{2}{\sqrt{x}} +\frac{1}{\sqrt{x}} \sum_{k=0}^\infty (-1)^k \frac{x^{2k}}{(2k-1)!\cdot 2k} = -\frac{2}{\sqrt{x}} \cos x. +\frac{1}{\sqrt{x}} \cos x. \end{align*} -% XXX Nachrechnen, dass diese Funktionen -% XXX Lösungen der Differentialgleichung sind - -\subsection{Analytische Fortsetzung und Bessel-Funktionen zweiter Art} - - - +Die Bessel-Funktionen verwenden aber eine andere Normierung. +Die Gleichung~\eqref{buch:differentialgleichungen:bessel:normierungsgleichung} +zeigt, dass die Bessel-Funktionen durch Division +der Funktion $y_1(x)$ und $y_2(x)$ durch $2^\alpha \Gamma(\alpha+1)$ +erhalten werden können. +Dies ergibt +\begin{equation*} +\renewcommand{\arraycolsep}{1pt} +\begin{array}{rclclclcl} +J_{\frac12}(x) +&=& +\displaystyle\frac{1}{2^{\frac12}\Gamma(\frac12+1)} +y_1(x) +&=& +\displaystyle\frac{1}{2^{\frac12}\frac12\Gamma(\frac12)} +y_1(x) +&=& +\displaystyle\frac{\sqrt{2}}{\Gamma(\frac12)} +y_1(x) +&=& +\displaystyle\frac{1}{\Gamma(\frac12)} +\sqrt{ \frac{2}{x}} +\sin x, +\\ +J_{-\frac12}(x) +&=& +\displaystyle\frac{1}{2^{-\frac12}\Gamma(-\frac12+1)} +y_2(x) +&=& +\displaystyle\frac{2^{\frac12}}{\Gamma(\frac12)} +y_2(x) +&=& +\displaystyle\frac{\sqrt{2}}{\Gamma(\frac12)} +y_2(x) +&=& +\displaystyle\frac{1}{\Gamma(\frac12)} +\sqrt{\frac{2}{x}} +\cos x. +\end{array} +\end{equation*} +Wegen $\Gamma(\frac12)=\sqrt{\pi}$ sind die +halbzahligen Bessel-Funktionen daher +\begin{align*} +J_{\frac12}(x) +&= +\sqrt{\frac{2}{\pi x}} \sin x += +\sqrt{\frac{2}{\pi}} x^{-\frac12}\sin x +& +&\text{und}& +J_{-\frac12}(x) +&= +\sqrt{\frac{2}{\pi x}} \cos x += +\sqrt{\frac{2}{\pi}} x^{-\frac12}\cos x. +\end{align*} +% +% Direkte Verifikation der Lösungen +% +\subsubsection{Direkte Verifikation der Lösungen für $\alpha=\pm\frac12$} +Tatsächlich führt die Anwendung des Bessel-Operators auf die beiden +Funktionen auf +\begin{align*} +\sqrt{\frac{\pi}2} +BJ_{\frac12}(x) +&= +\sqrt{\frac{\pi}2} +\biggl( +x^2J_{\frac12}''(x) + xJ_{\frac12}'(x) + x^2J_{\frac12}(x) +\biggr) +\\ +&= +x^2(x^{-\frac12}\sin x)'' ++ +x(x^{-\frac12}\sin x)' ++ +x^2(x^{-\frac12}\sin x) +\\ +&= +x^2( +x^{-{\textstyle\frac12}}\cos x +-{\textstyle\frac12}x^{-\frac32}\sin x +)' ++ +x( +x^{-\frac12}\cos x +-{\textstyle\frac12}x^{-\frac32}\sin x +) ++ +x^{\frac32}\sin x +\\ +&= +x^2( +-x^{-\frac12}\sin x +-{\textstyle\frac12}x^{-\frac32}\cos x +-{\textstyle\frac12}x^{-\frac32}\cos x ++{\textstyle\frac{3}{4}}x^{-\frac52}\sin x +) ++ +x^{\frac12}\cos x ++ +x^{-\frac12}(x-{\textstyle\frac12})\sin x +\\ +&= +( +-x^{\frac32} ++{\textstyle\frac34}x^{-\frac12} ++x^{\frac32} +-{\textstyle\frac12}x^{-\frac12} +) +\sin x += +\frac14x^{-\frac12}\sin x += +\frac14 +\sqrt{\frac{\pi}2} +J_{\frac12}(x) +\\ +BJ_{\frac12}(x) +&= +\biggl(\frac12\biggr)^2 J_{\frac12}(x). +\end{align*} +Dies zeigt, dass $J_{\frac12}(x)$ tatsächlich eine Eigenfunktion +des Bessel-Operators zum Eigenwert $\alpha^2 = \frac14$ ist. +Analog kann man die Lösung $y_2(x)$ für $-\frac12$ verifizieren. diff --git a/buch/chapters/050-differential/hypergeometrisch.tex b/buch/chapters/050-differential/hypergeometrisch.tex index e187b68..2fe43c1 100644 --- a/buch/chapters/050-differential/hypergeometrisch.tex +++ b/buch/chapters/050-differential/hypergeometrisch.tex @@ -371,6 +371,7 @@ $c$ darf also kein natürliche Zahl $\ge 2$ sein. Wir fassen die Resultate dieses Abschnitts im folgenden Satz zusammen. \begin{satz} +\index{Satz!Lösung der eulerschen hypergeometrischen Differentialgleichung}% Die eulersche hypergeometrische Differentialgleichung \begin{equation} x(1-x)\frac{d^2y}{dx^2} @@ -906,6 +907,7 @@ Funktion wohldefiniert. Wir fassen diese Resultat zusammen: \begin{satz} +\index{Satz!1f1@Differentialgleichung von $\mathstrut_1F_1$}% \label{buch:differentialgleichungen:satz:1f1-dgl-loesungen} Die Differentialgleichung \[ @@ -1591,7 +1593,7 @@ x\cdot \end{align*} als Lösungen. Die Differentialgleichung von $\mathstrut_0F_1$ sollte sich in diesem -Fall also auf die Airy-Differentialgleichung reduzieren lassen. +Fall also auf die Airy-Dif\-fe\-ren\-tial\-glei\-chung reduzieren lassen. Bei der Substition der Parameter in die Differentialgleichung \eqref{buch:differentialgleichungen:0F1:dgl} beachten wird, dass @@ -1757,6 +1759,7 @@ T_n(x) \biggr). \end{equation} Auch die Tschebyscheff-Polynome lassen sich also mit Hilfe einer -hypergeometrischen Funktion schreiben. +hypergeometrischen Funktion schreiben, wie schon in +\eqref{buch:rekursion:hypergeometrisch:tschebyscheff2f1} +bemerkt wurde. -%\url{https://en.wikipedia.org/wiki/Chebyshev_polynomials} diff --git a/buch/chapters/050-differential/potenzreihenmethode.tex b/buch/chapters/050-differential/potenzreihenmethode.tex index 2d95fb2..9f2e0a6 100644 --- a/buch/chapters/050-differential/potenzreihenmethode.tex +++ b/buch/chapters/050-differential/potenzreihenmethode.tex @@ -44,6 +44,7 @@ Tatsächlich gilt der folgende sehr viel allgemeinere Satz von Cauchy und Kowalevskaja: \begin{satz}[Cauchy-Kowalevskaja] +\index{Satz!von Cauchy-Kowalevskaja}% Eine partielle Differentialgleichung der Ordnung $k$ für eine Funktion $u(x_1,\dots,x_n,t)=u(x,t)$ in expliziter Form @@ -176,7 +177,8 @@ b_2\,2!\,a_{2+k} + b_1\, a_{1+k} + b_0\, a_k % % Die Newtonsche Reihe % -\subsection{Die Newtonsche Reihe} +\subsection{Die Newtonsche Reihe +\label{buch:differentialgleichungen:subsection:newtonschereihe}} Wir lösen die Differentialgleichung~\eqref{buch:differentialgleichungen:eqn:wurzeldgl1} mit der Anfangsbedingung $y(t)=1$ mit der Potenzreihenmethode. @@ -289,7 +291,7 @@ Für ganzzahliges $\alpha$ wird daraus die binomische Formel \] % -% Lösung als hypergeometrische Riehe +% Lösung als hypergeometrische Reihe % \subsubsection{Lösung als hypergeometrische Funktion} Die Newtonreihe verwendet ein absteigendes Produkt im Zähler. @@ -333,6 +335,8 @@ wir die Darstellung Damit haben wir den folgenden Satz gezeigt. \begin{satz} +\index{Satz!Newtonsche Reihe}% +\label{buch:differentialgleichungen:satz:newtonschereihe} Die Newtonsche Reihe für $(1-t)^\alpha$ ist der Wert \[ (1-t)^\alpha @@ -370,7 +374,7 @@ entwickeln lassen. \subsubsection{Die Potenzreihenmethode funktioniert nicht} Für die Differentialgleichung \eqref{buch:differentialgleichungen:eqn:dglverallg} -funktioniert die Potenzreihenmethod oft nicht. +funktioniert die Potenzreihenmethode oft nicht. Sind die Funktionen $p(x)$ und $q(x)$ zum Beispiel Konstante $p(x)=p_0$ und $q(x)=q_0$, dann führt der Potenzreihenansatz \[ @@ -418,25 +422,43 @@ $a_k=0$ sein, die einzige Potenzreihe ist die triviale Funktion $y(x)=0$. Für Differentialgleichungen der Art \eqref{buch:differentialgleichungen:eqn:dglverallg} ist also ein anderer Ansatz nötig. -Die Schwierigkeit bestand darin, dass die Gleichungen für die einzelnen -Koeffizienten $a_k$ voneinander unabhängig waren. -Mit einem zusätzlichen Potenzfaktor $x^\varrho$ mit nicht -notwendigerweise ganzzahligen Wert kann die nötige Flexibilität -erreicht werden. -Wir verwenden daher den Ansatz -\[ +Ursache für das Versagen des Potenzreihenansatzes ist, dass die +Koeffizienten der Differentialgleichung bei $x=0$ eine +Singularität haben. +Ist ist daher damit zu rechnen, dass auch die Lösung $y(x)$ an dieser +Stelle singuläres Verhalten zeigen wird. +Die Terme einer Potenzreihe um den Punkt $x=0$ sind nicht singulär, +können eine solche Singularität also nicht wiedergeben. +Der neue Ansatz sollte ähnlich einfach sein, aber auch gewisse ``einfache'' +Singularitäten darstellen können. +Die Potenzfunktionen $x^\varrho$ mit $\varrho<1$ erfüllen beide +Anforderungen. + +\begin{definition} +\label{buch:differentialgleichungen:def:verallpotenzreihe} +Eine {\em verallgemeinerte Potenzreihe} ist eine Funktion der Form +\begin{equation} y(x) = x^\varrho \sum_{k=0}^\infty a_kx^k = \sum_{k=0}^\infty a_k x^{\varrho+k} -\] -und versuchen nicht nur die Koeffizienten $a_k$ sondern auch den -Exponenten $\varrho$ zu bestimmen. -Durch Modifikation von $\varrho$ können wir immer erreichen, dass -$a_0\ne 0$ ist. - -Die Ableitungen von $y(x)$ mit der zugehörigen Potenz von x sind +\label{buch:differentialgleichungen:eqn:verallpotenzreihe} +\end{equation} +mit $a_0\ne 0$. +\end{definition} + +Die Forderung $a_0\ne 0$ kann nötigenfalls durch Modifikation des +Exponenten $\varrho$ immer erreicht werden. + +Wir verwenden also eine verallgemeinerte Potenzreihe der Form +\eqref{buch:differentialgleichungen:eqn:verallpotenzreihe} +als Lösungsansatz für die +Differentialgleichung~\eqref{buch:differentialgleichungen:eqn:dglverallg}. +Wir berechnen die Ableitungen von $y(x)$ und um sie in der +Differentialgleichung einzusetzen, versehen wir sie auch gleich mit den +benötigten Potenzen von $x$. +So erhalten wir \begin{align*} xy'(x) &= @@ -451,8 +473,9 @@ x^2y''(x) \sum_{k=0}^\infty (\varrho+k)(\varrho+k-1)a_kx^{\varrho+k}. \end{align*} -Diese Ableitungen setzen wir jetzt in die Differentialgleichung ein, -die dadurch zu +Diese Ausdrücke setzen wir jetzt in die +Differentialgleichung~\eqref{buch:differentialgleichungen:eqn:dglverallg} +ein, die dadurch zu \begin{equation} \sum_{k=0}^\infty (\varrho+k)(\varrho+k-1) a_k x^{\varrho+k} + @@ -487,6 +510,7 @@ Ausgeschrieben geben die einzelnen Terme \bigl((\varrho +2)a_2p_0 + (\varrho+1)a_1p_1 + \varrho a_0 p_2\bigr) x^{\varrho+2} + \dots +\label{buch:differentialgleichungen:eqn:dglverallg} \\ &+ q_0a_0x^{\varrho} @@ -683,18 +707,17 @@ Kapitel~\ref{buch:chapter:funktionentheorie} dargestellt werden. \item -Fall 3: $\varrho_1-\varrho-2$ ist eine positive ganze Zahl. +Fall 3: $\varrho_1-\varrho_2$ ist eine positive ganze Zahl. In diesem Fall ist im Allgemeinen nur eine Lösung in Form einer verallgemeinerten Potenzreihe möglich. Auch hier müssen Techniken der Funktionentheorie aus Kapitel~\ref{buch:chapter:funktionentheorie} verwendet werden, um eine zweite Lösung zu finden. -\end{itemize} - Wenn $\varrho_1-\varrho_2$ eine negative ganze Zahl ist, kann man die beiden Nullstellen vertauschen. -Es folgt dann, dass es eine +\end{itemize} + diff --git a/buch/chapters/060-integral/eulertransformation.tex b/buch/chapters/060-integral/eulertransformation.tex index a597892..65d48b2 100644 --- a/buch/chapters/060-integral/eulertransformation.tex +++ b/buch/chapters/060-integral/eulertransformation.tex @@ -93,6 +93,7 @@ Durch Auflösung nach der hypergeometrischen Funktion bekommt man die folgende Integraldarstellung. \begin{satz}[Euler] +\index{Satz!Eulertransformation}% \label{buch:integrale:eulertransformation:satz} Die hypergeometrische Funktion $\mathstrut_2F_1$ kann durch das Integral @@ -219,6 +220,7 @@ Funktionen $\mathstrut_{p+1}F_{q+1}$ durch ein Integral, dessen Integrand $\mathstrut_pF_q$ enthält, ausdrücken lässt. \begin{satz} +\index{Satz!Euler-Transformationformel}% Es gilt die sogennannte Euler-Transformationsformel \index{Euler-Transformation}% \[ diff --git a/buch/chapters/060-integral/fehlerfunktion.tex b/buch/chapters/060-integral/fehlerfunktion.tex index 581e56a..6b87044 100644 --- a/buch/chapters/060-integral/fehlerfunktion.tex +++ b/buch/chapters/060-integral/fehlerfunktion.tex @@ -622,7 +622,9 @@ Resultat für die Laplace-Transformierte von $f(t)$, sie ist \frac1s\biggl(1-\frac12e^{-a\sqrt{s}} \biggr). \] -\begin{satz} Die Laplace-Transformierte der Fehlerfunktion mit Argument +\begin{satz} +\index{Satz!Laplace-Transformierte der Fehlerfunktion}% +Die Laplace-Transformierte der Fehlerfunktion mit Argument $a/2\sqrt{t}$ ist \begin{equation} f(t) = \operatorname{erf}\biggl(\frac{a}{2\sqrt{t}}\biggr) diff --git a/buch/chapters/070-orthogonalitaet/bessel.tex b/buch/chapters/070-orthogonalitaet/bessel.tex index 3e9412a..0ef28fd 100644 --- a/buch/chapters/070-orthogonalitaet/bessel.tex +++ b/buch/chapters/070-orthogonalitaet/bessel.tex @@ -1,7 +1,8 @@ % % Besselfunktionen also orthogonale Funktionenfamilie % -\section{Bessel-Funktionen als orthogonale Funktionenfamilie} +\section{Bessel-Funktionen als orthogonale Funktionenfamilie +\label{buch:orthogonalitaet:section:bessel}} \rhead{Bessel-Funktionen} Auch die Besselfunktionen sind eine orthogonale Funktionenfamilie. Sie sind Funktionen differenzierbaren Funktionen $f(r)$ für $r>0$ diff --git a/buch/chapters/070-orthogonalitaet/chapter.tex b/buch/chapters/070-orthogonalitaet/chapter.tex index 4756844..fba1298 100644 --- a/buch/chapters/070-orthogonalitaet/chapter.tex +++ b/buch/chapters/070-orthogonalitaet/chapter.tex @@ -8,20 +8,66 @@ \label{buch:chapter:orthogonalitaet}} \lhead{Orthogonalität} \rhead{} +In der linearen Algebra lernt man, dass orthonormierte Basen für die +Lösung vektorgeometrischer Probleme, bei denen auch das Skalarprodukt +involviert ist, besonders günstig sind. +Die Zerlegung eines Vektors in einer Basis verlangt normalerweise nach +der Lösung eines linearen Gleichungssystems, für orthonormierte +Basisvektoren beschränkt sie sich auf die Berechnung von Skalarprodukten. + +Oft dienen spezielle Funktionen als Basis der Lösungen einer linearen +partiellen Differentialgleichung (siehe Kapitel~\ref{buch:chapter:pde}). +Die Randbedingungen müssen dazu in der gewählten Basis von Funktionen +zerlegt werden. +Fourier ist es gelungen, die Idee des Skalarproduktes und der Orthogonalität +auf Funktionen zu verallgemeinern und so zum Beispiel das Wärmeleitungsproblem +zu lösen. + +Der Orthonormalisierungsprozess von Gram-Schmidt wird damit auch auf +Funktionen anwendbar +(Abschnitt~\ref{buch:orthogonalitaet:section:orthogonale-funktionen}), +der Nutzen führt aber noch viel weiter. +Da $K[x]$ ein Vektorraum ist, führt er von der Basis der Monome +$\{1,x,x^2,\dots,x^n\}$ +auf orthonormierte Polynome. +Diese haben jedoch eine ganze Reihe weiterer nützlicher Eigenschaften. +So wird in Abschnitt~\ref{buch:orthogonal:section:drei-term-rekursion} +gezeigt, dass sich die Werte aller Polynome einer solchen Familie mit +einer Rekursionsformel effizient berechnen lassen, die höchstens drei +Terme umfasst. +In Abschnitt~\ref{buch:orthogonalitaet:section:rodrigues} werden +die Rodrigues-Formeln vorgeführt, die Polynome durch Anwendung eines +Differentialoperators hervorbringen. +In Abschnitt~\ref{buch:orthogonal:section:orthogonale-polynome-und-dgl} +schliesslich wird gezeigt, dass diese Polynome auch Eigenfunktionen +eines selbstadjungierten Operators sind. +Da man in der linearen Algebra auch lernt, dass die Eigenvektoren einer +symmetrischen Matrix zu verschiedenen Eigenwerten orthogonal sind, +ist die Orthogonalität plötzlich nicht mehr überraschend. + +Die Bessel-Funktionen von +Abschnitt~\ref{buch:differntialgleichungen:section:bessel} +sind auch Eigenfunktionen eines Differentialoperators. +Abschnitt~\ref{buch:orthogonalitaet:section:bessel} findet das zugehörige +Skalarprodukt, welches andeutet, dass auch für andere Funktionenfamilien +eine entsprechende Konstruktion möglich ist. +Das in Abschnitt~\ref{buch:integrale:subsection:sturm-liouville-problem} +präsentierte Sturm-Liouville-Problem führt sie durch. +Das Kapitel schliesst mit dem +Abschnitt~\ref{buch:orthogonal:section:gauss-quadratur} +über die Gauss-Quadratur, welche die Eigenschaften orthogonaler Polynome +für einen besonders effizienten numerischen Integrationsalgorithmus +ausnutzt. + \input{chapters/070-orthogonalitaet/orthogonal.tex} \input{chapters/070-orthogonalitaet/rekursion.tex} \input{chapters/070-orthogonalitaet/rodrigues.tex} -%\input{chapters/070-orthogonalitaet/jacobi.tex} \input{chapters/070-orthogonalitaet/legendredgl.tex} \input{chapters/070-orthogonalitaet/bessel.tex} \input{chapters/070-orthogonalitaet/sturm.tex} \input{chapters/070-orthogonalitaet/gaussquadratur.tex} -%\section{TODO} -%\begin{itemize} -%\end{itemize} - -\section*{Übungsaufgaben} +\section*{Übungsaufgabe} \rhead{Übungsaufgaben} \aufgabetoplevel{chapters/070-orthogonalitaet/uebungsaufgaben} \begin{uebungsaufgaben} diff --git a/buch/chapters/070-orthogonalitaet/gaussquadratur.tex b/buch/chapters/070-orthogonalitaet/gaussquadratur.tex index 2e43cec..a5af7d2 100644 --- a/buch/chapters/070-orthogonalitaet/gaussquadratur.tex +++ b/buch/chapters/070-orthogonalitaet/gaussquadratur.tex @@ -1,7 +1,8 @@ % % Anwendung: Gauss-Quadratur % -\section{Anwendung: Gauss-Quadratur} +\section{Anwendung: Gauss-Quadratur +\label{buch:orthogonal:section:gauss-quadratur}} \rhead{Gauss-Quadratur} Orthogonale Polynome haben eine etwas unerwartet Anwendung in einem von Gauss erdachten numerischen Integrationsverfahren. @@ -229,6 +230,7 @@ Sei $R_n=\{p(X)\in\mathbb{R}[X] \mid \deg p\le n\}$ der Vektorraum der Polynome vom Grad $n$. \begin{satz} +\index{Satz!Gaussquadratur}% \label{buch:integral:satz:gaussquadratur} Sei $p$ ein Polynom vom Grad $n$, welches auf allen Polynomen in $R_{n-1}$ orthogonal sind. @@ -284,7 +286,7 @@ $p(x)$ sein. Der Satz~\ref{buch:integral:satz:gaussquadratur} begründet das {\em Gausssche Quadraturverfahren}. -Die in Abschnitt~\ref{buch:integral:section:orthogonale-polynome} +Die in Abschnitt~\ref{buch:orthogonal:subsection:legendre-polynome} bestimmten Legendre-Polynome $P_n$ haben die im Satz verlangte Eigenschaft, dass sie auf allen Polynomen geringeren Grades orthogonal sind. @@ -306,6 +308,7 @@ Für eine beliebige Funktion kann man die folgende Fehlerabschätzung angeben \cite[theorem 7.3.4, p.~497]{buch:numal}. \begin{satz} +\index{Satz!Gausssche Quadraturformel und Fehler}% Seien $x_i$ die Stützstellen und $A_i$ die Gewichte einer Gaussschen Quadraturformel mit $n+1$ Stützstellen und sei $f$ eine auf dem Interval $[-1,1]$ $2n+2$-mal stetig differenzierbare @@ -551,7 +554,7 @@ w(x)=e^{-x} \text{ und } g(x)=f(x)e^x. \] -Dann approximiert $g(x)$ man durch ein Interpolationspolynom, +Dann approximiert man $g(x)$ durch ein Interpolationspolynom, so wie man das bei der Gauss-Quadratur gemacht hat. Als Stützstellen müssen dazu die Nullstellen der Laguerre-Polynome verwendet werden. diff --git a/buch/chapters/070-orthogonalitaet/legendredgl.tex b/buch/chapters/070-orthogonalitaet/legendredgl.tex index de8f63f..f3dd53f 100644 --- a/buch/chapters/070-orthogonalitaet/legendredgl.tex +++ b/buch/chapters/070-orthogonalitaet/legendredgl.tex @@ -3,7 +3,8 @@ % % (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule % -\section{Orthogonale Polynome und Differentialgleichungen} +\section{Orthogonale Polynome und Differentialgleichungen +\label{buch:orthogonal:section:orthogonale-polynome-und-dgl}} \rhead{Differentialgleichungen orthogonaler Polynome} Legendre hat einen ganz anderen Zugang zu den nach ihm benannten Polynomen gefunden. @@ -16,8 +17,13 @@ Die Orthogonalität wird dann aus einer Verallgemeinerung der bekannten Eingeschaft folgen, dass Eigenvektoren einer symmetrischen Matrix zu verschiedenen Eigenwerten orthogonal sind. +% +% Legendre-Differentialgleichung +% \subsection{Legendre-Differentialgleichung} Die {\em Legendre-Differentialgleichung} ist die Differentialgleichung +\index{Differentialgleichung!Legendre-}% +\index{Legendre-Differentialgleichung}% \begin{equation} (1-x^2) y'' - 2x y' + n(n+1) y = 0 \label{buch:integral:eqn:legendre-differentialgleichung} @@ -61,7 +67,10 @@ zerlegen, die als Linearkombinationen der beiden Lösungen $y(x)$ und $y_s(x)$ ebenfalls Lösungen der Differentialgleichung sind. -\subsection{Potenzreihenlösung} +% +% Potenzreihenlösungen +% +\subsubsection{Potenzreihenlösung} Wir suchen eine Lösung in Form einer Potenzreihe um $x=0$ und verwenden dazu den Ansatz \[ @@ -170,7 +179,10 @@ eine Polynomlösung $\bar{P}_n(x)$ vom Grad $n$ gibt. Dies kann aber nicht erklären, warum die so gefundenen Polynome orthogonal sind. -\subsection{Eigenfunktionen} +% +% Eigenfunktionen +% +\subsubsection{Eigenfunktionen} Die Differentialgleichung \eqref{buch:integral:eqn:legendre-differentialgleichung} Kann mit dem Differentialoperator @@ -198,7 +210,10 @@ des Operators $D$ zum Eigenwert $n(n+1)$ sind: D\bar{P}_n = -n(n+1) \bar{P}_n. \] -\subsection{Orthogonalität von $\bar{P}_n$ als Eigenfunktionen} +% +% Orthogonalität von P_n als Eigenfunktionen +% +\subsubsection{Orthogonalität von $\bar{P}_n$ als Eigenfunktionen} Ein Operator $A$ auf Funktionen heisst {\em selbstadjungiert}, wenn für zwei beliebige Funktionen $f$ und $g$ gilt \[ @@ -274,7 +289,10 @@ die $\bar{P}_n$ orthogonale Polynome vom Grad $n$ sind, die die gleiche Standardierdisierungsbedingung wie die Legendre-Polyonome erfüllen, also ist $\bar{P}_n(x)=P_n(x)$. -\subsection{Legendre-Funktionen zweiter Art} +% +% Legendre-Funktionen zweiter Art +% +\subsubsection{Legendre-Funktionen zweiter Art} %Siehe Wikipedia-Artikel \url{https://de.wikipedia.org/wiki/Legendre-Polynom} % Die Potenzreihenmethode liefert natürlich auch Lösungen der @@ -368,7 +386,7 @@ Q_1(x) = x \operatorname{artanh}x-1 verwendet werden. % -% +% Laguerre-Differentialgleichung % \subsection{Laguerre-Differentialgleichung \label{buch:orthogonal:subsection:laguerre-differentialgleichung}} @@ -427,11 +445,15 @@ schlägt eine zweite Lösung vor, im vorliegenden Fall mit $b=1$ ist die zweite Lösung jedoch identisch zu ersten, es muss daher ein anderer Weg zu einer zweiten Lösung gesucht werden. -XXX TODO: zweite Lösung der Differentialgleichung. +%XXX TODO: zweite Lösung der Differentialgleichung. +% +% +% \subsubsection{Die assoziierte Laguerre-Differentialgleichung} \index{assoziierte Laguerre-Differentialgleichung}% \index{Laguerre-Differentialgleichung, assoziierte}% +\index{Differentialgleichung!assoziierte Laguerre-}% Die {\em assoziierte Laguerre-Differentialgleichung} ist die Differentialgleichung \begin{equation} diff --git a/buch/chapters/070-orthogonalitaet/orthogonal.tex b/buch/chapters/070-orthogonalitaet/orthogonal.tex index 677e865..df04514 100644 --- a/buch/chapters/070-orthogonalitaet/orthogonal.tex +++ b/buch/chapters/070-orthogonalitaet/orthogonal.tex @@ -11,9 +11,13 @@ Funktionenreihen mit Summanden zu bilden, die im Sinne eines Skalarproduktes orthogonal sind, welches mit Hilfe eines Integrals definiert sind. Solche Funktionenfamilien treten jedoch auch als Lösungen von -Differentialgleichungen. +Differentialgleichungen auf. Besonders interessant wird die Situation, wenn die Funktionen Polynome sind. +In diesem Abschnitt soll zunächst das Skalarprodukt definiert +und an Hand von Beispielen gezeigt werden, wie verschiedenartige +interessante Familien von orthogonalen Polynomen gewonnen werden +können. % % Skalarprodukt @@ -520,7 +524,7 @@ Tabelle~\ref{buch:integral:table:legendre-polynome}. Die Graphen sind in Abbildung~\ref{buch:integral:orthogonal:legendregraphen} dargestellt. Abbildung~\ref{buch:integral:orthogonal:legendreortho} illustriert, -dass die die beiden Polynome $P_4(x)$ und $P_7(x)$ orthogonal sind. +dass die beiden Polynome $P_4(x)$ und $P_7(x)$ orthogonal sind. Das Produkt $P_4(x)\cdot P_7(x)$ hat Integral $=0$. % @@ -634,7 +638,7 @@ Der Vektorraum $H_w$ von auf $(a,b)$ definierten Funktionen sei H_w = \biggl\{ -f:\colon(a,b) \to \mathbb{R} +f\colon(a,b) \to \mathbb{R} \;\bigg|\; \int_a^b |f(x)|^2 w(x)\,dx \biggr\}. diff --git a/buch/chapters/070-orthogonalitaet/rekursion.tex b/buch/chapters/070-orthogonalitaet/rekursion.tex index dc5531b..3dd9de5 100644 --- a/buch/chapters/070-orthogonalitaet/rekursion.tex +++ b/buch/chapters/070-orthogonalitaet/rekursion.tex @@ -31,9 +31,20 @@ für alle $n$, $m$. \end{definition} \subsubsection{Allgemeine Drei-Term-Rekursion für orthogonale Polynome} -Der folgende Satz besagt, dass $p_n$ eine Rekursionsbeziehung erfüllt. +Die Multiplikation mit $x$ macht aus einem Polynom vom Grad $n$ ein +Polynom vom Grad $n+1$. +Das Polynom $xp_n(x)$ lässt sich daher als Linearkombination der +Polynome $p_k(x)$ mit $k\le n+1$ schreiben. +Es muss also eine lineare Beziehung zwischen den Polynomen $p_k(x)$ und +$xp_n(x)$ geben, die man nach $p_{n+1}(x)$ auflösen kann, um eine lineare +Darstellung von $p_{n+1}(x)$ durch die $p_k(x)$ und $p_n(x)$ zu +bekommen. +A priori muss man damit rechnen, dass sehr viele Summanden nötig sind. +Der folgende Satz besagt, dass $p_n(x)$ eine Rekursionsbeziehung mit +nur drei Termen erfüllt. \begin{satz} +\index{Satz!Drei-Term-Rekursion}% \label{buch:orthogonal:satz:drei-term-rekursion} Eine Folge bezüglich $\langle\,\;,\;\rangle_w$ orthogonaler Polynome $p_n$ mit dem Grade $\deg p_n = n$ erfüllt eine Rekursionsbeziehung der Form @@ -55,9 +66,13 @@ C_{n+1} = \frac{A_{n+1}}{A_n}\frac{h_{n+1}}{h_n}. \end{equation} \end{satz} +Die Rekursionsbeziehung~\eqref{buch:orthogonal:eqn:rekursion} bedeutet, +dass sich die Werte $p_n(x)$ für alle $n$ ausgehend von $p_1(x)$ und +$p_0(x)$ mit nur $O(n)$ Operationen ermitteln lassen. + \subsubsection{Multiplikationsoperator mit $x$} -Man kann die Relation auch nach dem Produkt $xp_n(x)$ auflösen, dann -wird sie +Man kann die Relation \eqref{buch:orthogonal:eqn:rekursion} +auch nach dem Produkt $xp_n(x)$ auflösen, dann wird sie \begin{equation} xp_n(x) = @@ -68,9 +83,12 @@ xp_n(x) \frac{C_n}{A_n}p_{n-1}(x). \label{buch:orthogonal:eqn:multixrelation} \end{equation} -Die Multiplikation mit $x$ ist eine lineare Abbildung im Raum der Funktionen. +Die Multiplikation mit $x$ ist eine lineare Abbildung im Raum der Funktionen, +die wir weiter unten auch $M_x$ abkürzen. Die Relation~\eqref{buch:orthogonal:eqn:multixrelation} besagt, dass diese Abbildung in der Basis der Polynome $p_k$ tridiagonale Form hat. +Ein Beispiel dafür ist im nächsten Abschnitt in +\eqref{buch:orthogonal:eqn:Mx} \subsubsection{Drei-Term-Rekursion für die Tschebyscheff-Polynome} Eine Relation der Form~\eqref{buch:orthogonal:eqn:multixrelation} @@ -84,6 +102,22 @@ T_{n+1}(x) = 2x\,T_n(x)-T_{n-1}(x), \] also $A_n=2$, $B_n=0$ und $C_n=1$. +Die Matrixdarstellung des Multiplikationsoperators $M_x$ in der +Basis der Tschebyscheff-Polynome hat wegen +\eqref{buch:orthogonal:eqn:multixrelation} die Form +\begin{equation} +M_x += +\begin{pmatrix} + 0&\frac12& 0& 0& 0&\dots \\ +\frac12& 0&\frac12& 0& 0&\dots \\ + 0&\frac12& 0&\frac12& 0&\dots \\ + 0& 0&\frac12& 0&\frac12&\dots \\ + 0& 0& 0&\frac12& 0&\dots \\ + \vdots& \vdots& \vdots& \vdots& \vdots&\ddots +\end{pmatrix}. +\label{buch:orthogonal:eqn:Mx} +\end{equation} \subsubsection{Beweis von Satz~\ref{buch:orthogonal:satz:drei-term-rekursion}} Die Relation~\eqref{buch:orthogonal:eqn:multixrelation} zeigt auch, diff --git a/buch/chapters/070-orthogonalitaet/rodrigues.tex b/buch/chapters/070-orthogonalitaet/rodrigues.tex index 9fded85..4852624 100644 --- a/buch/chapters/070-orthogonalitaet/rodrigues.tex +++ b/buch/chapters/070-orthogonalitaet/rodrigues.tex @@ -14,7 +14,8 @@ mit der Ableitung kann man den Grad aber auch senken, man könnte daher auch nach einer Rekursionsformel fragen, die bei einem Polynom hohen Grades beginnt und mit Hilfe von Ableitungen zu geringeren Graden absteigt. -Solche Formeln heissen Rodrigues-Formeln nach dem Entdecker Olinde +Solche Formeln heissen {\em Rodrigues-Formeln} nach dem Entdecker Olinde +\index{Rodriguez, Olinde}% Rodrigues, der eine solche Formal als erster für Legendre-Polynome gefunden hat. @@ -27,12 +28,17 @@ Die Skalarprodukte sollen \] sein. +% +% Pearsonsche Differentialgleichung +% \subsection{Pearsonsche Differentialgleichung} Die {\em Pearsonsche Differentialgleichung} ist die Differentialgleichung \begin{equation} B(x) y' - A(x) y = 0, \label{buch:orthogonal:eqn:pearson} \end{equation} +\index{Differentialgleichung!Pearsonsche}% +\index{Pearsonsche Differentialgleichung}% wobei $B(x)$ ein Polynom vom Grad höchstens $2$ ist und $A(x)$ ein höchstens lineares Polynom. Die Gleichung~\eqref{buch:orthogonal:eqn:pearson} @@ -45,33 +51,46 @@ Dann kann man die Gleichung umstellen in = \frac{A(x)}{B(x)} \qquad\Rightarrow\qquad -y = \exp\biggl( \int\frac{A(x)}{B(x)}\biggr)\,dx. +y += +\exp\biggl( +\int\frac{A(x)}{B(x)} +\,dx +\biggr) +. \] -Im folgenden nehmen wir zusätzlich an, dass +Im Folgenden nehmen wir zusätzlich an, dass an den Intervallenden \begin{equation} \lim_{x\to a+} w(x)B(x) = 0, \qquad\text{und}\qquad -\lim_{x\to b-} w(x)B(x) = 0. +\lim_{x\to b-} w(x)B(x) = 0 \end{equation} +gilt. + Falls $w(x)$ an den Intervallenden einen von $0$ verschiedenen Grenzwert hat, bedeutet dies, dass $B(a)=B(b)=0$ sein muss. Falls $w(x)$ am Intervallende divergiert, muss $B(x)$ dort eine Nullstelle höherer Ordnung haben, was aber für ein Polynom zweiten Grades nicht möglich ist. +% +% Rekursionsformel +% \subsection{Rekursionsformel} Multiplikation mit $B(x)$ wird den Grad eines Polynomes typischerweise um $2$ erhöhen, die Ableitung wird ihn wieder um $1$ reduzieren. Etwas formeller kann man dies wie folgt formulieren: \begin{satz} +\index{Satz!Rodrigues-Rekursionsformel}% Für alle $n\ge 0$ ist -\[ +\begin{equation} q_n(x) = \frac{1}{w(x)} \frac{d^n}{dx^n} B(x)^n w(x) -\] +\label{buch:orthogonalitaet:rodrigues:eqn:rekursion} +\end{equation} ein Polynom vom Grad höchstens $n$. \end{satz} @@ -85,51 +104,67 @@ r_0(x) B(x)^n w(x) \\ &= \frac{d^{n-1}}{dx^{n-1}} -\bigl(r_0'(x)B(x)+ nB'(x)B(x)^{n-1}w(x) + B(x)^n w'(x) \bigr) +\bigl(r_0'(x)B(x)+ nr_0(x)B'(x)B(x)^{n-1}w(x) + r_0(x)B(x)^n w'(x) \bigr) \\ &= \frac{d^{n-1}}{dx^{n-1}} -(r_0'(x)B(x)+nB'(x)+A(x)) B(x)^{n-1} w(x) -= +(\underbrace{r_0'(x)B(x)+nr_0(x)B'(x)+r_0(x)A(x)}_{\displaystyle = r_1(x)}) +B(x)^{n-1} w(x) +\\ +&= \frac{d^{n-1}}{dx^{n-1}} r_1(x)B^{n-1}(x) w(x). \end{align*} -Für die Funktionen $r_k$ gilt die Rekursionsformel +Iterativ lässt sich eine Folge von +Funktionen $r_k(x)$ definieren, für die Rekursionsformel \begin{equation} -r_k(x) = r_{k-1}'(x)B(x) + kB'(x) + A(x). +r_k(x) = r_{k-1}'(x)B(x) + \bigl((n+1-k)B'(x) + A(x)\bigr)r_{k-1}(x) \label{buch:orthogonal:rodrigues:rekursion:beweis1} \end{equation} +gilt. Wenn $r_0(x)$ ein Polynom ist, dann sind alle Funktionen $r_k(x)$ ebenfalls Polynome. -Durch wiederholte Anwendung dieser Formel kann man schliessen, dass +Aus der Konstruktion kann man schliessen, dass \[ \frac{d^n}{dx^n} r_0(x) B(x)^n w(x) = r_n(x) w(x). \] -Insbesondere folgt für $r_0(x)=1$, dass man durch $w(x)$ dividieren kann -und dass $r_n(x)=q_n(x)$. +Insbesondere folgt für $r_0(x)=1$, dass die $n$-te Ableitung den +Faktor $w(x)$ enthält und dass somit $r_n(x)=q_n(x)$ ein Polynom ist. -Wir müssen auch noch den Grad von $r_k(x)$ bestimmen. -Dazu verwenden wir -\eqref{buch:orthogonal:rodrigues:rekursion:beweis1} und berechnen den -Grad: +Wir müssen auch noch den Grad von $r_k(x)$ bestimmen, wobei wir +wieder von $r_0(x)=1$ ausgehen. +Wir behaupten, dass $\deg r_k(x)\le k$ ist, und beweisen dies +mit vollständiger Induktion. +Für $k=0$ ist $\deg r_0(x) = 0 \le k$ die Induktionsverankerung. + +Wir nehmen jetzt also an, dass $\deg r_{k-1}(x)\le k-1$ ist und +verwenden +\eqref{buch:orthogonal:rodrigues:rekursion:beweis1} um den Grad zu berechnen: \begin{equation*} \deg r_k(x) = \max \bigl( -\underbrace{\deg(r_{k-1}'(x) B(x))}_{\displaystyle \deg r_{k-1}(x) -1 + 2} +\underbrace{\deg(r_{k-1}'(x) B(x))}_{\displaystyle (k-1) -1 + 2} , -\underbrace{\deg(B'(x))}_{\displaystyle \le 1} +\underbrace{\deg(r_{k-1}(x)B'(x))}_{\displaystyle \le (k-1)+1} , -\underbrace{\deg(A(x))}_{\displaystyle \le 1} +\underbrace{\deg(r_{k-1}(x)A(x))}_{\displaystyle \le (k-1)+1} \bigr) -\le \max r_{k-1}(x) + 1. +\le k. \end{equation*} -Aus $\deg r_0(x)=0$ kann man jetzt ablesen, dass $\deg r_k(x)\le k$ ist. -Damit ist gezeigt, dass $\deg q_n(x)\le n$. +Damit ist der Induktionsschritt und $\deg r_k(x)\le k$ bewiesen. +Damit ist auch gezeigt, dass $\deg q_n(x)\le n$. \end{proof} +Die Rodrigues-Formel~\eqref{buch:orthogonalitaet:rodrigues:eqn:rekursion} +produziert eine Folge von Polynomen aufsteigenden Grades, es ist aber +noch nicht klar, dass diese Polynome bezüglich des gewählten Skalarproduktes +orthogonal sind. +Dies ist der Inhalt des folgenden Satzes. + \begin{satz} +\index{Satz!Rodrigues-Formel für orthonormierte Polynome}% Es gibt Konstanten $c_n$ derart, dass \[ p_n(x) @@ -140,7 +175,7 @@ gilt. \end{satz} \begin{proof}[Beweis] -Wir müssen zeigen, dass die Polynome orthogonal sind auf allen Monomen +Wir zeigen, dass die Polynome orthogonal sind auf allen Monomen von geringerem Grad. \begin{align*} \langle q_n, x^k\rangle_w @@ -148,15 +183,17 @@ von geringerem Grad. \int_a^b q_n(x)x^kw(x)\,dx \\ &= -\int_a^b \frac{1}{w(x)}\frac{d^n}{dx^n}(B(x)^n w(x)) x^k w(x)\,dx +\int_a^b \frac{1}{w(x)} +\biggl(\frac{d^n}{dx^n}\bigl(B(x)^n w(x)\bigr)\biggr) +x^k w(x)\,dx \\ &= -\int_a^b \frac{d^n}{dx^n}(B(x)^n w(x)) x^k \,dx +\int_a^b \frac{d^n}{dx^n}\bigl(B(x)^n w(x)\bigr) x^k \,dx \\ &= -\biggl[\frac{d^{n-1}}{dx^{n-1}}(B(x)^n w(x)) x^k \biggr]_a^b +\biggl[\frac{d^{n-1}}{dx^{n-1}}\bigl(B(x)^n w(x)\bigr) x^k \biggr]_a^b - -\int_a^b \frac{d^{n-1}}{dx^{n-1}}(B(x)^n w(x))kx^{k-1}\,dx +\int_a^b \frac{d^{n-1}}{dx^{n-1}}\bigl(B(x)^n w(x)\bigr)kx^{k-1}\,dx \end{align*} Durch $n$-fache Iteration wird das Integral auf $0$ reduziert. Es bleiben nur die eckigen Klammern stehen, doch wenn man die Produktregel @@ -164,9 +201,32 @@ auswertet, bleibt immer mindestens ein Produkt $B(x)w(x)$ stehen, nach den Voraussetzungen an den Grenzwert dieses Produktes an den Intervallenden verschwinden diese Terme alle. Damit sind die $q_n(x)$ Polynome, die $w$-orthogonal sind auf allen -$x^k$ mit $k<n$, also Vielfache der $w$-Orthgonalpolynome. +$x^k$ mit $k<n$. + +Die Polynome $q_k(x)$ mit $k< n$ haben Grad $<n$ und sind daher +Linearkombinationen von Monomen vom Grad $<n$. +Soeben wurde gezeigt, dass $q_n(x)$ orthogonal auf diesen Monomen +ist, also auch auf $q_k(x)$ mit $k<n$. +Damit ist gezeigt, dass Polynome $q_n(x)$ eine orthogonale Familie +von Polynomen bilden. +Durch Normierung müssen sich daraus die Polynome $p_n(x)$ ergeben. \end{proof} +\subsection{Differentialgleichung} +Man kann auch zeigen (siehe z.~B.~\cite{buch:pearsondgl}, +dass die orthogonalen Polynome, die die +Rodrigues-Formel liefert, einer Differentialgleichung zweiter +Ordnung genügen, deren möglicherweise nicht konstante Koeffizienten +sich direkt aus $A(x)$, $B(x)$ und $w(x)$ bestimmen lassen. + +\subsection{Beispiel} +Im folgenden zeigen wir, wie sich für viele der früher eingeführten +Gewichtsfunktionen Rodrigues-Formeln für die zugehörigen orthogonalen +Polynome konstruieren lassen. + +% +% Legendre-Polynome +% \subsubsection{Legendre-Polynome} Legendre-Polynome sind orthogonale Polynome zum Standardskalarprodukt mit $w(x)=1$. @@ -195,6 +255,9 @@ P_n(x) (x^2-1)^n. \] +% +% Hermite-Polynome +% \subsubsection{Hermite-Polynome} Die Hermite-Polynome sind auf ganz $\mathbb{R}$ definiert und verwenden die Gewichtsfunktion @@ -205,13 +268,13 @@ Für jedes beliebige Polynome $B(x)$, auch für höheren Grad als $2$, ist \[ \lim_{x\to-\infty} B(x) w(x) = -\lim_{x\to-\infty} B(x)^e{-x^2} +\lim_{x\to-\infty} B(x)e^{-x^2} = 0 \qquad\text{und}\qquad \lim_{x\to\infty} B(x) w(x) = -\lim_{x\to\infty} B(x)^e{-x^2} +\lim_{x\to\infty} B(x)e^{-x^2} = 0, \] @@ -222,7 +285,7 @@ Die Ableitung der Gewichtsfunktion ist \[ w'(x) = -2xe^{-x^2}. \] -Eingsetzt in die Pearsonsche Differentialgleichung findet man +Eingesetzt in die Pearsonsche Differentialgleichung findet man \[ \frac{w'(x)}{w(x)} = @@ -238,6 +301,8 @@ B(x) = 1. \] Die Gradbedingung ist also immer erfüllt und es folgt die Rodrigues-Formel für die Hermite-Polynome +\index{Hermite-Polynom}% +\index{Polynome!Hermite}% \begin{equation} H_n(x) = @@ -249,13 +314,15 @@ e^{x^2}\frac{d^n}{dx^n} e^{-x^2}. \label{buch:orthogonal:eqn:hermite-rodrigues} \end{equation} -Die Hermite-Polynome können mit der Rodrigues-Formel berechnen, aber die -Form~\eqref{buch:orthogonal:eqn:hermite-rodrigues} ist dazu nicht gut -geeignet. -Dazu dient die Berechnung +Die Hermite-Polynome können mit der Rodrigues-Formel berechnet werden, +aber die Form~\eqref{buch:orthogonal:eqn:hermite-rodrigues} ist dazu +nicht gut geeignet. +Zur Vereinfachung dient die Berechnung \[ -\frac{d}{dx} +\bigl( e^{-x^2}f(x) +\bigr) = 2xe^{-x^2}f(x) - @@ -270,15 +337,15 @@ vertauscht werden kann, wenn er durch die grosse Klammer auf der rechten Seite ersetzt wird. Die Rodrigues-Formel bekommt daher die Form \[ -H_n(x) = \biggl(\frac{d}{dx}-2x\biggr)^n \cdot 1 +H_n(x) = \biggl(2x-\frac{d}{dx}\biggr)^n \cdot 1. \] -TODO: Relation zu hypergeometrischen Funktionen $\mathstrut_1F_1$ +%TODO: Relation zu hypergeometrischen Funktionen $\mathstrut_1F_1$ %\url{https://en.wikipedia.org/wiki/Rodrigues%27_formula} % -% Jacoib-Gewichtsfunktion +% Jacobi-Gewichtsfunktion % \subsubsection{Jacobi-Gewichtsfunktion} %(%i1) w: (1-x)^a*(1+x)^b; @@ -303,6 +370,8 @@ TODO: Relation zu hypergeometrischen Funktionen $\mathstrut_1F_1$ % x - 1 % Die Jacobi-Gewichtsfunktion +\index{Jacobi-Gewichtsfunktion}% +\index{Gewichtsfunktion!Jacobi}% \[ w(x) = @@ -357,9 +426,14 @@ Die Konstanten $c_n$ werden durch die Normierung % XXX in welchem Abschnitt festgelegt. +% +% Tschebyscheff-Gewichtsfunktion +% \subsubsection{Die Tschebyscheff-Gewichtsfunktion} Die Tschebyscheff-Gewichtsfunktion ist der Spezialfall $a=b=-\frac12$ der Jacobi-Gewichtsfunktion. +\index{Tschebyscheff-Gewichtsfunktion}% +\index{Gewichtsfunktion!Tschebyscheff}% Die Rodrigues-Formel für die Tschebyscheff-Polynome lautet daher \[ T_n(x) @@ -373,8 +447,13 @@ c_n\sqrt{1-x^2} \frac{d^n}{dx^n} \] wobei wir den korrekten Wert von $c_n$ nicht nachgewiesen haben. +% +% Laguerre Gewichtsfunktion +% \subsubsection{Die Laguerre-Gewichtsfunktion} Die Laguerre-Gewichtsfunktion +\index{Laguerre-Gewichtsfunktion}% +\index{Gewichtsfunktion!Laguerre}% \[ w_{\text{Laguerre}}(x) = @@ -387,6 +466,8 @@ hat die Ableitung w'(x) = -e^{-x}, \] die Pearsonsche Differentialgleichung ist daher +\index{Pearsonsche Differentialgleichung}% +\index{Differentialgleichung!Pearsonsche}% \[ \frac{w'(x)}{w(x)}=\frac{-1}{1}. \] @@ -485,6 +566,8 @@ an der Stelle $0$. Wir fassen die Resultate im folgenden Satz zusammen. \begin{satz} +\index{Satz!Laguerre-Polynome}% +\index{Polynome!Laguerre-}% Die Laguerre-Polynome vom Grad $n$ haben die Form \begin{equation} L_n(x) diff --git a/buch/chapters/070-orthogonalitaet/saev.tex b/buch/chapters/070-orthogonalitaet/saev.tex index c667297..599d3a0 100644 --- a/buch/chapters/070-orthogonalitaet/saev.tex +++ b/buch/chapters/070-orthogonalitaet/saev.tex @@ -18,6 +18,7 @@ Der Beweis ist direkt übertragbar, wir halten das Resultat hier für spätere Verwendung fest. \begin{satz} +\index{Satz!orthogonale Eigenvektoren}% Sind $f$ und $g$ Eigenvektoren eines selbstadjungierten Operators $A$ zu verschiedenen Eigenwerten $\lambda$ und $\mu$, dann sind $f$ und $g$ orthogonal. diff --git a/buch/chapters/070-orthogonalitaet/sturm.tex b/buch/chapters/070-orthogonalitaet/sturm.tex index 35054ab..742ec0a 100644 --- a/buch/chapters/070-orthogonalitaet/sturm.tex +++ b/buch/chapters/070-orthogonalitaet/sturm.tex @@ -7,10 +7,14 @@ \label{buch:integrale:subsection:sturm-liouville-problem}} \rhead{Das Sturm-Liouville-Problem} Sowohl bei den Bessel-Funktionen wie bei den Legendre-Polynomen +\index{Bessel-Funktion}% konnte die Orthogonalität der Funktionen dadurch gezeigt werden, dass sie als Eigenfunktionen eines bezüglich eines geeigneten Skalarproduktes selbstadjungierten Operators erkannt wurden. +% +% Differentialgleichungen +% \subsection{Differentialgleichung} Das klassische Sturm-Liouville-Problem ist das folgende Eigenwertproblem. Gesucht sind Lösungen der Differentialgleichung @@ -30,6 +34,9 @@ erfüllen, wobei $|k_i|^2 + |h_i|^2\ne 0$ mit $i=a,b$. Weitere Bedingungen an die Funktionen $p(x)$, $q(x)$, $w(x)$ sowie die Lösungsfunktionen $y(x)$ sollen später geklärt werden. +% +% Das verallgemeinerte Eigenwertproblem für symmetrische Matrizen +% \subsection{Das verallgemeinerte Eigenwertproblem für symmetrische Matrizen} Ein zu \eqref{buch:integrale:eqn:sturm-liouville} analoges Eigenwertproblem für Matrizen ist das folgende verallgemeinerte Eigenwertproblem. @@ -51,6 +58,7 @@ Für symmetrische Matrizen lässt sich dieses Problem auf ein Optimierungsproblem reduzieren. \begin{satz} +\index{Satz!verallgemeinertes Eigenwertproblem}% Seien $A$ und $B$ symmetrische $n\times n$-Matrizen und sei ausserdem $B$ positiv definit. Ist $v$ ein Vektor, der die Grösse @@ -121,6 +129,7 @@ Eigenwert $\lambda$ ist. \end{proof} \begin{satz} +\index{Satz!Orthogonalität verallgemeinerter Eigenvektoren}% Verallgemeinerte Eigenvektoren $u$ und $v$ von $A$ und $B$ zu verschiedenen Eigenwerten erfüllen $u^tBv=0$. \end{satz} @@ -147,6 +156,8 @@ dass $u^tBv=0$ sein muss. Verallgemeinerte Eigenwerte und Eigenvektoren verhalten sich also ganz analog zu den gewöhnlichen Eigenwerten und Eigenvektoren. Da $B$ positiv definit ist, ist $B$ auch invertierbar. +\index{verallgemeinertes Skalarprodukt}% +\index{Skalarprodukt!verallgemeinertes}% Zudem kann $B$ zur Definition des verallgemeinerten Skalarproduktes \[ \langle u,v\rangle_B = u^tBv @@ -175,6 +186,9 @@ ist damit ein gewöhnliches Eigenwertproblem für selbstadjungierte Matrizen des Operators $\tilde{A}$ bezüglich des verallgemeinerten Skalarproduktes $\langle\,\;,\;\rangle_B$. +% +% Der Operator L_0 und die Randbedingung +% \subsection{Der Operator $L_0$ und die Randbedingung} Die Differentialgleichung kann auch in Operatorform geschrieben werden. Dazu schreiben wir @@ -192,6 +206,7 @@ Bezüglich des gewöhnlichen Skalarproduktes für Funktionen auf dem Intervall $[a,b]$ ist der Operator $L_0$ tatsächlich selbstadjungiert. Mit partieller Integration rechnet man nach: +\index{partielle Integration}% \begin{align} \langle f,L_0g\rangle &= @@ -275,6 +290,9 @@ Ausgeschrieben bedeutet dies, dass die Randbedingung \eqref{buch:integrale:sturm:randbedingung} erfüllt sein muss. +% +% Skalarprodukt +% \subsection{Skalarprodukt} Das Ziel der folgenden Abschnitte ist, das Sturm-Liouville-Problem als Eigenwertproblem für einen selbstadjungierten Operator in einem @@ -314,6 +332,9 @@ mit der Gewichtsfunktion $w(x)$ verwendet werden. Damit dies ein vernünftiges Skalarprodukt ist, muss $w(x)>0$ im Innerend es Intervalls sein. +% +% Der Vektorraum H +% \subsection{Der Vektorraum $H$} Damit können wir jetzt die Eigenschaften der in Frage kommenden Funktionen zusammenstellen. @@ -346,17 +367,23 @@ f\in L^2([a,b],w)\;\bigg|\; \biggr\}. \] -\subsection{Differentialoperator} +% +% Der Sturm-Liouville-Differentialoperator +% +\subsection{Der Sturm-Liouville-Differentialoperator} Das verallgemeinerte Eigenwertproblem für $A$ und $B$ ist ein gewöhnliches Eigenwertproblem für die Operator $\tilde{A}=B^{-1}A$ bezüglich des modifizierten Skalarproduktes. Das Sturm-Liouville-Problem ist also ein Eigenwertproblem im Vektorraum $H$ mit dem Skalarprodukt $\langle\,\;,\;\rangle_w$. Der Operator -\[ +\begin{equation} L = \frac{1}{w(x)} \biggl(-\frac{d}{dx} p(x)\frac{d}{dx} + q(x)\biggr) -\] +\label{buch:orthogonal:sturm-liouville:opL1} +\end{equation} heisst der {\em Sturm-Liouville-Operator}. +\index{Sturm-Liouville-Operator}% +\index{Operator!Sturm-Liouville-}% Eine Lösung des Sturm-Liouville-Problems ist eine Funktion $y(x)$ derart, dass \[ @@ -365,13 +392,28 @@ Ly = \lambda y, $\lambda$ ist der zu $y(x)$ gehörige Eigenwert. Der Operator ist definiert auf Funktionen des im vorangegangenen Abschnitt definierten Vektorraumes $H$. +Führt man die Differentiation aus, bekommt der Operator die Form +\begin{equation} +L += +-\frac{p(x)}{w(x)} \frac{d^2}{dx^2} +-\frac{p'(x)}{w(x)} \frac{d}{dx} ++\frac{q(x)}{w(x)}. +\label{buch:orthogonal:sturm-liouville:opL2} +\end{equation} +% +% Beispiele +% \subsection{Beispiele} Die meisten der früher vorgestellten Funktionenfamilien stellen sich als Lösungen eines geeigneten Sturm-Liouville-Problems heraus. Alle Eigenschaften aus der Sturm-Liouville-Theorie gelten daher automatisch für diese Funktionenfamilien. +% +% Trignometrische Funktionen +% \subsubsection{Trigonometrische Funktionen} Die trigonometrischen Funktionen sind Eigenfunktionen des Operators $d^2/dx^2$, also eines Sturm-Liouville-Operators mit $p(x)=1$, $q(x)=0$ @@ -434,6 +476,9 @@ Dann ist wegen die Bedingung~\eqref{buch:integrale:sturm:sabedingung} ebenfalls erfüllt, $L_0$ ist in diesem Raum selbstadjungiert. +% +% Bessel-Funktionen J_n(x) +% \subsubsection{Bessel-Funktionen $J_n(x)$} Der Bessel-Operator \eqref{buch:differentialgleichungen:bessel-operator} kann wie folgt in die Form eines Sturm-Liouville-Operators gebracht @@ -478,6 +523,9 @@ Es folgt damit sofort, dass die Besselfunktionen orthogonale Funktionen bezüglich des Skalarproduktes mit der Gewichtsfunktion $w(x)=1/x$ sind. +% +% Bessel-Funktionen J_n(sx) +% \subsubsection{Bessel-Funktionen $J_n(s x)$} Das Sturm-Liouville-Problem mit den Funktionen \eqref{buch:orthogonal:sturm:bessel:n} @@ -489,7 +537,10 @@ Im Folgenden sollen hingegen die Funktionen $J_n(s x)$ für konstantes $n$, aber verschiedene $s$ untersucht und als orthogonal erkannt werden. -Die Funktion $y(x) = J_n(x)$ ist eine Lösung der Bessel-Differentialgleichung +Die Funktion $y(x) = J_n(x)$ ist eine Lösung der Besselschen +Differentialgleichung +\index{Besselsche Differentialgleichung}% +\index{Differentialgleichung!Besselsche}% \[ x^2y'' + xy' + x^2y = n^2y. \] @@ -576,6 +627,7 @@ des Sturm-Liouville-Problems für den Eigenwert $\lambda = -s^2$. \begin{satz}[Orthogonalität der Bessel-Funktionen] +\index{Satz!Orthogonalität der Bessel-Funktionen}% Die Bessel-Funktionen $J_n(sx)$ für verschiedene $s$ sind orthogonal bezüglich des Skalarproduktes mit der Gewichtsfunktion $w(x)=x$, d.~h. @@ -608,6 +660,9 @@ Damit sind geeignete Randbedingungen für das Sturm-Liouville-Problem gefunden. \end{proof} +% +% Laguerre-Polynome +% \subsubsection{Laguerre-Polynome} Die Laguerre-Polynome sind orthogonal bezüglich des Skalarprodukts mit der Laguerre-Gewichtsfunktion $w(x)=e^{-x}$ und erfüllen die @@ -646,9 +701,15 @@ also die Laguerre-Differentialgleichung. Somit folgt, dass die Laguerre-Polynome orthogonal sind bezüglich des Skalarproduktes mit der Laguerre-Gewichtsfunktion. +% +% Tschebyscheff-Polynome +% \subsubsection{Tschebyscheff-Polynome} Die Tschebyscheff-Polynome sind Lösungen der -Tschebyscheff-Differentialgleichung +bereits in Kapitel~\ref{buch:chapter:potenzen} hergeleiteten +Tschebyscheff-Differentialgleichung~\eqref{buch:potenzen:tschebyscheff:dgl} +\index{Tschebyscheff-Differentialgleichung}% +\index{Differentialgleichung!Tschebyscheff-}% \[ (1-x^2)y'' -xy' = n^2y \] @@ -680,19 +741,100 @@ xy'(x) \lambda y(x). \end{align*} Es folgt, dass die Tschebyscheff-Polynome orthogonal sind +\index{Tschebyscheff-Polynom}% bezüglich des Skalarproduktes \[ \langle f,g\rangle = \int_{-1}^1 f(x)g(x)\frac{dx}{\sqrt{1-x^2}}. \] +% +% Jacobi-Polynome +% \subsubsection{Jacobi-Polynome} -TODO - +Die Jacobi-Polynome sind orthogonal bezüglich des Skalarproduktes +\index{Jacobi-Polynome}% +\index{Polynome!Jacobi-}% +mit der Gewichtsfunktion +\[ +w^{(\alpha,\beta)}(x) = (1-x)^\alpha(1+x)^\beta, +\] +definiert in Definition~\ref{buch:orthogonal:def:jacobi-gewichtsfunktion}. +%Bei der Herleitung der Rodrigues-Formel für die Jacobi-Polynome wurde erkannt, +%dass $B(x)=1-x^2$ und $A(x)=\beta-\alpha-(\alpha+\beta)x$ sein muss. +Man kann zeigen, dass sie Lösungen der +{\em Jacobi-Diffe\-ren\-tial\-gleichung} +\index{Jacobi-Differentialgleichung}% +\index{Differentialgleichung!Jacobi}% +\begin{equation} +(1-x^2)y'' + (\beta-\alpha-(\alpha+\beta + 2)x)y' + n(n+\alpha+\beta+1)y=0 +\label{buch:orthogonal:jacobi:dgl} +\end{equation} +sind. +Es stellt sich die Frage, ob sich Funktionen $p(x)$ und $q(x)$ finden lassen +derart, dass die Differentialgleichung~\eqref{buch:orthogonal:jacobi:dgl} +eine Sturm-Liouville-Gleichung wird. +Gemäss der Form~\eqref{buch:orthogonal:sturm-liouville:opL2} muss +$p(x)$ so gefunden werden, dass +\begin{align*} +\frac{p(x)}{w^{(\alpha,\beta)}(x)} &= 1-x^2 \\ +\frac{p'(x)}{w^{(\alpha,\beta)}(x)} &= \beta-\alpha-(\alpha+\beta+2)x +\end{align*} +gilt. +Der Quotient der beiden Gleichungen ist die logarithmische Ableitung +\[ +(\log p(x))' += +\frac{p'(x)}{p(x)} += +\frac{1-x^2}{\beta-\alpha-(\alpha+\beta+2)x} +\] +von $p(x)$, +die sich in geschlossener Form integrieren lässt. +Man findet als Stammfunktion +\[ +p(x) += +(1-x)^{\alpha+1}(1+x)^{\beta+1}. +\] +Tatsächlich ist +\begin{align*} +\frac{p(x)}{w^{(\alpha,\beta)}(x)} +&= +\frac{(1-x)^{\alpha+1}(1+x)^{\beta+1}}{(1-x)^\alpha(1+x)^\beta} += +(1-x)(1+x)=1-x^2 +\\ +\frac{p'(x)}{w^{(\alpha,\beta)}(x)} +&= +\frac{ +-(\alpha+1) +(1-x)^{\alpha}(1+x)^{\beta+1} ++ +(\beta+1) +(1-x)^{\alpha+1}(1+x)^{\beta} +}{ +(1-x)^{\alpha}(1+x)^{\beta} +} +\\ +&= +-(\alpha+1)(1+x) + (\beta+1)(1-x) += +\beta-\alpha-(\alpha+\beta+2)x. +\end{align*} +Damit ist +die Jacobische Differentialgleichung +als Sturm-Liouville-Differentialgleichung erkannt. +% +% Hypergeometrische Differentialgleichungen +% \subsubsection{Hypergeometrische Differentialgleichungen} %\url{https://encyclopediaofmath.org/wiki/Hypergeometric_equation} Auch die Eulersche hypergeometrische Differentialgleichung +\index{Eulersche hypergeometrische Differentialgleichung}% +\index{Differentialgleichung!Eulersche hypergeometrische}% lässt sich in die Form eines Sturm-Liouville-Operators +\index{Eulersche hypergeometrische Differentialgleichung!als Sturm-Liouville-Gleichung}% bringen. Dazu setzt man \begin{align*} diff --git a/buch/chapters/080-funktionentheorie/analytisch.tex b/buch/chapters/080-funktionentheorie/analytisch.tex index 15ca2e4..08196f1 100644 --- a/buch/chapters/080-funktionentheorie/analytisch.tex +++ b/buch/chapters/080-funktionentheorie/analytisch.tex @@ -9,6 +9,9 @@ Holomorphe Funktionen zeichnen sich dadurch aus, dass sie auch immer eine konvergente Reihenentwicklung haben, sie sind also analytisch. +% +% Definition +% \subsection{Definition} \index{Taylor-Reihe}% \index{Exponentialfunktion}% @@ -90,29 +93,29 @@ Damit ist gezeigt, dass alle Ableitungen $f^{(n)}(0)=0$ sind. Die Taylorreihe von $f(x)$ ist daher die Nullfunktion. \end{beispiel} -Die Klasse der Funktionen, die sich durch ihre Taylor-Reihe darstellen -lassen, zeichnet sich also durch besondere Eigenschaften aus, die in -der folgenden Definition zusammengefasst werden. - -\index{analytisch in einem Punkt}% -\index{analytisch}% -\begin{definition} -Eine auf einem offenen Intervall $I\subset \mathbb {R}$ definierte Funktion -$f\colon U\to\mathbb{R}$ heisst {\em analytisch im Punkt $x_0\in I$}, wenn -es eine in einer Umgebung von $x_0$ konvergente Potenzreihe -\[ -\sum_{k=0}^\infty a_k(x-x_0)^k = f(x) -\] -gibt. -Sie heisst {\em analytisch}, wenn sie analytisch ist in jedem Punkt von $I$. -\end{definition} +%Die Klasse der Funktionen, die sich durch ihre Taylor-Reihe darstellen +%lassen, zeichnet sich also durch besondere Eigenschaften aus, die in +%der folgenden Definition zusammengefasst werden. +% +%\index{analytisch in einem Punkt}% +%\index{analytisch}% +%\begin{definition} +%Eine auf einem offenen Intervall $I\subset \mathbb {R}$ definierte Funktion +%$f\colon U\to\mathbb{R}$ heisst {\em analytisch im Punkt $x_0\in I$}, wenn +%es eine in einer Umgebung von $x_0$ konvergente Potenzreihe +%\[ +%\sum_{k=0}^\infty a_k(x-x_0)^k = f(x) +%\] +%gibt. +%Sie heisst {\em analytisch}, wenn sie analytisch ist in jedem Punkt von $I$. +%\end{definition} -Es ist wohlbekannt aus der elementaren Theorie der Potenzreihen, dass +Es ist bekannt aus der elementaren Theorie der Potenzreihen +in Kapitel~\ref{buch:potenzen:section:potenzreihen}, dass eine analytische Funktion beliebig oft differenzierbar ist und dass die Potenzreihe im Punkt $x_0$ die Taylor-Reihe sein muss. -Ausserdem sidn Summen, Differenzen und Produkte von analytischen Funktionen +Ausserdem sind Summen, Differenzen und Produkte von analytischen Funktionen wieder analytisch. - Für eine komplexe Funktion lässt sich der Begriff der analytischen Funktion genau gleich definieren. @@ -131,8 +134,8 @@ Die Verwendung einer offenen Teilmenge $U\subset\mathbb{C}$ ist wesentlich, denn die Funktion $f\colon z\mapsto \overline{z}$ kann in jedem Punkt $x_0\in\mathbb{R}$ der reellen Achse $\mathbb{R}\subset\mathbb{C}$ durch die Potenzreihe -$f(x) = x_0 + (x-x_0)$ dargestellt werden. -Es gibt aber keine Potenzreihe, die $f(z)$ in einer offenen Teilmenge +$f(x) = x_0 + (x-x_0)$ dargestellt werden, +es gibt aber keine Potenzreihe, die $f(z)$ in einer offenen Teilmenge von $\mathbb{C}$ gegen $f(z)=\overline{z}$ konvergiert. % @@ -140,7 +143,40 @@ von $\mathbb{C}$ gegen $f(z)=\overline{z}$ konvergiert. % \subsection{Konvergenzradius \label{buch:funktionentheorie:subsection:konvergenzradius}} +In der Theorie der Potenzreihen, wie sie in Kapitel~\ref{buch:chapter:potenzen} +zusammengefasst wurde, wird auch untersucht, wie gross +eine Umgebung des Punktes $z_0$ ist, in der die Potenzreihe +im Punkt $z_0$ einer analytischen Funktion konvergiert. +Die Definition des Konvergenzradius gilt auch für komplexe Funktionen. -% XXX auf dem Rand des Konvergenzkreises gibt es immer eine Singularität +\begin{satz} +\index{Satz!Konvergenzradius}% +\label{buch:funktionentheorie:satz:konvergenzradius} +Die Potenzreihe +\[ +f(z) = \sum_{k=0}^\infty a_0(z-z_0)^k +\] +ist konvergent auf einem Kreis um $z_0$ mit Radius $\varrho$ und +\[ +\frac{1}{\varrho} += +\limsup_{n\to\infty} \sqrt[k]{|a_k|}. +\] +Falls $a_k\ne 0$ für alle $k$ und der folgende Grenzwert existiert, +dann gilt auch +\[ +\varrho = \lim_{n\to\infty} \biggl| \frac{a_n}{a_{n+1}}\biggr|. +\] +\end{satz} + +\begin{definition} +\label{buch:funktionentheorie:definition:konvergenzradius} +\index{Konvergenzradius}% +Der in Satz~\ref{buch:funktionentheorie:satz:konvergenzradius} +Radius $\varrho$ des Konvergenzkreises heisst {\em Konvergenzradius}. +\end{definition} +Man kann auch zeigen, dass der Konvergenzkreis immer so gross ist, +dass auf seinem Rand ein Wert $z$ liegt, für den die Potenzreihe nicht +konvergiert. diff --git a/buch/chapters/080-funktionentheorie/anwendungen.tex b/buch/chapters/080-funktionentheorie/anwendungen.tex index 4cdf9be..440d2d3 100644 --- a/buch/chapters/080-funktionentheorie/anwendungen.tex +++ b/buch/chapters/080-funktionentheorie/anwendungen.tex @@ -5,6 +5,10 @@ % \section{Anwendungen \label{buch:funktionentheorie:section:anwendungen}} +\rhead{Anwendungen} +In diesem Abschnitt wird die Theorie der komplex differenzierbaren +Funktionen dazu verwendet, einige früher bereits verwendete oder +angedeutete Resultate herzuleiten. \input{chapters/080-funktionentheorie/gammareflektion.tex} \input{chapters/080-funktionentheorie/carlson.tex} diff --git a/buch/chapters/080-funktionentheorie/carlson.tex b/buch/chapters/080-funktionentheorie/carlson.tex index 1923351..41fb5e8 100644 --- a/buch/chapters/080-funktionentheorie/carlson.tex +++ b/buch/chapters/080-funktionentheorie/carlson.tex @@ -24,6 +24,8 @@ beschränkt ist und an den Stellen $z=1,2,3,\dots$ verschwindet. Dann ist $f(z)=0$. \end{satz} +\index{Satz!von Carlson}% +\index{Carlson, Satz von}% \begin{figure} \centering \includegraphics{chapters/080-funktionentheorie/images/carlsonpath.pdf} diff --git a/buch/chapters/080-funktionentheorie/cauchy.tex b/buch/chapters/080-funktionentheorie/cauchy.tex index 21d8dcf..bd07a2f 100644 --- a/buch/chapters/080-funktionentheorie/cauchy.tex +++ b/buch/chapters/080-funktionentheorie/cauchy.tex @@ -6,6 +6,16 @@ \section{Cauchy-Integral \label{buch:funktionentheorie:section:cauchy}} \rhead{Cauchy-Integral} +In Abschnitt~\ref{buch:funktionentheorie:section:holomorph} hat sich +bereits gezeigt, dass komplexe Differenzierbarkeit einer komplexen +Funktion weit mehr Einschränkungen auferlegt als reelle Differenzierbarkeit. +Sowohl der Real- wie auch der Imaginärteil müssenharmonische Funktionen +sein. +In diesem Abschnitt wird die Cauchy-In\-te\-gral\-formel etabliert, die +sogar zeigt, dass eine komplex differenzierbare Funktion bereits durch +die Werte auf dem Rand eines einfach zusammenhängenden Gebietes +gegeben ist, beliebig oft differenzierbar ist und ausserdem immer +analytisch ist. % % Wegintegrale und die Cauchy-Formel @@ -125,6 +135,7 @@ Wie Wahl der Parametrisierung der Kurve hat keinen Einfluss auf den Wert des Wegintegrals. \begin{satz} +\index{Satz!Kurvenparametrisierung}% Seien $\gamma_1(t), t\in[a,b],$ und $\gamma_2(s),s\in[c,d]$ verschiedene Parametrisierungen \index{Parametrisierung}% diff --git a/buch/chapters/080-funktionentheorie/chapter.tex b/buch/chapters/080-funktionentheorie/chapter.tex index b7b5325..aa1041a 100644 --- a/buch/chapters/080-funktionentheorie/chapter.tex +++ b/buch/chapters/080-funktionentheorie/chapter.tex @@ -37,11 +37,6 @@ auf der rellen Achse hinaus fortsetzen. \input{chapters/080-funktionentheorie/fortsetzung.tex} \input{chapters/080-funktionentheorie/anwendungen.tex} -\section{TODO} -\begin{itemize} -\item Aurgument-Prinzip -\end{itemize} - \section*{Übungsaufgaben} \rhead{Übungsaufgaben} \aufgabetoplevel{chapters/080-funktionentheorie/uebungsaufgaben} diff --git a/buch/chapters/080-funktionentheorie/gammareflektion.tex b/buch/chapters/080-funktionentheorie/gammareflektion.tex index 537fd96..4a8f41f 100644 --- a/buch/chapters/080-funktionentheorie/gammareflektion.tex +++ b/buch/chapters/080-funktionentheorie/gammareflektion.tex @@ -12,12 +12,15 @@ die durch Spiegelung an der Geraden $\operatorname{Re}x=\frac12$ auseinander hervorgehen, und einem speziellen Beta-Integral her. \begin{satz} +\index{Satz!Spiegelungsformel für $\Gamma(x)$}% +\label{buch:funktionentheorie:satz:spiegelungsformel} Für $0<x<1$ gilt \begin{equation} \Gamma(x)\Gamma(1-x) = \frac{\pi}{\sin\pi x}. \end{equation} +\index{Gamma-Funktion!Spiegelungsformel}% \end{satz} \begin{figure} diff --git a/buch/chapters/080-funktionentheorie/holomorph.tex b/buch/chapters/080-funktionentheorie/holomorph.tex index c87b083..b2bacae 100644 --- a/buch/chapters/080-funktionentheorie/holomorph.tex +++ b/buch/chapters/080-funktionentheorie/holomorph.tex @@ -83,6 +83,7 @@ Der Term $x-x_0$ und die Gleichung \eqref{komplex:abldef} sind aber auch für komplexe Argument sinnvoll, wir definieren daher \begin{definition} +\label{buch:funktionentheorie:definition:differenzierbar} Die komplexe Funktion $f(z)$ heisst im Punkt $z_0$ komplex differenzierbar und hat die komplexe Ableitung $f'(z_0)\in\mathbb C$, wenn \index{komplex differenzierbar}% @@ -107,10 +108,10 @@ Differenzenquotienten finden: &= \frac{z^n-z_0^n}{z-z_0} = -\frac{(z-z_0)(z^{n-1}+z^{n-2}z_0+z^{n-3}z_0^2+\dots+z^{n-1})}{z-z_0} +\frac{(z-z_0)(z^{n-1}+z^{n-2}z_0+z^{n-3}z_0^2+\dots+z_0^{n-1})}{z-z_0} \\ &= -\underbrace{z^{n-1}+z^{n-2}z_0+z^{n-3}z_0^2+\dots+z^{n-1} +\underbrace{z^{n-1}+z^{n-2}z_0+z^{n-3}z_0^2+\dots+z_0^{n-1} }_{\displaystyle \text{$n$ Summanden}}. \end{align*} Lassen wir jetzt $z$ gegen $z_0$ gehen, wird die rechte Seite @@ -191,6 +192,7 @@ Dies ist nur möglich, wenn Real- und Imaginärteile übereinstimmen. Es folgt also \begin{satz} +\index{Satz!Cauchy-Riemann Differentialgleichungen}% \label{komplex:satz:cauchy-riemann} Real- und Imaginärteil $u(x,y)$ und $v(x,y)$ einer komplex differenzierbaren Funktion $f(z)$ mit $f(x+iy)=u(x,y)+iv(x,y)$ @@ -258,11 +260,12 @@ Der Operator \frac{\partial^2}{\partial y^2} \] heisst der {\em Laplace-Operator} in zwei Dimensionen. - \index{Laplace-Operator}% +\index{Operator!Laplace-}% \end{definition} \begin{definition} +\label{buch:funktionentheorie:definition:harmonisch} Eine Funktion $h(x,y)$ von zwei Variablen heisst {\em harmonisch}, wenn sie die Gleichung \[ diff --git a/buch/chapters/080-funktionentheorie/singularitaeten.tex b/buch/chapters/080-funktionentheorie/singularitaeten.tex index 71d1844..2a5c62c 100644 --- a/buch/chapters/080-funktionentheorie/singularitaeten.tex +++ b/buch/chapters/080-funktionentheorie/singularitaeten.tex @@ -5,6 +5,9 @@ % \newcommand*\sk{\vcenter{\hbox{\includegraphics[scale=0.8]{chapters/080-funktionentheorie/images/operator-1.pdf}}}} +% +% Löesung linearer Differentialgleichunge mit Singularitäten +% \subsection{Lösungen von linearen Differentialgleichungen mit Singularitäten \label{buch:funktionentheorie:subsection:dglsing}} Die Potenzreihenmethode hat ermöglicht, mindestens eine Lösung gewisser @@ -19,6 +22,9 @@ Ziel dieses Abschnitts ist zu zeigen, warum dies nicht möglich war und wie diese Schwierigkeit mit Hilfe der analytischen Fortsetzung überwunden werden kann. +% +% Differentialgleichungen mit Singularitäten +% \subsubsection{Differentialgleichungen mit Singularitäten} Mit der Besselschen Differentialgleichung~\eqref{buch:differentialgleichungen:eqn:bessel} @@ -76,6 +82,8 @@ in einer Umgebung von $x=0$ wieder nicht. Die Besselsche Differentialgleichung hat auch nicht die Form $y''+p(x)xy'+q(x)=0$, die der Theorie der Indexgleichung zugrunde lag. +\index{Besselsche Differentialgleichung}% +\index{Differentialgleichung!Besselsche}% Daher kann es auch keine Garantie geben, dass die Methode der verallgemeinerten Potenzreihen zwei linear unabhängige Lösungen liefern kann. @@ -93,11 +101,15 @@ Klasse von Singularitäten beschreiben, aber es ist nicht klar, welche weiteren Arten von Singularitäten berücksichtigt werden sollten. Dies soll im Folgenden geklärt werden. +% +% Der Lösungsraum einer Differentialgleichung zweiter Ordnung +% \subsubsection{Der Lösungsraum einer Differentialgleichung zweiter Ordnung} Eine Differentialgleichung $n$-ter Ordnung hat lokal einen $n$-dimensionalen Vektorraum als Lösungsraum. \begin{definition} +\label{buch:funktionentheorie:singularitaeten:def:loesungsraum} Sei \begin{equation} \sum_{k=0}^n a_k(x) y^{(n)}(x) = 0 @@ -124,8 +136,13 @@ der Lösungsraum der Differentialgleichung \eqref{buch:funktionentheorie:singularitaeten:eqn:defdgl}. Wenn der Punkt $x_0$ aus dem Kontext klar ist, kann er auch weggelassen werden: $\mathbb{L}_{x_0}=\mathbb{L}$. +\index{Lösungsraum einer Differentialgleichung}% +\index{Differentialgleichung!Lösungsraum}% \end{definition} +% +% Analytische Fortsetzung auf dem Weg um 0 +% \subsubsection{Analytische Fortsetzung auf einem Weg um $0$} Die betrachteten Differentialgleichungen haben holomorphe Koeffizienten, Lösungen der Differentialgleichung lassen sich @@ -159,11 +176,15 @@ Das Studium dieser analytischen Fortsetzung dürfte daher zusätzliche Informationen über die Lösung hervorbringen. \begin{definition} +\label{buch:funktionentheorie:def:fortsetzungsoperator} +\index{Fortsetzungsoperator}% Der {\em Fortsetzungsoperator} $\sk$ ist der lineare Operator, der eine in einem Punkt $x\in\mathbb{R}^+$ analytische Funktion $f(x)$ entlang eines geschlossenen Weges fortsetzt, der $0$ im Gegenuhrzeigersinn umläuft. Die Einschränkung der analytischen Fortsetzung auf $\mathbb{R}^+$ wird mit $\sk f(x)$ bezeichnet. +\index{analytische Fortsetzung}% +\index{Fortsetzung, analytisch}% \end{definition} Die obengenannten Beispiele lassen sich mit dem Operator $\sk$ als @@ -186,6 +207,9 @@ e^{2\pi i\varrho} z^\varrho \] schreiben. +% +% Rechenregeln für die analytische Fortsetzung +% \subsubsection{Rechenregeln für die analytische Fortsetzung} Der Operator $\sk$ ist ein Algebrahomomorphismus, d.~h.~für zwei analytische Funktionen $f$ und $g$ gilt @@ -215,7 +239,9 @@ vertauscht, dass also \sk(f^{(n)}). \] - +% +% Analytische Fortsetzung von Lösungen einer Differentialgleichung +% \subsubsection{Analytische Fortsetzung von Lösungen einer Differentialgleichung} Wir untersuchen jetzt die Wirkung des Operators $\sk$ auf den Lösungsraum $\mathbb{L}$ einer Differentialgleichung mit @@ -258,7 +284,9 @@ geeigneten Basis in besonders einfache Form gebracht. Wir führen diese Diskussion im folgenden nur für eine Differentialgleichung zweiter Ordnung $n=2$. - +% +% Fall A diagonalisierbar +% \subsubsection{Fall $A$ diagonalisierbar: verallgemeinerte Potenzreihen} In diesem Fall kann man die Lösungsfunktionen $w_1$ und $w_2$ so wählen, dass die Matrix @@ -326,6 +354,9 @@ Falls der Operator $\sk$ also diagonalisierbar ist, dann gibt es zwei linear unabhängige Lösungen der Differentialgleichung in der Form einer verallgemeinerten Potenzreihe. +% +% Fall $A$ nicht diagonalisierbar +% \subsubsection{Fall $A$ nicht diagonalisierbar: logarithmische Lösungen} Falls die Matrix $A$ nicht diagonalisierbar ist, hat sie nur einen Eigenwert $\lambda$ und kann durch geeignete Wahl einer Basis in @@ -421,7 +452,158 @@ in die ursprüngliche Differentialgleichung ein, verschwindet der $\log(z)$-Term und für die verbleibenden Koeffizienten kann die bekannte Methode des Koeffizientenvergleichs verwendet werden. -\subsubsection{Bessel-Funktionen zweiter Art} +% +% Bessel-Funktionen zweiter Art +% +\subsubsection{Bessel-Funktionen zweiter Art +\label{buch:funktionentheorie:subsubsection:bessel2art}} +Im Abschnitt~\ref{buch:differentialgleichungen:subsection:bessel1steart} +waren wir nicht in der Lage, für ganzahlige $\alpha$ zwei linear unabhängige +Lösungen der Besselschen Differentialgleichung zu finden. +Die vorangegangenen Ausführungen erklären dies: der Ansatz als +verallgemeinerte Potenzreihe konnte die Singularität nicht wiedergeben. +Inzwischen wissen wir, dass wir nach einer Lösung mit einer logarithmischen +Singularität suchen müssen. +Um dies nachzuprüfen, setzen wir den Ansatz +\[ +y(x) = \log(x) J_n(x) + z(x) +\] +in die Besselsche Differentialgleichung ein. +Dazu benötigen wir erst die Ableitungen von $y(x)$: +\begin{align*} +y'(x) +&= +\frac{1}{x} J_n(x) + \log(x)J_n'(x) + z'(x) +\\ +xy'(x) +&= +J_n(x) + x\log(x)J_n'(x) + xz'(x) +\\ +y''(x) +&= +-\frac{1}{x^2} J_n(x) ++\frac2x J_n'(x) ++\log(x) J_n''(x) ++z''(x) +\\ +x^2y''(x) +&= +-J_n(x) + 2xJ'_n(x)+x^2\log(x)J_n''(x) + x^2z''(x). +\end{align*} +Die Wirkung des Bessel-Operators auf $y(x)$ ist +\begin{align*} +By +&= +x^2y''+xy'+x^2y +\\ +&= +\log(x) \bigl( +\underbrace{ +x^2J_n''(x) ++xJ_n'(x) ++x^2J_n(x) +}_{\displaystyle = n^2J_n(x)} +\bigr) +-J_n(x)+2xJ_n'(x) ++J_n(x) ++ +xz'(x) ++ +x^2z''(x) +\\ +&= +n^2 \log(x)J_n(x) ++ +2xJ_n(x) ++ +x^2z(x) ++ +xz'(x) ++ +x^2z''(x) +\end{align*} +Damit $y(x)$ eine Eigenfunktion zum Eigenwert $n^2$ wird, muss +dies mit $n^2y(x)$ übereinstimmen, also +\begin{align*} +n^2 \log(x)J_n(x) ++ +2xJ_n(x) ++ +x^2z(x) ++ +xz'(x) ++ +x^2z''(x) +&= +n^2\log(x)J_n(x) + n^2z(x). +\intertext{Die logarithmischen Terme heben sich weg und es bleibt} +x^2z''(x) ++ +xz'(x) ++ +(x^2-n^2)z(x) +&= +-2xJ_n(x). +\end{align*} +Eine Lösung für $z(x)$ kann mit Hilfe eines Potenzreihenansatzes +gefunden werden. +Sie ist aber nur bis auf einen Faktor festgelegt. +Tatsächlich kann man aber auch eine direkte Definition geben. + +\begin{definition} +Die Bessel-Funktionen zweiter Art der Ordnung $\alpha$ sind die Funktionen +\begin{equation} +Y_\alpha(x) += +\frac{J_\alpha(x) \cos \alpha\pi - J_{-\alpha}(x)}{\sin \alpha\pi }. +\label{buch:funktionentheorie:bessel:2teart} +\end{equation} +Für ganzzahliges $\alpha$ verschwindet der Nenner in +\eqref{buch:funktionentheorie:bessel:2teart}, +daher ist +\[ +Y_n(x) += +\lim_{\alpha\to n} Y_{\alpha}(x) += +\frac{1}{\pi}\biggl( +\frac{d}{d\alpha}J_{\alpha}(x)\bigg|_{\alpha=n} ++ +(-1)^n +\frac{d}{d\alpha}J_{\alpha}(x)\bigg|_{\alpha=-n} +\biggr). +\] +\end{definition} +Die Funktionen $Y_\alpha(x)$ sind Linearkombinationen der Lösungen +$J_\alpha(x)$ und $J_{-\alpha}(x)$ und damit automatisch auch Lösungen +der Besselschen Differentialgleichung. +Dies gilt auch für den Grenzwert im Falle ganzahliger Ordnung $\alpha$. +Da $J_{\alpha}(x)$ durch eine Reihenentwicklung definiert ist, kann man +diese Termweise nach $\alpha$ ableiten und damit auch eine +Reihendarstellung von $Y_n(x)$ finden. +Nach einiger Rechnung findet man: +\begin{align*} +Y_n(x) +&= +\frac{2}{\pi}J_n(x)\log\frac{x}2 +- +\frac1{\pi} +\sum_{k=0}^{n-1} \frac{(n-k-1)!}{k!}\biggl(\frac{x}2\biggr)^{2k-n} +\\ +&\qquad\qquad +- +\frac1{\pi} +\sum_{k=0}^\infty \frac{(-1)^k}{k!\,(n+k)!} +\biggl( +\frac{\Gamma'(n+k+1)}{\Gamma(n+k+1)} ++ +\frac{\Gamma'(k+1)}{\Gamma(k+1)} +\biggr) +\biggl( +\frac{x}2 +\biggr)^{2k+n} +\end{align*} +(siehe auch \cite[p.~200]{buch:specialfunctions}). diff --git a/buch/chapters/090-pde/gleichung.tex b/buch/chapters/090-pde/gleichung.tex index 583895d..271dc44 100644 --- a/buch/chapters/090-pde/gleichung.tex +++ b/buch/chapters/090-pde/gleichung.tex @@ -6,10 +6,26 @@ \section{Gleichungen und Randbedingungen \label{buch:pde:section:gleichungen-und-randbedingungen}} \rhead{Gebiete, Gleichungen und Randbedingungen} +Gewöhnliche Differentialgleichungen sind immer auf einem +Intervall als Definitionsgebiet definiert. +Partielle Differentialgleichungen sind Gleichungen, die verschiedene +partielle Ableitungen einer Funktion mehrerer Variablen involvieren, +das Definitionsgebiet ist daher immer eine höherdimensionale Teilmenge +von $\mathbb{R}^n$. +Sowohl das Gebiet wie auch dessen Rand können wesentlich komplexer sein. +Eine sorgfältige Definition ist unabdingbar, um Widersprüchen vorzubeugen. +% +% Gebiete, Differentialoperatoren, Randbedingungen +% \subsection{Gebiete, Differentialoperatoren, Randbedingungen} +In diesem Abschnitt sollen die Begriffe geklärt werden, die zur +korrekten Formulierung eines partiellen Differentialgleichungsproblems +notwendig sind. - +% +% Gebiete +% \subsubsection{Gebiete} Gewöhnliche Differentialgleichungen haben nur eine unabhängige Variable, die gesuchte Lösungsfunktion ist auf eine @@ -20,6 +36,7 @@ ermöglicht wesentlich vielfältigere und kompliziertere Situationen. \begin{definition} +\label{buch:pde:definition:gebiet} Ein Gebiet $G\subset\mathbb{R}^n$ ist eine offene Teilmenge von $\mathbb{R}^n$, d.~h.~für jeden Punkt $x\in G$ gibt es eine kleine Umgebung @@ -29,8 +46,12 @@ U_{\varepsilon}(x) \{y\in\mathbb{R}^n\mid |x-y|<\varepsilon\} \), die ebenfalls in $G$ in enthalten ist, also $U_{\varepsilon}(x)\subset G$. +\index{Gebiet}% \end{definition} +% +% Differentialoperatoren +% \subsubsection{Differentialoperatoren} Eine gewöhnliche Differentialgleichung für eine Funktion ist eine Beziehung zwischen den Werten der Funktion und ihrer @@ -66,9 +87,13 @@ schreiben. Die Koeffizienten $a$, $b_i$, $c_{ij}$ können dabei durchaus auch Funktionen der unabhängigen Variablen sein. +% +% Laplace-Operator +% \subsubsection{Laplace-Operator} -Der Laplace-Operator hat in einem karteischen Koordinatensystem die +Der {\em Laplace-Operator} hat in einem karteischen Koordinatensystem die Form +\index{Laplace-Operator}% \[ \Delta = @@ -86,28 +111,109 @@ nicht ändert. Man könnte sagen, der Laplace-Operator ist symmetrisch bezüglich aller Bewegungen des Raumes. +% +% Wellengleichung +% \subsubsection{Wellengleichung} +Da die physikalischen Gesetze invariant sein müssen unter solchen +Bewegungen, ist zu erwarten, dass der Laplace-Operator in partiellen +Differentialgleichungen +Als Beispiel betrachten wir die Ausbreitung einer Welle, welche sich +in einem Medium mit der Geschwindigkeit $c$ ausbreitet. +Ist $u(x,t)$ die Auslenkung der Welle im Punkt $x\in\mathbb{R}^n$ +zur Zeit $t\in\mathbb{R}$, dann erfüllt die Funktion $u(x,t)$ +die partielle Differentialgleichung +\begin{equation} +\frac{1}{c^2} +\frac{\partial^2 u}{\partial t^2} += +\Delta u. +\label{buch:pde:eqn:waveequation} +\end{equation} +In dieser Gleichung treten nicht nur die partiellen Ableitungen +nach den Ortskoordinaten auf, die der Laplace-Operator miteinander +verknüpft. +Die Funktion $u(x,t)$ ist definiert auf einem Gebiet in +$\mathbb{R}^{n}\times\mathbb{R}=\mathbb{R}^{n+1}$ mit den Koordinaten +$(x_1,\dots,x_n,t)$. +Der Gleichung~\eqref{buch:pde:eqn:waveequation} ist daher eigentlich +die Gleichung +\[ +\square u = 0 +\qquad\text{mit}\quad +\square += +\frac{1}{c^2}\frac{^2}{\partial t^2} +- +\Delta += +\frac{1}{c^2}\frac{\partial^2}{\partial t^2} +- +\frac{\partial^2}{\partial x_1^2} +- +\frac{\partial^2}{\partial x_2^2} +-\dots- +\frac{\partial^2}{\partial x_n^2} +\] +wird. +Der Operator $\square$ heisst auch d'Alembert-Operator. +\index{dAlembertoperator@d'Alembert-Operator}% -\subsubsection{Eigenfunktionen} -Eine besonders einfache - -\subsubsection{Trigonometrische Funktionen} -Die trigonometrischen Funktionen - -\subsection{Orthogonalität} -In der linearen Algebra lernt man, dass die Eigenvektoren einer -symmetrischen Matrix zu verschiedenen Eigenwerten orthgonal sind. -Dies hat zur Folge, dass die Transformation in eine Eigenbasis -mit einer orthogonalen Matrix möglich ist, was wiederum die Basis -von Diagonalisierungsverfahren wie dem Jacobi-Verfahren ist. - -Das Separationsverfahren wird zeigen, wie sich das Finden einer -Lösung der Wellengleichung auf Lösungen des Eigenwertproblems -$\Delta u = \lambda u$ zurückführen lässt. -Damit stellt sich die Frage, welche Eigenschaften - +% +% Randbedingungen +% +\subsubsection{Randbedingungen} +Die Differentialgleichung oder der Differentialoperator legen die +Lösung nicht fest. +Wie bei gewöhnlichen Differentialgleichungen ist dazu die Spezifikation +geeigneter Randbedingungen nötig. -\subsubsection{Gewöhnliche Differentialglichung} +\begin{definition} +\label{buch:pde:definition:randbedingungen} +Eine {\em Randbedingung} für das Gebiet $\Omega$ ist eine Teilmenge +$F\subset\partial\Omega$ sowie eine auf $F$ definierte Funktion +$f\colon F\to\mathbb{R}$. +Eine Funktion $u\colon \overline{\Omega} \to\mathbb{R}$ erfüllt eine +{\em Dirichlet-Randbedingung}, wenn +\index{Dirichlet-Randbedingung}% +\index{Randbedingung!Dirichlet-}% +\( +u(x) = f(x) +\) +für $x\in F$. +Sie erfüllt eine {\em Neumann-Randbedingung}, wenn +\index{Neumann-Randbedingung}% +\index{Randbedingung!Neumann-}% +\[ +\frac{\partial u}{\partial n} += +f(x)\qquad\text{für $x\in F$}. +\] +Dabei ist +\[ +\frac{\partial u}{\partial n} += +\frac{d}{dt} +u(x+tn) +\bigg|_{t=0} += +\operatorname{grad}u\cdot n +\] +\index{Normalableitung}% +die {\em Normalableitung}, die Richtungsableitung in Richtung des +Vektors $n$, der senkrecht ist auf dem Rand $\partial\Omega$ von +$\Omega$. +\end{definition} +Die Vorgabe nur von Ableitungen kann natürlich die Lösung $u(x)$ +einer linearen partiellen Differentialgleichung nicht eindeutig +festlegen, dazu ist noch mindestens ein Funktionswert notwendig. +Die Vorgabe von anderen Ableitungen in Richtungen tangential an den +Rand liefert keine neue Information, denn ausgehend von dem einen +Funktionswert auf dem Rand kann man durch Integration entlang +einer Kurve auf dem Rand eine Neumann-Randbedingung konstruieren, +die die gleiche Information beinhaltet wie Anforderungen an die +tangentialen Ableitungen. +Dirichlet- und Neumann-Randbedingungen sind daher die einzigen +sinnvollen linearen Randbedingungen. -\subsubsection{$n$-dimensionaler Fall} diff --git a/buch/chapters/110-elliptisch/Makefile.inc b/buch/chapters/110-elliptisch/Makefile.inc index 639cb8f..4e2644c 100644 --- a/buch/chapters/110-elliptisch/Makefile.inc +++ b/buch/chapters/110-elliptisch/Makefile.inc @@ -12,4 +12,8 @@ CHAPTERFILES += \ chapters/110-elliptisch/mathpendel.tex \ chapters/110-elliptisch/lemniskate.tex \ chapters/110-elliptisch/uebungsaufgaben/1.tex \ + chapters/110-elliptisch/uebungsaufgaben/2.tex \ + chapters/110-elliptisch/uebungsaufgaben/3.tex \ + chapters/110-elliptisch/uebungsaufgaben/4.tex \ + chapters/110-elliptisch/uebungsaufgaben/5.tex \ chapters/110-elliptisch/chapter.tex diff --git a/buch/chapters/110-elliptisch/agm/Makefile b/buch/chapters/110-elliptisch/agm/Makefile new file mode 100644 index 0000000..8dab511 --- /dev/null +++ b/buch/chapters/110-elliptisch/agm/Makefile @@ -0,0 +1,15 @@ +# +# Makefile +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +all: sn + +sn: sn.cpp + g++ -O -Wall -g -std=c++11 sn.cpp -o sn `pkg-config --cflags gsl` `pkg-config --libs gsl` + + +agm: agm.cpp + g++ -O -Wall -g -std=c++11 agm.cpp -o agm `pkg-config --cflags gsl` `pkg-config --libs gsl` + ./agm + diff --git a/buch/chapters/110-elliptisch/agm/agm.cpp b/buch/chapters/110-elliptisch/agm/agm.cpp new file mode 100644 index 0000000..8abb4b2 --- /dev/null +++ b/buch/chapters/110-elliptisch/agm/agm.cpp @@ -0,0 +1,75 @@ +/* + * agm.cpp + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ +#include <cstdlib> +#include <cstdio> +#include <cmath> +#include <iostream> +#include <gsl/gsl_sf_ellint.h> + +inline long double sqrl(long double x) { + return x * x; +} + +long double Xn(long double a, long double b, long double x) { + double long epsilon = fabsl(a - b); + if (epsilon > 0.001) { + return (a - sqrtl(sqrl(a) - sqrl(x) * (a + b) * (a - b))) + / (x * (a - b)); + } + long double d = a + b; + long double x1 = 0; + long double y2 = sqrl(x/a); + long double c = 1; + long double s = 0; + int k = 1; + while (c > 0.0000000000001) { + c *= (0.5 - (k - 1)) / k; + c *= (d - epsilon) * y2; + s += c; + c *= epsilon; + c = -c; + k++; + } + return s * a / x; +} + +int main(int argc, char *argv[]) { + long double a = 1; + long double b = sqrtl(2.)/2; + long double x = 0.7; + if (argc >= 3) { + a = std::stod(argv[1]); + b = std::stod(argv[2]); + } + if (argc >= 4) { + x = std::stod(argv[3]); + } + + { + long double an = a; + long double bn = b; + long double xn = x; + for (int i = 0; i < 10; i++) { + printf("%d %24.18Lf %24.18Lf %24.18Lf %24.18Lf\n", + i, an, bn, xn, a * asin(xn) / an); + long double A = (an + bn) / 2; + xn = Xn(an, bn, xn); + bn = sqrtl(an * bn); + an = A; + } + } + + { + double k = b/a; + k = sqrt(1 - k*k); + double K = gsl_sf_ellint_Kcomp(k, GSL_PREC_DOUBLE); + printf(" %24.18f %24.18f\n", k, K); + double F = gsl_sf_ellint_F(asinl(x), k, GSL_PREC_DOUBLE); + printf(" %24.18f %24.18f\n", k, F); + } + + return EXIT_SUCCESS; +} diff --git a/buch/chapters/110-elliptisch/agm/agm.m b/buch/chapters/110-elliptisch/agm/agm.m new file mode 100644 index 0000000..dcb3ad8 --- /dev/null +++ b/buch/chapters/110-elliptisch/agm/agm.m @@ -0,0 +1,20 @@ +# +# agm.m +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +format long + +n = 10; +a = 1; +b = sqrt(0.5); + +for i = (1:n) + printf("%20.16f %20.16f\n", a, b); + A = (a+b)/2; + b = sqrt(a*b); + a = A; +end + +K = pi / (2 * a) + diff --git a/buch/chapters/110-elliptisch/agm/agm.maxima b/buch/chapters/110-elliptisch/agm/agm.maxima new file mode 100644 index 0000000..c7facd4 --- /dev/null +++ b/buch/chapters/110-elliptisch/agm/agm.maxima @@ -0,0 +1,26 @@ +/* + * agm.maxima + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ + +S: 2*a*sin(theta1) / (a+b+(a-b)*sin(theta1)^2); + +C2: ratsimp(diff(S, theta1)^2 / (1 - S^2)); +C2: ratsimp(subst(sqrt(1-sin(theta1)^2), cos(theta1), C2)); +C2: ratsimp(subst(S, sin(theta), C2)); +C2: ratsimp(subst(sqrt(1-S^2), cos(theta), C2)); + +D2: (a^2 * cos(theta)^2 + b^2 * sin(theta)^2) + / + (a1^2 * cos(theta1)^2 + b1^2 * sin(theta1)^2); +D2: subst((a+b)/2, a1, D2); +D2: subst(sqrt(a*b), b1, D2); +D2: ratsimp(subst(1-S^2, cos(theta)^2, D2)); +D2: ratsimp(subst(S, sin(theta), D2)); +D2: ratsimp(subst(1-sin(theta1)^2, cos(theta1)^2, D2)); + +Q: D2/C2; +Q: ratsimp(subst(x, sin(theta1), Q)); + +Q: ratsimp(expand(ratsimp(Q))); diff --git a/buch/chapters/110-elliptisch/agm/sn.cpp b/buch/chapters/110-elliptisch/agm/sn.cpp new file mode 100644 index 0000000..9e1b047 --- /dev/null +++ b/buch/chapters/110-elliptisch/agm/sn.cpp @@ -0,0 +1,52 @@ +/* + * sn.cpp + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ +#include <cstdlib> +#include <cstdio> +#include <cmath> +#include <iostream> +#include <gsl/gsl_sf_ellint.h> +#include <gsl/gsl_sf_elljac.h> + +static const int N = 10; + +inline long double sqrl(long double x) { + return x * x; +} + +int main(int argc, char *argv[]) { + long double u = 0.6; + long double k = 0.9; + long double kprime = sqrt(1 - sqrl(k)); + + long double a[N], b[N], x[N+1]; + a[0] = 1; + b[0] = kprime; + + for (int n = 0; n < N-1; n++) { + printf("a[%d] = %22.18Lf b[%d] = %22.18Lf\n", n, a[n], n, b[n]); + a[n+1] = (a[n] + b[n]) / 2; + b[n+1] = sqrtl(a[n] * b[n]); + } + + x[N] = sinl(u * a[N-1]); + printf("x[%d] = %22.18Lf\n", N, x[N]); + + for (int n = N - 1; n >= 0; n--) { + x[n] = 2 * a[n] * x[n+1] / (a[n] + b[n] + (a[n] - b[n]) * sqrl(x[n+1])); + printf("x[%2d] = %22.18Lf\n", n, x[n]); + } + + printf("sn(%7.4Lf, %7.4Lf) = %20.24Lf\n", u, k, x[0]); + + double sn, cn, dn; + double m = sqrl(k); + gsl_sf_elljac_e((double)u, m, &sn, &cn, &dn); + printf("sn(%7.4Lf, %7.4Lf) = %20.24f\n", u, k, sn); + printf("cn(%7.4Lf, %7.4Lf) = %20.24f\n", u, k, cn); + printf("dn(%7.4Lf, %7.4Lf) = %20.24f\n", u, k, dn); + + return EXIT_SUCCESS; +} diff --git a/buch/chapters/110-elliptisch/chapter.tex b/buch/chapters/110-elliptisch/chapter.tex index e05f3bd..21fc986 100644 --- a/buch/chapters/110-elliptisch/chapter.tex +++ b/buch/chapters/110-elliptisch/chapter.tex @@ -35,11 +35,15 @@ wieder hergestellt. \input{chapters/110-elliptisch/lemniskate.tex} -\section*{Übungsaufgabe} -\rhead{Übungsaufgabe} +\section*{Übungsaufgaben} +\rhead{Übungsaufgaben} \aufgabetoplevel{chapters/110-elliptisch/uebungsaufgaben} \begin{uebungsaufgaben} %\uebungsaufgabe{0} \uebungsaufgabe{1} +\uebungsaufgabe{2} +\uebungsaufgabe{3} +\uebungsaufgabe{4} +\uebungsaufgabe{5} \end{uebungsaufgaben} diff --git a/buch/chapters/110-elliptisch/dglsol.tex b/buch/chapters/110-elliptisch/dglsol.tex index 7eaab38..c5b3a5c 100644 --- a/buch/chapters/110-elliptisch/dglsol.tex +++ b/buch/chapters/110-elliptisch/dglsol.tex @@ -228,8 +228,10 @@ Nach Multiplikation mit $\operatorname{qp}(u,k)^4$ erhält man den folgenden Satz. \begin{satz} +\index{Satz!Differentialgleichung von $1/\operatorname{pq}(u,k)$}% Wenn die Jacobische elliptische Funktion $\operatorname{pq}(u,k)$ -der Differentialgleichung genügt, dann genügt der Kehrwert +der Differentialgleichung~\eqref{buch:elliptisch:eqn:1storderdglell} +genügt, dann genügt der Kehrwert $\operatorname{qp}(u,k) = 1/\operatorname{pq}(u,k)$ der Differentialgleichung \begin{equation} (\operatorname{qp}'(u,k))^2 @@ -276,8 +278,8 @@ vertauscht worden sind. % Differentialgleichung zweiter Ordnung % \subsubsection{Differentialgleichung zweiter Ordnung} -Leitet die Differentialgleichung~\eqref{buch:elliptisch:eqn:1storderdglell} -man dies nochmals nach $u$ ab, erhält man die Differentialgleichung +Leitet man die Differentialgleichung~\eqref{buch:elliptisch:eqn:1storderdglell} +nochmals nach $u$ ab, erhält man die Differentialgleichung \[ 2\operatorname{pq}''(u,k)\operatorname{pq}'(u,k) = @@ -339,19 +341,231 @@ y(u) = F^{-1}(u+C). Die Jacobischen elliptischen Funktionen sind daher inverse Funktionen der unvollständigen elliptischen Integrale. +\begin{beispiel} +Die Differentialgleichung der Funktion $y=\operatorname{sn}(u,k)$ ist +\[ +(y')^2 += +(1-y^2)(1-k^2y^2). +\] +Aus \eqref{buch:elliptisch:eqn:yintegral} folgt daher, dass +\[ +u+C += +\int\frac{dy}{(1-y^2)(1-k^2y^2)}. +\] +Das Integral ist das unvollständige elliptische Integral erster Art. +Mit der Wahl der Konstanten $C$ so, dass $y(0)=0$ ist, ist +$y(u)=\operatorname{sn}(u,k)$ daher die Umkehrfunktion von +$y\mapsto F(y,k)=u$. +\end{beispiel} + +% +% Numerische Berechnung mit dem arithmetisch-geometrischen Mittel +% +\subsubsection{Numerische Berechnung mit dem arithmetisch-geometrischen Mittel +\label{buch:elliptisch:jacobi:agm}} +\begin{table} +\centering +\begin{tikzpicture}[>=latex,thick] + +\begin{scope}[xshift=-2.4cm,yshift=1.2cm] +\fill[color=red!20] + (-1.0,0) -- (-1.0,-2.1) -- (-1.8,-2.1) -- (0,-3.0) + -- (1.8,-2.1) -- (1.0,-2.1) -- (1.0,0) -- cycle; +\node[color=white] at (0,-1.2) [scale=7] {\sf 1}; +\end{scope} + +\begin{scope}[xshift=2.9cm,yshift=-1.8cm] +\fill[color=blue!20] + (0.8,0) -- (0.8,2.1) -- (1.4,2.1) -- (0,3.0) -- (-1.4,2.1) + -- (-0.8,2.1) -- (-0.8,0) -- cycle; +\node[color=white] at (0,1.2) [scale=7] {\sf 2}; +\end{scope} + +\node at (0,0) { +\begin{tabular}{|>{$}c<{$}|>{$}c<{$}>{$}c<{$}|>{$}c<{$}>{$}l<{$}|} +\hline +n & a_n & b_n & x_n & +\mathstrut\text{\vrule height12pt depth6pt width0pt}\\ +\hline +0 & 1.0000000000000000 & 0.4358898943540673 & 0.5422823228691580 & = \operatorname{sn}(u,k)% +\mathstrut\text{\vrule height12pt depth0pt width0pt}\\ +1 & 0.7179449471770336 & 0.6602195804079634 & 0.4157689781689663 & \mathstrut\\ +2 & 0.6890822637924985 & 0.6884775317911533 & 0.4017521410983242 & \mathstrut\\ +3 & 0.6887798977918259 & 0.6887798314243237 & 0.4016042867931862 & \mathstrut\\ +4 & 0.6887798646080748 & 0.6887798646080740 & 0.4016042705654757 & \mathstrut\\ +5 & 0.6887798646080744 & 0.6887798646080744 & 0.4016042705654755 & \mathstrut\\ +6 & & & 0.4016042705654755 & = \sin(a_5u) +\mathstrut\text{\vrule height0pt depth6pt width0pt}\\ +\hline +\end{tabular} +}; +\end{tikzpicture} +\caption{Berechnung von $\operatorname{sn}(u,k)$ für $u=0.6$ und $k=0.$2 +mit Hilfe des arithmetisch-geo\-me\-tri\-schen Mittels. +In der ersten Phase des Algorithmus (rot) wird die Folge der arithmetischen +\index{Algorithmus!arithmetisch-geometrisches Mittel}% +und geometrischen Mittel berechnet, in der zweiten Phase werden die +Approximationen von $x_0=\operatorname{sn}(u,k)$. +Bei $n=5$ erreicht die Iteration des arithmetisch-geometrischen Mittels +Maschinengenauigkeit, was sich auch darin äussert, dass sich $x_5$ und +$x_6=\sin(a_5u)$ nicht unterscheiden. +\label{buch:elliptisch:agm:table:snberechnung}} +\end{table} +In Abschnitt~\ref{buch:elliptisch:subsection:agm} auf +Seite~\pageref{buch:elliptisch:subsubection:berechnung-fxk-agm} +wurde erklärt, wie das unvollständige elliptische Integral $F(x,k)$ mit +Hilfe des arithmetisch-geometrischen Mittels berechnet werden kann. +\index{Algorithmus!arithmetisch-geometrisches Mittel}% +\index{arithmetisch-geometrisches Mittel!Algorithmus}% +Da $\operatorname{sn}^{-1}(x,k) = F(x,k)$ die Umkehrfunktion ist, kann +man den Algorithmus auch zur Berechnung von $\operatorname{sn}(u,k)$ +verwenden. +Dazu geht man wie folgt vor: +\begin{enumerate} +\item +$k'=\sqrt{1-k^2}$. +\item +Berechne die Folgen des arithmetisch-geometrischen Mittels +$a_n$ und $b_n$ mit $a_0=1$ und $b_0=k'$, bis zum Folgenindex $N$, +bei dem ausreichende Konvergenz eintegreten ist. +\item +Setze $x_N = \sin(a_N \cdot u)$. +\item +Berechnet für absteigende $n=N-1,N-2,\dots$ die Folge $x_n$ mit Hilfe +der Rekursionsformel +\begin{equation} +x_{n} += +\frac{2a_nx_{n+1}}{a_n+b_n+(a_n-b_n)x_{n+1}^2}, +\label{buch:elliptisch:agm:xnrek} +\end{equation} +die aus \eqref{buch:elliptisch:agm:subst} +durch die Substitution $x_n = \sin t_n$ entsteht. +\item +Setze $\operatorname{sn}(u,k) = x_0$. +\end{enumerate} +Da die Formel \eqref{buch:elliptisch:agm:xnrek} nicht unter den +numerischen Stabilitätsproblemen leidet, die früher auf +Seite~\pageref{buch:elliptisch:agm:ellintegral-stabilitaet} +diskutiert wurden, ist die Berechnung stabil und sehr schnell. +Tabelle~\ref{buch:elliptisch:agm:table:snberechnung} +zeigt die Berechnung am Beispiel $u=0.6$ und $k=0.2$. + +% +% Pole und Nullstellen der Jacobischen elliptischen Funktionen +% +\subsubsection{Pole und Nullstellen der Jacobischen elliptischen Funktionen} +\begin{figure} +\centering +\includegraphics{chapters/110-elliptisch/images/ellpolnul.pdf} +\caption{Werte der grundlegenden Jacobischen elliptischen Funktionen +$\operatorname{sn}(u,k)$, +$\operatorname{cn}(u,k)$ +und +$\operatorname{dn}(u,k)$ +in den Ecken des Rechtecks mit Ecken $(0,0)$ und $(K,K+iK')$. +Links der Definitionsbereich, rechts die Werte der drei Funktionen. +Pole sind mit einem Kreuz ($\times$) bezeichnet, Nullstellen mit einem +Kreis ($\ocircle$). +\label{buch:elliptisch:fig:ellpolnul}} +\end{figure} +\begin{figure} +\centering +\includegraphics{chapters/110-elliptisch/images/ellall.pdf} +\caption{Pole und Nullstellen aller Jacobischen elliptischen Funktionen +mit den gleichen Darstellungskonventionen wie in +Abbildung~\ref{buch:elliptisch:fig:ellpolnul} +\label{buch:elliptisch:fig:ellall}} +\end{figure} +\begin{figure} +\centering +\includegraphics{chapters/110-elliptisch/images/ellselection.pdf} +\caption{Auswahl einer Jacobischen elliptischen Funktion mit bestimmten +Nullstellen und Polen. +Nullstellen und Pole können in jeder der vier Ecken des fundamentalen +Rechtecks (gelb, oberer rechter Viertel des Periodenrechtecks) liegen. +Der erste Buchstabe des Namens der gesuchten Funktion ist der Buchstabe +der Ecke der Nullstelle, der zweite Buchstabe ist der Buchstabe der +Ecke des Poles. +Im Beispiel die Funktion $\operatorname{cd}(u,k)$, welche eine +Nullstelle in $K$ hat und einen Pol in $K+iK'$. +\label{buch:elliptisch:fig:selectell}} +\end{figure} +Für die Funktion $y=\operatorname{sn}(u,k)$ erfüllt die Differentialgleichung +\[ +\frac{dy}{du} += +\sqrt{(1-y^2)(1-k^2y^2)}, +\] +welche mit dem unbestimmten Integral +\begin{equation} +u + C = \int\frac{dy}{\sqrt{(1-y^2)(1-k^2y^2)}} +\label{buch:elliptisch:eqn:uyintegral} +\end{equation} +gelöst werden kann. +Der Wertebereich des Integrals in \eqref{buch:elliptisch:eqn:uyintegral} +wurde bereits in +Abschnitt~\ref{buch:elliptisch:subsection:unvollstintegral} +auf Seite~\pageref{buch:elliptische:subsubsection:wertebereich} +diskutiert. +Daraus können jetzt Nullstellen und Pole der Funktion $\operatorname{sn}(u,k)$ +und mit Hilfe von Tabelle~\ref{buch:elliptisch:fig:jacobi-relationen} +auch für $\operatorname{cn}(u,k)$ und $\operatorname{dn}(u,k)$ +abgelesen werden: +\begin{equation} +\begin{aligned} +\operatorname{sn}(0,k)&=0 +&&\qquad& +\operatorname{cn}(0,k)&=1 +&&\qquad& +\operatorname{dn}(0,k)&=1 +\\ +\operatorname{sn}(iK',k)&=\infty +&&\qquad& +\operatorname{cn}(iK',k)&=\infty +&&\qquad& +\operatorname{dn}(iK',k)&=\infty +\\ +\operatorname{sn}(K,k)&=1 +&&\qquad& +\operatorname{cn}(K,k)&=0 +&&\qquad& +\operatorname{dn}(K,k)&=k' +\\ +\operatorname{sn}(K+iK',k)&=\frac{1}{k} +&&\qquad& +\operatorname{cn}(K+iK',k)&=\frac{k'}{ik} +&&\qquad& +\operatorname{dn}(K+iK',k)&=0 +\end{aligned} +\label{buch:elliptische:eqn:eckwerte} +\end{equation} +Abbildung~\ref{buch:elliptisch:fig:ellpolnul} zeigt diese Werte +an einer schematischen Darstellung des Definitionsbereiches auf. +Daraus lassen sich jetzt auch die Werte der abgeleiteten Jacobischen +elliptischen Funktionen ablesen, Pole und Nullstellen sind in +Abbildung~\ref{buch:elliptisch:fig:ellall} +zusammengestellt. + + + + % % Differentialgleichung des anharmonischen Oszillators % \subsubsection{Differentialgleichung des anharmonischen Oszillators} Wir möchten die nichtlineare Differentialgleichung +\index{Differentialgleichung!das anharmonischen Oszillators}% \begin{equation} \biggl( \frac{dx}{dt} \biggr)^2 = Ax^4+Bx^2 + C -\label{buch:elliptisch:eqn:allgdgl} +\label{buch:elliptisch:eqn:anhdgl} \end{equation} mit Hilfe elliptischer Funktionen lösen. Wir nehmen also an, dass die gesuchte Lösung eine Funktion der Form @@ -368,7 +582,7 @@ a\operatorname{zn}'(bt,k). \] Indem wir diesen Lösungsansatz in die -Differentialgleichung~\eqref{buch:elliptisch:eqn:allgdgl} +Differentialgleichung~\eqref{buch:elliptisch:eqn:anhdgl} einsetzen, erhalten wir \begin{equation} a^2b^2 \operatorname{zn}'(bt,k)^2 @@ -478,13 +692,13 @@ Da alle Parameter im Lösungsansatz~\eqref{buch:elliptisch:eqn:loesungsansatz} bereits festgelegt sind stellt sich die Frage, woher man einen weiteren Parameter nehmen kann, mit dem Anfangsbedingungen erfüllen kann. -Die Differentialgleichung~\eqref{buch:elliptisch:eqn:allgdgl} ist +Die Differentialgleichung~\eqref{buch:elliptisch:eqn:anhdgl} ist autonom, die Koeffizienten der rechten Seite der Differentialgleichung sind nicht von der Zeit abhängig. Damit ist eine zeitverschobene Funktion $x(t-t_0)$ ebenfalls eine Lösung der Differentialgleichung. Die allgmeine Lösung der -Differentialgleichung~\eqref{buch:elliptisch:eqn:allgdgl} hat +Differentialgleichung~\eqref{buch:elliptisch:eqn:anhdgl} hat also die Form \[ x(t) = a\operatorname{zn}(b(t-t_0)), @@ -492,3 +706,7 @@ x(t) = a\operatorname{zn}(b(t-t_0)), wobei die Funktion $\operatorname{zn}(u,k)$ auf Grund der Vorzeichen von $A$, $B$ und $C$ gewählt werden müssen. +Die Übungsaufgaben~\ref{buch:elliptisch:aufgabe:1} ist als +Lernaufgabe konzipiert, mit der die Lösung der Differentialgleichung +des harmonischen Oszillators beispielhaft durchgearbeitet +werden kann. diff --git a/buch/chapters/110-elliptisch/ellintegral.tex b/buch/chapters/110-elliptisch/ellintegral.tex index 3acce2f..466aeb7 100644 --- a/buch/chapters/110-elliptisch/ellintegral.tex +++ b/buch/chapters/110-elliptisch/ellintegral.tex @@ -179,6 +179,7 @@ Da im Integral nur $k^2$ auftaucht, wird sich $K(k)$ als hypergeometrische Funktion von $k^2$ ausdrücken lassen. \begin{satz} +\index{Satz!vollständiges elliptisches Integral als hypergeometrische Funktion}% \label{buch:elliptisch:satz:hyperK} Das vollständige elliptische Integral $K(k)$ lässt sich durch die hypergeometrische Funktion $\mathstrut_2F_1$ als @@ -355,9 +356,9 @@ K(k) dies beweist die Behauptung. \end{proof} - - - +% +% Umfang einer Ellipse +% \subsubsection{Umfang einer Ellipse} \begin{figure} \centering @@ -430,7 +431,7 @@ Für $\varepsilon=1$ ist $a=0$, es entsteht eine Strecke mit Länge $E(1)=1$. \begin{satz} \label{buch:elliptisch:satz:hyperE} -Das volständige elliptische Integral $E(k)$ ist +Das vollständige elliptische Integral $E(k)$ ist \[ E(k) = @@ -451,13 +452,331 @@ Hilfe einer Entwicklung der Wurzel mit der Binomialreihe gefunden werden. \end{proof} -\subsubsection{Komplementäre Integrale} +Die Darstellung von $E(k)$ als hypergeometrische Reihe ermöglicht +jetzt zum Beispiel auch die Berechnung der Ableitung nach dem +Parameter $k$ mit der Ableitungsformel für die Funktion $\mathstrut_2F_1$. + + +% +% Berechnung mit dem arithmetisch-geometrischen Mittel +% +\subsection{Berechnung mit dem arithmetisch-geometrischen Mittel +\label{buch:elliptisch:subsection:agm}} +Die numerische Berechnung von elliptischer Integrale mit gewöhnlichen +numerischen Integrationsroutinen ist nicht sehr effizient. +Das in diesem Abschnitt vorgestellte arithmetisch-geometrische Mittel +\index{arithmetisch-geometrisches Mittel}% +liefert einen Algorithmus mit sehr viel besserer Konvergenz. +Die Methode lässt sich auch auf die unvollständigen elliptischen +Integrale von Abschnitt~\eqref{buch:elliptisch:subsection:unvollstintegral} +verallgemeinern. +Sie ist ein Speziallfall der sogenannten Landen-Transformation, +\index{Landen-Transformation}% +welche ausser für die elliptischen Integrale auch für die +Jacobischen elliptischen Funktionen formuliert werden kann und +für letztere ebenfalls sehr schnelle numerische Algorithmen liefert +(siehe dazu auch die +Aufgaben~\ref{buch:elliptisch:aufgabe:2}--\ref{buch:elliptisch:aufgabe:4}). +Sie kann auch verwendet werden, um die Werte der Jacobischen elliptischen +Funktionen für komplexe Argument zu berechnen. +Eine weiter Anwendung ist die Berechnung einer grossen Zahl von +Stellen der Kreiszahl $\pi$, siehe Aufgaben~\ref{buch:elliptisch:aufgabe:5}. + +% +% Das arithmetisch-geometrische Mittel +% +\subsubsection{Das arithmetisch-geometrische Mittel} +Seien $a$ und $b$ zwei nichtnegative reelle Zahlen. +Aus $a$ und $b$ werden jetzt zwei Folgen konstruiert, deren Glieder +durch +\begin{align*} +a_0&=a &&\text{und}& a_{n+1} &= \frac{a_n+b_n}2 &&\text{arithmetisches Mittel} +\\ +b_0&=b &&\text{und}& b_{n+1} &= \sqrt{a_nb_n} &&\text{geometrisches Mittel} +\end{align*} +definiert sind. + +\begin{satz} +\index{Satz!arithmetisch-geometrisches Mittel}% +Falls $a>b>0$ ist, nimmt die Folge $(a_k)_{k\ge 0}$ monoton ab und +$(b_k)_{k\ge 0}$ nimmt monoton zu. +Beide konvergieren quadratisch gegen einen gemeinsamen Grenzwert. +\end{satz} + +\begin{definition} +Der gemeinsame Grenzwert von $a_n$ und $b_n$ heisst das +{\em arithmetisch-geometrische Mittel} und wird mit +\[ +M(a,b) += +\lim_{n\to\infty} a_n += +\lim_{n\to\infty} b_n +\] +bezeichnet. +\index{arithmetisch-geometrisches Mittel}% +\end{definition} + +\begin{proof}[Beweis] +Zunächst ist zu zeigen, dass die Folgen monoton sind. +Dies folgt sofort aus der Definition der Folgen: +\begin{align*} +a_{n+1} &= \frac{a_n+b_n}{2} \ge \frac{a_n+a_n}{2} = a_n +\\ +b_{n+1} &= \sqrt{a_nb_n} \ge \sqrt{b_nb_n} = b_n. +\end{align*} +Die Konvergenz folgt aus +\[ +a_{n+1}-b_{n+1} +\le +a_{n+1}-b_n += +\frac{a_n+b_n}{2}-b_n += +\frac{a_n-b_n}2 +\le +\frac{a-b}{2^{n+1}}. +\] +Dies zeigt jedoch nur, dass die Konvergenz mindestens ein +Bit in jeder Iteration ist. +Aus +\[ +a_{n+1}^2 - b_{n+1}^2 += +\frac{(a_n+b_n)^2}{4} - a_nb_n += +\frac{a_n^2 -2a_nb_n+b_n^2}{4} += +\frac{(a_n-b_n)^2}{4} +\] +folgt +\[ +a_{n+1}-b_{n+1} += +\frac{(a_n-b_n)^2}{2(a_{n+1}+b_{n+1})}. +\] +Da der Nenner gegen $2M(a,b)$ konvergiert, wird der Fehler für in +jeder Iteration quadriert, die Zahl korrekter Stellen verdoppelt sich +in jeder Iteration, es liegt also quadratische Konvergenz vor. +\end{proof} + +% +% Transformation des elliptischen Integrals +% +\subsubsection{Transformation des elliptischen Integrals} +In diesem Abschnitt soll das Integral +\[ +I(a,b) += +\int_0^{\frac{\pi}2} +\frac{dt}{\sqrt{a^2\cos^2 t + b^2\sin^2t}} +\] +berechnet werden. +Es ist klar, dass +\[ +I(sa,sb) += +\frac{1}{s} I(a,b). +\] + +Gauss hat gefunden, dass die Substitution +\begin{equation} +\sin t += +\frac{2a\sin t_1}{a+b+(a-b)\sin^2 t_1} +\label{buch:elliptisch:agm:subst} +\end{equation} +zu +\begin{equation} +\frac{dt}{\sqrt{a^2_{\phantom{1}}\cos^2 t + b^2_{\phantom{1}} \sin^2 t}} += +\frac{dt_1}{\sqrt{a_1^2\cos^2 t_1 + b_1^2 \sin^2 t_1}} +\label{buch:elliptisch:agm:dtdt1} +\end{equation} +führt. +Um dies nachzuprüfen, muss man zunächst +\eqref{buch:elliptisch:agm:subst} +nach $t_1$ ableiten, was +\[ +\frac{d}{dt_1}\sin t += +\cos t +\frac{dt}{dt_1} +\qquad\Rightarrow\qquad +\biggl( +\frac{d}{dt_1}\sin t +\biggr)^2 += +(1-\sin^2t)\biggl(\frac{dt}{dt_1}\biggr)^2 +\] +ergibt. +Die Ableitung von $t$ nach $t_1$ kann auch aus +\eqref{buch:elliptisch:agm:dtdt1} +ableiten, es ist +\[ +\biggl( +\frac{dt}{dt_1} +\biggr)^2 += +\frac{a^2_{\phantom{1}} \cos^2 t + b^2_{\phantom{1}} \sin^2 t}{a_1^2 \cos^2 t_1 + b_1^2 \sin^2 t_1}. +\] +Man muss also nachprüfen, dass +\begin{equation} +\frac{1}{1-\sin^2 t} +\frac{d}{dt_1}\sin t += +\frac{a^2 \cos^2 t + b^2 \sin^2 t}{a_1^2 \cos^2 t_1 + b_1^2 \sin^2 t_1}. +\label{buch:elliptisch:agm:deq} +\end{equation} +Dazu muss man zunächst $a_1=(a+b)/2$, $b_1=\!\sqrt{ab}$ setzen. +Ausserdem muss man $\cos^2 t$ durch $1-\sin^2t$ ersetzen und +$\sin t$ durch \eqref{buch:elliptisch:agm:subst}. +Auch $\cos^2 t_1$ muss man durch $1-\sin^2t_1$ ersetzt werden. +Dann kann man nach einer langwierigen Rechnung, die sich am leichtesten +mit einem Computer-Algebra-System ausführen lässt finden, dass +\eqref{buch:elliptisch:agm:deq} +tatsächlich korrekt ist. + +\begin{satz} +\index{Satz!Gauss-Integrale}% +\label{buch:elliptisch:agm:integrale} +Für $a_1=(a+b)/2$ und $b_1=\sqrt{ab}$ gilt +\[ +\int_0^{\frac{\pi}2} +\frac{dt}{a^2\cos^2 t + b^2 \sin^2 t} += +\int_0^{\frac{\pi}2} +\frac{dt_1}{a_1^2\cos^2 t_1 + b_1^2 \sin^2 t_1}. +\] +\end{satz} + +Der Satz~\ref{buch:elliptisch:agm:integrale} zeigt, dass die Ersetzung +von $a$ und $b$ durch $a_1$ und $b_1$ das Integral $I(a,b)$ nicht ändert. +Dies gilt natürlich für alle Glieder der Folge zur Bestimmung des +arithmetisch-geometrischen Mittels. + +\begin{satz} +\index{Satz!Iab@$I(a,b)$ und arithmetisch geometrisches Mittel}% +Für $a\ge b>0$ gilt +\begin{equation} +I(a,b) += +\int_0^{\frac{\pi}2} +\frac{dt}{a^2\cos^2 t + b^2\sin^2t} += +\frac{\pi}{2M(a,b)} +\end{equation} +\end{satz} + +\begin{proof}[Beweis] +Zunächst folgt aus Satz~\ref{buch:elliptisch:agm:integrale}, dass +\[ +I(a,b) += +I(a_1,b_1) += +\dots += +I(a_n,b_n). +\] +Ausserdem ist $a_n\to M(a,b)$ und $b_n\to M(a,b)$, +damit wird +\[ +I(a,b) += +\frac{1}{M(a,b)} +\int_0^{\frac{\pi}2} +\frac{dt}{\sqrt{\cos^2 t + \sin^2 t}} += +\frac{\pi}{2M(a,b)}. +\qedhere +\] +\end{proof} + +% +% Berechnung des elliptischen Integrals +% +\subsubsection{Berechnung des elliptischen Integrals} +Das elliptische Integral erster Art hat eine Form, die dem Integral +$I(a,b)$ bereits sehr ähnlich ist. +Im die Verbindung herzustellen, berechnen wir +\begin{align*} +I(a,b) +&= +\int_0^{\frac{\pi}2} +\frac{dt}{\sqrt{a^2\cos^2 t + b^2 \sin^2 t}} +\\ +&= +\frac{1}{a} +\int_0^{\frac{\pi}2} +\frac{dt}{\sqrt{1-\sin^2 t + \frac{b^2}{a^2} \sin^2 t}} +\\ +&= +\frac{1}{a} +\int_0^{\frac{\pi}2} +\frac{dt}{\sqrt{1-(1-\frac{b^2}{a^2})\sin^2 t}} += +K(k) +\qquad\text{mit}\qquad +k'=\frac{b^2}{a^2},\; +k=\sqrt{1-k^{\prime 2}} +\end{align*} + +\begin{satz} +\index{Satz!vollständige elliptische Integrale und arithmetisch-geometrisches Mittel}% +\label{buch:elliptisch:agm:satz:Ek} +Für $0<k\le 1$ ist +\[ +K(k) = I(1,\sqrt{1-k^2}) = \frac{\pi}{2M(1,\sqrt{1-k^2})} +\] +\end{satz} -\subsubsection{Ableitung} -XXX Ableitung \\ -XXX Stammfunktion \\ +% +% Numerisches Beispiel +% +\subsubsection{Numerisches Beispiel} +\begin{table} +\centering +\begin{tabular}{|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|} +\hline +n& a_n & b_n & \pi/2a_n \mathstrut\text{\vrule height12pt depth6pt width0pt}\\ +\hline +\text{\vrule height12pt depth0pt width0pt}% +0 & 1.0000000000000000000 & 0.7071067811865475243 & 1.5707963267948965579 \\ +1 & 0.8535533905932737621 & 0.8408964152537145430 & 1.\underline{8}403023690212201581 \\ +2 & 0.8472249029234941526 & 0.8472012667468914603 & 1.\underline{8540}488143993356315 \\ +3 & 0.8472130848351928064 & 0.8472130847527653666 & 1.\underline{854074677}2111781089 \\ +4 & 0.8472130847939790865 & 0.8472130847939790865 & 1.\underline{854074677301371}8463 \\ +\infty& & & 1.8540746773013719184% +\text{\vrule height12pt depth6pt width0pt}\\ +\hline +\end{tabular} +\caption{Die Berechnung des arithmetisch-geometrischen Mittels für +$a=1$ und $b=\sqrt{2}/2$ zeigt die sehr rasche Konvergenz. +\label{buch:elliptisch:agm:numerisch}} +\end{table} +In diesem Abschnitt soll als Zahlenbeispiel $E(k)$ für $k=\sqrt{2}/2$ +berechnet werden. +In diesem speziellen Fall ist $k'=k$. +Tabelle~\ref{buch:elliptisch:agm:numerisch} zeigt die sehr rasche +Konvergenz der Berechnung des arithmetisch-geometrischen Mittels +von $1$ und $\sqrt{2}/2$. +Mit Satz~\ref{buch:elliptisch:agm:satz:Ek} folgt jetzt +\[ +K(\!\sqrt{2}/2) += +\frac{\pi}{2M(1,\!\sqrt{2}/2)} += +1.854074677301372. +\] +Die Berechnung hat nur 4 Mittelwerte, 4 Produkte, 4 Quadratwurzeln und +eine Division erfordert. -\subsection{Unvollständige elliptische Integrale} +% +% Unvollständige elliptische Integrale +% +\subsection{Unvollständige elliptische Integrale +\label{buch:elliptisch:subsection:unvollstintegral}} Die Funktionen $K(k)$ und $E(k)$ sind als bestimmte Integrale über ein festes Intervall definiert. Die {\em unvollständigen elliptischen Integrale} entstehen, indem die @@ -522,12 +841,18 @@ Die Abbildung~\ref{buch:elliptisch:fig:unvollstaendigeintegrale} zeigt Graphen der unvollständigen elliptischen Integrale für verschiedene Werte des Parameters. +% +% Symmetrieeigenschaften +% \subsubsection{Symmetrieeigenschaften} Die Integranden aller drei unvollständigen elliptischen Integrale sind gerade Funktionen der reellen Variablen $t$. Die Funktionen $F(x,k)$, $E(x,k)$ und $\Pi(n,x,k)$ sind daher ungeraden Funktionen von $x$. +% +% Elliptische Integrale als komplexe Funktionen +% \subsubsection{Elliptische Integrale als komplexe Funktionen} Die unvollständigen elliptischen Integrale $F(x,k)$, $F(x,k)$ und $\Pi(n,x,k)$ in Jacobi-Form lassen sich auch für komplexe Argumente interpretieren. @@ -538,10 +863,14 @@ Die Faktoren, die in den Integranden der unvollständigen elliptischen Integrale vorkommen, haben Nullstellen bei $\pm1$, $\pm1/k$ und $\pm 1/\sqrt{n}$ -XXX Additionstheoreme \\ -XXX Parameterkonventionen \\ +% XXX Additionstheoreme \\ +% XXX Parameterkonventionen \\ +% +% Wertebereich +% \subsubsection{Wertebereich} +\label{buch:elliptische:subsubsection:wertebereich} Die unvollständigen elliptischen Integrale betrachtet als reelle Funktionen haben nur positive relle Werte. Zum Beispiel nimmt das unvollständige elliptische Integral erster Art @@ -631,6 +960,9 @@ l({\textstyle\frac{1}{k}})=\int_1^{\frac1{k}} \end{equation} ausgewertet werden. +% +% Komplementärmodul +% \subsubsection{Komplementärmodul} Im vorangegangen Abschnitt wurde gezeigt, dass der Wertebereicht des unvollständigen elliptischen Integrals der ersten Art als komplexe @@ -734,6 +1066,9 @@ in das blaue. \label{buch:elliptisch:fig:rechteck}} \end{figure} +% +% Reelle Argument > 1/k +% \subsubsection{Reelle Argument $> 1/k$} Für Argument $x> 1/k$ sind beide Faktoren im Integranden des unvollständigen elliptischen Integrals negativ, das Integral kann @@ -780,7 +1115,141 @@ F(x,k) = iK(k') - F\biggl(\frac1{kx},k\biggr) für die Werte des elliptischen Integrals erster Art für grosse Argumentwerte fest. -\subsection{Potenzreihe} -XXX Potenzreihen \\ -XXX Als hypergeometrische Funktionen \url{https://www.youtube.com/watch?v=j0t1yWrvKmE} \\ -XXX Berechnung mit der Landen-Transformation https://en.wikipedia.org/wiki/Landen%27s_transformation +% +% AGM und Berechnung von F(x,k) +% +\subsubsection{Berechnung von $F(x,k)$ mit dem arithmetisch-geometrischen +Mittel\label{buch:elliptisch:subsubection:berechnung-fxk-agm}} +Wie das vollständige elliptische Integral $K(k)$ kann auch das +unvollständige elliptische Integral +\begin{align*} +F(x,k) +&= +\int_0^x \frac{d\xi}{\sqrt{(1-\xi^2)(1-k^{\prime 2}\xi^2)}} += +\int_0^{\varphi} +\frac{dt}{\sqrt{1-k^2 \sin^2 t}} +&&\text{mit $x=\sin\varphi$} +\\ +&= +a +\int_0^{\varphi} \frac{dt}{a^2 \cos^2 t + b^2 \sin^2 t} +&&\text{mit $k=b/a$} +\end{align*} +mit dem arithmetisch-geometrischen Mittel berechnet werden. +Dazu muss die Substitution +\eqref{buch:elliptisch:agm:subst} +verwendet werden, um auch den Winkel $\varphi_1$ zu berechnen. +Zunächst wird \eqref{buch:elliptisch:agm:subst} nach $x_1=\sin t_1$ +aufgelöst. +Durch Multiplikation mit dem Nenner erhält man mit der Abkürzung +$x=\sin t$ %und $x_1=\sin t_1$ +die quadratische Gleichung +\[ +(a-b)x x_1^2 +- +2ax_1 ++ +(a+b)x += +0, +\] +mit der Lösung +\begin{equation} +x_1 += +\frac{a-\sqrt{a^2-(a^2-b^2)x^2}}{(a-b)x}. +\label{buch:elliptisch:unvollstagm:xrek} +\end{equation} +Der Algorithmus zur Berechnung des arithmetisch-geometrischen Mittels +muss daher verallgemeinert werden zu +\begin{equation} +\left. +\begin{aligned} +a_{n+1} &= \frac{a_n+b_n}2, &\qquad a_0 &= a +\\ +b_{n+1} &= \sqrt{a_nb_n}, & b_0 &= b +\\ +x_{n+1} &= \frac{a_n-\sqrt{a_n^2-(a_n^2-b_n^2)x_n^2}}{(a_n-b_n)x_n}, & x_0 &= x +\end{aligned} +\quad +\right\} +\label{buch:elliptisch:unvollstagm:rek} +\end{equation} +Die Folge $x_n$ konvergiert gegen einen Wert $x_{\infty} = \lim_{n\to\infty} x_n$. +Der Wert des unvollständigen elliptischen Integrals ist dann der Grenzwert +\[ +F(x,k) += +\lim_{n\to\infty} +\frac{\arcsin x_n}{M(a_n,b_n)} += +\frac{\arcsin x_{\infty}}{M(1,\sqrt{1-k^2})}. +\] + +In dieser Form ist die Berechnung allerdings nicht praktisch durchführbar. +Das Problem ist, dass die Differenz $a_n-b_n$, die in +\eqref{buch:elliptisch:unvollstagm:rek} +im Nenner vorkommt, sehr schnell gegen Null geht. +Ausserdem ist die Quadratwurzel im Zähler fast gleich gross wie +$a_n$, was zu Auslöschung und damit ungenauen Resultaten führt. +\label{buch:elliptisch:agm:ellintegral-stabilitaet} + +Eine Möglichkeit, das Problem zu entschärfen, ist, die Rekursionsformel +nach $\varepsilon = a-b$ zu entwickeln. +Mit $a+b=2a+\varepsilon$ kann man $b$ aus der Formel elimineren und erhält +mit Hilfe der binomischen Reihe +\begin{align*} +x_1 +&= +\frac{a}{x\varepsilon} +\left(1-\sqrt{1-\varepsilon(2a-\varepsilon)x^2/a^2}\right) +\\ +&= +\frac{a}{x\varepsilon} +\biggl( +1-\sum_{k=0}^\infty +(-1)^k +\frac{(\frac12)_k}{k!} \varepsilon^k(2a-\varepsilon)^k\frac{x^{2k}}{a^{2k}} +\biggr) +\\ +&= +\sum_{k=1}^\infty +(-1)^{k-1} +\frac{(\frac12)_k}{k!} \varepsilon^{k-1}(2a-\varepsilon)^k\frac{x^{2k-1}}{a^{2k-1}} +\\ +&= +\frac{\frac12}{1!}(2a-\varepsilon)\frac{x}{a} +- +\frac{\frac12\cdot(\frac12-1)}{2!}\varepsilon(2a-\varepsilon)^2\frac{x^3}{a^3} ++ +\frac{\frac12\cdot(\frac12-1)(\frac12-2)}{3!}\varepsilon^2(2a-\varepsilon)^3\frac{x^5}{a^5} +- +\dots +\\ +&= +x\biggl(1-\frac{\varepsilon}{2a}\biggr) +\biggl( +1 +- +\frac{\frac12-1}{2!}\varepsilon(2a-\varepsilon)\frac{x^2}{a^2} ++ +\frac{(\frac12-1)(\frac12-2)}{3!}\varepsilon^2(2a-\varepsilon)^2\frac{x^4}{a^4} +- +\dots +\biggr) +\\ +&= +x\biggl(1-\frac{\varepsilon}{2a}\biggr) +\cdot +\mathstrut_2F_1\biggl( +\begin{matrix}-\frac12,1\\2\end{matrix};-\varepsilon(2a-\varepsilon)\frac{x^2}{a^2} +\biggr). +\end{align*} +Diese Form ist wesentlich besser, aber leider kann es bei der numerischen +Rechnung passieren, dass $\varepsilon < 0$ wird. + +%\subsection{Potenzreihe} +%XXX Potenzreihen \\ +%XXX Als hypergeometrische Funktionen \url{https://www.youtube.com/watch?v=j0t1yWrvKmE} \\ +%XXX Berechnung mit der Landen-Transformation https://en.wikipedia.org/wiki/Landen%27s_transformation diff --git a/buch/chapters/110-elliptisch/elltrigo.tex b/buch/chapters/110-elliptisch/elltrigo.tex index d600243..49e6686 100644 --- a/buch/chapters/110-elliptisch/elltrigo.tex +++ b/buch/chapters/110-elliptisch/elltrigo.tex @@ -18,6 +18,19 @@ auf einer Ellipse. \end{figure} % based on Willliam Schwalm, Elliptic functions and elliptic integrals % https://youtu.be/DCXItCajCyo +Die Ellipse wurde in Abschnitt~\ref{buch:geometrie:subsection:kegelschnitte} +als Kegelschnitt erkannt und auf verschiedene Arten parametrisiert. +In diesem Abschnitt soll gezeigt werden, wie man die Parametrisierung +eines Kreises mit trigonometrischen Funktionen verallgemeinern kann +auf eine Parametrisierung einer Ellipse mit den drei +Funktionen $\operatorname{sn}(u,k)$, +$\operatorname{cn}(u,k)$ und $\operatorname{dn}(u,k)$, +die ähnliche Eigenschaften haben wie die trigonometrischen Funktionen. + +Die nachstehende Darstellung ist stark inspiriert von William Schwalms +sehr zielorientierten Einführung +\cite{buch:schwalm}, welche auch als Youtube-Videovorlesung +\cite{buch:schwalm-youtube} zur Verfügung steht. % % Geometrie einer Ellipse @@ -112,7 +125,7 @@ Punktes auf dem Einheitskreis interpretieren. Für die Koordinaten eines Punktes auf der Ellipse ist dies nicht so einfach, weil es nicht nur eine Ellipse gibt, sondern für jede numerische Exzentrizität -mindestens eine mit Halbeachse $1$. +mindestens eine mit Halbachse $1$. Wir wählen die Ellipsen so, dass $a$ die grosse Halbachse ist, also $a>b$. Als Normierungsbedingung verwenden wir, dass $b=1$ sein soll, wie in Abbildung~\ref{buch:elliptisch:fig:jacobidef}. @@ -161,7 +174,7 @@ x^2(k^2-1) + y^2 = 1. an einer Ellipse mit Halbachsen $a$ und $1$. \label{buch:elliptisch:fig:jacobidef}} \end{figure} -\subsubsection{Definition der elliptischen Funktionen} +\subsubsection{Definition der Jacobischen elliptischen Funktionen} Die elliptischen Funktionen für einen Punkt $P$ auf der Ellipse mit Modulus $k$ können jetzt als Verhältnisse der Koordinaten des Punktes definieren. Es stellt sich aber die Frage, was man als Argument verwenden soll. @@ -472,6 +485,7 @@ wählt, dass Damit haben wir die grundlegenden Ableitungsregeln \begin{satz} +\index{Satz!Ableitungen der Jacobischen elliptischen Funktionen}% \label{buch:elliptisch:satz:ableitungen} Die Jacobischen elliptischen Funktionen haben die Ableitungen \begin{equation} @@ -1003,10 +1017,60 @@ finden. Man beachte, dass in jeder Identität alle Funktionen den gleichen zweiten Buchstaben haben. -\subsubsection{TODO} -XXX algebraische Beziehungen \\ -XXX Additionstheoreme \\ -XXX Perioden +\subsubsection{Weitere Beziehungen} +Für die Jacobischen elliptischen Funktionen lässt sich eine grosse +Zahl weiterer Eigenschaften und Identitäten beweisen. +Zum Beispiel gibt es Aditionstheoreme, die im Grenzfall $k\to 0$ zu +den Additionstheoremen für die trigonometrischen Funktionen werden. +\index{Additionstheorem}% +Ebenso kann man weitere algebraische Identitäten finden. +So lässt sich zum Beispiel die einzige reelle Nullstelle von $x^5+x=w$ +mit Jacobischen elliptischen Funktionen darstellen, während es +nicht möglich ist, diese Lösung als Wurzelausdruck zu schreiben. + +Die Jacobischen elliptischen Funktionen lassen sich statt auf dem +hier gewählten trigonometrischen Weg auch mit Hilfe der Jacobischen +Theta-Funktionen definieren, die Lösungen einer Wärmeleitungsgleichung +\index{Theta-Funktionen}% +\index{Wärmeleitungs-Gleichung}% +mit geeigneten Randbedingungen sind. +Diese Vorgehensweise hat den Vorteil, ziemlich direkt zu +Reihen- und Produktentwicklungen für die Funktionen zu führen. +Auch die Additionstheorem ergeben sich vergleichsweise leicht. +Dieser Zugang zu den Jacobischen elliptischen Funktionen wird in der +Standardreferenz~\cite{buch:ellfun-applications} gewählt. + +Bei anderen speziellen Funktionen waren Reihenentwicklungen ein +wichtiges Hilfsmittel zu deren numerischer Berechnung. +Bei den Jacobischen elliptischen Funktionen ist diese Methode +nicht zielführend. +Im Abschnitt~\ref{buch:elliptisch:subsection:differentialgleichungen} +wird gezeigt, dass Jacobische elliptische Funktionen gewisse nichtlineare +Differentialgleichungen zu lösen ermöglichen. +Dies zeigt auch, dass Jacobischen elliptischen Funktionen +Umkehrfunktionen der elliptischen Integrale sind, die in +Abschnitt~\ref{buch:elliptisch:subsection:agm} mit dem +arithmetisch-geometrischen Mittel berechnet wurden. +Die dort angetroffenen numerischen Schwierigkeiten treten bei der +Berechnung der Umkehrfunktion jedoch nicht auf. + +Die grundlegende Mechanik dieser Berechnungsmethode wird auf +Seite~\pageref{buch:elliptisch:jacobi:agm} dargestellt und +und in den Übungsaufgaben +\ref{buch:elliptisch:aufgabe:2} bis \ref{buch:elliptisch:aufgabe:5} +etwas näher untersucht wird. + +Aus der Theorie das arithmetisch-geometrischen Mittels lässt sich +die sogenannte Landen-Trans\-formation herleiten. +\index{Landen-Transformation}% +Sie stellt eine Verbindung zwischen +den Werten der elliptischen Funktionen zu verschiedenen Moduli $k$ her. +Sie ist die Basis aller effizienten Berechnungsmethoden. + + +% algebraische Beziehungen \\ +% Additionstheoreme \\ +% Perioden % use https://math.stackexchange.com/questions/3013692/how-to-show-that-jacobi-sine-function-is-doubly-periodic diff --git a/buch/chapters/110-elliptisch/experiments/KK.pdf b/buch/chapters/110-elliptisch/experiments/KK.pdf Binary files differnew file mode 100644 index 0000000..13a2739 --- /dev/null +++ b/buch/chapters/110-elliptisch/experiments/KK.pdf diff --git a/buch/chapters/110-elliptisch/experiments/KK.tex b/buch/chapters/110-elliptisch/experiments/KK.tex new file mode 100644 index 0000000..a3ae425 --- /dev/null +++ b/buch/chapters/110-elliptisch/experiments/KK.tex @@ -0,0 +1,66 @@ +% +% KK.tex -- template for standalon tikz images +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{txfonts} +\usepackage{pgfplots} +\usepackage{csvsimple} +\usetikzlibrary{arrows,intersections,math} +\begin{document} +\def\skala{1} +\begin{tikzpicture}[>=latex,thick,scale=\skala] + +\def\dx{10} +\def\dy{3} +\input{KKpath.tex} + +\draw[->] (-0.1,0) -- (10.3,0) coordinate[label={$k$}]; +\draw[->] (0,-0.1) -- (0,{2*\dy+0.3}) coordinate[label={right:$y$}]; + +\node at (3,{1.2*\dy}) {$\displaystyle y = \frac{K(k)}{K(\!\sqrt{1-k^2})}$}; + +\begin{scope} +\clip (0,0) rectangle (10,{2*\dy}); +\draw[color=red,line width=1.4pt] \KKpath; +\end{scope} + +\draw[line width=0.2pt] (10,0) -- (10,{2*\dy}); + +\foreach \y in {0.0,0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0}{ + \draw (-0.05,{\y*\dy}) -- (0.05,{\y*\dy}); + \node at (0,{\y*\dy}) [left] {$\y\mathstrut$}; +} + +\foreach \k in {1,...,9}{ + \draw ({\k*\dx/10},-0.05) -- ({\k*\dx/10},0.05); + \node at ({\k*\dx/10},0) [below] {$0.\k\mathstrut$}; +} +\node at (0,0) [below] {$0\mathstrut$}; +\node at (10,0) [below] {$1\mathstrut$}; + +\draw[color=blue] ({\knull*\dx},0) -- ({\knull*\dx},{\KKnull*\dy}); +\foreach \y in {1,2,3,4}{ + \draw[color=blue] + ({\knull*\dx-0.05},{\y*\KKnull*\dy/5}) + -- + ({\knull*\dx+0.05},{\y*\KKnull*\dy/5}); +} +\draw[color=black,line width=0.1pt] (0,{\KKnull*\dy}) -- ({\knull*\dx},{\KKnull*\dy}); +\draw[color=black,line width=0.1pt] (0,{\KKnull*\dy/5}) -- ({\kone*\dx},{\KKnull*\dy/5}); +\node at ({0.6*\dx},{\KKnull*\dy}) [above] {$y=1.7732$}; +\node at ({0.6*\dx},{\KKnull*\dy/5}) [above] {$y=0.3546$}; +\draw[color=blue] ({\kone*\dx},0) -- ({\kone*\dx},{\KKnull*\dy/5}); +\draw[color=blue] ({\kone*\dx},{\KKnull*\dy/5}) -- ({\knull*\dx},{\KKnull*\dy/5}); +\fill[color=blue] ({\kone*\dx},{\KKnull*\dy/5}) circle[radius=0.05]; +\fill[color=blue] ({\knull*\dx},{\KKnull*\dy/5}) circle[radius=0.05]; +\fill[color=blue] ({\knull*\dx},{\KKnull*\dy}) circle[radius=0.05]; +\node[color=blue] at ({\knull*\dx},0) [left,rotate=90] {$k=0.97\mathstrut$}; +\node[color=blue] at ({\kone*\dx},0) [left,rotate=90] {$k_1=0.0477$}; + +\end{tikzpicture} +\end{document} + diff --git a/buch/chapters/110-elliptisch/experiments/KN.cpp b/buch/chapters/110-elliptisch/experiments/KN.cpp new file mode 100644 index 0000000..1dcca9e --- /dev/null +++ b/buch/chapters/110-elliptisch/experiments/KN.cpp @@ -0,0 +1,177 @@ +/* + * KN.cpp + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ +#include <cstdlib> +#include <cstdio> +#include <cmath> +#include <iostream> +#include <fstream> +#include <sstream> +#include <getopt.h> +#include <vector> +#include <gsl/gsl_sf_elljac.h> +#include <gsl/gsl_sf_ellint.h> + +namespace KN { + +bool debug = false; + +static struct option longopts[] { +{ "debug", no_argument, NULL, 'd' }, +{ "N", required_argument, NULL, 'N' }, +{ "outfile", required_argument, NULL, 'o' }, +{ "min", required_argument, NULL, 'm' }, +{ NULL, 0, NULL, 0 } +}; + +double KprimeK(double k) { + double kprime = sqrt(1-k*k); + if (debug) + printf("%s:%d: k = %f, k' = %f\n", __FILE__, __LINE__, k, kprime); + double v + = + gsl_sf_ellint_Kcomp(k, GSL_PREC_DOUBLE) + / + gsl_sf_ellint_Kcomp(kprime, GSL_PREC_DOUBLE) + ; + if (debug) + printf("%s:%d: KprimeK(k = %f) = %f\n", __FILE__, __LINE__, k, v); + return v; +} + +static const int L = 100000000; +static const double h = 1. / L; + +double Kd(double k) { + double m = 0; + if (k < h) { + m = 2 * (KprimeK(k) - KprimeK(k / 2)) / k; + } else if (k > 1-h) { + m = 2 * (KprimeK((1 + k) / 2) - KprimeK(k)) / (1 - k); + + } else { + m = L * (KprimeK(k + h) - KprimeK(k)); + } + if (debug) + printf("%s:%d: Kd(%f) = %f\n", __FILE__, __LINE__, k, m); + return m; +} + +double k1(double y) { + if (debug) + printf("%s:%d: Newton for y = %f\n", __FILE__, __LINE__, y); + double kn = 0.5; + double delta = 1; + int n = 0; + while ((fabs(delta) > 0.000001) && (n < 10)) { + double yn = KprimeK(kn); + if (debug) + printf("%s:%d: k%d = %f, y%d = %f\n", __FILE__, __LINE__, n, kn, n, yn); + delta = (yn - y) / Kd(kn); + if (debug) + printf("%s:%d: delta = %f\n", __FILE__, __LINE__, delta); + double kneu = kn - delta; + if (kneu <= 0) { + kneu = kn / 4; + } + if (kneu >= 1) { + kneu = (3 + kn) / 4; + } + kn = kneu; + if (debug) + printf("%s:%d: kneu = %f, kn = %f\n", __FILE__, __LINE__, kneu, kn); + n++; + } + if (debug) + printf("%s:%d: Newton result: k = %f\n", __FILE__, __LINE__, kn); + return kn; +} + +double k1(int N, double k) { + return k1(KprimeK(k) / N); +} + +/** + * \brief Main function for the slcl program + */ +int main(int argc, char *argv[]) { + int longindex; + int c; + int N = 5; + double kmin = 0.01; + std::string outfilename; + while (EOF != (c = getopt_long(argc, argv, "d:N:o:m:", + longopts, &longindex))) + switch (c) { + case 'd': + debug = true; + break; + case 'N': + N = std::stoi(optarg); + break; + case 'o': + outfilename = std::string(optarg); + break; + case 'm': + kmin = std::stod(optarg); + break; + } + + double d = 0.01; + if (outfilename.size() > 0) { + FILE *fn = fopen(outfilename.c_str(), "w"); + fprintf(fn, "\\def\\KKpath{ "); + double k = d; + fprintf(fn, " (0,0)"); + double k0 = k/16; + while (k0 < k) { + fprintf(fn, "\n\t-- ({%.4f*\\dx},{%.4f*\\dy})", k0, KprimeK(k0)); + k0 *= 2; + } + while (k < 1-0.5*d) { + fprintf(fn, "\n\t-- ({%.4f*\\dx},{%.4f*\\dy})", k, KprimeK(k)); + k += d; + } + fprintf(fn, "}\n"); + + k0 = 0.97; + fprintf(fn, "\\def\\knull{%.4f}\n", k0); + double KK = KprimeK(k0); + fprintf(fn, "\\def\\KKnull{%.4f}\n", KK); + fprintf(fn, "\\def\\kone{%.4f}\n", k1(N, k0)); + + fclose(fn); + return EXIT_SUCCESS; + } + + for (double k = kmin; k < (1 - d/2); k += d) { + if (debug) + printf("%s:%d: k = %f\n", __FILE__, __LINE__, k); + double y = KprimeK(k); + double k0 = k1(y); + double kone = k1(N, k0); + printf("g(%4.2f) = %10.6f,", k, y); + printf(" g'(%.2f) = %10.6f,", k, Kd(k)); + printf(" g^{-1} = %10.6f,", k0); + printf(" k1 = %10.6f,", kone); + printf(" g(k1) = %10.6f\n", KprimeK(kone)); + } + + return EXIT_SUCCESS; +} + +} // namespace KN + +int main(int argc, char *argv[]) { + try { + return KN::main(argc, argv); + } catch (const std::exception& e) { + std::cerr << "terminated by exception: " << e.what(); + std::cerr << std::endl; + } catch (...) { + std::cerr << "terminated by unknown exception" << std::endl; + } + return EXIT_FAILURE; +} diff --git a/buch/chapters/110-elliptisch/experiments/Makefile b/buch/chapters/110-elliptisch/experiments/Makefile new file mode 100644 index 0000000..fac4fbc --- /dev/null +++ b/buch/chapters/110-elliptisch/experiments/Makefile @@ -0,0 +1,15 @@ +# +# Makefile +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschlue +# +all: KK.pdf + +KN: KN.cpp + g++ -O -Wall -std=c++11 KN.cpp -o KN `pkg-config --cflags gsl` `pkg-config --libs gsl` + +KKpath.tex: KN + ./KN --outfile KKpath.tex + +KK.pdf: KK.tex KKpath.tex + pdflatex KK.tex diff --git a/buch/chapters/110-elliptisch/images/Makefile b/buch/chapters/110-elliptisch/images/Makefile index a7c9e74..7636e65 100644 --- a/buch/chapters/110-elliptisch/images/Makefile +++ b/buch/chapters/110-elliptisch/images/Makefile @@ -5,7 +5,8 @@ # all: lemniskate.pdf ellipsenumfang.pdf unvollstaendig.pdf rechteck.pdf \ ellipse.pdf pendel.pdf jacobiplots.pdf jacobidef.pdf jacobi12.pdf \ - sncnlimit.pdf slcl.pdf + sncnlimit.pdf slcl.pdf torusschnitt.pdf kegelpara.pdf lemnispara.pdf \ + ellpolnul.pdf ellall.pdf ellselection.pdf lemniskate.pdf: lemniskate.tex pdflatex lemniskate.tex @@ -78,3 +79,52 @@ slcldata.tex: slcl ./slcl --outfile=slcldata.tex --a=0 --b=13.4 --steps=200 slcl.pdf: slcl.tex slcldata.tex pdflatex slcl.tex + +KEGELSIZE = -W256 -H256 +KEGELSIZE = -W128 -H128 +KEGELSIZE = -W1080 -H1080 +kegelpara.png: kegelpara.pov + povray +A0.1 $(KEGELSIZE) -Okegelpara.png kegelpara.pov + +kegelpara.jpg: kegelpara.png Makefile + convert -extract 1080x1040+0+0 kegelpara.png \ + -density 300 -units PixelsPerInch kegelpara.jpg + +kegelpara.pdf: kegelpara.tex kegelpara.jpg + pdflatex kegelpara.tex + +torusschnitt.png: torusschnitt.pov + povray +A0.1 -W1920 -H1080 -Otorusschnitt.png torusschnitt.pov + +torusschnitt.jpg: torusschnitt.png Makefile + convert -extract 1640x1080+140+0 torusschnitt.png \ + -density 300 -units PixelsPerInch torusschnitt.jpg + +torusschnitt.pdf: torusschnitt.tex torusschnitt.jpg + pdflatex torusschnitt.tex + +lemnispara: lemnispara.cpp + g++ -O2 -Wall -g -o lemnispara `pkg-config --cflags gsl` \ + lemnispara.cpp `pkg-config --libs gsl` + +lemnisparadata.tex: lemnispara + ./lemnispara + +lemnispara.pdf: lemnispara.tex lemnisparadata.tex + pdflatex lemnispara.tex + +ltest: lemnispara.pdf + +ellpolnul.pdf: ellpolnul.tex ellcommon.tex + pdflatex ellpolnul.tex +ellall.pdf: ellall.tex ellcommon.tex + pdflatex ellall.tex + +rechteckpfade2.tex: rechteck Makefile + ./rechteck --outfile rechteckpfade2.tex --k 0.87 --vsteps=1 +ellselection.pdf: ellselection.tex rechteckpfade2.tex + pdflatex ellselection.tex + +rechteckpfade3.tex: rechteck + ./rechteck --outfile rechteckpfade3.tex --k 0.70710678118654752440 \ + --vsteps=4 diff --git a/buch/chapters/110-elliptisch/images/ellall.pdf b/buch/chapters/110-elliptisch/images/ellall.pdf Binary files differnew file mode 100644 index 0000000..fd0a5dd --- /dev/null +++ b/buch/chapters/110-elliptisch/images/ellall.pdf diff --git a/buch/chapters/110-elliptisch/images/ellall.tex b/buch/chapters/110-elliptisch/images/ellall.tex new file mode 100644 index 0000000..b37fe12 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/ellall.tex @@ -0,0 +1,215 @@ +% +% ellpolnul.tex -- template for standalon tikz images +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{txfonts} +\usepackage{pgfplots} +\usepackage{csvsimple} +\usetikzlibrary{arrows,intersections,math,calc} +\begin{document} +\input{ellcommon.tex} +\def\skala{1} +\begin{tikzpicture}[>=latex,thick,scale=\skala] + +%\draw (-1,-1) rectangle (1,1); +%\node at (-1,-1) [below left] {$0$}; +%\node at (1,-1) [below right] {$K$}; +%\node at (1,1) [above right] {$K+iK'$}; +%\node at (-1,1) [above left] {$iK'$}; +%\node at (0,0) {$u$}; + +\fill[color=rot!10,opacity=0.5] (-5.5,-4.3) rectangle (7.3,-1.7); +\fill[color=blau!10,opacity=0.5] (-5.5,-7.3) rectangle (7.3,-4.7); +\fill[color=gruen!10,opacity=0.5] (-5.5,-10.3) rectangle (7.3,-7.7); + +\fill[color=rot!10,opacity=0.5] (-1.3,-10.5) rectangle (1.3,2.5); +\fill[color=blau!10,opacity=0.5] (1.7,-10.5) rectangle (4.3,2.5); +\fill[color=gruen!10,opacity=0.5] (4.7,-10.5) rectangle (7.3,2.5); + +\begin{scope}[xshift=1.5cm,yshift=2cm] +\node at (0,0) {Zähler}; +\draw[<-] (-4.5,0) -- (-1,0); +\draw[->] (1,0) -- (4.5,0); +\node[color=black] at (-4.5,-0.4) {\Large n}; +\node[color=rot] at (-1.5,-0.4) {\Large s}; +\node[color=blau] at (1.5,-0.4) {\Large c}; +\node[color=gruen] at (4.5,-0.4) {\Large d}; +\end{scope} + +\begin{scope}[xshift=-5.1cm,yshift=-4.5cm] +\node at (0,0) [rotate=90] {Nenner}; +\draw[<-] (0,-4.5) -- (0,-1); +\draw[->] (0,1) -- (0,4.5); +\node[color=gruen] at (0.4,-4.5) [rotate=90] {\Large d}; +\node[color=blau] at (0.4,-1.5) [rotate=90] {\Large c}; +\node[color=rot] at (0.4,1.5) [rotate=90] {\Large s}; +\node[color=black] at (0.4,4.5) [rotate=90] {\Large n}; +\end{scope} + +\begin{scope}[xshift=-3cm,yshift=0cm] +\node at (0,0) {$1$}; +\draw[color=gray!20] (-1,-1) rectangle (1,1); +\end{scope} + +\definecolor{sccolor}{rgb}{0.8,0.0,1.0} +\definecolor{sdcolor}{rgb}{0.6,0.6,0.0} +\definecolor{cdcolor}{rgb}{0.0,0.6,1.0} + +\begin{scope}[xshift=0cm] +\rechteck{rot}{\operatorname{sn}(u,k)} +\nullstelle{(-1,-1)}{rot} +\pol{(-1,1)}{rot} +\node at (-1,-1) {$0$}; +\node at (1,-1) {$1$}; +\node at (1,1) {$\frac1k$}; +\node at (-1,1) {$\infty$}; +\end{scope} + +\begin{scope}[xshift=3cm] +\rechteck{blau}{\operatorname{cn}(u,k)} +\nullstelle{(1,-1)}{blau} +\pol{(-1,1)}{blau} +\node at (-1,-1) {$1$}; +\node at (1,-1) {$0$}; +\node at (1,1) {$\frac{k'}{ik}$}; +\node at (-1,1) {$\infty$}; +\end{scope} + +\begin{scope}[xshift=6cm] +\rechteck{gruen}{\operatorname{dn}(u,k)} +\nullstelle{(1,1)}{gruen} +\pol{(-1,1)}{gruen} +\node at (-1,-1) {$1$}; +\node at (1,-1) {$k'$}; +\node at (1,1) {$0$}; +\node at (-1,1) {$\infty$}; +\end{scope} + +% +% start row with denominator sn(u,k) +% + +\begin{scope}[xshift=-3cm,yshift=-3cm] +\rechteck{rot}{\operatorname{ns}(u,k)} +\pol{(-1,-1)}{rot} +\nullstelle{(-1,1)}{rot} +\node at (-1,-1) {$\infty$}; +\node at (1,-1) {$1$}; +\node at (1,1) {$k$}; +\node at (-1,1) {$0$}; +\end{scope} + +\begin{scope}[xshift=0cm,yshift=-3cm] +%\rechteck{gray}{1} +\fill[color=white] (-1,-1) rectangle (1,1); +\node[color=gray] at (0,0) {$1$}; +\end{scope} + +\begin{scope}[xshift=3cm,yshift=-3cm] +\rechteck{sccolor}{\operatorname{cs}(u,k)} +\pol{(-1,-1)}{sccolor} +\nullstelle{(1,-1)}{sccolor} +\node at (-1,-1) {$\infty$}; +\node at (1,-1) {$0$}; +\node at (1,1) {$\frac{k'}{i}$}; +\node at (-1,1) {$ $}; +\end{scope} + +\begin{scope}[xshift=6cm,yshift=-3cm] +\rechteck{sdcolor}{\operatorname{ds}(u,k)} +\pol{(-1,-1)}{sdcolor} +\nullstelle{(1,1)}{sdcolor} +\node at (-1,-1) {$\infty$}; +\node at (1,-1) {$k'$}; +\node at (1,1) {$0$}; +\node at (-1,1) {$ $}; +\end{scope} + +% +% start row with denominator cn(u,k) +% + +\begin{scope}[xshift=-3cm,yshift=-6cm] +\rechteck{blau}{\operatorname{nc}(u,k)} +\pol{(1,-1)}{blau} +\nullstelle{(-1,1)}{blau} +\node at (-1,-1) {$1$}; +\node at (-1,1) {$0$}; +\node at (1,-1) {$\infty$}; +\node at (1,1) {$\frac{ik}{k'}$}; +\end{scope} + +\begin{scope}[xshift=0cm,yshift=-6cm] +\rechteck{sccolor}{\operatorname{sc}(u,k)} +\nullstelle{(-1,-1)}{sccolor} +\pol{(1,-1)}{sccolor} +\node at (-1,-1) {$0$}; +\node at (1,-1) {$\infty$}; +\node at (-1,1) {$ $}; +\node at (1,1) {$\frac{i}{k'}$}; +\end{scope} + +\begin{scope}[xshift=3cm,yshift=-6cm] +%\rechteck{gray}{1} +\fill[color=white] (-1,-1) rectangle (1,1); +\node[color=gray] at (0,0) {$1$}; +\end{scope} + +\begin{scope}[xshift=6cm,yshift=-6cm] +\rechteck{cdcolor}{\operatorname{dc}(u,k)} +\nullstelle{(1,1)}{cdcolor} +\pol{(1,-1)}{cdcolor} +\node at (-1,-1) {$1$}; +\node at (1,-1) {$\infty$}; +\node at (-1,1) {$k$}; +\node at (1,1) {$0$}; +\end{scope} + +% +% start row with denominator dn(u,k) +% + +\begin{scope}[xshift=-3cm,yshift=-9cm] +\rechteck{gruen}{\operatorname{nd}(u,k)} +\pol{(1,1)}{gruen} +\nullstelle{(-1,1)}{gruen} +\node at (-1,-1) {$1$}; +\node at (-1,1) {$0$}; +\node at (1,-1) {$\frac{1}{k'}$}; +\node at (1,1) {$\infty$}; +\end{scope} + +\begin{scope}[xshift=0cm,yshift=-9cm] +\rechteck{sdcolor}{\operatorname{sd}(u,k)} +\nullstelle{(-1,-1)}{sdcolor} +\pol{(1,1)}{sdcolor} +\node at (-1,-1) {$0$}; +\node at (1,-1) {$\frac{1}{k'}$}; +\node at (-1,1) {$ $}; +\node at (1,1) {$\infty$}; +\end{scope} + +\begin{scope}[xshift=3cm,yshift=-9cm] +\rechteck{cdcolor}{\operatorname{cd}(u,k)} +\pol{(1,1)}{cdcolor} +\nullstelle{(1,-1)}{cdcolor} +\node at (-1,-1) {$1$}; +\node at (-1,1) {$\frac1k $}; +\node at (1,-1) {$0$}; +\node at (1,1) {$\infty$}; +\end{scope} + +\begin{scope}[xshift=6cm,yshift=-9cm] +%\rechteck{gray}{1} +\fill[color=white] (-1,-1) rectangle (1,1); +\node[color=gray] at (0,0) {$1$}; +\end{scope} + + +\end{tikzpicture} +\end{document} + diff --git a/buch/chapters/110-elliptisch/images/ellcommon.tex b/buch/chapters/110-elliptisch/images/ellcommon.tex new file mode 100644 index 0000000..cd3245d --- /dev/null +++ b/buch/chapters/110-elliptisch/images/ellcommon.tex @@ -0,0 +1,24 @@ +% +% ellcommon.tex -- common macros/definitions for elliptic function +% values display +% +% (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\definecolor{rot}{rgb}{0.8,0,0} +\definecolor{blau}{rgb}{0,0,1} +\definecolor{gruen}{rgb}{0,0.6,0} +\def\l{0.2} + +\def\pol#1#2{ + \draw[color=#2!50,line width=3.0pt] + ($#1+(-\l,-\l)$) -- ($#1+(\l,\l)$); + \draw[color=#2!50,line width=3.0pt] + ($#1+(-\l,\l)$) -- ($#1+(\l,-\l)$); +} +\def\nullstelle#1#2{ + \draw[color=#2!50,line width=3.0pt] #1 circle[radius=\l]; +} +\def\rechteck#1#2{ + \fill[color=#1!20] (-1,-1) rectangle (1,1); + \node[color=#1] at (0,0) {$#2\mathstrut$}; +} diff --git a/buch/chapters/110-elliptisch/images/ellpolnul.pdf b/buch/chapters/110-elliptisch/images/ellpolnul.pdf Binary files differnew file mode 100644 index 0000000..d798169 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/ellpolnul.pdf diff --git a/buch/chapters/110-elliptisch/images/ellpolnul.tex b/buch/chapters/110-elliptisch/images/ellpolnul.tex new file mode 100644 index 0000000..dfa04d3 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/ellpolnul.tex @@ -0,0 +1,69 @@ +% +% ellpolnul.tex -- template for standalon tikz images +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{txfonts} +\usepackage{pgfplots} +\usepackage{csvsimple} +\usetikzlibrary{arrows,intersections,math,calc} +\begin{document} +\input{ellcommon.tex} +\def\skala{1} +\begin{tikzpicture}[>=latex,thick,scale=\skala] + +\input rechteckpfade3.tex + +\pgfmathparse{2/\xmax} +\xdef\dx{\pgfmathresult} +\xdef\dy{\dx} + +\begin{scope}[xshift=-1cm,yshift=-1cm] +\clip (0,0) rectangle (2,2); +\netz{0.4pt} +\draw[line width=0.4pt] (-1,0) -- (1,0); +\end{scope} +\fill[color=white,opacity=0.7] (-1,-1) rectangle (1,1); +\draw (-1,-1) rectangle (1,1); +\node at (-1,-1) [below left] {$0$}; +\node at (1,-1) [below right] {$K$}; +\node at (1,1) [above right] {$K+iK'$}; +\node at (-1,1) [above left] {$iK'$}; +\node at (0,0) {$u$}; + +\begin{scope}[xshift=4cm] +\rechteck{rot}{\operatorname{sn}(u,k)} +\nullstelle{(-1,-1)}{rot} +\pol{(-1,1)}{rot} +\node at (-1,-1) {$0$}; +\node at (1,-1) {$1$}; +\node at (1,1) {$\frac1k$}; +\node at (-1,1) {$\infty$}; +\end{scope} + +\begin{scope}[xshift=7cm] +\rechteck{blau}{\operatorname{cn}(u,k)} +\nullstelle{(1,-1)}{blau} +\pol{(-1,1)}{blau} +\node at (-1,-1) {$1$}; +\node at (1,-1) {$0$}; +\node at (1,1) {$\frac{k'}{ik}$}; +\node at (-1,1) {$\infty$}; +\end{scope} + +\begin{scope}[xshift=10cm] +\rechteck{gruen}{\operatorname{dn}(u,k)} +\nullstelle{(1,1)}{gruen} +\pol{(-1,1)}{gruen} +\node at (-1,-1) {$1$}; +\node at (1,-1) {$k'$}; +\node at (1,1) {$0$}; +\node at (-1,1) {$\infty$}; +\end{scope} + +\end{tikzpicture} +\end{document} + diff --git a/buch/chapters/110-elliptisch/images/ellselection.pdf b/buch/chapters/110-elliptisch/images/ellselection.pdf Binary files differnew file mode 100644 index 0000000..7c98db1 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/ellselection.pdf diff --git a/buch/chapters/110-elliptisch/images/ellselection.tex b/buch/chapters/110-elliptisch/images/ellselection.tex new file mode 100644 index 0000000..d8afeb1 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/ellselection.tex @@ -0,0 +1,141 @@ +% +% ellselection.tex -- Wahl einer elliptischen Funktion +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{txfonts} +\usepackage{pgfplots} +\usepackage{csvsimple} +\usetikzlibrary{arrows,intersections,math} +\begin{document} +\def\skala{1} +\begin{tikzpicture}[>=latex,thick,scale=\skala] + +\input{rechteckpfade2.tex} + +\def\l{0.45} +\pgfmathparse{\l*72/2.54} +\xdef\L{\pgfmathresult} + +\pgfmathparse{4.1/\xmax} +\xdef\dx{\pgfmathresult} +\xdef\dy{\dx} + +\def\sx{4.1} +\pgfmathparse{\sx*72/2.54} +\xdef\Sx{\pgfmathresult} + +\pgfmathparse{\dx*\ymax} +\xdef\sy{\pgfmathresult} +\pgfmathparse{\sy*72/2.54} +\xdef\Sy{\pgfmathresult} + +\pgfmathparse{\sx/2-\l} +\xdef\linksx{\pgfmathresult} +\pgfmathparse{\sy/2-\l} +\xdef\linksy{\pgfmathresult} + +\pgfmathparse{\sx/2+2*\l} +\xdef\rechtsx{\pgfmathresult} +\pgfmathparse{\sy/2} +\xdef\rechtsy{\pgfmathresult} + +\begin{scope} + \clip (-\sx,-\sy) rectangle (\sx,\sy); + \begin{scope}[xshift={-\Sx}] + \hintergrund + \netz{0.7pt} + \end{scope} + \begin{scope}[xshift={\Sx}] + \hintergrund + \netz{0.7pt} + \end{scope} +\end{scope} + +\fill[color=red!14,opacity=0.7] ({-\sx},0) rectangle (\sx,\sy); +\fill[color=blue!14,opacity=0.7] ({-\sx},{-\sy}) rectangle (\sx,0); +\fill[color=yellow!40,opacity=0.5] (0,0) rectangle (\sx,\sy); + +\draw (-\sx,-\sy) rectangle (\sx,\sy); + +\draw[->] ({-1.4*\sx},0) -- ({1.4*\sx},0) coordinate[label={$\Re u$}]; +\draw[->] (0,{-\sy-1}) -- (0,{\sy+1}) coordinate[label={right:$\Im u$}]; + +\definecolor{darkgreen}{rgb}{0,0.6,0} + +\draw[->,line width=1.9pt,color=darkgreen] + (\sx,0) to[out=180,in=-79] (\linksx,\linksy); +\draw[->,line width=1.9pt,color=darkgreen] + (\sx,{\sy-\l}) to[out=-90,in=0] (\rechtsx,\rechtsy); + +\def\rect#1#2{ + \fill[color=white] (-\l,-\l) rectangle (\l,\l); + #2 + \draw (-\l,-\l) rectangle (\l,\l); + \node at (0,0) {\Huge #1\strut}; +} + +\def\kreuz{ + \begin{scope} + \clip ({-\l},{-\l}) rectangle ({\l},{\l}); + \fill[color=white] ({-2*\l},{-2*\l}) rectangle ({2*\l},{2*\l}); + \draw[color=darkgreen!30,line width=3pt] (-\l,-\l) -- (\l,\l); + \draw[color=darkgreen!30,line width=3pt] (-\l,\l) -- (\l,-\l); + \end{scope} +} + +\def\kreis{ + \begin{scope} + \clip ({-\l},{-\l}) rectangle ({\l},{\l}); + \fill[color=white] ({-2*\l},{-2*\l}) rectangle ({2*\l},{2*\l}); + \draw[color=darkgreen!30,line width=3pt] + (0,0) circle[radius={\l*(\L-1.5)/\L}]; + \end{scope} +} + +\begin{scope}[xshift={0},yshift={0}] + \rect{s}{} +\end{scope} + +\begin{scope}[xshift={\Sx},yshift={0}] + \rect{c}{\kreis} +\end{scope} + +\begin{scope}[xshift={\Sx},yshift={\Sy}] + \rect{d}{\kreuz} +\end{scope} + +\begin{scope}[xshift={0},yshift={\Sy}] + \rect{n}{} +\end{scope} + +\node at ({-\l+0.1},{\sy+\l-0.1}) [above left] {$iK'\mathstrut$}; +\node at ({-\l+0.1},{-\l+0.1}) [below left] {$0\mathstrut$}; +\node at ({\sx+\l-0.1},{-\l+0.1}) [below right] {$K\mathstrut$}; +\node at ({\sx+\l-0.1},{\sy+\l-0.1}) [above right] {$K+iK'\mathstrut$}; +\node at ({-\sx},0) [below left] {$-K\mathstrut$}; +\node at (0,{-\sy+0.05}) [below left] {$-iK'\mathstrut$}; +\node at ({\sx-0.1},{-\sy+0.1}) [below right] {$K-iK'\mathstrut$}; +\node at ({-\sx+0.1},{-\sy+0.1}) [below left] {$-K-iK'\mathstrut$}; +\node at ({-\sx+0.1},{\sy-0.1}) [above left] {$-K+iK'\mathstrut$}; + +\begin{scope}[xshift={-\L+0.5*\Sx},yshift={0.5*\Sy}] + \node at ({-\l},{\l-0.1}) [above] {Nullstelle\strut}; + \kreis + \node[color=darkgreen] at (0,0) {\Huge c\strut}; + \draw[line width=0.2pt] (-\l,-\l) rectangle (\l,\l); +\end{scope} + +\begin{scope}[xshift={\L+0.5*\Sx},yshift={0.5*\Sy}] + \node at ({\l},{\l-0.1}) [above] {Pol\strut}; + \kreuz + \node[color=darkgreen] at (0,0) {\Huge d\strut}; + \draw[line width=0.2pt] (-\l,-\l) rectangle (\l,\l); +\end{scope} + +\end{tikzpicture} +\end{document} + diff --git a/buch/chapters/110-elliptisch/images/jacobiplots.pdf b/buch/chapters/110-elliptisch/images/jacobiplots.pdf Binary files differindex f0e6e78..eb9d7f1 100644 --- a/buch/chapters/110-elliptisch/images/jacobiplots.pdf +++ b/buch/chapters/110-elliptisch/images/jacobiplots.pdf diff --git a/buch/chapters/110-elliptisch/images/kegelpara.pdf b/buch/chapters/110-elliptisch/images/kegelpara.pdf Binary files differnew file mode 100644 index 0000000..2bbd428 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/kegelpara.pdf diff --git a/buch/chapters/110-elliptisch/images/kegelpara.pov b/buch/chapters/110-elliptisch/images/kegelpara.pov new file mode 100644 index 0000000..13b66cc --- /dev/null +++ b/buch/chapters/110-elliptisch/images/kegelpara.pov @@ -0,0 +1,329 @@ +// +// kegelpara.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "colors.inc" + +#declare O = <0,0,0>; + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.08; + +camera { + location <28, 20, -40> + look_at <0, 0.1, 0> + right x * imagescale + up y * imagescale +} + +light_source { + <30, 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 <from> to <to> with thickness <arrowthickness> with +// color <c> +// +#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.6,0,0>,<2.5,0,0>,0.02,White) +arrow(<0,-2,0>,<0,2.3,0>,0.02,White) +arrow(<0,0,-3.2>,<0,0,3.7>,0.02,White) + +#declare epsilon = 0.0001; +#declare l = 1.5; + +#macro Kegel(farbe) +union { + difference { + cone { O, 0, <l, 0, 0>, l } + cone { O + <epsilon, 0,0>, 0, <l+epsilon, 0, 0>, l } + } + difference { + cone { O, 0, <-l, 0, 0>, l } + cone { O + <-epsilon, 0, 0>, 0, <-l-epsilon, 0, 0>, l } + } + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Kegelpunkt(xx, phi) + < xx, xx * sin(phi), xx * cos(phi) > +#end + +#macro Kegelgitter(farbe, r) +union { + #declare s = 0; + #declare smax = 2 * pi; + #declare sstep = pi / 6; + #while (s < smax - sstep/2) + cylinder { Kegelpunkt(l, s), Kegelpunkt(-l, s), r } + #declare s = s + sstep; + #end + #declare phimax = 2 * pi; + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #declare xxstep = 0.5; + #declare xxmax = 2; + #declare xx = xxstep; + #while (xx < xxmax - xxstep/2) + #declare phi = 0; + #while (phi < phimax - phistep/2) + cylinder { + Kegelpunkt(xx, phi), + Kegelpunkt(xx, phi + phistep), + r + } + sphere { Kegelpunkt(xx, phi), r } + cylinder { + Kegelpunkt(-xx, phi), + Kegelpunkt(-xx, phi + phistep), + r + } + sphere { Kegelpunkt(-xx, phi), r } + #declare phi = phi + phistep; + #end + #declare xx = xx + xxstep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro F(w, r) + <r * cos(w), r * r/sqrt(2), r * sin(w) > +#end + +#macro Paraboloid(farbe) +mesh { + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phisteps = 100; + #declare phistep = pi / phisteps; + #declare rsteps = 100; + #declare rmax = 1.5; + #declare rstep = rmax / rsteps; + #while (phi < phimax - phistep/2) + #declare r = rstep; + #declare h = r * r / sqrt(2); + triangle { + O, F(phi, r), F(phi + phistep, r) + } + #while (r < rmax - rstep/2) + // ring + triangle { + F(phi, r), + F(phi + phistep, r), + F(phi + phistep, r + rstep) + } + triangle { + F(phi, r), + F(phi + phistep, r + rstep), + F(phi, r + rstep) + } + #declare r = r + rstep; + #end + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Paraboloidgitter(farbe, gr) +union { + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phistep = pi / 6; + + #declare rmax = 1.5; + #declare rsteps = 100; + #declare rstep = rmax / rsteps; + + #while (phi < phimax - phistep/2) + #declare r = rstep; + #while (r < rmax - rstep/2) + cylinder { F(phi, r), F(phi, r + rstep), gr } + sphere { F(phi, r), gr } + #declare r = r + rstep; + #end + #declare phi = phi + phistep; + #end + + #declare rstep = 0.2; + #declare r = rstep; + + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #while (r < rmax) + #declare phi = 0; + #while (phi < phimax - phistep/2) + cylinder { F(phi, r), F(phi + phistep, r), gr } + sphere { F(phi, r), gr } + #declare phi = phi + phistep; + #end + #declare r = r + rstep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare a = sqrt(2); +#macro G(phi,sg) + < a*sg*sqrt(cos(2*phi))*cos(phi), a*cos(2*phi), a*sqrt(cos(2*phi))*sin(phi)> +#end + +#macro Lemniskate3D(s, farbe) +union { + #declare phi = -pi / 4; + #declare phimax = pi / 4; + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #while (phi < phimax - phistep/2) + sphere { G(phi,1), s } + cylinder { G(phi,1), G(phi+phistep,1), s } + sphere { G(phi,-1), s } + cylinder { G(phi,-1), G(phi+phistep,-1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare a = sqrt(2); +#macro G2(phi,sg) + a * sqrt(cos(2*phi)) * < sg * cos(phi), 0, sin(phi)> +#end + +#macro Lemniskate(s, farbe) +union { + #declare phi = -pi / 4; + #declare phimax = pi / 4; + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #while (phi < phimax - phistep/2) + sphere { G2(phi,1), s } + cylinder { G2(phi,1), G2(phi+phistep,1), s } + sphere { G2(phi,-1), s } + cylinder { G2(phi,-1), G2(phi+phistep,-1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Projektion(s, farbe) +union { + #declare phistep = pi / 16; + #declare phi = -pi / 4 + phistep; + #declare phimax = pi / 4; + #while (phi < phimax - phistep/2) + cylinder { G(phi, 1), G2(phi, 1), s } + cylinder { G(phi, -1), G2(phi, -1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare kegelfarbe = rgbf<0.2,0.6,0.2,0.2>; +#declare kegelgitterfarbe = rgb<0.2,0.8,0.2>; +#declare paraboloidfarbe = rgbf<0.2,0.6,1.0,0.2>; +#declare paraboloidgitterfarbe = rgb<0.4,1,1>; + +//intersection { +// union { + Paraboloid(paraboloidfarbe) + Paraboloidgitter(paraboloidgitterfarbe, 0.004) + + Kegel(kegelfarbe) + Kegelgitter(kegelgitterfarbe, 0.004) +// } +// plane { <0, 0, -1>, 0.6 } +//} + + +Lemniskate3D(0.02, rgb<0.8,0.0,0.8>) +Lemniskate(0.02, Red) +Projektion(0.01, Yellow) diff --git a/buch/chapters/110-elliptisch/images/kegelpara.tex b/buch/chapters/110-elliptisch/images/kegelpara.tex new file mode 100644 index 0000000..8fcefbf --- /dev/null +++ b/buch/chapters/110-elliptisch/images/kegelpara.tex @@ -0,0 +1,41 @@ +% +% kegelpara.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{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=8cm]{kegelpara.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 (4.1,-1.4) {$X$}; +\node at (0.2,3.8) {$Z$}; +\node at (4.0,1.8) {$Y$}; + +\end{tikzpicture} + +\end{document} + diff --git a/buch/chapters/110-elliptisch/images/lemnispara.cpp b/buch/chapters/110-elliptisch/images/lemnispara.cpp new file mode 100644 index 0000000..6f4d55d --- /dev/null +++ b/buch/chapters/110-elliptisch/images/lemnispara.cpp @@ -0,0 +1,126 @@ +/* + * lemnispara.cpp -- Display parametrisation of the lemniskate + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ +#include <cstdio> +#include <cstdlib> +#include <cmath> +#include <gsl/gsl_sf_elljac.h> +#include <iostream> +#include <fstream> +#include <map> +#include <string.h> +#include <string> + +const static double s = sqrt(2); +const static double k = 1 / s; +const static double m = k * k; + +typedef std::pair<double, double> point_t; + +point_t operator*(const point_t& p, double s) { + return point_t(s * p.first, s * p.second); +} + +static double norm(const point_t& p) { + return hypot(p.first, p.second); +} + +static point_t normalize(const point_t& p) { + return p * (1/norm(p)); +} + +static point_t normal(const point_t& p) { + return std::make_pair(p.second, -p.first); +} + +class lemniscate : public point_t { + double sn, cn, dn; +public: + lemniscate(double t) { + gsl_sf_elljac_e(t, m, &sn, &cn, &dn); + first = s * cn * dn; + second = cn * sn; + } + point_t tangent() const { + return std::make_pair(-s * sn * (1.5 - sn * sn), + dn * (1 - 2 * sn * sn)); + } + point_t unittangent() const { + return normalize(tangent()); + } + point_t normal() const { + return ::normal(tangent()); + } + point_t unitnormal() const { + return ::normal(unittangent()); + } +}; + +std::ostream& operator<<(std::ostream& out, const point_t& p) { + char b[1024]; + snprintf(b, sizeof(b), "({%.4f*\\dx},{%.4f*\\dy})", p.first, p.second); + out << b; + return out; +} + +int main(int argc, char *argv[]) { + std::ofstream out("lemnisparadata.tex"); + + // the curve + double tstep = 0.01; + double tmax = 4.05; + out << "\\def\\lemnispath{ "; + out << lemniscate(0); + for (double t = tstep; t < tmax; t += tstep) { + out << std::endl << "\t" << "-- " << lemniscate(t); + } + out << std::endl; + out << "}" << std::endl; + + out << "\\def\\lemnispathmore{ "; + out << lemniscate(tmax); + double tmax2 = 7.5; + for (double t = tmax + tstep; t < tmax2; t += tstep) { + out << std::endl << "\t" << "-- " << lemniscate(t); + } + out << std::endl; + out << "}" << std::endl; + + // individual points + tstep = 0.2; + int i = 0; + char name[3]; + strcpy(name, "L0"); + for (double t = 0; t <= tmax; t += tstep) { + char c = 'A' + i++; + char buffer[128]; + lemniscate l(t); + name[0] = 'L'; + name[1] = c; + out << "\\coordinate (" << name << ") at "; + out << l << ";" << std::endl; + name[0] = 'T'; + out << "\\coordinate (" << name << ") at "; + out << l.unittangent() << ";" << std::endl; + name[0] = 'N'; + out << "\\coordinate (" << name << ") at "; + out << l.unitnormal() << ";" << std::endl; + name[0] = 'C'; + out << "\\def\\" << name << "{ "; + out << "\\node[color=red] at ($(L" << c << ")+0.06*(N" << c << ")$) "; + out << "[rotate={"; + double w = 180 * atan2(l.unitnormal().second, + l.unitnormal().first) / M_PI; + snprintf(buffer, sizeof(buffer), "%.1f", w); + out << buffer; + out << "-90}]"; + snprintf(buffer, sizeof(buffer), "%.1f", t); + out << " {$\\scriptstyle " << buffer << "$};" << std::endl; + out << "}" << std::endl; + } + + out.close(); + return EXIT_SUCCESS; +} diff --git a/buch/chapters/110-elliptisch/images/lemnispara.pdf b/buch/chapters/110-elliptisch/images/lemnispara.pdf Binary files differnew file mode 100644 index 0000000..16731d3 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/lemnispara.pdf diff --git a/buch/chapters/110-elliptisch/images/lemnispara.tex b/buch/chapters/110-elliptisch/images/lemnispara.tex new file mode 100644 index 0000000..c6e32d7 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/lemnispara.tex @@ -0,0 +1,94 @@ +% +% lemnispara.tex -- parametrization of the lemniscate +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{txfonts} +\usepackage{pgfplots} +\usepackage{csvsimple} +\usetikzlibrary{arrows,intersections,math,calc} +\begin{document} +\def\skala{1} + +\begin{tikzpicture}[>=latex,thick,scale=\skala] +\def\dx{4} +\def\dy{4} +\input{lemnisparadata.tex} + +% add image content here +\draw[color=red!20,line width=1.4pt] \lemnispathmore; +\draw[color=red,line width=1.4pt] \lemnispath; + +\draw[->] ({-1.6*\dx},0) -- ({1.8*\dx},0) coordinate[label={$X$}]; +\draw[->] (0,{-0.7*\dy}) -- (0,{0.7*\dy}) coordinate[label={right:$Y$}]; + +\draw ({1.5*\dx},-0.05) -- ({1.5*\dx},0.05); +\draw ({\dx},-0.05) -- ({\dx},0.05); +\draw ({0.5*\dx},-0.05) -- ({0.5*\dx},0.05); +\draw ({-0.5*\dx},-0.05) -- ({-0.5*\dx},0.05); +\draw ({-\dx},-0.05) -- ({-\dx},0.05); +\draw ({-1.5*\dx},-0.05) -- ({-1.5*\dx},0.05); +\draw (-0.05,{0.5*\dy}) -- (0.05,{0.5*\dy}); +\draw (-0.05,{-0.5*\dy}) -- (0.05,{-0.5*\dy}); + +\node at ({\dx},0) [above] {$1$}; +\node at ({-\dx},0) [above] {$-1$}; +\node at ({-0.5*\dx},0) [above] {$-\frac12$}; +\node at ({0.5*\dx},0) [above] {$\frac12$}; +\node at (0,{0.5*\dy}) [left] {$\frac12$}; +\node at (0,{-0.5*\dy}) [left] {$-\frac12$}; + +\def\s{0.02} + +\draw[color=red] ($(LA)-\s*(NA)$) -- ($(LA)+\s*(NA)$); +\draw[color=red] ($(LB)-\s*(NB)$) -- ($(LB)+\s*(NB)$); +\draw[color=red] ($(LC)-\s*(NC)$) -- ($(LC)+\s*(NC)$); +\draw[color=red] ($(LD)-\s*(ND)$) -- ($(LD)+\s*(ND)$); +\draw[color=red] ($(LE)-\s*(NE)$) -- ($(LE)+\s*(NE)$); +\draw[color=red] ($(LF)-\s*(NF)$) -- ($(LF)+\s*(NF)$); +\draw[color=red] ($(LG)-\s*(NG)$) -- ($(LG)+\s*(NG)$); +\draw[color=red] ($(LH)-\s*(NH)$) -- ($(LH)+\s*(NH)$); +\draw[color=red] ($(LI)-\s*(NI)$) -- ($(LI)+\s*(NI)$); +\draw[color=red] ($(LJ)-\s*(NJ)$) -- ($(LJ)+\s*(NJ)$); +\draw[color=red] ($(LK)-\s*(NK)$) -- ($(LK)+\s*(NK)$); +\draw[color=red] ($(LL)-\s*(NL)$) -- ($(LL)+\s*(NL)$); +\draw[color=red] ($(LM)-\s*(NM)$) -- ($(LM)+\s*(NM)$); +\draw[color=red] ($(LN)-\s*(NN)$) -- ($(LN)+\s*(NN)$); +\draw[color=red] ($(LO)-\s*(NO)$) -- ($(LO)+\s*(NO)$); +\draw[color=red] ($(LP)-\s*(NP)$) -- ($(LP)+\s*(NP)$); +\draw[color=red] ($(LQ)-\s*(NQ)$) -- ($(LQ)+\s*(NQ)$); +\draw[color=red] ($(LR)-\s*(NR)$) -- ($(LR)+\s*(NR)$); +\draw[color=red] ($(LS)-\s*(NS)$) -- ($(LS)+\s*(NS)$); +\draw[color=red] ($(LT)-\s*(NT)$) -- ($(LT)+\s*(NT)$); +\draw[color=red] ($(LU)-\s*(NU)$) -- ($(LU)+\s*(NU)$); + +\CB +\CC +\CD +\CE +\CF +\CG +\CH +\CI +\CJ +\CK +\CL +\CM +\CN +\CO +\CP +\CQ +\CR +\CS +\CT +\CU + +\fill[color=blue] (LA) circle[radius=0.07]; +\node[color=blue] at (LA) [above right] {$S$}; + +\end{tikzpicture} +\end{document} + diff --git a/buch/chapters/110-elliptisch/images/rechteck.cpp b/buch/chapters/110-elliptisch/images/rechteck.cpp index c65ae0f..b5ad0ec 100644 --- a/buch/chapters/110-elliptisch/images/rechteck.cpp +++ b/buch/chapters/110-elliptisch/images/rechteck.cpp @@ -163,7 +163,7 @@ curvetracer::curve_t curvetracer::trace(const std::complex<double>& startz, } catch (const toomanyiterations& x) { std::cerr << "iterations exceeded after "; std::cerr << result.size(); - std::cerr << " points"; + std::cerr << " points" << std::endl; maxsteps = 0; } } @@ -230,7 +230,7 @@ void curvedrawer::operator()(const curvetracer::curve_t& curve) { double first = true; for (auto z : curve) { if (first) { - *_out << "\\draw[color=" << _color << "] "; + *_out << "\\draw[color=" << _color << ",line width=#1] "; first = false; } else { *_out << std::endl << " -- "; @@ -244,6 +244,7 @@ static struct option longopts[] = { { "outfile", required_argument, NULL, 'o' }, { "k", required_argument, NULL, 'k' }, { "deltax", required_argument, NULL, 'd' }, +{ "vsteps", required_argument, NULL, 'v' }, { NULL, 0, NULL, 0 } }; @@ -252,7 +253,8 @@ static struct option longopts[] = { */ int main(int argc, char *argv[]) { double k = 0.625; - double deltax = 0.2; + double Deltax = 0.2; + int vsteps = 4; int c; int longindex; @@ -261,7 +263,7 @@ int main(int argc, char *argv[]) { &longindex))) switch (c) { case 'd': - deltax = std::stod(optarg); + Deltax = std::stod(optarg); break; case 'o': outfilename = std::string(optarg); @@ -269,6 +271,9 @@ int main(int argc, char *argv[]) { case 'k': k = std::stod(optarg); break; + case 'v': + vsteps = std::stoi(optarg); + break; } double kprime = integrand::kprime(k); @@ -293,15 +298,21 @@ int main(int argc, char *argv[]) { curvetracer ct(f); // fill + (*cdp->out()) << "\\def\\hintergrund{" << std::endl; (*cdp->out()) << "\\fill[color=red!10] ({" << (-xmax) << "*\\dx},0) " << "rectangle ({" << xmax << "*\\dx},{" << ymax << "*\\dy});" << std::endl; (*cdp->out()) << "\\fill[color=blue!10] ({" << (-xmax) << "*\\dx},{" << (-ymax) << "*\\dy}) rectangle ({" << xmax << "*\\dx},0);" << std::endl; + (*cdp->out()) << "}" << std::endl; + + // macro for grid + (*cdp->out()) << "\\def\\netz#1{" << std::endl; // "circles" std::complex<double> dir(0.01, 0); + double deltax = Deltax; for (double im = deltax; im < 3; im += deltax) { std::complex<double> startz(0, im); std::complex<double> startw = ct.startpoint(startz); @@ -316,9 +327,9 @@ int main(int argc, char *argv[]) { } // imaginary axis - (*cdp->out()) << "\\draw[color=red] (0,0) -- (0,{" << ymax + (*cdp->out()) << "\\draw[color=red,line width=#1] (0,0) -- (0,{" << ymax << "*\\dy});" << std::endl; - (*cdp->out()) << "\\draw[color=blue] (0,0) -- (0,{" << (-ymax) + (*cdp->out()) << "\\draw[color=blue,line width=#1] (0,0) -- (0,{" << (-ymax) << "*\\dy});" << std::endl; // arguments between 0 and 1 @@ -353,7 +364,8 @@ int main(int argc, char *argv[]) { // arguments between 1 and 1/k { - for (double x0 = 1 + deltax; x0 < 1/k; x0 += deltax) { + deltax = (1/k - 1) / vsteps; + for (double x0 = 1 + deltax; x0 < 1/k + 0.00001; x0 += deltax) { double y0 = sqrt(1-1/(x0*x0))/kprime; //std::cout << "y0 = " << y0 << std::endl; double y = gsl_sf_ellint_F(asin(y0), kprime, @@ -389,8 +401,9 @@ int main(int argc, char *argv[]) { // arguments larger than 1/k { + deltax = Deltax; dir = std::complex<double>(0, 0.01); - double x0 = 1; + double x0 = 1/k; while (x0 <= 1/k + 0.0001) { x0 += deltax; } for (; x0 < 4; x0 += deltax) { std::complex<double> startz(x0); @@ -407,6 +420,8 @@ int main(int argc, char *argv[]) { } } + (*cdp->out()) << "}" << std::endl; + // border (*cdp->out()) << "\\def\\xmax{" << xmax << "}" << std::endl; (*cdp->out()) << "\\def\\ymax{" << ymax << "}" << std::endl; diff --git a/buch/chapters/110-elliptisch/images/rechteck.pdf b/buch/chapters/110-elliptisch/images/rechteck.pdf Binary files differindex 6209897..46f2376 100644 --- a/buch/chapters/110-elliptisch/images/rechteck.pdf +++ b/buch/chapters/110-elliptisch/images/rechteck.pdf diff --git a/buch/chapters/110-elliptisch/images/rechteck.tex b/buch/chapters/110-elliptisch/images/rechteck.tex index 622a9e9..12535ba 100644 --- a/buch/chapters/110-elliptisch/images/rechteck.tex +++ b/buch/chapters/110-elliptisch/images/rechteck.tex @@ -18,6 +18,8 @@ \def\dy{3} \input{rechteckpfade.tex} +\hintergrund +\netz{0.7pt} \begin{scope} \clip ({-\xmax*\dx},{-\ymax*\dy}) rectangle ({\xmax*\dx},{\ymax*\dy}); diff --git a/buch/chapters/110-elliptisch/images/slcl.pdf b/buch/chapters/110-elliptisch/images/slcl.pdf Binary files differindex c15051b..71645e3 100644 --- a/buch/chapters/110-elliptisch/images/slcl.pdf +++ b/buch/chapters/110-elliptisch/images/slcl.pdf diff --git a/buch/chapters/110-elliptisch/images/torusschnitt.pdf b/buch/chapters/110-elliptisch/images/torusschnitt.pdf Binary files differnew file mode 100644 index 0000000..9b64ab2 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/torusschnitt.pdf diff --git a/buch/chapters/110-elliptisch/images/torusschnitt.pov b/buch/chapters/110-elliptisch/images/torusschnitt.pov new file mode 100644 index 0000000..e5602df --- /dev/null +++ b/buch/chapters/110-elliptisch/images/torusschnitt.pov @@ -0,0 +1,308 @@ +// +// kegelpara.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "colors.inc" + +#declare O = <0,0,0>; + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.060; + +camera { + location <28, 20, -40> + look_at <0, 0.55, 0> + right (16/9) * x * imagescale + up y * imagescale +} + +light_source { + <30, 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 <from> to <to> with thickness <arrowthickness> with +// color <c> +// +#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 + + +#macro Ticks(tl, tr) +union { + #declare s = 1; + #while (s <= 3.1) + cylinder { <-0.5*s-tl, 0, 0>, <-0.5*s+tl, 0, 0>, tr } + cylinder { < 0.5*s-tl, 0, 0>, < 0.5*s+tl, 0, 0>, tr } + #declare s = s + 1; + #end + + #declare s = 1; + #while (s <= 4.1) + cylinder { <0, 0.5*s-tl, 0>, <0, 0.5*s+tl, 0>, tr } + #declare s = s + 1; + #end + #declare s = 1; + #while (s <= 2.1) + cylinder { <0,-0.5*s-tl, 0>, <0,-0.5*s+tl, 0>, tr } + #declare s = s + 1; + #end + + #declare s = 1; + #while (s <= 4) + cylinder { <0, 0, 0.5*s-tl>, <0, 0, 0.5*s+tl>, tr } + #declare s = s + 1; + #end + #declare s = 1; + #while (s <= 3) + cylinder { <0, 0, -0.5*s-tl>, <0, 0, -0.5*s+tl>, tr } + #declare s = s + 1; + #end + + pigment { + color White + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare epsilon = 0.001; +#declare l = 1.5; + +#declare a = sqrt(2); +#macro G2(phi,sg) + a * sqrt(cos(2*phi)) * < sg * cos(phi), 0, sin(phi)> +#end + +#macro Lemniskate(s, farbe) +union { + #declare phi = -pi / 4; + #declare phimax = pi / 4; + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #while (phi < phimax - phistep/2) + sphere { G2(phi,1), s } + cylinder { G2(phi,1), G2(phi+phistep,1), s } + sphere { G2(phi,-1), s } + cylinder { G2(phi,-1), G2(phi+phistep,-1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Projektion(s, farbe) +union { + #declare phistep = pi / 16; + #declare phi = -pi / 4 + phistep; + #declare phimax = pi / 4; + #while (phi < phimax - phistep/2) + cylinder { G(phi, 1), G2(phi, 1), s } + cylinder { G(phi, -1), G2(phi, -1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Ebene(l, b, farbe) +mesh { + triangle { <-l, 0, -b>, < l, 0, -b>, < l, 0, b> } + triangle { <-l, 0, -b>, < l, 0, b>, <-l, 0, b> } + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Ebenengitter(l, b, s, r, farbe) +union { + #declare lmax = floor(l / s); + #declare ll = -lmax; + #while (ll <= lmax) + cylinder { <ll * s, 0, -b>, <ll * s, 0, b>, r } + #declare ll = ll + 1; + #end + #declare bmax = floor(b / s); + #declare bb = -bmax; + #while (bb <= bmax) + cylinder { <-l, 0, bb * s>, <l, 0, bb * s>, r } + #declare bb = bb + 1; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare b = 0.5; +#macro T(phi, theta) + b * < (2 + cos(theta)) * cos(phi), (2 + cos(theta)) * sin(phi) + 1, sin(theta) > +#end + +#macro breitenkreis(theta, r) + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phisteps = 200; + #declare phistep = phimax / phisteps; + #while (phi < phimax - phistep/2) + cylinder { T(phi, theta), T(phi + phistep, theta), r } + sphere { T(phi, theta), r } + #declare phi = phi + phistep; + #end +#end + +#macro laengenkreis(phi, r) + #declare theta = 0; + #declare thetamax = 2 * pi; + #declare thetasteps = 200; + #declare thetastep = thetamax / thetasteps; + #while (theta < thetamax - thetastep/2) + cylinder { T(phi, theta), T(phi, theta + thetastep), r } + sphere { T(phi, theta), r } + #declare theta = theta + thetastep; + #end +#end + +#macro Torusgitter(farbe, r) +union { + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phistep = pi / 6; + #while (phi < phimax - phistep/2) + laengenkreis(phi, r) + #declare phi = phi + phistep; + #end + #declare thetamax = pi; + #declare thetastep = pi / 6; + #declare theta = thetastep; + #while (theta < thetamax - thetastep/2) + breitenkreis(theta, r) + breitenkreis(thetamax + theta, r) + #declare theta = theta + thetastep; + #end + breitenkreis(0, 1.5 * r) + breitenkreis(pi, 1.5 * r) + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Torus(farbe) +mesh { + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phisteps = 200; + #declare phistep = phimax/phisteps; + #while (phi < phimax - phistep/2) + #declare theta = 0; + #declare thetamax = 2 * pi; + #declare thetasteps = 200; + #declare thetastep = thetamax / thetasteps; + #while (theta < thetamax - thetastep/2) + triangle { + T(phi, theta), + T(phi + phistep, theta), + T(phi + phistep, theta + thetastep) + } + triangle { + T(phi, theta), + T(phi + phistep, theta + thetastep), + T(phi, theta + thetastep) + } + #declare theta = theta + thetastep; + #end + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare torusfarbe = rgbt<0.2,0.6,0.2,0.2>; +#declare ebenenfarbe = rgbt<0.2,0.6,1.0,0.2>; + +arrow(<-2,0,0>,<2,0,0>,0.02,White) +arrow(<0,-1.1,0>,<0,2.2,0>,0.02,White) +arrow(<0,0,-1.7>,<0,0,2.4>,0.02,White) +Ticks(0.007,0.036) + +Lemniskate(0.02, Red) +Ebene(1.8, 1.6, ebenenfarbe) +Ebenengitter(1.8, 1.6, 0.5, 0.005, rgb<0.4,1,1>) +Torus(torusfarbe) +Torusgitter(Yellow, 0.005) + diff --git a/buch/chapters/110-elliptisch/images/torusschnitt.tex b/buch/chapters/110-elliptisch/images/torusschnitt.tex new file mode 100644 index 0000000..63351ad --- /dev/null +++ b/buch/chapters/110-elliptisch/images/torusschnitt.tex @@ -0,0 +1,41 @@ +% +% torusschnitt.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{6} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=11.98cm]{torusschnitt.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 (4.4,-2.4) {$X$}; +\node at (3.5,0.6) {$Y$}; +\node at (0.3,3.8) {$Z$}; + +\end{tikzpicture} + +\end{document} + diff --git a/buch/chapters/110-elliptisch/lemniskate.tex b/buch/chapters/110-elliptisch/lemniskate.tex index f750a82..04c137d 100644 --- a/buch/chapters/110-elliptisch/lemniskate.tex +++ b/buch/chapters/110-elliptisch/lemniskate.tex @@ -12,14 +12,11 @@ veröffentlich hat. In diesem Abschnitt soll die Verbindung zu den Jacobischen elliptischen Funktionen hergestellt werden. +% +% Lemniskate +% \subsection{Lemniskate \label{buch:gemotrie:subsection:lemniskate}} -\begin{figure} -\centering -\includegraphics{chapters/110-elliptisch/images/lemniskate.pdf} -\caption{Bogenlänge und Radius der Lemniskate von Bernoulli. -\label{buch:elliptisch:fig:lemniskate}} -\end{figure} Die {\em Lemniskate von Bernoulli} ist die Kurve vierten Grades mit der Gleichung \index{Lemniskate von Bernoulli}% @@ -29,19 +26,26 @@ mit der Gleichung \end{equation} Sie ist in Abbildung~\ref{buch:elliptisch:fig:lemniskate} dargestellt. -Die beiden Scheitel der Lemniskate befinden sich bei $X_s=\pm a\sqrt{2}$. +Der Fall $a=1/\!\sqrt{2}$ ist eine Kurve mit der Gleichung +\[ +(x^2+y^2)^2 = x^2-y^2, +\] +wir nennen sie die {\em Standard-Lemniskate}. + +\subsubsection{Scheitelpunkte} +Die beiden Scheitel der Lemniskate befinden sich bei $X_s=\pm a\!\sqrt{2}$. Dividiert man die Gleichung der Lemniskate durch $X_s^2=4a^4$ entsteht \begin{equation} \biggl( -\biggl(\frac{X}{a\sqrt{2}}\biggr)^2 +\biggl(\frac{X}{a\!\sqrt{2}}\biggr)^2 + -\biggl(\frac{Y}{a\sqrt{2}}\biggr)^2 +\biggl(\frac{Y}{a\!\sqrt{2}}\biggr)^2 \biggr)^2 = 2\frac{a^2}{2a^2}\biggl( -\biggl(\frac{X}{a\sqrt{2}}\biggr)^2 +\biggl(\frac{X}{a\!\sqrt{2}}\biggr)^2 - -\biggl(\frac{Y}{a\sqrt{2}}\biggr)^2 +\biggl(\frac{Y}{a\!\sqrt{2}}\biggr)^2 \biggr). \qquad \Leftrightarrow @@ -49,11 +53,19 @@ Dividiert man die Gleichung der Lemniskate durch $X_s^2=4a^4$ entsteht (x^2+y^2)^2 = x^2-y^2, \label{buch:elliptisch:eqn:lemniskatenormiert} \end{equation} -wobei wir $x=X/a\sqrt{2}$ und $y=Y/a\sqrt{2}$ gesetzt haben. -In dieser Normierung liegen die Scheitel bei $\pm 1$. +wobei wir $x=X/a\!\sqrt{2}$ und $y=Y/a\!\sqrt{2}$ gesetzt haben. +In dieser Normierung, der Standard-Lemniskaten, liegen die Scheitel +bei $\pm 1$. Dies ist die Skalierung, die für die Definition des lemniskatischen Sinus und Kosinus verwendet werden soll. +\begin{figure} +\centering +\includegraphics{chapters/110-elliptisch/images/lemniskate.pdf} +\caption{Bogenlänge und Radius der Lemniskate von Bernoulli. +\label{buch:elliptisch:fig:lemniskate}} +\end{figure} +\subsubsection{Polarkoordinaten} In Polarkoordinaten $x=r\cos\varphi$ und $y=r\sin\varphi$ gilt nach Einsetzen in \eqref{buch:elliptisch:eqn:lemniskatenormiert} \begin{equation} @@ -71,12 +83,180 @@ Sie gilt für Winkel $\varphi\in[-\frac{\pi}4,\frac{\pi}4]$ für das rechte Blatt und $\varphi\in[\frac{3\pi}4,\frac{5\pi}4]$ für das linke Blatt der Lemniskate. +% +% Schnitt eines Kegels mit einem Paraboloid +% +\subsubsection{Schnitt eines Kegels mit einem Paraboloid} +\begin{figure} +\center +\includegraphics{chapters/110-elliptisch/images/kegelpara.pdf} +\caption{Leminiskate (rot) als Projektion (gelb) der Schnittkurve (pink) +eines geraden +Kreiskegels (grün) mit einem Rotationsparaboloid (hellblau). +\label{buch:elliptisch:lemniskate:kegelpara}} +\end{figure}% +\index{Kegel}% +\index{Paraboloid}% +Schreibt man in der Gleichung~\eqref{buch:elliptisch:eqn:lemniskate} +für die Klammer auf der rechten Seite $Z^2 = X^2 - Y^2$, dann wird die +Lemniskate die Projektion in die $X$-$Y$-Ebene der Schnittkurve der Flächen, +die durch die Gleichungen +\begin{equation} +X^2-Y^2 = Z^2 +\qquad\text{und}\qquad +(X^2+Y^2) = R^2 = \!\sqrt{2}aZ +\label{buch:elliptisch:eqn:kegelparabolschnitt} +\end{equation} +beschrieben wird. +Die linke Gleichung in +\eqref{buch:elliptisch:eqn:kegelparabolschnitt} +beschreibt einen geraden Kreiskegel, die rechte ist ein Rotationsparaboloid. +Die Schnittkurve ist in Abbildung~\ref{buch:elliptisch:lemniskate:kegelpara} +dargestellt. + +\subsubsection{Schnitt eines Torus mit einer Ebene} +\begin{figure} +\centering +\includegraphics{chapters/110-elliptisch/images/torusschnitt.pdf} +\caption{Die Schnittkurve (rot) eines Torus (grün) +mit einer zur Torusachse parallelen Ebene (blau), +die den inneren Äquator des Torus berührt, ist eine Lemniskate. +\label{buch:elliptisch:lemniskate:torusschnitt}} +\end{figure} +\index{Torus}% +Schneidet man einen Torus mit einer Ebene, die zur Achse des Torus +parallel ist und den inneren Äquator des Torus berührt, wie in +Abbildung~\ref{buch:elliptisch:lemniskate:torusschnitt}, +entsteht ebenfalls eine Lemniskate, wie in diesem Abschnitt nachgewiesen +werden soll. + +Der in Abbildung~\ref{buch:elliptisch:lemniskate:torusschnitt} +dargestellte Torus mit den Radien $2$ und $1$ hat als Achse die +um eine Einheit in $Z$-Richtung verschobene $Y$-Achse und die +$X$-$Z$-Ebene als Äquatorebene. +Der Torus kann mit +\[ +(u,v) +\mapsto +\begin{pmatrix} +(2+\cos u) \cos v \\ + \sin u \\ +(2+\cos u) \sin v + 1 +\end{pmatrix} +\] +parametrisiert werden, die $u$- und $v$-Koordinatenlinien sind +in der Abbildung gelb eingezeichnet. +Die $v$-Koordinatenlinien sind Breitenkreise um die Achse des Torus. +Aus $u=0$ und $u=\pi$ ergeben sich die Äquatoren des Torus. + +Die Gleichung $Z=0$ beschreibt eine achsparallele Ebene, die den +inneren Äquator berührt. +Die Schnittkurve erfüllt daher +\[ +(2+\cos u)\sin v + 1 = 0, +\] +was wir auch als $2 +\cos u = -1/\sin v$ schreiben können. +Wir müssen nachprüfen, dass die Koordinaten +$X=(2+\cos u)\cos v$ und $Y=\sin u$ die Gleichung einer Lemniskate +erfüllen. + +Zunächst können wir in der $X$-Koordinate den Klammerausdruck durch +$\sin v$ ausdrücken und erhalten +\begin{equation} +X += +(2+\cos u) \cos v += +-\frac{1}{\sin v}\cos v += +-\frac{\cos v}{\sin v} +\qquad\Rightarrow\qquad +X^2 += +\frac{\cos^2v}{\sin^2 v} += +\frac{1-\sin^2v}{\sin^2 v}. +\label{buch:elliptisch:lemniskate:Xsin} +\end{equation} +Auch die $Y$-Koordinaten können wir durch $v$ ausdrücken, +nämlich +\begin{equation} +Y^2=\sin^2 u = 1-\cos^2 u += +1- +\biggl( +\frac{1}{\sin v} +-2 +\biggr)^2 += +\frac{-3\sin^2 v+4\sin v-1}{\sin^2 v}. +\label{buch:elliptisch:lemniskate:Ysin} +\end{equation} +Die Gleichungen +\eqref{buch:elliptisch:lemniskate:Xsin} +und +\eqref{buch:elliptisch:lemniskate:Ysin} +zeigen, dass man $X^2$ und $Y^2$ sogar einzig durch $\sin v$ +parametrisieren kann. +Um die Ausdrücke etwas zu vereinfachen, schreiben wir $S=\sin v$ +und erhalten zusammenfassend +\begin{equation} +\begin{aligned} +X^2 +&= +\frac{1-S^2}{S^2} +\\ +Y^2 +&= +\frac{-3S^2+4S-1}{S^2}. +\end{aligned} +\end{equation} +Daraus kann man jetzt die Summen und Differenzen der Quadrate +berechnen, sie sind +\begin{equation} +\begin{aligned} +X^2+Y^2 +&= +\frac{-4S^2+4S}{S^2} += +\frac{4S(1-S)}{S^2} += +\frac{4(1-S)}{S} += +4\frac{1-S}{S} +\\ +X^2-Y^2 +&= +\frac{2-4S+2S^2}{S^2} += +\frac{2(1-S)^2}{S^2} += +2\biggl(\frac{1-S}{S}\biggr)^2. +\end{aligned} +\end{equation} +Die Berechnung des Quadrates von $X^2+Y^2$ ergibt die Gleichung +\[ +(X^2+Y^2)^2 += +16 +\biggl(\frac{1-S}{S}\biggr)^2 += +8 \cdot 2 +\biggl(\frac{1-S}{S}\biggr)^2 += +2\cdot 2^2\cdot (X^2-Y^2). +\] +Sie ist eine Lemniskaten-Gleichung für $a=2$. + +% +% Bogenlänge der Lemniskate +% \subsection{Bogenlänge} Die Funktionen \begin{equation} -x(r) = \frac{r}{\sqrt{2}}\sqrt{1+r^2}, +x(r) = \frac{r}{\!\sqrt{2}}\sqrt{1+r^2}, \quad -y(r) = \frac{r}{\sqrt{2}}\sqrt{1-r^2} +y(r) = \frac{r}{\!\sqrt{2}}\sqrt{1-r^2} \label{buch:geometrie:eqn:lemniskateparam} \end{equation} erfüllen @@ -91,7 +271,7 @@ r^4 = (x(r)^2 + y(r)^2)^2, \end{align*} -sie stellen also eine Parametrisierung der Lemniskate dar. +sie stellen also eine Parametrisierung der Standard-Lemniskate dar. Mit Hilfe der Parametrisierung~\eqref{buch:geometrie:eqn:lemniskateparam} kann man die Länge $s$ des in Abbildung~\ref{buch:elliptisch:fig:lemniskate} @@ -101,9 +281,9 @@ Kettenregel berechnen kann: \begin{align*} \dot{x}(r) &= -\frac{\sqrt{1+r^2}}{\sqrt{2}} +\frac{\!\sqrt{1+r^2}}{\!\sqrt{2}} + -\frac{r^2}{\sqrt{2}\sqrt{1+r^2}} +\frac{r^2}{\!\sqrt{2}\sqrt{1+r^2}} &&\Rightarrow& \dot{x}(r)^2 &= @@ -111,13 +291,13 @@ Kettenregel berechnen kann: \\ \dot{y}(r) &= -\frac{\sqrt{1-r^2}}{\sqrt{2}} +\frac{\!\sqrt{1-r^2}}{\!\sqrt{2}} - \frac{r^2}{\sqrt{2}\sqrt{1-r^2}} &&\Rightarrow& \dot{y}(r)^2 &= -\frac{1-r^2}{2} -r^2 + \frac{r^4}{2(1-r^2)} +\frac{1-r^2}{2} -r^2 + \frac{r^4}{2(1-r^2)}. \end{align*} Die Summe der Quadrate ist \begin{align*} @@ -136,7 +316,7 @@ Durch Einsetzen in das Integral für die Bogenlänge bekommt man s(r) = \int_0^r -\frac{1}{\sqrt{1-t^4}}\,dt. +\frac{1}{\!\sqrt{1-t^4}}\,dt. \label{buch:elliptisch:eqn:lemniskatebogenlaenge} \end{equation} @@ -149,11 +329,11 @@ $k^2=-1$ oder $k=i$ ist \[ K(r,i) = -\int_0^x \frac{dt}{\sqrt{(1-t^2)(1-i^2 t^2)}} +\int_0^x \frac{dt}{\!\sqrt{(1-t^2)(1-i^2 t^2)}} = -\int_0^x \frac{dt}{\sqrt{(1-t^2)(1-(-1)t^2)}} +\int_0^x \frac{dt}{\!\sqrt{(1-t^2)(1-(-1)t^2)}} = -\int_0^x \frac{dt}{\sqrt{1-t^4}} +\int_0^x \frac{dt}{\!\sqrt{1-t^4}} = s(r). \] @@ -180,6 +360,13 @@ $\varpi/2$. % Bogenlängenparametrisierung % \subsection{Bogenlängenparametrisierung} +\begin{figure} +\centering +\includegraphics{chapters/110-elliptisch/images/lemnispara.pdf} +\caption{Parametrisierung der Lemniskate mit Jacobischen elliptischen +Funktion wie in \eqref{buch:elliptisch:lemniskate:bogeneqn} +\label{buch:elliptisch:lemniskate:bogenpara}} +\end{figure} Die Lemniskate mit der Gleichung \[ (X^2+Y^2)^2=2(X^2-Y^2) @@ -188,7 +375,7 @@ Die Lemniskate mit der Gleichung kann mit Jacobischen elliptischen Funktionen parametrisiert werden. Dazu schreibt man -\[ +\begin{equation} \left. \begin{aligned} X(t) @@ -201,11 +388,23 @@ Y(t) \operatorname{cn}(t,k) \operatorname{sn}(t,k) \end{aligned} \quad\right\} -\qquad\text{mit $k=\displaystyle\frac{1}{\sqrt{2}}$} -\] -und berechnet die beiden Seiten der definierenden Gleichung der -Lemniskate. -Zunächst ist +\qquad\text{mit $k=\displaystyle\frac{1}{\sqrt{2}}.$} +\label{buch:elliptisch:lemniskate:bogeneqn} +\end{equation} +Abbildung~\ref{buch:elliptisch:lemniskate:bogenpara} zeigt die +Parametrisierung. +Dem Parameterwert $t=0$ entspricht der Scheitelpunkt +$S=(\!\sqrt{2},0)$ der Lemniskate. + +% +% Lemniskatengleichung +% +\subsubsection{Verfikation der Lemniskatengleichung} +Dass \eqref{buch:elliptisch:lemniskate:bogeneqn} +tatsächlich eine Parametrisierung ist, kann dadurch nachgewiesen werden, +dass man die beiden Seiten der definierenden Gleichung der +Lemniskate berechnet. +Zunächst sind die Quadrate von $X(t)$ und $Y(t)$ \begin{align*} X(t)^2 &= @@ -215,8 +414,8 @@ X(t)^2 Y(t)^2 &= \operatorname{cn}(t,k)^2 -\operatorname{sn}(t,k)^2 -\\ +\operatorname{sn}(t,k)^2. +\intertext{Für Summe und Differenz der Quadrate findet man jetzt} X(t)^2+Y(t)^2 &= 2\operatorname{cn}(t,k)^2 @@ -248,54 +447,49 @@ X(t)^2-Y(t)^2 \bigr) \\ &= -2\operatorname{cn}(t,k)^4 -\\ +2\operatorname{cn}(t,k)^4. +\intertext{Beide lassen sich also durch $\operatorname{cn}(t,k)^2$ +ausdrücken. +Zusammengefasst erhält man} \Rightarrow\qquad (X(t)^2+Y(t)^2)^2 &= 4\operatorname{cn}(t,k)^4 = -2(X(t)^2-Y(t)^2). +2(X(t)^2-Y(t)^2), \end{align*} +eine Lemniskaten-Gleichung. + +% +% Berechnung der Bogenlänge +% +\subsubsection{Berechnung der Bogenlänge} Wir zeigen jetzt, dass dies tatsächlich eine Bogenlängenparametrisierung der Lemniskate ist. Dazu berechnen wir die Ableitungen \begin{align*} \dot{X}(t) &= -\sqrt{2}\operatorname{cn}'(t,k)\operatorname{dn}(t,k) +\!\sqrt{2}\operatorname{cn}'(t,k)\operatorname{dn}(t,k) + -\sqrt{2}\operatorname{cn}(t,k)\operatorname{dn}'(t,k) +\!\sqrt{2}\operatorname{cn}(t,k)\operatorname{dn}'(t,k) \\ &= --\sqrt{2}\operatorname{sn}(t,k)\operatorname{dn}(t,k)^2 +-\!\sqrt{2}\operatorname{sn}(t,k)\operatorname{dn}(t,k)^2 -\frac12\sqrt{2}\operatorname{sn}(t,k)\operatorname{cn}(t,k)^2 \\ &= --\sqrt{2}\operatorname{sn}(t,k)\bigl( +-\!\sqrt{2}\operatorname{sn}(t,k)\bigl( 1-{\textstyle\frac12}\operatorname{sn}(t,k)^2 -+{\textstyle\frac12}-{\textstyle\frac12}\operatorname{sn}(u,t)^2 ++{\textstyle\frac12}-{\textstyle\frac12}\operatorname{sn}(t,k)^2 \bigr) \\ &= -\sqrt{2}\operatorname{sn}(t,k) +\!\sqrt{2}\operatorname{sn}(t,k) \bigl( {\textstyle \frac32}-\operatorname{sn}(t,k)^2 \bigr) \\ -\dot{X}(t)^2 -&= -2\operatorname{sn}(t,k)^2 -\bigl( -{\textstyle \frac32}-\operatorname{sn}(t,k)^2 -\bigr)^2 -\\ -&= -{\textstyle\frac{9}{2}}\operatorname{sn}(t,k)^2 -- -6\operatorname{sn}(t,k)^4 -+2\operatorname{sn}(t,k)^6 -\\ \dot{Y}(t) &= \operatorname{cn}'(t,k)\operatorname{sn}(t,k) @@ -310,6 +504,19 @@ Dazu berechnen wir die Ableitungen \\ &= \operatorname{dn}(t,k)\bigl(1-2\operatorname{sn}(t,k)^2\bigr) +\intertext{und davon die Quadrate} +\dot{X}(t)^2 +&= +2\operatorname{sn}(t,k)^2 +\bigl( +{\textstyle \frac32}-\operatorname{sn}(t,k)^2 +\bigr)^2 +\\ +&= +{\textstyle\frac{9}{2}}\operatorname{sn}(t,k)^2 +- +6\operatorname{sn}(t,k)^4 ++2\operatorname{sn}(t,k)^6 \\ \dot{Y}(t)^2 &= @@ -319,25 +526,28 @@ Dazu berechnen wir die Ableitungen &= 1-{\textstyle\frac{9}{2}}\operatorname{sn}(t,k)^2 +6\operatorname{sn}(t,k)^4 --2\operatorname{sn}(t,k)^6 -\\ +-2\operatorname{sn}(t,k)^6. +\intertext{Für das Bogenlängenintegral wird die Quadratsumme der Ableitungen +benötigt, diese ist} \dot{X}(t)^2 + \dot{Y}(t)^2 &= 1. -\end{align*} -Dies bedeutet, dass die Bogenlänge zwischen den Parameterwerten $0$ und $s$ -\[ -\int_0^s -\sqrt{\dot{X}(t)^2 + \dot{Y}(t)^2} -\,dt -= -\int_0^s\,dt +\intertext{Dies bedeutet, dass die Bogenlänge zwischen den +Parameterwerten $0$ und $t$} +\int_0^t +\sqrt{\dot{X}(\tau)^2 + \dot{Y}(\tau)^2} +\,d\tau +&= +\int_0^s\,d\tau = -s, -\] -der Parameter $t$ ist also ein Bogenlängenparameter, man darf also -$s=t$ schreiben. +t, +\end{align*} +der Parameter $t$ ist also ein Bogenlängenparameter. +% +% Bogenlängenparametrisierung der Standard-Lemniskate +% +\subsubsection{Bogenlängenparametrisierung der Standard-Lemniskate} Die mit dem Faktor $1/\sqrt{2}$ skalierte Standard-Lemniskate mit der Gleichung \[ @@ -345,19 +555,31 @@ Gleichung \] hat daher eine Bogenlängenparametrisierung mit \begin{equation} +\left. \begin{aligned} x(t) &= -\phantom{\frac{1}{\sqrt{2}}} -\operatorname{cn}(\sqrt{2}t,k)\operatorname{dn}(\sqrt{2}t,k) +\phantom{\frac{1}{\!\sqrt{2}}} +\operatorname{cn}(\!\sqrt{2}t,k)\operatorname{dn}(\!\sqrt{2}t,k) \\ y(t) &= -\frac{1}{\sqrt{2}}\operatorname{cn}(\sqrt{2}t,k)\operatorname{sn}(\sqrt{2}t,k) +\frac{1}{\!\sqrt{2}} +\operatorname{cn}(\!\sqrt{2}t,k)\operatorname{sn}(\!\sqrt{2}t,k) \end{aligned} +\quad +\right\} +\qquad +\text{mit $\displaystyle k=\frac{1}{\!\sqrt{2}}.$} \label{buch:elliptisch:lemniskate:bogenlaenge} \end{equation} +Der Punkt $t=0$ entspricht dem Scheitelpunkt $S=(1,0)$ der Lemniskate. +Der Parameter misst also die Bogenlänge entlang der Lemniskate ausgehend +vom Scheitel. +% +% der lemniskatische Sinus und Kosinus +% \subsection{Der lemniskatische Sinus und Kosinus} Der Sinus berechnet die Gegenkathete zu einer gegebenen Bogenlänge des Kreises, er ist die Umkehrfunktion der Funktion, die der Gegenkathete @@ -365,42 +587,100 @@ die Bogenlänge zuordnet. Daher ist es naheliegend, die Umkehrfunktion von $s(r)$ in \eqref{buch:elliptisch:eqn:lemniskatebogenlaenge} den {\em lemniskatischen Sinus} zu nennen mit der Bezeichnung -$r=\operatorname{sl} s$. +\index{lemniskatischer Sinus}% +\index{Sinus, lemniskatischer}% +$r=r(s)=\operatorname{sl} s$. +\index{komplementäre Bogenlänge} +% +% die komplementäre Bogenlänge +% +\subsubsection{Die komplementäre Bogenlänge} Der Kosinus ist der Sinus des komplementären Winkels. Auch für die lemniskatische Bogenlänge $s(r)$ lässt sich eine -komplementäre Bogenlänge definieren, nämlich die Bogenlänge zwischen -dem Punkt $(x(r), y(r))$ und $(1,0)$. -Da die Bogenlänge zwischen $(0,0)$ und $(1,0)$ in -in \eqref{buch:elliptisch:eqn:varpi} bereits bereichnet wurde. -ist sie $\varpi/2-s$. +komplementäre Bogenlänge $t$ definieren, nämlich die Bogenlänge +zwischen dem Punkt $(x(r), y(r))$ und dem Scheitelpunkt $S=(1,0)$. +Dies ist der Parameter der Parametrisierung +\eqref{buch:elliptisch:lemniskate:bogenlaenge} +des vorangegangenen Abschnittes. +Die Bogenlänge zwischen $O=(0,0)$ und $S=(1,0)$ wurde in +\eqref{buch:elliptisch:eqn:varpi} bereits bereichnet, +sie ist $\varpi/2$. +Damit folgt für die beiden Parameter $s$ und $t$ die Beziehung +$t = \varpi/2 - s$. + +\subsubsection{Der lemniskatische Kosinus} +\begin{figure} +\centering +\includegraphics[width=\textwidth]{chapters/110-elliptisch/images/slcl.pdf} +\caption{ +Lemniskatischer Sinus und Kosinus sowie Sinus und Kosinus +mit derart skaliertem Argument, dass die Funktionen die +gleichen Nullstellen haben. +\label{buch:elliptisch:figure:slcl}} +\end{figure} Der {\em lemniskatische Kosinus} ist daher -$\operatorname{cl}(s) = \operatorname{sl}(\varpi/2-s)$ +$\operatorname{cl}(s) = \operatorname{sl}(\varpi/2-s)$. Graphen des lemniskatische Sinus und Kosinus sind in -Abbildung~\label{buch:elliptisch:figure:slcl} dargestellt. +Abbildung~\ref{buch:elliptisch:figure:slcl} dargestellt. -Da die Parametrisierung~\eqref{buch:elliptisch:lemniskate:bogenlaenge} -eine Bogenlängenparametrisierung ist, darf man $t=s$ schreiben. -Dann kann man aber auch $r(s)$ daraus berechnen, -es ist +Die Parametrisierung~\eqref{buch:elliptisch:lemniskate:bogenlaenge} +ist eine Bogenlängenparametrisierung der Standard-Lemniskate. +Man kann sie verwenden, um $r(t)$ zu berechnen. +Es ist \[ -r(s)^2 +r(t)^2 = -x(s)^2 + y(s)^2 +x(t)^2 + y(t)^2 += +\operatorname{cn}(\!\sqrt{2}t,k)^2 +\biggl( +\operatorname{dn}(\!\sqrt{2}t,k)^2 ++ +\frac12 +\operatorname{sn}(\!\sqrt{2}t,k)^2 +\biggr) += +\operatorname{cn}(\!\sqrt{2}t,k)^2. +\] +Die Wurzel ist +\[ +r(t) += +\operatorname{cn}(\!\sqrt{2}t,{\textstyle\frac{1}{\!\sqrt{2}}}) +. +\] +Der lemniskatische Sinus wurde aber in Abhängigkeit von +$s=\varpi/2-t$ mittels +\[ +\operatorname{sl}s = -\operatorname{cn}(s\sqrt{2},k)^2 -\qquad\Rightarrow\qquad r(s) = -\operatorname{cn}(s\sqrt{2},k) +\operatorname{cn}(\!\sqrt{2}(\varpi/2-s),k)^2 \] +definiert. +Der lemniskatische Kosinus ist definiert als der lemniskatische Sinus +\index{lemniskatischer Kosinus}% +\index{Kosinus, lemniskatischer}% +der komplementären Bogenlänge, also +\[ +\operatorname{cl}(s) += +\operatorname{sl}(\varpi/2-s) += +\operatorname{cn}(\!\sqrt{2}s,k)^2. +\] +Die Funktion $\operatorname{sl}(s)$ und $\operatorname{cl}(s)$ sind +in Abbildung~\ref{buch:elliptisch:figure:slcl} dargestellt. +Sie sind beide $2\varpi$-periodisch. +Die Abbildung zeigt ausserdem die Funktionen $\sin (\pi s/\varpi)$ +und $\cos(\pi s/\varpi)$, die ebenfalls $2\varpi$-periodisch sind. + +Die Darstellung des lemniskatischen Sinus und Kosinus durch die +Jacobische elliptische Funktion $\operatorname{cn}(\!\sqrt{2}s,k)$ +zeigt einmal mehr den Nutzen der Jacobischen elliptischen Funktionen. + + + -\begin{figure} -\centering -\includegraphics[width=\textwidth]{chapters/110-elliptisch/images/slcl.pdf} -\caption{ -Lemniskatischer Sinus und Kosinus sowie Sinus und Kosinus -mit derart skaliertem Argument, dass die Funktionen die gleichen Nullstellen -haben. -\label{buch:elliptisch:figure:slcl}} -\end{figure} diff --git a/buch/chapters/110-elliptisch/mathpendel.tex b/buch/chapters/110-elliptisch/mathpendel.tex index d61bcf6..e029ffd 100644 --- a/buch/chapters/110-elliptisch/mathpendel.tex +++ b/buch/chapters/110-elliptisch/mathpendel.tex @@ -53,7 +53,7 @@ enthält. Der Energieerhaltungssatz kann uns eine solche Gleichung geben. Die Summe von kinetischer und potentieller Energie muss konstant sein. Dies führt auf -\[ +\begin{equation} E_{\text{kinetisch}} + E_{\text{potentiell}} @@ -66,8 +66,9 @@ mgl(1-\cos\vartheta) + mgl(1-\cos\vartheta) = -E -\] +E. +\label{buch:elliptisch:mathpendel:energiegleichung} +\end{equation} Durch Auflösen nach $\dot{\vartheta}$ kann man jetzt die Differentialgleichung \[ @@ -94,72 +95,155 @@ Für $E>2mgl$ wird sich das Pendel im Kreis bewegen, für sehr grosse Energie ist die kinetische Energie dominant, die Verlangsamung im höchsten Punkt wird immer weniger ausgeprägt sein. + % % Koordinatentransformation auf elliptische Funktionen % \subsubsection{Koordinatentransformation auf elliptische Funktionen} Wir verwenden als neue Variable -\[ -y = \sin\frac{\vartheta}2 -\] -mit der Ableitung -\[ -\dot{y}=\frac12\cos\frac{\vartheta}{2}\cdot \dot{\vartheta}. -\] -Man beachte, dass $y$ nicht eine Koordinate in -Abbildung~\ref{buch:elliptisch:fig:mathpendel} ist. - -Aus den Halbwinkelformeln finden wir -\[ +\begin{align} +y +&= +\sin\frac{\vartheta}2 +&&\Rightarrow& +\cos^2\frac{\vartheta}2 +&= +1-y^2. +\label{buch:elliptisch:mathpendel:ydef} +\intertext{Die Ableitung ist} +\dot{y} +&= +\frac12\cos\frac{\vartheta}{2}\cdot \dot{\vartheta} +&&\Rightarrow& +\dot{y}^2 +&= +\frac14\cos^2\frac{\vartheta}2\cdot\dot{\vartheta}^2. +\label{buch:elliptisch:mathpendel:yabl} +\intertext{% +Man beachte, dass die Koordinate senkrecht zur $x$-Achse in +Abbildung~\ref{buch:elliptisch:fig:mathpendel} die Auslenkung +$l\sin\vartheta$ ist, $y$ ist also nicht die Auslenkung senkrecht +zur $x$-Achse! +Aus den Halbwinkelformeln finden wir ausserdem +} \cos\vartheta -= +&= 1-2\sin^2 \frac{\vartheta}2 = -1-2y^2. -\] -Dies können wir zusammen mit der -Identität $\cos^2\vartheta/2 = 1-\sin^2\vartheta/2 = 1-y^2$ -in die Energiegleichung einsetzen und erhalten -\[ -\frac12ml^2\dot{\vartheta}^2 + mgly^2 = E -\qquad\Rightarrow\qquad -\frac14 \dot{\vartheta}^2 = \frac{E}{2ml^2} - \frac{g}{2l}y^2. -\] -Der konstante Term auf der rechten Seite ist grösser oder kleiner als -$1$ je nachdem, ob das Pendel sich im Kreis bewegt oder nicht. +1-2y^2 +&&\Rightarrow& +1-\cos\vartheta +&= +2y^2. +\label{buch:elliptisch:mathpendel:halbwinkel} +\end{align} +Die Grösse $1-\cos\vartheta$ haben wir in der Energiegleichung +\eqref{buch:elliptisch:mathpendel:energiegleichung} +bereits angetroffen. -Durch Multiplizieren mit $\cos^2\frac{\vartheta}{2}=1-y^2$ +Die Identitäten +\eqref{buch:elliptisch:mathpendel:halbwinkel} +%und +%\eqref{buch:elliptisch:mathpendel:ydef} +können wir jetzt in die +Energiegleichung~\eqref{buch:elliptisch:mathpendel:energiegleichung} +einsetzen und erhalten +\begin{align} +\frac12ml^2\dot{\vartheta}^2 + 2mgly^2 +&= +E +\intertext{und nach Division durch $2ml^2$} +\frac14 \dot{\vartheta}^2 +&= +\frac{E}{2ml^2} - \frac{g}{l}y^2. +\label{buch:elliptisch:mathpendel:thetadgl} +\end{align} +%Der konstante Term auf der rechten Seite ist grösser oder kleiner als +%$1$ je nachdem, ob das Pendel sich im Kreis bewegt oder nicht. +Durch Multiplizieren mit der rechten Gleichung von +\eqref{buch:elliptisch:mathpendel:ydef} erhalten wir auf der linken Seite einen Ausdruck, den wir +mit Hilfe von \eqref{buch:elliptisch:mathpendel:yabl} als Funktion von $\dot{y}$ ausdrücken können. Wir erhalten -\begin{align*} -\frac14 +\begin{align} +\underbrace{\frac14 \cos^2\frac{\vartheta}2 \cdot -\dot{\vartheta}^2 +\dot{\vartheta}^2}_{\displaystyle=\dot{y}^2} &= -\frac14 (1-y^2) -\biggl(\frac{E}{2ml^2} -\frac{g}{2l}y^2\biggr) +\biggl(\frac{E}{2ml^2} -\frac{g}{l}y^2\biggr) +\notag \\ \dot{y}^2 &= -\frac{1}{4} (1-y^2) -\biggl(\frac{E}{2ml^2} -\frac{g}{2l}y^2\biggr) -\end{align*} +\biggl(\frac{E}{2ml^2} -\frac{g}{l}y^2\biggr) +\label{buch:elliptisch:mathpendel:ydgl} +\end{align} Die letzte Gleichung hat die Form einer Differentialgleichung für elliptische Funktionen. -Welche Funktion verwendet werden muss, hängt von der Grösse der -Koeffizienten in der zweiten Klammer ab. -Die Tabelle~\ref{buch:elliptisch:tabelle:loesungsfunktionen} -zeigt, dass in der zweiten Klammer jeweils einer der Terme -$1$ sein muss. +Welche Funktion verwendet werden muss, hängt von der relativen +Grösse der Koeffizienten in der zweiten Klammer ab. % -% Der Fall E < 2mgl +% Zeittransformation zur Elimination des konstanten Faktors % -\subsubsection{Der Fall $E<2mgl$} +\subsubsection{Zeittransformation} +Die Gleichung~\eqref{buch:elliptisch:mathpendel:ydgl} kann auch in +die Form +\begin{equation} +\frac{2ml^2}{E}\dot{y}^2 += +(1-y^2)\biggl(1-\frac{2mgl}{E}y^2\biggr) +\label{buch:elliptisch:mathpendel:ydgl2} +\end{equation} +gebracht werden. +Der konstante Faktor auf der linken Seite kann wie in der Diskussion +des anharmonischen Oszillators durch eine lineare +Transformation der Zeit zum Verschwinden gebracht werden. +Dazu setzt man $z(t) = y(bt)$ und bekommt +\[ +\frac{d}{dt}z(t) += +\frac{d}{dt}y(bt) \frac{d\,bt}{dt} += +b\,\dot{y}(bt). +\] +Die Zeit muss also mit dem Faktor $\sqrt{2ml^2/E}$ skaliert werden. + +% +% Nullstellen der rechten Seite der Differentialgleichung +% +\subsubsection{Nullstellen der rechten Seite} +Die rechte Seite von \eqref{buch:elliptisch:mathpendel:ydgl2} +hat die beiden Nullstellen $1$ und +\begin{equation} +y_0=\sqrt{\frac{E}{2mgl}}. +\label{buch:elliptisch:mathpendel:y0} +\end{equation} +Die Differentialgleichung kann damit als +\begin{equation} +\dot{y}^2 += +(1-y^2)\biggl(1-\frac{1}{y_0^2}y^2\biggr) +\label{buch:elliptisch:mathpendel:y0dgl} +\end{equation} +geschrieben werden. +Da die linke Seite $\ge 0$ sein muss, muss +\( +y\le \min(1,y_0) +\) +sein. +Damit ergeben sich zwei Fälle. +Wenn $y_0<1$ ist, dann schwingt das Pendel. +Der Fall $y_0>1$ entspricht einer Bewegung, bei der das Pendel +um den Punkt $O$ rotiert. +In den folgenden zwei Abschnitten werden die beiden Fälle ausführlicher +diskutiert. + + \begin{figure} \centering \includegraphics[width=\textwidth]{chapters/110-elliptisch/images/jacobiplots.pdf} @@ -179,72 +263,63 @@ erreichen kann, was es für $m$ macht. \label{buch:elliptisch:fig:jacobiplots}} \end{figure} - -Wir verwenden als neue Variable +\subsubsection{Der Fall $E>2mgl$} +In diesem Fall ist die zweite Nullstelle $y_0>1$ oder $1/y_0^2 < 1$. +Die Differentialgleichung~\eqref{buch:elliptisch:mathpendel:y0dgl} +sieht ganz ähnlich aus wie die Differentialgleichung der +Funktion $\operatorname{sn}(u,k)$, tatsächlich wird sie zur +Differentialgleichung von $\operatorname{sn}(u,k)$ wenn man \[ -y = \sin\frac{\vartheta}2 -\] -mit der Ableitung -\[ -\dot{y}=\frac12\cos\frac{\vartheta}{2}\cdot \dot{\vartheta}. -\] -Man beachte, dass $y$ nicht eine Koordinate in -Abbildung~\ref{buch:elliptisch:fig:mathpendel} ist. - -Aus den Halbwinkelformeln finden wir -\[ -\cos\vartheta +k^2 = -1-2\sin^2 \frac{\vartheta}2 +1/y_0^2 = -1-2y^2. +\frac{2mgl}{E} \] -Dies können wir zusammen mit der -Identität $\cos^2\vartheta/2 = 1-\sin^2\vartheta/2 = 1-y^2$ -in die Energiegleichung einsetzen und erhalten -\[ -\frac12ml^2\dot{\vartheta}^2 + mgly^2 = E. -\] -Durch Multiplizieren mit $\cos^2\frac{\vartheta}{2}=1-y^2$ -erhalten wir auf der linken Seite einen Ausdruck, den wir -als Funktion von $\dot{y}$ ausdrücken können. -Wir erhalten -\begin{align*} -\frac12ml^2 -\cos^2\frac{\vartheta}2 -\dot{\vartheta}^2 -&= -(1-y^2) -(E -mgly^2) -\\ -\frac{1}{4}\cos^2\frac{\vartheta}{2}\dot{\vartheta}^2 -&= -\frac{1}{2} -(1-y^2) -\biggl(\frac{E}{ml^2} -\frac{g}{l}y^2\biggr) -\\ +wählt. +In diesem Fall ist also $y=\operatorname{sn}(u,1/y_0)$ eine Lösung +der Differentialgleichung, wobei $u$ eine lineare Funktion der Zeit +ist. + +Wenn $y_0 \gg 1$ ist, dann ist $k\approx 0$ und die Bewegung ist +entspricht einer gleichförmigen Kreisbewegung. +Je näher $y_0$ an $1$ liegt, desto näher an $1$ ist auch $k$ und +desto grösser wird die Verlangsamung der Bewgung in der Nähe des +Scheitels, das Pendel verweilt sehr lange. +Dies äussert sich in Abbildung~\ref{buch:elliptisch:fig:jacobiplots} +durch die lange Verweildauer der Funktion nahe der Extrema. + +% +% Der Fall E < 2mgl +% +\subsubsection{Der Fall $E<2mgl$} +In diesem Fall ist $y_0<1$ und die +Differentialgleichung~\eqref{buch:elliptisch:mathpendel:y0dgl} +sieht zwar immer noch wie eine Differentialgleichung für +$\operatorname{sn}(u,k)$ aus, aber die Lage der Nullstellen +der rechten Seite ist verkehrt. +Indem wir $y=y_0z$ schreiben, erhalten wir +\begin{equation} \dot{y}^2 -&= -\frac{E}{2ml^2} -(1-y^2)\biggl( -1-\frac{2gml}{E}y^2 -\biggr). -\end{align*} -Dies ist genau die Form der Differentialgleichung für die elliptische -Funktion $\operatorname{sn}(u,k)$ -mit $k^2 = 2gml/E< 1$. - -%% -%% Der Fall E > 2mgl -%% -%\subsection{Der Fall $E > 2mgl$} -%In diesem Fall hat das Pendel im höchsten Punkte immer noch genügend -%kinetische Energie, so dass es sich im Kreise dreht. -%Indem wir die Gleichung - - -%\subsection{Soliton-Lösungen der Sinus-Gordon-Gleichung} - -%\subsection{Nichtlineare Differentialgleichung vierter Ordnung} -%XXX Möbius-Transformation \\ -%XXX Reduktion auf die Differentialgleichung elliptischer Funktionen += +y_0^2 \dot{z}^2 += +(1-y_0^2z^2)(1-z^2). +\end{equation} +Wieder kann durch eine lineare Transformation der Zeit der Faktor $y_0^2$ +auf der linken Seite zum Verschwinden gebracht werden, es bleibt +die Differentialgleichung der Funktion $\operatorname{sn}(u,k)$ +mit $k=y_0$. +Daraus liest man ab, dass $y_0\operatorname{sn}(u,k)$ die Bewegung +des Pendels im oszillatorischen Fall beschreibt, wobei $u$ wieder +eine lineare Funktion der Zeit ist. + +Wenn $y_0\ll 1$ ist, dann ist auch $k$ sehr klein und die lineare +Näherung ist sehr gut, das Pendel verhält sich wie ein harmonischer +Oszillator mit einer Sinus-Schwingung als Lösung. +Für $y_0=k$ nahe an $1$ dagegen erreicht die Schwingung fast den +die maximale Höhe und wird dort sehr langsam. +Dies äussert sich in Abbildung~ +Dies äussert sich in Abbildung~\ref{buch:elliptisch:fig:jacobiplots} +wiederum durch die lange Verweildauer der Funktion nahe der Extrema. + diff --git a/buch/chapters/110-elliptisch/uebungsaufgaben/1.tex b/buch/chapters/110-elliptisch/uebungsaufgaben/1.tex index 694f18a..af094c6 100644 --- a/buch/chapters/110-elliptisch/uebungsaufgaben/1.tex +++ b/buch/chapters/110-elliptisch/uebungsaufgaben/1.tex @@ -1,3 +1,4 @@ +\label{buch:elliptisch:aufgabe:1} In einem anharmonische Oszillator oszilliert eine Masse $m$ unter dem Einfluss einer Kraft, die nach dem Gesetz \[ diff --git a/buch/chapters/110-elliptisch/uebungsaufgaben/2.tex b/buch/chapters/110-elliptisch/uebungsaufgaben/2.tex new file mode 100644 index 0000000..dbf184a --- /dev/null +++ b/buch/chapters/110-elliptisch/uebungsaufgaben/2.tex @@ -0,0 +1,65 @@ +\label{buch:elliptisch:aufgabe:2}% +Die Landen-Transformation basiert auf der Iteration +\begin{equation} +\begin{aligned} +k_{n+1} +&= +\frac{1-k_n'}{1+k_n'} +& +&\text{und}& +k_{n+1}' +&= +\sqrt{1-k_{n+1}^2} +\end{aligned} +\label{buch:elliptisch:aufgabe:2:iteration} +\end{equation} +mit den Startwerten $k_0 = k$ und $k_0' = \sqrt{1-k_0^2}$. +Zeigen Sie, dass $k_n\to 0$ und $k_n'\to 1$ mit quadratischer Konvergenz. + +\begin{loesung} +\begin{table} +\centering +\begin{tabular}{|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|} +\hline +n & k & k'% +\mathstrut\text{\vrule height12pt depth6pt width0pt}% +\\ +\hline +\mathstrut\text{\vrule height12pt depth0pt width0pt}% +0 & 0.200000000000000 & 0.979795897113271 \\ +1 & 0.010205144336438 & 0.999947926158694 \\ +2 & 0.000026037598592 & 0.999999999661022 \\ +3 & 0.000000000169489 & 1.000000000000000 \\ +4 & 0.000000000000000 & 1.000000000000000% +\mathstrut\text{\vrule height0pt depth6pt width0pt}\\ +\hline +\end{tabular} +\caption{Numerisches Experiment zur Folge $(k_n,k_n')$ +gemäss \eqref{buch:elliptisch:aufgabe:2:iteration} +mit $k_0=0.2$ +\label{buch:ellptisch:aufgabe:2:numerisch}} +\end{table} +Es ist klar, dass $k'_n\to 1$ folgt, wenn man zeigen kann, dass +$k_n\to 0$ gilt. +Wir berechnen daher +\begin{align*} +k_{n+1} +&= +\frac{1-k_n'}{1+k_n'} += +\frac{1-\sqrt{1-k_n^2}}{1+\sqrt{1-k_n^2}} +\intertext{und erweitern mit dem Nenner $1+\sqrt{1-k_n^2}$ um} +&= +\frac{1-(1-k_n^2)}{(1+\sqrt{1-k_n^2})^2} += +\frac{ k_n^2 }{(1+\sqrt{1-k_n^2})^2} +\le +k_n^2 +\end{align*} +zu erhalten. +Daraus folgt jetzt sofort die quadratische Konvergenz von $k_n$ gegen $0$. + +Ein einfaches numerisches Experiment (siehe +Tabelle~\ref{buch:ellptisch:aufgabe:2:numerisch}) +bestätigt die quadratische Konvergenz der Folgen. +\end{loesung} diff --git a/buch/chapters/110-elliptisch/uebungsaufgaben/3.tex b/buch/chapters/110-elliptisch/uebungsaufgaben/3.tex new file mode 100644 index 0000000..a5d118f --- /dev/null +++ b/buch/chapters/110-elliptisch/uebungsaufgaben/3.tex @@ -0,0 +1,135 @@ +\label{buch:elliptisch:aufgabe:3}% +Aus der in Aufgabe~\ref{buch:elliptisch:aufgabe:2} konstruierten Folge +$k_n$ kann zu einem vorgegebenen $u$ ausserdem die Folge $u_n$ +mit der Rekursionsformel +\[ +u_{n+1} = \frac{u_n}{1+k_{n+1}} +\] +und Anfangswert $u_0=u$ konstruiert werden. +Die Landen-Transformation (siehe \cite[80]{buch:ellfun-applications}) +\index{Landen-Transformation}% +führt auf die folgenden Formeln für die Jacobischen elliptischen Funktionen: +\begin{equation} +\left.\qquad +\begin{aligned} +\operatorname{sn}(u_n,k_n) +&= +\frac{ +(1+k_{n+1})\operatorname{sn}(u_{n+1},k_{n+1}) +}{ +1 + k_{n+1} \operatorname{sn}(u_{n+1},k_{n+1})^2 +} +\\ +\operatorname{cn}(u_n,k_n) +&= +\frac{ +\operatorname{cn}(u_{n+1},k_{n+1}) +\operatorname{dn}(u_{n+1},k_{n+1}) +}{ +1 + k_{n+1} \operatorname{sn}(u_{n+1},k_{n+1})^2 +} +\\ +\operatorname{dn}(u_n,k_n) +&= +\frac{ +1 - k_{n+1} \operatorname{sn}(u_{n+1},k_{n+1})^2 +}{ +1 + k_{n+1} \operatorname{sn}(u_{n+1},k_{n+1})^2 +} +\end{aligned} +\qquad\right\} +\label{buch:elliptisch:aufgabe:3:gauss} +\end{equation} +Die Transformationsformeln +\eqref{buch:elliptisch:aufgabe:3:gauss} +sind auch als Gauss-Transformation bekannt. +\index{Gauss-Transformation}% +Konstruieren Sie daraus einen numerischen Algorithmus, mit dem sich +gleichzeitig die Werte aller drei Jacobischen elliptischen Funktionen +für vorgegebene Parameterwerte $u$ und $k$ berechnen lassen. + +\begin{loesung} +In der ersten Phase des Algorithmus werden die Folgen $k_n$ und $k_n'$ +sowie $u_n$ bis zum Folgenindex $N$ berechnet, bis $k_N\approx 0$ +angenommen werden darf. +Dann gilt +\begin{align*} +\operatorname{sn}(u_N, k_N) &= \operatorname{sn}(u_N,0) = \sin u_N +\\ +\operatorname{cn}(u_N, k_N) &= \operatorname{cn}(u_N,0) = \cos u_N +\\ +\operatorname{dn}(u_N, k_N) &= \operatorname{dn}(u_N,0) = 1. +\end{align*} +In der zweiten Phase des Algorithmus können für absteigende +$n$ jeweils die Formeln~\eqref{buch:elliptisch:aufgabe:3:gauss} +angewendet werden um nacheinander die Werte der Jacobischen +elliptischen Funktionen für Argument $u_n$ und Parameter $k_n$ +für $n=N-1,N-2,\dots,0$ zu bekommen. +\end{loesung} +\begin{table} +\centering +\begin{tikzpicture}[>=latex,thick] +\def\pfeil#1#2{ + \fill[color=#1!30] (-0.5,1) -- (-0.5,-1) -- (-0.8,-1) + -- (0,-1.5) -- (0.8,-1) -- (0.5,-1) -- (0.5,1) -- cycle; + \node[color=white] at (0,-0.2) [scale=5] {\sf #2\strut}; +} +\begin{scope}[xshift=-4.9cm,yshift=0.2cm] +\pfeil{red}{1} +\end{scope} + +\begin{scope}[xshift=-2.3cm,yshift=0.2cm] +\pfeil{red}{1} +\end{scope} + +\begin{scope}[xshift=0.35cm,yshift=-0.3cm,yscale=-1] +\pfeil{blue}{2} +\end{scope} + +\begin{scope}[xshift=2.92cm,yshift=-0.3cm,yscale=-1] +\pfeil{blue}{2} +\end{scope} + +\begin{scope}[xshift=5.60cm,yshift=-0.3cm,yscale=-1] +\pfeil{blue}{2} +\end{scope} + +\node at (0,0) { +\begin{tabular}{|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|} +\hline +n & k_n & u_n & \operatorname{sn}(u_n,k_n) & \operatorname{cn}(u_n,k_n) & \operatorname{dn}(u_n,k_n)% +\mathstrut\text{\vrule height12pt depth6pt width0pt} \\ +\hline +\mathstrut\text{\vrule height12pt depth0pt width0pt}% +%\small +0 & 0.90000000000 & 0.60000000000 & 0.54228232286 & 0.84019633556 & 0.87281338478 \\ +1 & 0.39286445838 & 0.43076696830 & 0.41576897816 & 0.90947026163 & 0.98656969610 \\ +2 & 0.04188568608 & 0.41344935827 & 0.40175214109 & 0.91574844642 & 0.99985840483 \\ +3 & 0.00043898784 & 0.41326793867 & 0.40160428679 & 0.91581329801 & 0.99999998445 \\ +4 & 0.00000004817 & 0.41326791876 & 0.40160427056 & 0.91581330513 & 1.00000000000 \\ +5 & 0.00000000000 & 0.41326791876 & 0.40160427056 & 0.91581330513 & 1.00000000000 \\ +%N & 0.00000000000 & 0.41326791876 & 0.40160427056 & 0.91581330513 & 1.00000000000% +N & & 0.41326791876 & \sin u_N & \cos u_N & 1% +%0 & 0.900000000000000 & 0.600000000000000 & 0.542282322869158 & 0.840196335569032 & 0.872813384788490 \\ +%1 & 0.392864458385019 & 0.430766968306220 & 0.415768978168966 & 0.909470261631645 & 0.986569696107075 \\ +%2 & 0.041885686080039 & 0.413449358275499 & 0.401752141098324 & 0.915748446421239 & 0.999858404836479 \\ +%3 & 0.000438987841605 & 0.413267938675096 & 0.401604286793186 & 0.915813298019491 & 0.999999984459261 \\ +%4 & 0.000000048177586 & 0.413267918764845 & 0.401604270565476 & 0.915813305135699 & 1.000000000000000 \\ +%5 & 0.000000000000001 & 0.413267918764845 & 0.401604270565476 & 0.915813305135699 & 1.000000000000000 \\ +%N & 0.000000000000000 & 0.413267918764845 & 0.401604270565476 & 0.915813305135699 & 1.000000000000000 \\ +\mathstrut\text{\vrule height12pt depth6pt width0pt} \\ +\hline +\end{tabular} +}; +\end{tikzpicture} +\caption{Durchführung des auf der Landen-Transformation basierenden +Algorithmus zur Berechnung der Jacobischen elliptischen Funktionen +für $u=0.6$ und $k=0.9$. +Die erste Phase (rot) berechnet die Folgen $k_n$ und $u_n$, die zweite +(blau) +transformiert die Wert der trigonometrischen Funktionen in die Werte +der Jacobischen elliptischen Funktionen. +\label{buch:elliptisch:aufgabe:3:resultate}} +\end{table} + + diff --git a/buch/chapters/110-elliptisch/uebungsaufgaben/4.tex b/buch/chapters/110-elliptisch/uebungsaufgaben/4.tex new file mode 100644 index 0000000..8814090 --- /dev/null +++ b/buch/chapters/110-elliptisch/uebungsaufgaben/4.tex @@ -0,0 +1,75 @@ +\label{buch:elliptisch:aufgabe:4} +Es ist bekannt, dass $\operatorname{sn}(K+iK', k) = 1/k$ gilt. +Verwenden Sie den Algorithmus von Aufgabe~\ref{buch:elliptisch:aufgabe:3}, +um dies für $k=\frac12$ nachzurechnen. + +\begin{loesung} +\begin{table} +\centering +\renewcommand{\tabcolsep}{5pt} +\begin{tabular}{|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|} +\hline + n & k_n & u_n & \operatorname{sn}(u_n,k_n)% +\mathstrut\text{\vrule height12pt depth6pt width0pt}% +\\ +\hline +\mathstrut\text{\vrule height12pt depth0pt width0pt}% + 0 & 0.500000000000000 & 1.685750354812596 + 2.156515647499643i & 2.000000000000000 \\ + 1 & 0.071796769724491 & 1.572826493259468 + 2.012056490946491i & 3.732050807568877 \\ + 2 & 0.001292026239995 & 1.570796982340579 + 2.009460215619685i & 3.796651109009551 \\ + 3 & 0.000000417333300 & 1.570796326794965 + 2.009459377005374i & 3.796672364209438 \\ + 4 & 0.000000000000044 & 1.570796326794897 + 2.009459377005286i & 3.796672364211658 \\ + N & 0.000000000000000 & 1.570796326794897 + 2.009459377005286i & 3.796672364211658% +\mathstrut\text{\vrule height12pt depth6pt width0pt}% +\\ +\hline +\end{tabular} +\caption{Berechnung von $\operatorname{sn}(K+iK',k)=1/k$ mit Hilfe der Landen-Transformation. +Konvergenz der Folge $k_n$ ist bei $N=5$ eintegreten. +\label{buch:elliptisch:aufgabe:4:table}} +\end{table} +Zunächst müssen wir mit dem Algorithmus des arithmetisch-geometrischen +Mittels +\[ +K(k) +\approx +1.685750354812596 +\qquad\text{und}\qquad +K(k') +\approx +2.156515647499643 +\] +berechnen. +Aus $k=\frac12$ kann man jetzt die Folgen $k_n$ und $u_n$ berechnen, die innert +$N=5$ Iterationen konvergiert. +Sie führt auf +\[ +u_N += +\frac{\pi}2 + 2.009459377005286i += +\frac{\pi}2 + bi. +\] +Jetzt muss der Sinus von $u_N$ berechnet werden. +Dazu verwenden wir die komplexe Darstellung: +\[ +\sin u_N += +\frac{e^{i\frac{\pi}2-b} - e^{-i\frac{\pi}2+b}}{2i} += +\frac{ie^{-b}+ie^{b}}{2i} += +\cosh b += +3.796672364211658. +\] +Da der Wert $\operatorname{sn}(u_N,k_N) = \sin u_N$ reell ist, wird auch +die daraus wie in Aufgabe~\ref{buch:elliptisch:aufgabe:3} +konstruierte Folge $\operatorname{sn}(u_n,k_n)$ reell sein. +Die Werte von $\operatorname{cn}(u_n,k_n)$ und $\operatorname{dn}(u_n,k_n)$ +werden für die Iterationsformeln~\eqref{buch:elliptisch:aufgabe:3:gauss} +für $\operatorname{sn}(u_n,k_n)$ nicht benötigt. +Die Berechnung ist in Tabelle~\ref{buch:elliptisch:aufgabe:4:table} +zusammengefasst. +Man liest ab, dass $\operatorname{sn}(K+iK',k)=2 = 1/k$, wie erwartet. +\end{loesung} diff --git a/buch/chapters/110-elliptisch/uebungsaufgaben/5.tex b/buch/chapters/110-elliptisch/uebungsaufgaben/5.tex new file mode 100644 index 0000000..fa018ca --- /dev/null +++ b/buch/chapters/110-elliptisch/uebungsaufgaben/5.tex @@ -0,0 +1,59 @@ +\label{buch:elliptisch:aufgabe:5} +Die sehr schnelle Konvergenz des arithmetisch-geometrische Mittels +kann auch dazu ausgenutzt werden, eine grosse Zahl von Stellen der +Kreiszahl $\pi$ zu berechnen. +Almkvist und Berndt haben gezeigt \cite{buch:almkvist-berndt}, dass +\[ +\pi += +\frac{4 M(1,\!\sqrt{2}/2)^2}{ +\displaystyle 1-\sum_{n=1}^\infty 2^{n+1}(a_n^2-b_n^2) +}. +\] +Verwenden Sie diese Formel, um Approximationen von $\pi$ zu berechnen. + +\begin{loesung} +\begin{table} +\centering +\begin{tabular}{|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|>{$}c<{$}|} +\hline +n & a_n & b_n & \pi_n% +\mathstrut\text{\vrule height12pt depth6pt width0pt}\\ +\hline +\mathstrut\text{\vrule height12pt depth0pt width0pt}% +0 & 1.000000000000000 & 0.707106781186548 & +\mathstrut\text{\vrule height12pt depth0pt width0pt}\\ +1 & 0.853553390593274 & 0.840896415253715 & 3.\underline{1}87672642712106 \\ +2 & 0.847224902923494 & 0.847201266746892 & 3.\underline{141}680293297648 \\ +3 & 0.847213084835193 & 0.847213084752765 & 3.\underline{141592653}895451 \\ +4 & 0.847213084793979 & 0.847213084793979 & 3.\underline{141592653589}822 \\ +5 & 0.847213084793979 & 0.847213084793979 & 3.\underline{141592653589}871% +\mathstrut\text{\vrule height0pt depth6pt width0pt}\\ +\hline +\infty & & & 3.141592653589793% +\mathstrut\text{\vrule height12pt depth6pt width0pt}\\ +\hline +\end{tabular} +\caption{Approximationen der Kreiszahl $\pi$ mit Hilfe des Algorithmus +des arithmetisch-geometrischen Mittels. +In nur 4 Schritten werden 12 Stellen Genauigkeit erreicht. +\label{buch:elliptisch:aufgabe:5:table}} +\end{table} +Wir schreiben +\[ +\pi_n += +\frac{4 a_k^2}{ +\displaystyle +1-\sum_{k=1}^\infty 2^{k+1}(a_k^2-b_k^2) +} +\] +für die Approximationen von $\pi$, +wobei $a_k$ und $b_k$ die Folgen der arithmetischen und geometrischen +Mittel von $1$ und $\!\sqrt{2}/2$ sind. +Die Tabelle~\ref{buch:elliptisch:aufgabe:5:table} zeigt die Resultat. +In nur 4 Schritten können 12 Stellen Genauigkeit erreicht werden, +dann beginnen jedoch bereits Rundungsfehler das Resultat zu beinträchtigen. +Für die Berechnung einer grösseren Zahl von Stellen muss daher mit +grösserer Präzision gerechnet werden. +\end{loesung} diff --git a/buch/chapters/110-elliptisch/uebungsaufgaben/landen.m b/buch/chapters/110-elliptisch/uebungsaufgaben/landen.m new file mode 100644 index 0000000..bba5549 --- /dev/null +++ b/buch/chapters/110-elliptisch/uebungsaufgaben/landen.m @@ -0,0 +1,60 @@ +# +# landen.m +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +N = 10; + +function retval = M(a,b) + for i = (1:10) + A = (a+b)/2; + b = sqrt(a*b); + a = A; + endfor + retval = a; +endfunction; + +function retval = EllipticKk(k) + retval = pi / (2 * M(1, sqrt(1-k^2))); +endfunction + +k = 0.5; +kprime = sqrt(1-k^2); + +EK = EllipticKk(k); +EKprime = EllipticKk(kprime); + +u = EK + EKprime * i; + +K = zeros(N,3); +K(1,1) = k; +K(1,2) = kprime; +K(1,3) = u; + +format long + +for n = (2:N) + K(n,1) = (1-K(n-1,2)) / (1+K(n-1,2)); + K(n,2) = sqrt(1-K(n,1)^2); + K(n,3) = K(n-1,3) / (1 + K(n,1)); +end + +K(:,[1,3]) + +pi / 2 + +scd = zeros(N,3); +scd(N,1) = sin(K(N,3)); +scd(N,2) = cos(K(N,3)); +scd(N,3) = 1; + +for n = (N:-1:2) + nenner = 1 + K(n,1) * scd(n, 1)^2; + scd(n-1,1) = (1+K(n,1)) * scd(n, 1) / nenner; + scd(n-1,2) = scd(n, 2) * scd(n, 3) / nenner; + scd(n-1,3) = (1 - K(n,1) * scd(n,1)^2) / nenner; +end + +scd(:,1) + +cosh(2.009459377005286) diff --git a/buch/chapters/part1.tex b/buch/chapters/part1.tex index bee4416..52b18a0 100644 --- a/buch/chapters/part1.tex +++ b/buch/chapters/part1.tex @@ -35,6 +35,7 @@ %\end{appendices} \vfill \pagebreak + \ifodd\value{page}\else\null\clearpage\fi \lhead{Literatur} \rhead{} diff --git a/buch/chapters/references.bib b/buch/chapters/references.bib index 32a86ec..d14a3d2 100644 --- a/buch/chapters/references.bib +++ b/buch/chapters/references.bib @@ -118,3 +118,55 @@ YEAR = 2022, url = {https://de.wikipedia.org/wiki/GNU_Multiple_Precision_Arithmetic_Library} } +@article{buch:pearsondgl, + title = {Orthogonal matrix polynomials, scalar-type Rordigues' formulas and Pearson equations}, + author = { Antonio J. Dur\'an and F. Alberto Grünbaum }, + year = 2005, + journal = { Journal of Approximation theory }, + volume = 134, + pages = {267-280} +} + +@book{buch:specialfunctions, + author = { George E. Andrews and Richard Askey and Ranjan Roy }, + title = { Special Functions }, + series = { Encyclopedia of Mathematics and its applications }, + volume = { 71 }, + publisher = { Cambridge University Press }, + ISBN = { 0-521-78988-5 }, + year = 2004 +} + +@book{buch:ellfun-applications, + author = { Derek F. Lawden }, + title = { Elliptic Functions and Applications }, + series = { Applied Mathematical Sciences }, + volume = { 80 }, + publisher = { Springer-Verlag }, + year = 2010, + ISBN = { 978-1-4419-3090-3 } +} + +@article{buch:almkvist-berndt, + author = { Gert Almkvist und Bruce Berndt }, + title = { Gauss, Landen, Ramanjujan, the Arithmetic-Geometric Mean, Ellipses $\pi$, and the {\em Ladies Diary} }, + journal = { The American Mathematical Monthly }, + volume = { 95 }, + pages = { 585--608 }, + year = 1988 +} + +@book{buch:schwalm, + author = { William A. Schwalm }, + title = { Lectures on Selected Topics in Mathematical Physics: Elliptic Functions and Elliptic Integrals }, + publisher = { IOP Science }, + year = 2015, + ISBN = { 978-1-6817-4166-6 } +} + +@misc{buch:schwalm-youtube, + author = { William A. Schwalm }, + title = { Elliptic Functions and Elliptic Integrals }, + howpublished = { \url{https://youtu.be/DCXItCajCyo} }, + year = 2018 +} diff --git a/buch/common/packages.tex b/buch/common/packages.tex index 2ab2ad8..eef17c1 100644 --- a/buch/common/packages.tex +++ b/buch/common/packages.tex @@ -43,6 +43,7 @@ \usepackage{wasysym} \usepackage{environ} \usepackage{appendix} +\usepackage{wrapfig} \usepackage{placeins} \usepackage[all]{xy} \usetikzlibrary{calc,intersections,through,backgrounds,graphs,positioning,shapes,arrows,fit,math} diff --git a/buch/papers/dreieck/main.tex b/buch/papers/dreieck/main.tex index 75ba410..d7bc769 100644 --- a/buch/papers/dreieck/main.tex +++ b/buch/papers/dreieck/main.tex @@ -3,19 +3,21 @@ % % (c) 2020 Hochschule Rapperswil % -\chapter{Dreieckstest und Beta-Funktion\label{chapter:dreieck}} -\lhead{Dreieckstest und Beta-Funktion} +\chapter{$\int P(t) e^{-t^2} \,dt$ in geschlossener Form? +\label{chapter:dreieck}} +\lhead{Integrierbarkeit in geschlossener Form} \begin{refsection} \chapterauthor{Andreas Müller} \noindent -Mit dem Dreieckstest kann man feststellen, wie gut ein Geruchs- -oder Geschmackstester verschiedene Gerüche oder Geschmäcker -unterscheiden kann. -Seine wahrscheinlichkeitstheoretische Erklärung benötigt die Beta-Funktion, -man kann die Beta-Funktion als durchaus als die mathematische Grundlage -der Weindegustation -bezeichnen. +Der Risch-Algorithmus erlaubt, eine definitive Antwort darauf zu geben, +\index{Risch-Algorithmus}% +\index{elementare Stammfunktion}% +ob eine elementare Funktion eine Stammfunktion in geschlossener Form hat. +Der Algorithmus ist jedoch ziemlich kompliziert. +In diesem Kapitel soll ein spezieller Fall mit Hilfe der Theorie der +orthogonale Polynome, speziell der Hermite-Polynome, behandelt werden, +wie er in der Arbeit \cite{dreieck:polint} untersucht wurde. \input{papers/dreieck/teil0.tex} \input{papers/dreieck/teil1.tex} diff --git a/buch/papers/dreieck/references.bib b/buch/papers/dreieck/references.bib index d2bbe08..47bd865 100644 --- a/buch/papers/dreieck/references.bib +++ b/buch/papers/dreieck/references.bib @@ -4,32 +4,12 @@ % (c) 2020 Autor, Hochschule Rapperswil % -@online{dreieck:bibtex, - title = {BibTeX}, - url = {https://de.wikipedia.org/wiki/BibTeX}, - date = {2020-02-06}, - year = {2020}, - month = {2}, - day = {6} +@article{dreieck:polint, + author = { George Stoica }, + title = { Polynomials and Integration in Finite Terms }, + journal = { Amer. Math. Monthly }, + volume = 129, + year = 2022, + number = 1, + pages = {80--81} } - -@book{dreieck:numerical-analysis, - title = {Numerical Analysis}, - author = {David Kincaid and Ward Cheney}, - publisher = {American Mathematical Society}, - year = {2002}, - isbn = {978-8-8218-4788-6}, - inseries = {Pure and applied undegraduate texts}, - volume = {2} -} - -@article{dreieck:mendezmueller, - author = { Tabea Méndez and Andreas Müller }, - title = { Noncommutative harmonic analysis and image registration }, - journal = { Appl. Comput. Harmon. Anal.}, - year = 2019, - volume = 47, - pages = {607--627}, - url = {https://doi.org/10.1016/j.acha.2017.11.004} -} - diff --git a/buch/papers/dreieck/teil0.tex b/buch/papers/dreieck/teil0.tex index bcf2cf8..f9affe7 100644 --- a/buch/papers/dreieck/teil0.tex +++ b/buch/papers/dreieck/teil0.tex @@ -3,7 +3,48 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Testprinzip\label{dreieck:section:testprinzip}} -\rhead{Testprinzip} +\section{Problemstellung\label{dreieck:section:problemstellung}} +\rhead{Problemstellung} +Es ist bekannt, dass das Fehlerintegral +\[ +\frac{1}{\sqrt{2\pi}\sigma} \int_{-\infty}^x e^{-\frac{t^2}{2\sigma}}\,dt +\] +nicht in geschlossener Form dargestellt werden kann. +Mit der in Kapitel~\ref{buch:chapter:integral} skizzierten Theorie von +Liouville und dem Risch-Algorithmus kann dies strengt gezeigt werden. +Andererseits gibt es durchaus Integranden, die $e^{-t^2}$ enthalten, +für die eine Stammfunktion in geschlossener Form gefunden werden kann. +Zum Beispiel folgt aus der Ableitung +\[ +\frac{d}{dt} e^{-t^2} += +-2te^{-t^2} +\] +die Stammfunktion +\[ +\int te^{-t^2}\,dt += +-\frac12 e^{-t^2}. +\] +Leitet man $e^{-t^2}$ zweimal ab, erhält man +\[ +\frac{d^2}{dt^2} e^{-t^2} += +(4t^2-2) e^{-t^2} +\qquad\Rightarrow\qquad +\int (t^2-{\textstyle\frac12}) e^{-t^2}\,dt += +{\textstyle\frac14} +e^{-t^2}. +\] +Es gibt also viele weitere Polynome $P(t)$, für die der Integrand +$P(t)e^{-t^2}$ eine Stammfunktion in geschlossener Form hat. +Damit stellt sich jetzt das folgende allgemeine Problem. + +\begin{problem} +\label{dreieck:problem} +Für welche Polynome $P(t)$ hat der Integrand $P(t)e^{-t^2}$ +eine elementare Stammfunktion? +\end{problem} diff --git a/buch/papers/dreieck/teil1.tex b/buch/papers/dreieck/teil1.tex index 4abe2e1..45c1a23 100644 --- a/buch/papers/dreieck/teil1.tex +++ b/buch/papers/dreieck/teil1.tex @@ -3,9 +3,92 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Ordnungsstatistik und Beta-Funktion -\label{dreieck:section:ordnungsstatistik}} -\rhead{} +\section{Hermite-Polynome +\label{dreieck:section:hermite-polynome}} +\rhead{Hermite-Polyome} +In Abschnitt~\ref{dreieck:section:problemstellung} hat sich schon angedeutet, +dass die Polynome, die man durch Ableiten von $e^{-t^2}$ erhalten +kann, bezüglich des gestellten Problems besondere Eigenschaften +haben. +Zunächst halten wir fest, dass die Ableitung einer Funktion der Form +$P(t)e^{-t^2}$ mit einem Polynom $P(t)$ +\begin{equation} +\frac{d}{dt} P(t)e^{-t^2} += +P'(t)e^{-t^2} -2tP(t)e^{-t^2} += +(P'(t)-2tP(t)) e^{-t^2} +\label{dreieck:eqn:ableitung} +\end{equation} +ist. +Insbesondere hat die Ableitung wieder die Form $Q(t)e^{-t^2}$ +mit einem Polynome $Q(t)$, welches man auch als +\[ +Q(t) += +e^{t^2}\frac{d}{dt}P(t)e^{-t^2} +\] +erhalten kann. +Die Polynome, die man aus der Funktion $H_0(t)=e^{-t^2}$ durch +Ableiten erhalten kann, wurden bereits in +Abschnitt~\ref{buch:orthogonalitaet:section:rodrigues} +bis auf ein Vorzeichen hergeleitet, sie heissen die Hermite-Polynome +\index{Hermite-Polynome}% +und es gilt +\[ +H_n(t) += +(-1)^n +e^{t^2} \frac{d^n}{dt^n} e^{-t^2}. +\] +Das Vorzeichen dient dazu sicherzustellen, dass der Leitkoeffizient +immer $1$ ist. +Das Polynom $H_n(t)$ hat den Grad $n$. + +In Abschnitt wurde auch gezeigt, dass die Polynome $H_n(t)$ +bezüglich des Skalarproduktes +\[ +\langle f,g\rangle_{w} += +\int_{-\infty}^\infty f(t)g(t)e^{-t^2}\,dt, +\qquad +w(t)=e^{-t^2}, +\] +orthogonal sind. +Ausserdem folgt aus \eqref{dreieck:eqn:ableitung} +die Rekursionsbeziehung +\begin{equation} +H_{n}(t) += +2tH_{n-1}(t) +- +H_{n-1}'(t) +\label{dreieck:eqn:rekursion} +\end{equation} +für $n>0$. + +Im Hinblick auf die Problemstellung ist jetzt die Frage interessant, +ob die Integranden $H_n(t)e^{-t^2}$ eine Stammfunktion in geschlossener +Form haben. +Mit Hilfe der Rekursionsbeziehung~\eqref{dreieck:eqn:rekursion} +kann man für $n>0$ unmittelbar verifizieren, dass +\begin{align*} +\int H_n(t)e^{-t^2}\,dt +&= +\int \bigl( 2tH_{n-1}(t) - H'_{n-1}(t)\bigr)e^{-t^2}\,dt +\\ +&= +-\int \bigl( \exp'(-t^2) H_{n-1}(t) + H'_{n-1}(t)\bigr)e^{-t^2}\,dt +\\ +&= +-\int \bigl( e^{-t^2}H_{n-1}(t)\bigr)' \,dt += +-e^{-t^2}H_{n-1}(t) +\end{align*} +ist. +Für $n>0$ hat also $H_n(t)e^{-t^2}$ eine elementare Stammfunktion. +Die Hermite-Polynome sind also Lösungen für das +Problem~\ref{dreieck:problem}. diff --git a/buch/papers/dreieck/teil2.tex b/buch/papers/dreieck/teil2.tex index 83ea3cb..8e89f6a 100644 --- a/buch/papers/dreieck/teil2.tex +++ b/buch/papers/dreieck/teil2.tex @@ -3,7 +3,113 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Wahrscheinlichkeiten im Dreieckstest -\label{dreieck:section:wahrscheinlichkeiten}} -\rhead{Wahrscheinlichkeiten} +\section{Beliebige Polynome +\label{dreieck:section:beliebig}} +\rhead{Beliebige Polynome} +Im Abschnitt~\ref{dreieck:section:hermite-polynome} wurden die +Hermite-Polynome $H_n(t)$ mit $n>0$ als Lösungen des gestellten +Problems erkannt. +Eine Linearkombination von solchen Polynomen hat natürlich +ebenfalls eine elementare Stammfunktion. +Das Problem kann daher neu formuliert werden: + +\begin{problem} +\label{dreieck:problem2} +Welche Polynome $P(t)$ lassen sich aus den Hermite-Polynomen +$H_n(t)$ mit $n>0$ linear kombinieren? +\end{problem} + +Sei also +\[ +P(t) = p_0 + p_1t + \ldots + p_{n-1}t^{n-1} + p_nt^n +\] +ein beliebiges Polynom vom Grad $n$. +Eine elementare Stammfunktion von $P(t)e^{-t^2}$ existiert sicher, +wenn sich $P(t)$ aus den Funktionen $H_n(t)$ mit $n>0$ linear +kombinieren lässt. +Gesucht ist also zunächst eine Darstellung von $P(t)$ als Linearkombination +von Hermite-Polynomen. + +\begin{lemma} +Jedes Polynome $P(t)$ vom Grad $n$ lässt sich auf eindeutige Art und +Weise als Linearkombination +\begin{equation} +P(t) = a_0H_0(t) + a_1H_1(t) + \ldots + a_nH_n(t) += +\sum_{k=0}^n a_nH_n(t) +\label{dreieck:lemma} +\end{equation} +von Hermite-Polynomen schreiben. +\end{lemma} + +\begin{proof}[Beweis] +Zunächst halten wir fest, dass aus der +Rekursionsformel~\eqref{dreieck:eqn:rekursion} +folgt, dass der Leitkoeffizient bei jedem Rekursionsschnitt +mit $2$ multipliziert wird. +Der Leitkoeffizient von $H_n(t)$ ist also $2^n$. + +Wir führen den Beweis mit vollständiger Induktion. +Für $n=0$ ist $P(t)=p_0 = p_0 H_0(t)$ als Linearkombination von +Hermite-Polynomen darstellbar, dies ist die Induktionsverankerung. + +Wir nehmen jetzt im Sinne der Induktionsannahme an, +dass sich ein Polynom vom Grad $n-1$ als +Linearkombination der Polynome $H_0(t),\dots,H_{n-1}(t)$ schreiben +lässt und untersuchen ein Polynom $P(t)$ vom Grad $n$. +Da der Leitkoeffizient des Polynoms $H_n(t)$ ist $2^n$, ist zerlegen +wir +\[ +P(t) += +\underbrace{\biggl(P(t) - \frac{p_n}{2^n} H_n(t)\biggr)}_{\displaystyle = Q(t)} ++ +\frac{p_n}{2^n} H_n(t). +\] +Das Polynom $Q(t)$ hat Grad $n-1$, besitzt also nach Induktionsannahme +eine Darstellung +\[ +Q(t) = a_0H_0(t)+a_1H_1(t)+\ldots+a_{n-1}H_{n-1}(t) +\] +als Linearkombination der Polynome $H_0(t),\dots,H_{n-1}(t)$. +Somit ist +\[ +P(t) += a_0H_0(t)+a_1H_1(t)+\ldots+a_{n-1}H_{n-1}(t) + +\frac{p_n}{2^n} H_n(t) +\] +eine Darstellung von $P(t)$ als Linearkombination der Polynome +$H_0(t),\dots,H_n(t)$. +Damit ist der Induktionsschritt vollzogen und das Lemma für alle +$n$ bewiesen. +\end{proof} + +\begin{satz} +\label{dreieck:satz1} +Die Funktion $P(t)e^{-t^2}$ hat genau dann eine elementare Stammfunktion, +wenn in der Darstellung~\eqref{dreieck:lemma} +von $P(t)$ als Linearkombination von Hermite-Polynomen $a_0=0$ gilt. +\end{satz} + +\begin{proof}[Beweis] +Es ist +\begin{align*} +\int P(t)e^{-t^2}\,dt +&= +a_0\int e^{-t^2}\,dt ++ +\int +\sum_{k=1} a_kH_k(t)\,dt +\\ +&= +a_0 +\frac{\sqrt{\pi}}2 +\operatorname{erf}(t) ++ +\sum_{k=1} a_k\int H_k(t)\,dt. +\end{align*} +Da die Integrale in der Summe alle elementar darstellbar sind, +ist das Integral genau dann elementar, wenn $a_0=0$ ist. +\end{proof} + diff --git a/buch/papers/dreieck/teil3.tex b/buch/papers/dreieck/teil3.tex index e2dfd6b..c0c046a 100644 --- a/buch/papers/dreieck/teil3.tex +++ b/buch/papers/dreieck/teil3.tex @@ -3,8 +3,75 @@ % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % -\section{Erweiterungen -\label{dreieck:section:erweiterungen}} -\rhead{Erweiterungen} +\section{Integralbedingung +\label{dreieck:section:integralbedingung}} +\rhead{Lösung} +Die Tatsache, dass die Hermite-Polynome orthogonal sind, erlaubt, das +Kriterium von Satz~\ref{dreieck:satz1} in einer besonders attraktiven +Integralform zu formulieren. + +Aus den Polynomen $H_n(t)$ lassen sich durch Normierung die +\index{orthogonale Polynome}% +\index{Polynome, orthogonale}% +orthonormierten Polynome +\[ +\tilde{H}_n(t) += +\frac{1}{\| H_n\|_w} H_n(t) +\qquad\text{mit}\quad +\|H_n\|_w^2 += +\int_{-\infty}^\infty H_n(t)e^{-t^2}\,dt +\] +bilden. +Da diese Polynome eine orthonormierte Basis des Vektorraums der Polynome +bilden, kann die gesuchte Zerlegung eines Polynoms $P(t)$ auch mit +Hilfe des Skalarproduktes gefunden werden: +\begin{align*} +P(t) +&= +\sum_{k=1}^n +\langle \tilde{H}_k, P\rangle_w +\tilde{H}_k(t) += +\sum_{k=1}^n +\biggl\langle \frac{H_k}{\|H_k\|_w}, P\biggr\rangle_w +\frac{H_k(t)}{\|H_k\|_w} += +\sum_{k=1}^n +\underbrace{ +\frac{ \langle H_k, P\rangle_w }{\|H_k\|_w^2} +}_{\displaystyle =a_k} +H_k(t). +\end{align*} +Die Darstellung von $P(t)$ als Linearkombination von Hermite-Polynomen +hat somit die Koeffizienten +\[ +a_k = \frac{\langle H_k,P\rangle_w}{\|H_k\|_w^2}. +\] +Aus dem Kriterium $a_0=0$ dafür, dass eine elementare Stammfunktion +von $P(t)e^{-t^2}$ existiert, wird daher die Bedingung, dass +$\langle H_0,P\rangle_w=0$ ist. +Da $H_0(t)=1$ ist, folgt als Bedingung +\[ +a_0 += +\langle H_0,P\rangle_w += +\int_{-\infty}^\infty P(t) e^{-t^2}\,dt += +0. +\] + +\begin{satz} +Ein Integrand der Form $P(t)e^{-t^2}$ mit einem Polynom $P(t)$ +hat genau dann eine elementare Stammfunktion, wenn +\[ +\int_{-\infty}^\infty P(t)e^{-t^2}\,dt = 0 +\] +ist. +\end{satz} + + diff --git a/buch/papers/fm/.vscode/settings.json b/buch/papers/fm/.vscode/settings.json new file mode 100644 index 0000000..5125289 --- /dev/null +++ b/buch/papers/fm/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "notebook.cellFocusIndicator": "border" +}
\ No newline at end of file diff --git a/buch/papers/fm/teil0.tex b/buch/papers/fm/01_AM-FM.tex index 55697df..55697df 100644 --- a/buch/papers/fm/teil0.tex +++ b/buch/papers/fm/01_AM-FM.tex diff --git a/buch/papers/fm/teil1.tex b/buch/papers/fm/02_frequenzyspectrum.tex index 6f9edf1..6f9edf1 100644 --- a/buch/papers/fm/teil1.tex +++ b/buch/papers/fm/02_frequenzyspectrum.tex diff --git a/buch/papers/fm/teil2.tex b/buch/papers/fm/03_bessel.tex index 6ab6fa0..6ab6fa0 100644 --- a/buch/papers/fm/teil2.tex +++ b/buch/papers/fm/03_bessel.tex diff --git a/buch/papers/fm/teil3.tex b/buch/papers/fm/04_fazit.tex index 3bcfc4d..3bcfc4d 100644 --- a/buch/papers/fm/teil3.tex +++ b/buch/papers/fm/04_fazit.tex diff --git a/buch/papers/fm/Makefile.inc b/buch/papers/fm/Makefile.inc index 0f144b6..e5cd9f6 100644 --- a/buch/papers/fm/Makefile.inc +++ b/buch/papers/fm/Makefile.inc @@ -6,9 +6,9 @@ dependencies-fm = \ papers/fm/packages.tex \ papers/fm/main.tex \ - papers/fm/references.bib \ - papers/fm/teil0.tex \ - papers/fm/teil1.tex \ - papers/fm/teil2.tex \ - papers/fm/teil3.tex + papers/fm/01_AM-FM.tex \ + papers/fm/02_frequenzyspectrum.tex \ + papers/fm/03_bessel.tex \ + papers/fm/04_fazit.tex \ + papers/fm/references.bib diff --git a/buch/papers/fm/Python animation/Bessel-FM.ipynb b/buch/papers/fm/Python animation/Bessel-FM.ipynb new file mode 100644 index 0000000..bfbb83d --- /dev/null +++ b/buch/papers/fm/Python animation/Bessel-FM.ipynb @@ -0,0 +1,233 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy import signal\n", + "from scipy.fft import fft, ifft, fftfreq\n", + "import scipy.special as sc\n", + "import scipy.fftpack\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.widgets import Slider\n", + "def fm(beta):\n", + " # Number of samplepoints\n", + " N = 600\n", + " # sample spacing\n", + " T = 1.0 / 1000.0\n", + " fc = 100.0\n", + " fm = 30.0\n", + " x = np.linspace(0.01, N*T, N)\n", + " #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", + " 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", + " plt.plot(xf, np.abs(yf))\n", + " plt.xlim(-150, 150)\n", + " plt.show()\n", + " #yf_old = fft(y_old)\n", + " #plt.plot(xf, np.abs(yf_old))\n", + " #plt.show()\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Number of samplepoints\n", + "N = 800\n", + "# sample spacing\n", + "T = 1.0 / 1000.0\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", + "plt.plot(xf, np.abs(yf_old))\n", + "#plt.xlim(-150, 150)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fm(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.7651976865579666\n" + ] + } + ], + "source": [ + "\n", + "for n in range (-4,4):\n", + " x = np.linspace(0,11,1000)\n", + " y = sc.jv(n,x)\n", + " plt.plot(x, y, '-')\n", + "plt.plot([1,1],[sc.jv(0,1),sc.jv(-1,1)],)\n", + "plt.xlim(0,10)\n", + "plt.grid(True)\n", + "plt.ylabel('Bessel J_n(b)')\n", + "plt.xlabel('b')\n", + "plt.plot(x, y)\n", + "plt.show()\n", + "\n", + "print(sc.jv(0,1))" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "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", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAABqdUlEQVR4nO29abQtZ3ke+Lx7Hs987nx179WAhACZ4SLHxrHbTBZxB+GEJJAVW4ntxUrHpDvtdhoI3babhF62O73ISi93EmJjkzjL4OA4yCs4GDAENxjQFUgCSUi6kq505zOfs8eqPXz9o+qrXWef2lXfVLW3dOpZ6657zp5O7dq1v/d7n+d9n5cYY0iRIkWKFIcXmWkfQIoUKVKkmC7SQJAiRYoUhxxpIEiRIkWKQ440EKRIkSLFIUcaCFKkSJHikCM37QNQwcrKCjt79uy0DyNFihQpXlJ4+OGHNxhjq+O3vyQDwdmzZ3HhwoVpH0aKFClSvKRARC8E3Z5SQylSpEhxyJEGghQpUqQ45EgDQYoUKVIccqSBIEWKFCkOOdJAkCJFihSHHEYCARF9gojWiOh7E+4nIvqXRHSRiB4jotf77nuAiJ5x/z1g4nhSpEiRIoU4TGUEvwvgvpD73wHgDvff+wD8KwAgoiUAvwLgBwHcC+BXiGjR0DGlSJEiRQoBGAkEjLGvAtgKecj9AP4dc/ANAAtEdBzATwD4AmNsizG2DeALCA8oxnF1p4P//J2riNuO+/s39vDJr19Cxx7E+ndMYThk+MzDV/Dk9b1YXp8xhs8+chWXt9rGX3u9Yb0kzjVjDP/5O1cTuf78ePTyDr781JrR1+z2BvjUt17EXrdn9HVlwBjD5x+/gd/92vPo9mbrs+ef9RPX4vk+6SKphrKTAC77fr/i3jbp9gMgovfBySZwyy23GDuwD/7hY/jzZzaQz2bwk/ccN/a6fjS6Pbz349/AdruHp2828NGfek0sf8ckPvXQZfyTP/ou6sUcvvnht6BSMHupfO3iJv6nTz2C24/U8MVf/DGjr/2//MdH8dWn13Fjr4sP3HeX0dc2id/75ov43/+zw6Y2uj389A+djf1vWv0B7v/NrwEAvvbBN+PkQtnI6/7O1y7h1//r9/H1ZzfxL9/7OiOvKYt/++fP4f/83PcBAH/+zAZ+64HzIKKpHMs4/vyZDfyjTz+CxUoeD/9vb0MmMxvHxfGSEYsZYx9njJ1njJ1fXT3QIa36mvjOizsAgK8Y3iH58fnHb2K73cNtq1X8p29fRdvux/a3TOEPv30FANCw+vjq0+vGX/9bl5wE8uJaE03L3PnY6/bwtYsbAID/8th1Y69rGlZ/gI994Wn88G3LOH9mEf/qK8+iNxjG/ne//cKO9zM/TybAM4yvPrOeaHbDsdG08M//9Gm87e6j+Cd/5S586ftr+PzjNxM/jkng36Htdg/fv9GY8tEcRFKB4CqA077fT7m3Tbo9Edzcs7xFKM4P58vfX8NqvYh/ev+r0ekN8JWnzC+sJtHtDfDYlR387JvOoZDL4OEXto3/jYtrDd/PTWOv+8S1PQyGDD906zJe3Gpjp20be22T+OITa9hq2fj7P3YbfvZHzuHabhcPXQpjV83AT/WZov0YY3ji2h7yWcJOu4cr2x0jryuDTz90GXZ/iA/cdxd+9k3ncGa5gk987fnEj2MSHr2yg+VqAQDw+LXdKR/NQSQVCB4E8DNu9dBfArDLGLsO4PMA3k5Ei65I/Hb3tkTw9E1nMbrzaB2XNlux/Z1vPr+Jv3z7Cu49t4RyPotvPR//F14Hj17eQW/A8Kbbl3HPyflYAsHTN5u4dbUKALi0Ye7cP+MGlZ96ncMwPj6jnOwXn7yJpWoBb7p9BT/6ilXkMoSvPm1uhz4Jz200MV/O41Un5vDcupnzvt3uoWn18WOvOAIAseg+UfjjR6/hjWcXcfuRGnLZDP7WG0/jW89v4cXN5I9lHIMhw3ev7uIn7zmOXIZiXWtUYap89PcB/AWAO4noChH9HBH9fSL6++5DPgfgOQAXAfxbAP8AABhjWwD+KYCH3H8fcW9LBM+uO4vGm25fQaPbR8sgRcGx1uhio2nj1Sfnkctm8AOn41lYTeJ77uL5A6cX8OqT83j6ZtNouj8YMlzaaOFHbl8BANzc6xp77WduNlAv5vCWVzqL0iyKc8Mhw1efXseP3rGCbIZQK+bw+jOL+Itn4w8EN3a7OLFQxunFCq7tmNm584X/h29bBgC8mHAguLzVxvdvNPD2u495t73j1Y7e95Wn46N8RbHW6KLbG+LOY3WcXqrg0sb0g9M4TFUNvZcxdpwxlmeMnWKM/TZj7F8zxv61ez9jjP0CY+w2xthrGGMXfM/9BGPsdvff75g4HlHc3LOQzxJefXIOAHDD4ILEwReiu084f+P1tyziiet7sPqzVdXgx3PrTSxU8liuFnBmuYKm1cdmyxzFstWy0R8y3LZaQ7WQxc09y9hrX1xr4rYjNSzXipgv5/HC1uztvp7fbGGzZeOHb1vxbnvd6QU8eb0Bux+vTnB9t4vj8yUcmSsaC8CcCrr33BJyGUo8EHzTzbB/9BUj7fDcShVnliszQcPy83NyoYyzyxU8bzADNoWXjFgcBzabFparRRyfdyonbu6aDwRPudrDK485geDOY3V3Rzx7uwKOZ9ebuHWlCiLC2WWHvnnBYDq70XQW/pVaEUfnSrjZMHfer+92cWrR+TxPL5WnwldH4RG3QOG1tyx4t73m1DzswdCjK+PCjd0ujs2XcHSuhL1u30iZ5eVt51o+s1zBycVy4oHg4Re2MFfK4Y4jtX23//idR/D1Zzemvum66l6DpxbLOLNcnQp1FoVDHQg2mhZW6gUcmy8BcBYR07i83cZCJY/5Sh4AcLt7sZoUSE3jufUWblt1jvPMcgUAjAauUSAoYLVexJqhnSljzFno5pzP89RCZTYDweUdVAtZ7xwDwKtPzAOIV0js9gbYbNk4PlfCar0IwOm50MWN3S5qxRzqpTyOz5ewZjDDE8HDL2zj9WcWD5Rk/qVbl9HtDadOD151KbgTC2Ws1otoWGYCsEkc8kBgY6VW9BaOOKihK9sdnF6seL/ftloDEfDM2uyVkAFAxx5grWHh7IqTCZxarIDILO/rBYK6mxEYWjj2On10egMvsJ9aLOPKdnsq5YxhePTKDu45tYCsb+E6vVRBPkt4LkbagC/Qx+ZLOOIGgjUD2dhWy8ZyzamIWakVvc83Cex2enj6ZhNvuOWgIcHr3IyLl4hPC1e2O1iqFlAp5LBaMxeATeKQBwILK7UiyoUsKoUstg3y4ByXt9oeVQEApXwWpxbLM5sRXN91di/H3cW0kMtguVo0smBwbDSc87xaL2K1XjT2peCBnAeCk4tldHtDo/qGLvqDIb5/vYF7Ts3vuz2bIZxZruJ5Q5U8QdhyS2k5JQfASBDeatlYqk4nEPAS2HtOLxy47+hcCScXyvjO5Z3EjicI6w3LC7wrdec8JXmORHBoAwFjDJtN20uRF8p5bLfNtsczxnBlu7MvEADA7au1GQ4EzmLKdRMAODpXNCrobjQtFHIZ1Is5LJTz6PQGRkRSLxC4ixxf7GZp93Vpsw174FSQjOPcSjVWIZH3VMxX8lhxd6abBhakzZbt1cgvVwvY6/YT4+W5pnJXwPkEHB3m21Ou0ttsWd46s1qbvWsSOMSBoGH1YQ+G3gW8UClgt2N257jRtGH1hzjlo4YA4NbVGi5ttmaOsgDglRSeWCh5tzn0jbmMgC8cRIQFVzvZ7egHYa41HKk7x84Xu1naffGF6xVHDy5ct65W8cJmG4NhPNcFP8fz5Tzmy+bO+1bL8jKCZfecbyWUhX3/RgPz5by34x7HPSfncXWng13DmzwZbDQtb53hGcH6DF2TwCEOBHvuF2Cu5HwhFip57Bi+WK641RTjGcHpGaQsOHhGwOkVwHxGsNfpeQvRnLcg6Z+LbXfHu1h1XnOlNntp+NM3GyDCPqGY49aVKuzB0KsyMQ1+fS+U8yjkMijns9qBgDHmUkMu9eGe881mMtf20zcauPNofaKnEM+8vn9jeoLxZtP2AuRyNdUIZgqNrtM8Vi85ZmoLlby3kJiCVz88Fgh4hjCLFS3XdztYqRVQzGW9247OlbDZsox54ex1e14AMLkz3W73kHMbtABHjAZGmsQs4JmbTdyyVEG5kD1wHy/VfT6mzlMeCOZ9515389Ow+ugN2Iga4mJoAsGXMYanbjYCaTaOVx53yran5e/Ttvto2wMvOy3kMpgr5YxvOnWRBgIvIygYWYz84HTK8bmxQLDk/M4zhlnCtZ3uPn0AcKgWxszt8nY7fV8mVnBv0z/3O20bC5WCtzusF3Mo5DIzlYY/s9bAHUeCFy6+YbhuqON3HDsdG/ViDrms87VfqOS1zzsvsFh0AwGniJLweFprWGh0+15JdhCO1ItYqOSnlhHw7wyvqgIcjWbWPLAOcSBwvgBeRuDujkzy9htNG4VsBnPl/RbO3Pp3VjOC4z5aCACWXKrFFO+71+l554TvTk3skLZbPSy6mgMAEBFWa0VszEgaPhwyvLDZ9jyWxnF0rgQi4FoM/SwAsNvuef0sgEPL7WgGgr2Os6Gac79H/H9+e5zgJc281yUIRIS7jtWnlhFwWpJnTACwUDa/6dTFoQ0EfIAGpygWKnn0h8yoJfJ6w8JyrXCAv6yX8lio5GcyI7i5Z+3TB4DRrt3ULmav2xtlBEapIRuLlcK+21bqxZnJCG42urD6Q9yyFLxw5bMZHKkXY8wIep44DzhBeE/zvDcsvqHar/novq4IXnAN5SadT45XHK3jGcN+WaLgG5xFXyCYL+tnYqZxaAPBuEZgcmfKsdEclY2N49RiOTZRUBV2f4jdTs/jMzl4ur9lIBAM3WB7UCw2QQ3tX+gAYLVWwEZCwmUUeHc21wKCcHy+HEuHO+BSZ2WzC9L49yifzaBS0BehRfDiVhsZwoGqvHHculJF0+pP5TrwV2pxzFf0MzHTSAOBewHXis4H1TI4NGa9YR1YVDlOLsyeDw6nfvx8JgBvcTXRZ9Ho9sHYKABw983YMoKEG5zC8KJrgBdGZRyfL+HabnwZgZ8aWjAhFnc5NeSjnEr5REZWvrjZwvH5Mgq58GXsnFuhNQ2zt8BAYCATM41DGwj2uj0UchmvOqbmBgSTVtRO53Ih8L5jhmvzTWDEZ+4PXnwXaaLz2qPkSiPdpFrMom3pNSAxxpyMoLo/I1ipFbHVsjGMqTZfBpc228hnCSdCxkMeny/j+k43Fhpjt93btyDNuc18OtVg41qb87q5xDSCKFoIcDICAHh+I/kmzqBAEIceqYtDGwga3f6+xahWzHq3m8BwyLDZsidSQ0fnHffHWRqwzvsaxoMX7wI2UV7Lvxhzvi9GtZhDUzMTa9sD2IPhgYxgsVrAYMiMfa46eGGzhdOLlX0eQ+M4sVBCpzcwTq0wxhyNYOy8A3qbH35ea77vUlIc+ItbndDsiuPEQhmFbCZWH6dJ2O30UC1kkc+Oltr5sqNHtmfou3+oA0Hdl8561JDmzpRju21jMGQTqaGjde71MjtZwabPHnocC9W8kYyAi/H1oj8I57QzMa+ZbEwj4AvfjuGucRW8sNnGLRELFy/dNa0TNK0+BkO2b2dadXsZWhoLUtPqo5TP7FvokqCGWlYfG00LpwUyAsfHqRKrj9Mk7IxlYcCIap0lncDUhLL7iOgpIrpIRB8MuP9jRPSI++9pItrx3Tfw3fegieMRwV6nty+drboZQdMy8+FwYWpiRjA3e4HAo4YC6KylSsGIRtB2d/5VXyCoFnLa1JDXNVsJ1jem3cDDmFM6GiYUA8CRuXg6Tz0u33hG0Nu3oeJ/I+5A4J+BIIK4fZwmYbfT23fOgVGFVSMBHUUUueiHhIOIsgB+E8DbAFwB8BARPcgYe4I/hjH2P/se/w8BvM73Eh3G2Gt1j0MWzgU8evt1NyNoGsoINkJ214Bj2wDEY32tis2mjUIu43Xm+rFQKRihhnjGxQMv//najt558Nsn+OGVvk5598Xn+kbtYOPyR+KLfXUsEwOgVTK91+3v+x4BXAyNl4q7ssWHvQgGgtUqvvLUOgZDFkrNmcZe52Alm4kAbBomMoJ7AVxkjD3HGLMBfArA/SGPfy+A3zfwd7XQ6Pa9xR/wZQSGuGRegbNUDRaLj7q1+kkP8QjDRtPGSvVg3wPgvA8zgcA5v5WCPxvLaVdrNboHtQfAnxFMlxriZn7jvlPj4PqM6YyAL/a1fQHYjEZwICMo5bDX7cUq0F93N1AnxnpeJuHcsuPjZGpOsyh2OwepIR6AZ0G34jARCE4CuOz7/Yp72wEQ0RkA5wD8me/mEhFdIKJvENG7Jv0RInqf+7gL6+v6c0gbYzuZXDaDUj5jrHyU70DHdwMc9WIO5Xx2tjKCluX584xjoZLHdkt/V8356H3UkAGNoGHtLwfmWIihP0QFfErVyZCKIcBZJEr5TAwZgXveCwfpUF1qaG7snM+V82AM2gUAYbix20EuQ563URR4JpZ0yXZYIDClR5pA0mLxewB8hjHmPwNnGGPnAfxtAP+CiG4LeiJj7OOMsfOMsfOrq6tBD5FCELdZK+aMRekdNyPwN/D4QUSuq+fsBAK/Xe44FisFNK2+tvFc28sIfDvTQlb7S+H1hRT3f6ZxNAqq4JpvXGEYiAgrNXPDejiaodSQ+rlvdPsHqMQkuouv73ZxpF4Upnl4JpZ0N/9Oxz4YCEr8vM+ORmAiEFwFcNr3+yn3tiC8B2O0EGPsqvv/cwC+gv36QSwYDhla9mBfmgyYqV7h2HHLxsKaXY7OJT/fNQx+u9xx8J22bqBs2n0UcvurTKrFHDq9gZYPP6f0qmOfaS7rlL5Ou2ro2k4HpXzmQFVTEFbrReNdsC2PGtqfiQEjAV8FzQCNgDeXxVlCenOve8AKJQzH58sgSjYjsPoDdHvDAwUMtYJ+ADYNE4HgIQB3ENE5IirAWewPVP8Q0V0AFgH8he+2RSIquj+vAHgTgCfGn2saXXd6Urmw/wKuFnPGvIa2XSfMMBydK80MNcQntgVVDAGjL7dupUPbGhzYQXqpss6CZPVQzmc9Z00/5iv5qQ4mARxX1xML5Ym++X7E0Q3dmlCtBeiJxYFVQwkYz13fPeiSG4ZCLoNjc6VEA0FQzwxgXo80Ae1AwBjrA3g/gM8DeBLAHzDGHieijxDRO30PfQ+AT7H97XSvBHCBiB4F8GUAv+avNooLbftg5QrgLEimAsFugO/NODg1NAsdhnxi20o13oygZff30UKAb2eqSVGM70w54pg1IYurO51IfYAjTmrIf45K+QwypK4RDNzMevy8m8g0wsAYw41duYwAcOihJKmhcWdWjlzWGQpk0s5GF9rlowDAGPscgM+N3fbLY7//asDzvg7gNSaOQQa8m7ec378g1Us57TJGjnGnxyAcqZdg9YfY6/T3ecBMA1vN8ConvuvTrQ9vWf19giUw0gu0dqZWf193qx8L5cLUy0ev7XTw43ceEXrsar2IrbaN/mAYmOGooNntI5shFH1UJRG5Qr1aAG4G0E3AKBCYdPL1Y6/rDHvhs6lFcWqxgm89vxXLMQUhiI7jqBrUI03gUHYW80hciZsamiAUc/D5pRut6esEQZ4ofvD5AbrpftseBGZigF71SrPb39et7Me0qSGrP8Baw4oUijlWawUwZnburxOAsweoKZ0suBNQAcZfE0BsFgq8wEIlI7ix10Xf0KS9KATRcRz1kjk90gQOZSDgF+g4RWFSLBahhrzmoRkYnOIFggnHbEojaFn9A1+MqgGNoNHthWQE06WGbu46n++JBbGFi3vXm+jk5mgGaDOAXunuaEO1/3tUMVCWGgZuvzE+QCkKpxbLGAxZbDbf4wgq2eWoFrOxZUwqOJSBwKOGAgJBw8CH4xl8iQaCGfDLj8oITGkEbXsQGIABvbrqptU/UDrKMVfOu/bX09FiRHsIOLhxnsngFRSAAb0seBLFakKEDsMN16b7qAI1BIzsKeLGyE7l4Hxqk3qkCRzKQOCJxQHUkN0fatfKN1yDr3EnzHHwCp3NlwA1ZKobshmwIPHAoEsNTcoI6qUc+kOGbi8ZSmAcoj0EHN78B5PUkB0cCGrFrDKF055ADWUzhHJe/XWjcMPNsGQDAQ/EpnTAKAT1bnDUirmXV9XQSxE8Uo9nBHxB0r2AOR89aVHlWKoUQDRj1NCEY85lM6gWstpicdseHAjAJjxvGtbBxiYOU0K3KnggEOW0l2KhhoLPT6WgTw2Nf4+AeKmPjaaFhUo+ciDNOPj5T6qJs20FB0rApaFnqGrokAaCYI2AX9DdXjxOmOPIZTNYqhSwYXDnp4q9jjOop5Q/+KXmqJfyRjSCSjG4fFR1QeLjL8fL9DjmPFprSoFgt4uVWiH03PoRFzUUFAiMiMWBHHh8Yqgz8EnMWsKPUj6LhUoe12OaADcOfl7HqTPApeTSjGC6mBQITGUEQVO4JmG5VpiZjCAqg6mX9Ere+oMhrP7Q66zk4F8UVeqm3RuAMUykhua8jGA6X7ybe10pGqOUz6KUzxg1ymtZgwkaQVZ5wZ70PQKc4BCXl07Y5L8oHJsr4UZCYnHb7qOczwbaYNRKqUYwdXQmlI/yBUm3EWY0vi+6N2BWZurudg6ah42j7rpKqoIbzlXGFqSMW9/eUczE+M6qNkEsrnudrtPJCGQDAeBkBSapoUa3d8BSBXCueeUAHEENxZURhFmhROHYfHLd/C07OPgCjs2EZUCPNIVDGQja9gC5DB3gGLnlhC41xHeekzpd/ViuFb0RkdPEXjc6I+DVN6poTyg3BJzFRPW888A7MSMo89LXaWUEllogMHRdMMbc/o2D56ecz6LTGyhVVE0qugAc6iOuzuL1poVVxUBwfD65jMCp1AqmA2dtJsGhDQRBu5hRRmDGCXNOKCN4KVFDuoFgMpVQzmeV5zfzTCNoxwuYK31VQW8wxGbL8gYRiWKxaq73oTdg6A9Z4HkvubdZffmdadvqg8ixqhiHyeZMP7q9ARrdvgY1VMZG04bVj9/wrWUdLIzg4J+FahZsGoc0EBz0uwF8H452IAjfofqxUiuiZQ+mPsReXCNQpyv4jj9INOU7UxV4FEV+9qqG1hsWGJMvdVyoFIxZZ3dCznslr37Nt+0BKvmD3cqAGWvxIPDsWZ0acp6XhOtvWEZQNqRHmsIhDQTBkbpsKEo3uk47v4hXOt/ZTFsn2A0Ysj0O3SaYsEBQ1AgE/HWDsjzAWZQyNJ2qIV6qKJ0RGDTK4+dnXBMD9K75dm9wwMGXw8TUuSBsRoyAjcIx17E0CZ2gPaF3AxixD9PeAHIcykDQiZ0aOmjNOwlxzaiVwXDI0LD6kYGgWsih2xsqe7VwUTKonK6czyhrBO0JHa4cRKRNa6mCB4IjdXmNYLfT05rRwOGdn8LBrzsPykqBwArOrAFeNWS+m3s0C1yNGuK2FEnoBM0Ag0UOHpTTjGCKCLJCBsxRQ3udyZbI4+CBYHOKNhOO/cJB3/Rx8DS3rblzD+KUywV1jaAToj1w6Ja+quKmS0HIGqQtVgoYMjOVTpOsIPy3KVNDkwJBMYchUy8JnoSNhvM9Uc0IOEWXRCAIMljkMMU+mMKhDARORnBwodbZHfnRsHrCgWB5BqihqK5iDt1KhzCuWkcjCKOcOOZK+amUj97c6yKXISxFNBeOY7Hq2kwYoIdCz7tGE2VYIODCvWl6iDv1qgaCuVIOlUI2EeO5ptUPpOMAfwB+GVUNEdF9RPQUEV0kog8G3P93iWidiB5x//28774HiOgZ998DJo4nCo5GEMBT55xBHfpicV+aGppmCWlSgSCMGippicWzmxHc2HNm62YEZ+tyLFTM2UyMMqbg8lFAkRoK4cD53zJdHrnRsFEtZCfqQVEgIhybL8VuM8FLdifZnphqXjUF7cE0RJQF8JsA3gbgCoCHiOjBgEljn2aMvX/suUsAfgXAeQAMwMPuc7d1jysMbXsQuBgRESqFnJHy0VuWKkKPLeWzqBVzxidSyUA4EHjmcHo792IQNZTPoqtKDQlkBPVSPvHB5YBTnXJEsmIIGNlMmOgu5udnUgAG1KmhSTvzuIbTbDQt5YohjmNzpdhtJqz+EIMhO2CnwjFrgcBERnAvgIuMsecYYzaATwG4X/C5PwHgC4yxLXfx/wKA+wwcUyi6vYFXPz0OZ2eq31kcxbf7sVQtTNUvP2oWAYd+RhBOUahmBB17gGIuE1qlNVeelkbQlZ6kBTgzFAAzA+C9QBAgFmtVDYVSQ/GIoTr2EhzH5kqedhMXwqaTAeZ8zUzBRCA4CeCy7/cr7m3j+OtE9BgRfYaITks+1yi6vQFKucmRWlssDpmfG4SlasHoNCpZiGcEfICMZpmnYY2g0wuuAvNjrpSfSh+BYy8hv4PlGwkTugbPtCZpM4CGWDyJ+uAD2g1nBJtNW1kf4FidK2K9acU6n4JnzVEawcspIxDBHwM4yxi7B86u/5OyL0BE7yOiC0R0YX19Xetguv1hYOUKAG0fdas/gN0fCnUVc7xkAoHm5Klub4hshpAPmMNbcj1vhgrlkpOoPj/qrsmXyuuromMPsNftK1FDnj+SgSymPcFbC9DTCDp232tIG4eJ8aNB2GhaWKlrBoJaEXZ/GKsJIRfJJ3W757IZFLKZl1UguArgtO/3U+5tHhhjm4wxnov9FoA3iD7X9xofZ4ydZ4ydX11dVT7Y3sDh7iYtHDoUBTCyMZDNCEwOIZHFbqeHfJYiF1PduQGd3gClCR7yfEevYnUgmhEwBjQTrNIYNZPJB4J8NoNKIWumfDSsf0ORGmKMhZ53TiO2DXYXD4YMW20bK1U9amjVDSRx6nI8AE7KCABeMv3yqRp6CMAdRHSOiAoA3gPgQf8DiOi479d3AnjS/fnzAN5ORItEtAjg7e5tsSGq1FCXGlINBJste2qjFLm9RJBVgB8Vj/dV1wgmLRx6O1OxjABI1m9ItauYwxSdxc9pMSAI89tkhXp7MMSQTf4e8cICk9TQTtsGY6PBParggWCtEV/lEKdPJ1VVAc5aMysZgXbVEGOsT0Tvh7OAZwF8gjH2OBF9BMAFxtiDAP5HInongD6ALQB/133uFhH9UzjBBAA+whjb0j2mMPASxjBqSMfjxbOgnmCJHITFSgFWf4hObxC6g4gLex0xcZvTAE3lqqEhihO0mdFMArVAEFY6Coz8hpzPR2xkpC64jYGKWAw4AvdeR38h7fYGKOUzgSWsRKSkz4y+R5M2VHqbhiDwUtpFzUBwJMGMYFJDGaCni5mGkVWHMfY5AJ8bu+2XfT9/CMCHJjz3EwA+YeI4RDAqYZxMDeko+SoZwbJ7YW82bVSWkg8EIoZzgDM3oFLIoq1RNTQpIyhpVK90eoPI883vT3IqFF9oZO0lOExlBI7JYgRFIR0Iwm09CrkMchkyutDxUtqoyX9RWK05n0cigSCSGpqNQHDoOou5/WwYNaSTrskMpeFYrJofTSgD0UAA6JmJ8Z1pEHSqV0QygtoUqKH1hoVCNoO5slpwnysboobsYSh15liAy2kzYXYh3usapj54QYVsl/Y45so5FLIZrMfYzT/KCF4a1NChCwT8gp8oWmqmazJDaTg45zmtyiGpQFDIqlND/cllu1rUUE9AI3C/kI0EB4GsNy2s1ouR2sskzJXMUkOTUFIw/BNp4tOZMRGE0Sxw8U1WEIgIq/VivBmBpxGEnJ9CTtm3yzQOXSDoRmQE5UJO6+JtvtwDQTGnTA1Ncn0FRs1Oqo1Nk+yQOXiGljQ1pNP8ZCwjiKiqUqOGJlcicZje8fKMWVcjAICVuAOB1XemIAaUSnOU8xnlbnrTOHyBIGInU85nYQ/UrZZFUsJx8FR3GoFgOGRCYyo5dCZPhYnF/HaVINwVyAhG1FByTWXrDcurUFEBN8rTrSZr231UJgztAdR27vzxQXYh3usasGvxY6tto5DNBPqEyeJIzIGAjwYNywYrhRzami4GpnAIA0F41ZDuCLmWPUAhlwlsmpqEuXIO2QxNJRA0LMeCWoYaUv1yh2oEGvXsbbsfaJ/gR7WQBZH5TtcwbDQ1A0HZsXJW7eTm6PSGEy1VADXDP55ZR2UEunYtfuy0elioRJc5i2C1XozV8deZRRAesFKxeIqIqnbwFiTFD6htR18A4yAiZ1j5FMRi3rAk2gldLea0vIYmnndFjYDXs0eV3RIRasXk/IYGQ4atlq08ZB0YfSa6TWVde4By2M49L18pF2ZbwWHCrsWP7bbtmfHpYrVWxGbLVs78oxDmzMpR0XQxMIlDGwjCqCFAIyOw1HoBlqdkM8HtJURN8qoFDWqoP4w+75JfjK4dXs/ux1yCU8o2WxaGDFp2CDxL09UJovpTlDQCgYxA165lHNtt25vToIvVehGMxUfHNq3JPkwc/LxPq5HUj8MXCFwLg0ncpq49bNjA6jAsVvNTDQRSYrHGJLFoakhuh8Y51qjyUQBuRpCMRsD5Z62MwDOe0wtebXtgvLqnIxCAde1axrHd7pnLCLzu4njoobbVn+gzxFEuZMGYmq2KaRy6QGBFZAQl3UAgkBIGYVrGc7KBoFbMomXLz6JljKHbn0wNcasD2YUjbAzjOGol9WxGFhvu6FFdsRgwQA1FiOlxNJQB5quGdtq2djMZh+c3FJNO0LKjmQHeqT8L9NChCwQeNTTJhlqjnh3g089egoFAsDa7UsyBMfmL1x4Mwdjkjm5udSB73keD2aMDQT3BQMAzAh3LZN6IpkMNjczhDGsEfYGqobxeKbYfjDFst3tYMkUNuZ/LekxzCVqCYjFg1oZDFYcuEHR6A2QIyGeDKw90B0a0rL4QTTGOpUoBO50eBgnaJANq1BAgP4tWhMtXqaIQ2ZlyJCkWe9TQlDMC23XbDdUI8ln0Bgw9CeG0aw9AFGxkx1ExyIHvdfsYDJlxaiiujEBELOa9L7NQOXToAkG35wiWk0rQtMViDWqIMTMTqWSw1+khmyHhSifVcZWi4qLseZfLCJITizeaFiqFrNK1wGFiJoFoAAbkNj/d/hCl3OTvEX/dwZDBNlCZY8pniKOUz6Jeim9EbNMSqxoC1NcakziEgSBcONOZ4Qo4/utqYjFvKkt2drGoBTVHRTGdFfGmKeUz8hqBREbgDLBPTizWnaSVc5undDICkfNTUliQwoR/Dh3/qHF4PkOGqCEAsdlMDIYM3d4wkiKepbnFhzAQDCf6DAGjL4UyNWT3lTUCANhqJZsRyNhLAOrprIg3TUlhgH1HIiOoFXOw+kPYCVRp6HYVc+jaTITNK+ZQ2fyIdHObXOhGPkNmMgIAWKnG01TGadOoDWFJs2fJJA5fIOhPHlwP6A3z5jsBlT6CpSlmBKI9BIB657WIN005n/UoJFHw4xDRZTwr6gQE442mpVU6yuHYTKgfL8/cyhEWE8DoMxJBJyKzBvxiqP5C5/kMGQwEy7V4CjT4VLZIamiGBtgfukBghQyuB0aupLK2vID4TiAI08oI9mQzAsWSt9EciPCdqcxiBEiWj/JRmwnoBOua9hIcc+WcVkbgiemhFhOZfY8Ve93JzYEcFYNiKB9Ko2tB7QefDGgaTUust4WvQy8bjYCI7iOip4joIhF9MOD+XySiJ4joMSL6EhGd8d03IKJH3H8Pjj/XNJwLePLb5kOllVwwBXcCQeA7naRtJmSpoYpiOitGDanbIYuKxQDQsOINtlZ/gJ12T1sjAPSH0/ANjYhGIBcIojUCXd8uP7ZbNjIk5+obheVaEdtt23ilXtsbXB/dWQy8TAIBEWUB/CaAdwC4G8B7iejusYd9B8B5xtg9AD4D4Dd893UYY691/71T93iiECUWA2oLEjDKCFTKR0v5LKqFLDab0wgE4l+u0QhCufNjCYiWRYWqoY7tlAOH2f1yJDW3eNNAMxlHXXMmgZhYLN/MFzZtjsNknfxOx8Z8OR84blMVy26lnunNV1NgcD2gX5hiEiYygnsBXGSMPccYswF8CsD9/gcwxr7MGGu7v34DwCkDf1cJ3b5IIFAbVykyni4Mi9VkjecYY9jr9hWpIdmqIYEyxnwWlqzFhNvBKVL1lNS4Si5AmggEut3QnkYQ4T4KKGgEIRQrYLZqaK8jd52KYLkWj/07ZwYiMwLNwhSTMBEITgK47Pv9invbJPwcgD/x/V4iogtE9A0ietekJxHR+9zHXVhfX1c+2ChqCFD3SGlpUEOAs0OJg7OchKblNOnIVQ3pUUNRO1MVakjEcA4YfTHjpoZGXcX6fHatmNcKXGIagXOfJSHUi2TWJquGZIsaRMB1OdOVQx4zEKEV5rOErOG5zqpIdFI6Ef0dAOcB/Jjv5jOMsatEdCuAPyOi7zLGnh1/LmPs4wA+DgDnz59XJvU6tthORmUX09YQiwEnI0iSGpLtKgZGQ8llR+wJ9RHk5DOxjsAsAo5aQhmBia5ijnopB3swhNUfTBzqEwYRMV1NI4gWiz1qyMBCJ6tliYBrOKYzgpZgRsBtVVQKU0zDREZwFcBp3++n3Nv2gYjeCuDDAN7JGPNCMGPsqvv/cwC+AuB1Bo5pIqz+YKLfDYfKoA5gNEBEpXwUSN5vSCUQAKpWENHUED/vMpYEnd4gdPqWH55lQ0LUkAmxmC8msp3cHNzNNUy34pVyMtSQmFjsHLuJcYx73fgyAtObr5Zg1RCgvtaYholA8BCAO4joHBEVALwHwL7qHyJ6HYB/AycIrPluXySiovvzCoA3AXjCwDFNhBA1pKsRKGYES5XpBALZL5jjKim3mPKLPcybplzIYsiA3kAmEIRP3/Kj6GYzcfcRrDcs1Es5YcoqDLolrx33cwo77yqdxSINZaqlxkGQLXMWwWKlACIYp2NHRSPRG5RyQa0wxTS0AwFjrA/g/QA+D+BJAH/AGHuciD5CRLwK6P8CUAPwH8fKRF8J4AIRPQrgywB+jTEWcyAQuIAL8vXsgNq8Yj8WqwV0eoPEqgj2FDOCisIsWsvdQYaJunyxkmkq69h9z7MlCkTkOJDGTQ0Z6iEAfLOWFXWNjnu9h513WWqIO5pGBbpshlDIZbTn8jLGHI1AcIqeKLIZZzLgpmmNwOqjnM8iK1DhpEpDm4YRjYAx9jkAnxu77Zd9P791wvO+DuA1Jo5BBP3BEP0hi+Y2FdM1vjiKLkzjWOZNZW0bJwtlpdeQgTI1pDLIRKhsd7QgiX7pO70BjtTFj7+WgN/QRkNvRKUfdd2MQKDMM5shFLIZ4c1Pb8AwZGK9GybGVXZ6A/QGckUNoohjMmDLHVwvAtW1xjQOVWcxn04WRQ0V8xmli7dl9x36QWJwvR/ceG47IXpINRBUFKqqRDIxLxBIiGdtO3qh86NezMdPDTUtrRGVftQ0bTE69lCo67ooUbElQvNxmJjLy/so4ggESzEUaMhMKXw5aQQvGUTNK+bQ0Qh0bId5RpBUCelup4cMyfc9lBUmTwlVmfBAIFPGaEcHGD9qpVzsYvF6w4zPEODTCFQDQa8vFChleme85kCB11UpLBjHSMsyX+S4Uiti07C/V8sSH07l0NBpIEgUUdPJOJSpIUULao5pZARzCt2aKul+pzeI3EGqeN60BTINP+rFeDWCjj1A0+qb1wiUxWKx8yOz+ekIfo8AR0/S3fGqZq4iiMNvSCYjmBWN4JAFgvDB9Ry8oUx2spKqBTVH8hmBWrdmpZCTFgBFLAmUOlztgZSlR72Ui7WhzGRXMeBQWYBORiAWCJxmPrHzLlIKzFFWqDAbh2pRgwiWawXstHvoGxiewyEynYwj1QimAFFqqJTPgjHAkvStb0suSuOYK+WRzVCiGYHKl6uksIuxesPIHaSs581wyGD1oyknP2oxVw2t8WYyQ9RQKZ9BNkMa5aNiGkpJwgJcZMYBh4kdb5wZgb9AwxSalviGsJRSQ8lDRiMAIO17IzKeLgyZDGGxkk9UI1DLCOQ1go5AA5JsGaPMLAKOeskRi03M0Q2Cya5iwCl5rRXV/YaEM4Kc+IItSrECatfKODyNwHD5KOA4kAJmu4vbtjhFnFJDU4CX0kZy1Wr2sG0JkWgSnO7iZIbT7Cn6t6gMJZejhmR3phIZQTGH3oBJZ3uiME0NAc4xK2sEAucdcKuGBM+JpxEIisXGAkFMGgFgtru4afWF3QU4NRTXxkQUhywQiC0cPOWVDQQtux9pNBWFxUoB2wkNp1HNCMoFhzqTsiToR3s8SQcCiaE0HHMxW1HzjIAvMCZQL+XQVG0os8WoM8f5Va5qSDQj0KU+9ro91Is5oQYtWXBjQFNZOGMMbXsQ6TPEodJNHwcOVyDoy1FDsilbS4IbnITlWsF4OVsQeLemEjWkYEXdsYfRHk+SnjdKGYEXCOIJthtNC4uVPPKKvSRB0KKG7L6w500cmZhKF/o44nAe5ViqOpmbqe5iqz/EYMiEN4Sq7INpHK5A4FFDYjtT+YxAvKNwEpIynmvZA2kLag6V4TSWoLUHIJ4ReJ3cUtSQXhVOFDaalhGzOT9UBW5uBRFf1ZCgWNwbYKgxBUyVwhTBQjmPDJmjhrjNjHBGMCMzCQ5ZIIi2QgbUPpzeYAi7P0RVo2oIcIzndjo94+PzxqFTiSG7YAN8IFCENpOTKx/lGZtM1VDcU8o2mrb5QFDMoaEQuOzBUNgKQqbDVYaS864ViSbBcThDaeJxzM9kyGgvwWhzIkoN8RnpaSBIDKMB6mI7U5kPx7sADGQEjAE7MU8q222rBwLZgSP9wRC9AYtcODKu543wguT2Mkh1FhfjDgTm7CU4VI3yuFWHqEYgGthFKVbAzHCaOGYR+LFcLRqjhprelELxqiEgpYYShSXoNaRiddCSvAAmYSmmYRnjMJERiH65Rx5Phj1vbO61Lx58eQlibNRQwzIymcwPVY2AN/2JUGfFfBZWfyhUvcIzNpE50SbGVcbhPOqH2YxAzoE41QimgI49AAkMOlcZKi17AUzCUiWeOarj2OvqZATOe+wIdheLUnKAW70i29gk2VAGxCMWd+wBWvYgBmooj7ar6cgeDyB2fvhnI1JW23XtQkSsSUbXyuxmBEu1grEmzqY3rlYuIzAxvEcHhyoQdN2B21GDzlVG97UkL4BJ4GWHM50RSA4ckeHyneoVUY0gejD7OHQHvYTB6yGIQSwG5LMYr95fsKEMENv8iMwr5tClhuz+EJ3eIGZqyGBGIDmTxKOh04wgOYgIloDahyMzlSgMy4brmidhT6NJR/bLbUlwyiUJC3CV8tFCLoNiLqMkvkZhnY+orJulhuqKDqR8IyNCDcmIuiKW4hwlb9Ogdr69zLUSLzW02+mhZ8BvaKQRHEJqiIjuI6KniOgiEX0w4P4iEX3avf+bRHTWd9+H3NufIqKfMHE8kyBihQyM6tllhkp7GYFmIFhwL/gkMgKi0SIjA1kxXcakTMbzpq3QUAa4xnNxZAQNc7OK/fAyAslj9s6PUNWQeA+HyLhXjopC4YUfcdpLcHC/oW0DBRr8nMuYzgEvg6ohIsoC+E0A7wBwN4D3EtHdYw/7OQDbjLHbAXwMwK+7z70bzozjVwG4D8D/675eLBDdyeSyGanqFcCvEegdfjGXRb2YSyQQzJXkLagB+YxAhsuXbWwq5DLSHaf1Uj4WjWDd4NB6P0YzCeSOWUoj8Ep3Z4saitN5lIM3lZn4zjUlBtcDajR0HDCREdwL4CJj7DnGmA3gUwDuH3vM/QA+6f78GQBvIYeovx/ApxhjFmPseQAX3deLBd1edHcrR0miegXwawT69c5LtfibynQEuBGfbF4sltMI5GYRcOh06oZho+F8Zsumq4YUex+kNAKJBanbF/8e6XLgcfoMcSxW3SzcQFNZ2+4jlyGh6W2A3Pm5cGkL/8PvPYxrOx2tYwyCiUBwEsBl3+9X3NsCH+MOu98FsCz4XAAAEb2PiC4Q0YX19XWlAz06V8Rtq1Whx8pODmrbcjuBMCxWZjsQZDKEssQIQimxOCdTPqpm+x3XAPuNpoX5ch5FAQ8eGSShERQlLMC79iDSuJHDqxrSpIbiaigDnD4CwIwu17KcazKqIIVDhoa+vN3Gn3zvRiyGifGdXcNgjH0cwMcB4Pz580pttx/9qdcIP1Z2lugoJdQ/pcvVAq7vdrVfJwy6JXmVQhZt4QYkSY1AghpSzQheaLalnxcFx17CbDYAGNAIBBvKADHr9W5/gMWK2Ps0RQ3FmREsGdQIWlZf2F4CkKOhZaw9ZGHiFa8COO37/ZR7W+BjiCgHYB7ApuBzpwJZn/C2S1OYcEhMwm9INxCUC1nh2mfZPgIpakghI6iVYqKGYvAZAtTnFstUVUlRQwKzJTiKuQyIxGnEcfD50nFqBItugYYJvyHHgVhuMyhKQ8vMgZCFiUDwEIA7iOgcERXgiL8Pjj3mQQAPuD+/G8CfMaeF8UEA73Gris4BuAPAtwwckzZkMwKZOaVR4IEgTo9yXSMvmYEjogOBnMdkpCZlqWQEc6W8V5ZoEhtN27i9BDCqRJPVCLpuA6UIX+0FAqHy0aHweSeSoxHHsdvpoZTPGKfb/MhlM1io5I1svlqWvPFkWXAGOKeEokbtqkCbx2CM9Yno/QA+DyAL4BOMsceJ6CMALjDGHgTw2wD+PRFdBLAFJ1jAfdwfAHgCQB/ALzDGpj+uB3LeKwAfU2mGaVuqFmAPhmhJ+JrLgFtQz2nwruVCTpwakqwaEs3E2vbAM5GTAReLGWPCXK4INhqW8WYywNFkVARunqWKvEdvTKgAVy1TNQTI0Yjj2G3Hay/BYSoLd6zo5YKW6NziODMCI6sMY+xzAD43dtsv+37uAvgbE577UQAfNXEcJlEuZLHWEN816o6p9MPrLm7asQSCTm+A3oBhoazOZ1fyWYmqIRmvoZHnTdQC1u0NcERhB14v5cAYjAbabm+AhtWPRSMA3OClUDUkunOXcdyVDQSiO94g7HXjtZfgcLqL9Y3nWvYAi5JDiUTZh25viEJWzNpDFoeqs1gGMlw14FQN6RrOcXjj82IaULOj4TzKITOCsNMbIJ8lIf3EEy0FKiPailVDquJrGDZi6iHgUNE1OhILthQ11B9K0RPVQk65szhunyEOU5V6ShmBYIUi93iKA2kgmICihNUB4JaNGc4ITFQxBIGX5C1otO3L7PJkdpCjDtfo1xadxzuOuudAak4n2HCFxtgCgcJMApE50RxFwelwgyGD3R9K0RM6c4vjnE7mx7Kh3p22Lc8MiBamWBL9G7JIA8EEyGoEKjuBSfDqmg0O1PbDREZQkRAARa09ADnvlY4tR1Fw8Lr8PZMZAbeXiEEsBnjvg1zgksmYiJwmqKhrXsY3iqOqMa4yqYxgqVrAdrunNUkNUKOIRTUCS6JaSxZpIJgA0Q+Ho21gTCWH1+kYUwmpjvMoh1M1JN5ZLHoBi3re8DGMs0cNxagRyFJD9kBq5y7Sw6FSy66TEewlFgiKGAyZVjXZYMjQ7Q2l/cZKBUGNoK+28RFBGggmoOx+OKIlnC2DGkGtmEMhm8FWbNSQ87p6GkFOOFDKuFWKipa9AcNgGD31LAhxjKuMXSNQFYslrkmRLFimAoxDZtPgx3DI0LD6yVBDVX3X35ai31g5L9aT0+0NU40gaZTyWTAmJloCQNugRkDkzFE14X0SBBMaQaWQRW/AhKx7ZTSCoiA15BmqKZTsqpq4hWGjaaNezMW2Y6uV5DUCWQsOkQH2Mj0hHBVFaqjR7YMxYE6hRFgWJuaAtBX9xoSpoTQjSB4yLfd2fwh7oD+43o/FGLuLdzs9ZN3adFXIWAdIVa8IumCqTCfj4GKxyYxgPYZZxX7Ufb0PouB9BKKIixqqKJaP6kzRk4VXqaex+ZJ1HuUoi1JDEvbfskgDwQTIuAKaGlPpx3K1EBs1tNN2eFedZiqZmQRyYrE7MjEiAOuY/MUxwD6OWcV+1NzeB5mdtUzVEOBkY1HXOy8vlaleqRSyaNlyQQwwo2WJgjvGamUE7jUpu8HijrtR54dPWIwDaSCYgJKEG2OLD6Mw1FkMxOs3ZKISY5QRRC+mzgUsZ8srmhGopMrZDKFayBr1G4rLZ4ijVuQlr+LHLJsRlPOZyADMuWyZBalSyEnRrBxJWFBzLHqzwtV7d7gVvazDgGjvjCXZvyGDNBBMgMzkID6ntGLIawhA7BqBbiAo552LXWSHKrMz9WYdCGsEaue8VsoZHU6z0bTjDQSSArdKVZXIdLiuVz4qRw0B8g6kSWYEpXwW1UIWWy31a6JlqWUEZc/eI1qoTzOChCFTzy47p1QES9UCGlYfdgze4yYzAmFuU/ACHrlghr9v/ndV5z+YHE5j9QfY7fRiDQSyMwk8Ll8mEOTENQKpaiT3sS3J853EdDI/nIFQGhmBrbYhFKWhZQZrySINBBMg470iO6dUBHF2F++0e1oVQ4DcLs+pf5btIxDMCBS/GM64SjOBgAuMpofW+yHb++AFSimxONoXX8X4jG+QZKeUJZkRAE4vgVb5qOLcctFNp5VaTCQPGTG0pVgtEAYTVQyTYIQa8s5P9MLUsQfCO1NRzxsZr/0gmBxgH3cPASBf8joS08UXJcfzJqp8VNxAkKOimBHw6jaT36swLGvqcvz9qfQRAALUUFo+mjzKggsS8NLKCIZu9+SCNjUkphEMhwyWhDcNH2QS1WCjnxGY0wh4IFiNsXxUttLJ27nLVA0JUUPqGoFsCSl3HjVpFR4G3QINVYpYpEBiMGToDdQaKEWQBoIJKEmIxU3FnUAYTHQ6BsFr0jFWNRTlTSO3g/Q8byK0Ef53Z0Ej4EPr45hFwMG7oUWP2Ts/kn0EkVVDCl5DopuGcex2+onRQgC3olYfCMX9xmRtossC1JBKAJZBGggmQGZ0n9dHYFAsXvRmEpi1oh51Fevx2aLU2ciSQPxSE2ls0ikfBRyNwJTX0HoC1BDPNoU1AoWqqlI+A3swxCDEeI1najJctScWS9pM7HZ6iXQVcyxWC7D7Q68cXBaqM0lENp2613sUtAIBES0R0ReI6Bn3/8WAx7yWiP6CiB4noseI6G/57vtdInqeiB5x/71W53hMQqahjItEJtO2xUoBRMBW2+xIxR0DPkPAaKcZtctT2UGKeN507AEygmMYg1Ar5tCyB6GLnig2mhaqhayyXiGCfDaDUj4jnhEoaCgim59uf+jSd+K7Xp4py1JDSVlQc3h0rGIW3pQcXM8hIhareDzJQDcj+CCALzHG7gDwJff3cbQB/Axj7FUA7gPwL4howXf/P2aMvdb994jm8RgDb4ASGd3XtvuoKKSEYchmCAvlvFY5WxBM+AwBzpzXQjaDdi98YeJffplA4Exsii4fFR3DGARZqiUMcc0qHketmBf2G+oqaCgilXKy3coAUJHoOfGjkZDzKIcuHdtSzAhENAIu0s9qQ9n9AD7p/vxJAO8afwBj7GnG2DPuz9cArAFY1fy7sYMvdGJ9BOYsqP2Io7vYxCwCjkox2kNGxZtGxBe/basNpeEYOZDqZ1yOvUT8gcCZSSCpEUhSQwBC9RmVpqaypyfJU0NJBoKR8Zza5ssZXC9/TYpUDamY/clANxAcZYxdd3++AeBo2IOJ6F4ABQDP+m7+qEsZfYyIJn6biOh9RHSBiC6sr69rHrYYHDdGMY3ApOEcx3Kt6AmRpuBlBCYCgcBwmlGZp3igFDM/0wsEKpYNk+DYS8TXQ8AhI3CrmPIJUUMKxmeFXAb5LEllBIyxxKkh3YFQqtTQSCwOD8D+x5pG5CdKRF8kou8F/Lvf/zjmSO0TCVciOg7g3wP4e4wx/o4/BOAuAG8EsATgA5Oezxj7OGPsPGPs/OpqMgmF6CzRljWQ9hcRwWqt6JUmmoJJ/xaRcZUqF3BZoHqlI+mjMw6TMwni9hniqBXFS15VxOJiTmxnqrIrLUtMtAOcQNYfsmQzAk3juZatFgi4zhWuEcj3b8gg8qgZY2+ddB8R3SSi44yx6+5CvzbhcXMA/guADzPGvuF7bZ5NWET0OwB+SeroY0ZJ0Cfc4QbNf0ArtYJXkWIKu50eSvmMkQuqIjCUXKXev5TPeDOAJ6HdGyjNIuAwNaWsNxhiux2vvQRHrZTD5a220GNVMgIeNKyQ3plOb6BkcyByrfiRdFcxAFQLWRRyGeVA0OyqaQSZDEWyD6OqodnUCB4E8ID78wMAPjv+ACIqAPgjAP+OMfaZsfuOu/8THH3he5rHYxSiQ6UdsTiGjKBeRKPbl5qdHIWdtm3syyUygnBEDZktH+3aA6mS1HHwskTZYS/j4ItGEmJxXYIaatsDFLIZ5LIS511ggL3VGwo7yfpRKcplBF7mWkouEBCR10ugAlVqCIhea6ZODUXg1wC8jYieAfBW93cQ0Xki+i33MX8TwI8C+LsBZaL/gYi+C+C7AFYA/DPN4zEK0YxA5wIIA99lmmwqMynAVQQGaqjUP4u4YLZ7esGXawS6YvG6O7R+NQmNoCQeCGTmRHOIlY+qUUMVybnFuwaLGmSwWCkolY/2B0NY/aFy0UjUlLK4xWKt1YsxtgngLQG3XwDw8+7Pvwfg9yY8/806fz9uiNSzA3xwfRzUkBMINhoWTi6UjbzmbqeHhbKZRatSyOLKtnmNgA/qCIOuRmCKGkrCZ4iDzy1mjEWWzapkqaL17Crn/aVADQHOgBqVjVdLcUwlR9QAe/49mtXy0Zc1REfINa14qCFON5gUjHfa5ioxyvmcuFgsOztXwGtIZ3dULWRBpC8Wcy0jKY2g73o3RaHTG0pXVY2cX8OqV9TGJcqOq5xWIFAt2W5608nUrsmoAfae/feMUkMva5QFdqaMMbRio4acnTunH0xgu21jqWqOGooWi91qB4nacxFqSHboyjiIyIjfkEcNJaQRAGLBq2P3pRcN0YYyVWpIxrrhpRYIRkNp1I532tRQGghCUBIQi63+EENm1nmUw6OGDGUEjDFst3qej5EuRHjfjuuhLtN1Xcpl0Rsw9AeTg3BHs48AcITIPU2NYK3RRbWQjeXzH0dNohta5fwUYw0E0dmjH3vdPohGZb5JYblaQNPqh1ZOBYEHZ1WKOIp96PQGyGYIeQnxXwZpIAiBSENZHM6jo7+fRb2YiyylFEXbHsAeDLGkaTjHUS5kYfUjTMoUFiReYTSpw3U4ZOj2htppMufcdbDWsBLJBgBfE5zAMbdt+YyJUz5h1JMzJUuNGpLRCPY6PdSLOaO2LSJYcpvKZLMC1TGVHFGbThPXexjSQBCCqHQN8A2jiEEjABydwFQvAb+4TWYEQLi4qCLqRlWvcNpINyOoS1ThTMJ6w8KReknrNUThzSQQGE6joqEUss4siEkL0mDIYA/EZ0v4UVaghuY1/bBUoDoQajSURr1qKLpaK77lOg0EIeDpWpg/uW61QBRWa0VsGNII+JAbcxkBNxObvJh2FKpM+EIz6YuhO4uAo2ZgStl6w8LqXDIZQV2i0klFQyGi0AXJUnCS5agWcrD7w1C6z4+kfYY4VAdCNTUzAhGNoBjT4HogDQShKOWzYCw8VeYe63FQQ4AzB9eURmA8IxD0UZddOIoR1SsqjqZBMCEWr+11cSQxakhCI1Asrw0T6keVK2rUEDCyx46CM4tgeoFAlRpSzggiqqp0vbWikAaCEIhUUTQ1L4AorNSKxjQCLyMwTA2FCcZKGkHEeVexTwiCM8BeXSxuWX207EFi1JCMdXZH0Z21lMtMDMA6lSsyM8CB6WUEy4rUkK5WGNU7o1q2K4o0EIRg5BM++QNqu9RQHOWjgBMIdjs92AK141HYajmLnkmxGAgPBA5XbbbDdTQjWl8j0KGG1lzKLrGMQMIoT4WSA8K76XUCQVVyXOW0AsF8OY9shqQzgqblWHqo0jflfDZ0OpyK/bcM0kAQAr6AhXF3PCXU5asnYWQzoU8PbbdsZDNkrCSPN9FFUUPqYnFw8Gu757yc13sf9WIOVn+oHGST7CEAHHfQQjZ6SpndH6I/ZErXpDO3OJwaUtmZeuMqBam4aQWCTIawWMlLdxfrGk96lXIhWXBKDU0JIgMjWraeSBQF3lRmYi7BVtvGYiVvrCRvRA2Fi8WyO8hRh2v8YjGgPpNgrdEFABxJSCwGXL+hiIxAZ76tUzI9QZvxbA7UMwKRTv1ubwC7P0x0FoEfTlOZ3MZLdToZR9QA+25vmIrF04KI98ooI4ivfBQA1ptd7dfabtlYNEQLAWJznbsa5aOTXpcLjrrUkCe+KtJDa3ucGkpGIwDEBO6OFyjV5udOrBriAUaxfBQQo4am1VXModJdrGs8GTXA3lIwEZRBGghCICYWO9xgQXGIehRWPeM5AxlByzZWMQSIicUqKW2kWOxmIDrzCABHLAag3F281rCQzzpUQlJwhtOIZQQy1t8coRqBVz6qUTUkkH1NOxAsV4vyVUO2ZkYQMbdYVfMRRRoIQiBS6dC24xlKw8E1AhNNZTvtnjGhGBAbSq5yARcjZufy3o2KdtWQPjW0WitGOoGahGNFHR64OFWnoqGEddN75aMKlJyMWLw35UCwWM3LZwRdvYwgmhrSM1mMQhoIQhD14QDxOY96x1DIol7KGTGe22qbzQhGgTJ4IeVWEPIagTspK6p81EBnMaDuQOo0kyVHCwFiw2lUHF85wsoYPW1GIcDIDLCfdkawVC1ip9MLtU4Zhy41FKVHznT5KBEtEdEXiOgZ9//FCY8b+IbSPOi7/RwRfZOILhLRp91pZjMDkUEdcTmP+nF0roSbe3oagWM4ZxulMQq5DHKZyUPJeSOetB1yxOzctt1HNkPerFdVjBq01Kih9YblUXdJQUQs9jIm1aqhCQ1lI0pO/nVH2dfsawTL1QIYk+subll6M0mKIZtOxphS0YUMdEPMBwF8iTF2B4Avub8HocMYe637752+238dwMcYY7cD2Abwc5rHYxQigSCuoTR+HJ0rageChtVHf8iMNZNxhI2rVG38ymcJ2QxN7HBt2wNU8lltSoZrBMpiccNKtGIIEBOL+a5bxf+qlJucEehkYkV30yASdKcdCFS6i01VDQWtNXxDNcuB4H4An3R//iScucNCcOcUvxkAn2Ms9fwkIFIV09S8AETgZAR61BAfv2eyaggIHziiGgiIKLTDtW2Zqanmu9Q9hUBg94fYatmJNZNxiPgjjfyv1MpHJ1Zr2eod3USEqqDbKw8ESVtQc8h2Fw+GDA2rr2WJEbbWWL3ZDwRHGWPX3Z9vADg64XElIrpARN8gone5ty0D2GGM8SvjCoCTmsdjFHxINx+uEoSW1Y/NeZTj6FwJa40uhhKc5Tj47sZ0RlAp5Cb6x3ieQMpc9eTyURPBd7RLlQ8E3P8pydJRQKwJbuR/pcDl57MYDBl6AeZwHduZLZFV7EOpFXNoCFYN1Yo55GLy3o/CUk0uI+DBTafvYaQRBJx3ry8kvvMReaUQ0RcBHAu468P+XxhjjIgmrVRnGGNXiehWAH/mDqzflTlQInofgPcBwC233CLzVGXkshkUspN3SADnBmMOBPUiegOG7baNZUVOmvOdJsViwHVNnCAAqswr5ggrY1SZvhUEInJtJuQ1gvWE7SU4uK7Rsvoo5II/Sy8jUOwjAJzPbnwIim53a72UE+osnlZXMceIGhLLwnn58ZxGBhNWmKLzPRJF5JEzxt466T4iuklExxlj14noOIC1Ca9x1f3/OSL6CoDXAfhDAAtElHOzglMAroYcx8cBfBwAzp8/r741lkTUcJpWzOWjgJMRAMDNPUs5EHDjumXjGYF5jQBwzrs1gRpqWXpjKv2ol/LY68hnBGsJ20tw1LiuYfUnBvWW1UeG1HaQ/rnF48kO12ZUIer2utcxN1dbBZw+5d5cUfACgcYxl0IsJnQ6xUWhm2s8COAB9+cHAHx2/AFEtEhERffnFQBvAvAEc0z+vwzg3WHPnzbKhfCBEboikQiO8EDQUBeMOZVhesh6pZibHAg4p6zY2BRGDZnyXVms5KW954Hp2EsAvuE0IVx7y3boShUxPWxcpaqjKYdIxRPAM4Lp6AMAkM9mMFfKiWcE7kZCRyMoZDPITBgK5GkzM+w19GsA3kZEzwB4q/s7iOg8Ef2W+5hXArhARI/CWfh/jTH2hHvfBwD8IhFdhKMZ/Lbm8RhH2MAIuz9Eb8ASKB91FpubuxqBoGGjWsgav5iqhezEdF/P8yacGjKlyyxUCthpy1NDa3sWiMwH1iiINMG1rD4qGnbIwOSdqVYgkNAIpkkNAcByrShsPDfKCNSvST4UKOia9yxDpkkNhYExtgngLQG3XwDw8+7PXwfwmgnPfw7AvTrHEDfCZonG7TzKwQVJncqhjabl+RaZRK04mffV0wgyIX0E5qihpWoBz643pZ+31uhiuVqIbZj4JIj0PrRsdd1qVMZ4kJZr232lZjKOulRGMN1AIOM3xDuhdQfpTBpg39YQ/0WRdhZHIGxnqlOdIYNCLoPlakGbGopj91oN2eXpTBIrR3S4mspsFip5pYzgxm4Xx+aTrRgCxGYS6FSyeRpBQA+HNjUkrBH0X1qBoKtPDQEuHRqw+THVSR+GNBBEIGyGq051hiyOzJWwptFUttGMpwuWZwRBc535sHKVQFkMGZnYtvvGMoLFSgFNqy89k+D6bhfH5spGjkEGdQGNoK3R5RpFDemc91oxj7Y9CLVusPtDdHqDqQeC5WpBnBpyM4KaZt/DJGpIp1NcFGkgiMCkdA3QH08nA6e7WJ0aWm9YWKmbd/ColXIYsglUggZ1VsoF744Grn+RKX8nbrmxIykY39jr4th8svoAIOaY2tLQUMLsPdqKc5A5ROY/8M9hwXDjoyyWqgVst+zADc449ro91Is55f4KjihqSIeWi0IaCCJQDtEI2jEPpfHjaL2EG4oZQW8wxHa7Fxs1BACNAM66ZQ9QyGWUePRSPhPoPsq/KMYyArcEc1uCHur2Bthp93B8PvmMoJR3elvCSl4dsVh1iPpk51d9ash5blgg2GrH0wEvi6VqAf0hE+o6b3T7RspdJ+mRnZdA1dDLHmFujFz4ilsjAJyMYKNpBXZ8RoFznXEEgrrX4BS8k6kqXryTKDlvd2SQGgLkDMZuuNVbxxJ2HgWc6pK5ct6zYQhCyx54i64s+BSsuKghINzbadut3U9yxkMQZPyG9jo9I3YYE6/53gD5LMU28wRIA0EkKoWsJwqPg/O0SXiinFgogzEomc/xLtg4M4KgL7eODxPvIxhPzXWmbwVhQYEauu4GguNTEIsBYL6c83jpILQ0rNEnWYBzB0wz1NDkY58laggQ6y7e65ppgJukEbQtM530YUgDQQRqIW3xnKeta1YLiODEgkNDXNuRDwS8mWw1Bo2gGpLut62BVvXKkAH2WAZkal4xxygjEKeGbux1AABHpxQI5sr5iRrBcMhcR1y9qqHxBanbG4IxvalwIs1w/HNYrE5bLHY2TSLGc3udvpa9BMdkjWAQ68wTIA0EkagVc+gNWKBHO7+gk9AIeCC4utOWfm6cGUG9OLI8GEfLVm9s4hd+e4xyamt44gdBjRpyzuc0qCHAsWeeRA1585w1KDngoPmZCW2GZ85BNCLH9qxoBBLGc3vdnnbpKMA1goCiC01KTgRpIIhA2IDzhjueTrdaQAQntTKC+DQCnhEEZU1tWz0j8MzVxmi5tmFqqFzIopTPeDbdIrix28FcKZeINhSE0EBg6elWOXf+9vgksdH4S70+AiCcGtpu2Sjns7H66ojAs6IW1AhMUUOTrD1UN1SiSANBBKohYmija0YkEkG5kMVStYAr2x3p5240LVQK2VgWrrCSQMeHSe0CnnTeTVNDgLP7lKGGrk+pmYxjrjQ5EJgoaQ5q/DJRuSLSDLfd7k1dKAac3XmlkI3MCIbeLAIT1FCw07FuR7cI0kAQgVpIeWSj2090eMbJhTKu7cgHght73dhojNEuL5gaUs0IJmkPnZgCgYxYfHOvi2NTKB3lmC/nsdfpBda48/PFK3RUUC0edJQ1QQ3xayGqj2DaQjEH7yUIQ8vugzE951GOSbMgTHbST0IaCCJQC8sIrF4iQjHHiYUSrqoEgt2uZ2VtGuV8FhmaQA1Z6imt33ffj9FCZy4AL1bz0hnB8SnpA4ATCIYseEFteHYH6uenWjiYEfDrX2dBymYI1UI2tHx0q21PXSjmEOkuNmUvAYwqtsazApPeWpOQBoIIhJW8JZ8RVHBtpyPU7ejHjd1ubKWOfARhULrf1PC84RrAeCDwBHqD532xEr3z4+gNhlhvWtOlhlyXyyB6aK+jX8lWDTAS5IGhrpFpAK4VdWhG0Ju6UMyxKOA3xDNJHedRDh5kxzvqO2nV0PQx6oYMrhpKOiNo2wMpk7ThkLlURnwLV5ADaX8whNUfKusSkyinptVDNkNG66pXakWsN8XsO27udcHY9HoIgNFQ96DuYhO9LdVizvOJ4uCfr24ArofoG4BTNTQrgUDEeG7UAKd/zJOmlJn01pqENBBEIKwbstHtJVI6ynFqkZeQitNDGy0L/SGLPxCMV5locsqTqpGabqWWytCVSVitF9Ho9kMHEHFwsf7k4vQ0As5HB2YEBqZl1YoHZ0w0DIjQALAQUvE0GDLsdmZDLAYc+/f1hhWagfNyVxOzwCcFglZKDU0fYeWRe10z1QKiGDWViQeCJOwQgqghXv+vmhF4VUNjO9OG1TcefPm4Sd5vEYarbiA4tVgxegwy4Hx0cCDQ11AqhYMZXssQNRRW+uoI4NPvKuY4OleE7fp0TYLJWeAld7H3C/WDIYPdH862WExES0T0BSJ6xv1/MeAxP05Ej/j+dYnoXe59v0tEz/vue63O8cQBznGPe+5b/QHs/jDxqiFALiPwAkHC1BCndFR3MsVcBrkMBWoEps85DwRrAoGAZwSzQQ0F6Vb6TpiBn2dXfQ6yH/Mh8x+2DO6uTWA0K3xy7w6njhYMVA1VA3Qx095ak6CbEXwQwJcYY3cA+JL7+z4wxr7MGHstY+y1AN4MoA3gT30P+cf8fsbYI5rHYxwZt9JhkmiZpEawVC2glM9I9RJwx9K4A8E4l6/rzMpF6KAFyXggqElkBDttHKkXp9rwNF+ZbEW919E/P9ViFi17v89T0zJDyS2UCxMzgpHP0GxQQyKBYLtlY66UQ87ApLp6QJ+F6QbKSdA9+vsBfNL9+ZMA3hXx+HcD+BPGmLxPwhQRNHQ7ScM5DiLCmaUqXtgUP33Xd7vIZQgr1fi8850Fe1xc1L+AnQCz/3WbMVBDRzg1JCAYX9nuTFUfAIBaIQeiYGqoYcAArVLIYTBksHxW1KbO+0Ilj6bVD3TR5R3wyzFeqzLwZoWHZQTtnrEMZhQIRp9rUuuMbiA4yhi77v58A8DRiMe/B8Dvj932USJ6jIg+RkQTrwAieh8RXSCiC+vr6xqHLI9qMYemPR4IkjOc8+PMcgUvbLaEH3/T7SHIxGiDUQ8oCWwZEBerAaJl0+qjZvicL1ULIBLNCDpT1QcAJ0ud1F28Z6DbPaiHo2X1jZTs8t1+0LFzc8Q4BiipgFOGYQOhdtq2EX0AGK0l/ozAK9uddiAgoi8S0fcC/t3vfxxz8siJ8joRHYczxP7zvps/BOAuAG8EsATgA5Oezxj7OGPsPGPs/OrqatRhG0W9eDAj4Dxn0mns2ZUqXthqYxgy7s+P67tdb2cTF6rFLJpj4ypHF7BmPXtAADb9pchlM1iuFiMDwWDIcG2n42k108SkWcuNbl+7uSnI3kPHUtwPrm8EHftGY7YygmLOsXWJ0giWDInbPAD7h+E0PfE/3nUm8pNljL110n1EdJOIjjPGrrsL/VrIS/1NAH/EGPOuAF82YRHR7wD4JcHjThRBXPXIJTHhQLBchd0f4vpeV2hBurLTxutOH9DwjaJeymMwZn/slTFqLNpB2kOj2/eG4ZjEaj06EKw1uugNmFfGO004/kgHa9wb3T7uOKKbERy09zAl0s+HlL5uNC3Ml/OxDmCRxdG5UqRGcNexOSN/K5sh1Iq5fdQQb2SNu0xd94w/COAB9+cHAHw25LHvxRgt5AYPkKNAvQvA9zSPJxbUS7kDwhy/kJMudTu77NASL2xE00P9wRDXdro4vRTvwuXN/fV9uU10uFbGRHq77zSpxfGlcAJBuLPr1RnoIeBYrhYCvfJNDEnxLMDt/dSQiUDAvy+7nYPHvtG0sFKbDVqII2pW+FbbxpJBS4x6aX8p9ktFI/g1AG8jomcAvNX9HUR0noh+iz+IiM4COA3gv409/z8Q0XcBfBfACoB/pnk8sWChXDiQyvKOwnkDZWMyOLNSBQBcEhCMr+92MRgy3LIUL6c9X3a+vH7jtr1u35mvq7G7GxehTXW3BmG1Fp0RcJH+9JQ1AiC465UxZmTn7k2ds/Zz1ap2IX4shFBDm007Fqt0HRytT84IOvYA3d7QmEYA8EDgzwiSCQRar84Y2wTwloDbLwD4ed/vlwCcDHjcm3X+flJYqDp8LGPMK5/bbtuoF3NKg9l1cHyuhEIuIyQYX95KZuHyBMC2v9pBf1jHeMdynCW7q3XHZsL/GY/j0mYLGULsgVUESzUnEPiPt20PMBgyI+cdOKgRmBSLAzWCpoVXnjBDs5jC0fkSNpoW+oPhgRJRT9w2qGnUS/n9YnFCc9Fnh4ybYSxWCrAHw32t3zttGwtTcEnMZAhnlip4XoAaepEHgpgXroVAakh/Z8rTZC5CN2LkS1frRfQGLLSL9PmNFk4tVmaCw16uOtekf9fO6Up9amh/Nz1jzKkaMnDeeRDfCdAI1puW19MxKzg6V8SQBZcW80zhiMFijAPUkOVk1nFvOKd/Rb8EwDlw/yKxPUWXxHMrVTy73ox83OXtNrIZir0LdsGjhnyBwABXvVAuYDBk3mLXjJEvPSlg3/H8RgvnXGpu2lhyd6F+eoj/rFvXzj83rot1egMMmZkAnM0QFir5A0Phu70BGt3+zGkEYdcF70Q3afE+V8of6COIu2IISAOBEDgH7rcqnuYAjTuP1XFpsx1pkvbiVgcnFkpGuh7DsOAFyv0agS5FMV5hshdjIOCVQFe2g7UXxhguzVAgCBqlyAPBsmYgqBf3N6yZpidWa0WvVJSDv49Z0wh4z0hQN7+XEdTjywiahkT6KKSBQACLAU0w0xypd+exOgZDFpkVPLfexLmVWuzHU8o7c3/956fR0a/3nxsTFuMcbD4KBMEZwXrTQsseeFVb0wbf9W/5KodMGaBlMrTPHM50AF6tF7E2VqEVB81iAmHXxVrDQj5LRq/HcY1gz8D3SARpIBAA/2L5d7zT9E2/82gdAPD0zcbExwzdQHH7avyBAOCVVf6MQH9627i52o5Bp8egv1UtZCcGgufXHU3mXELnMwpeIAiihgxcl/5AwEs9TWXAR+oH5z9c33ECwfEpjgANQimfxUqtGJgp3tzr4kjdbNd+vZSDPRh62X5SzEMaCATAS964RtAfDNHo9hMvHeU4u1JFPkt46sbkjODqTgfd3hC3H0koEPg6XYdDR3TVra8etyPYavWQzzomgKZBRDi1WJno7HrJrdI6tzwj1FAtmBrKkJmS5vny6PMcDV8xc72v1otY29vv83991znvJ2YsEABOVhCYEexZxjOYuTHjuaSYhzQQCMBrgnF3pLziYVrUUD6bwW2rNTx1Y2/iYy66tFFSgWC+nPfOy163h8GQeYKmzmsCo/PNd0cmh9L4cXLCFx4AnltvoZDN4MTC9Oyn/agUcijns9j07ay3Wk6WamKH6s8ITFNyR+olWP3hPmv3aztdVApZIyMfTWNiIGh0jeoDwMGhQ0kxD2kgEEAhl0G1kPUyAi8Fn6KwdeexOp66MZkaenYt2UDgZATOedk0JFqOi8XbbXO+LkFwvvDtwIlUT95o4PYjtdiFdxkcmy95NuOAc12a8r6aL+d9lJxZX62gQUDXdzs4Pl+KLcjr4NRiBVe3Owf8vW7uWUYrhoAR5bfdtj3mIQk/s9m5qmccCz5vFy5sxTn1KwqvPD6Ha7vdiTNVn77ZwFK1kNiQj4Vy4WCg1PzblUIW+Sz5xOJerF+Ks8tVNLp9zw7Zj+9f38Mrj89Ys9Nc0Rs8BDji5ZG6mWvSn+Ftt23kXB8cE+C76DWfdcO13a43gW/WcGa5Answ3EcbNq0+djs943M+uOHeZtPyMQ9pRjAz8HPg3HskblfPMLzu9AIA4JHL24H3P3ZlF68+OZ/Y8azUnU7XwZB5Hji6gYDIqcjgNefbrXjT5Fe4Ivwza/szrc2mhbWGhVcer8f2t1VwfL68LyO4sds11jPCqSHGmBeATe3WVwPmP1zf6Ux16lsYeFZ9cW2kyfGu/TNLZjUjrv1sNO1EB/WkgUAQR+pFLxMY1Q9P78J9zal5ZDOE77y4c+C+jj3AM2tN/MCp5ALB0bmSGwSsUT27geYgx/3RWTC2Wua834Nwx1HnC//Mzf0iPKfgTLlMmgJ3xhwOGYZDhrVGF0cNLaYrtSIGruhvunKFf2/W3O+R3R9ivWnNXMUQB6+88wcC7jtl2m6Eb3Q2m7aXYacZwQzh+EIZ1900fG2vi7lSLvaB0mGoFHK461gdj1zeOXDfE9d3MRgyvCbBjGA01s/ydvAmaKkj9SLWGhas/gCbLTvWXeORehFzpdyBstzvXdsFANw1cxlBCb0Bw2bLxmbLRm/AjNGV/PNca3RdEdrcrnSunEOtmPME2Ks7HTCGmbD3DsJitYDlaiEwI7jFcF9JIZfBfDmPzdZoQ5UGghnC8bkStlo2ur1BLCKRCt5wZhEPv7ANu79/7N+jl52F6wdc+igJ8AXoxl4XN/a6mC/nUczpB8ojc449NOeT45y9TER4xdE6nlnbnxE8dGkbZ5YrM9f1yu0PLm+3R7qVofMzGtNo4cZeF8cM7taJCGeWK15JLi9suC2hwgYV3H6k5lXiAU458Xw5H0sJ+XLNsRjn+s/xBCrV0kAgiOPul+7GbhdXdtre79PEX75jFW17gAuXtvbd/o3nNnFyoZxosDrqCwSXtzrGZiCs1kvYbNneDizuOvM7j9Xx5PU9r0KEMYYLl7bwxrNLsf5dFZxbdfjp59dbnheOqYzJ+zx3O7i+0zVeNnt2eTR7m3fI35ZAF7wqbj9SwzM3G15F2fdvNHDnsXgyxBV3Wt61nQ4KuYx29Z0I0kAgiBPuF+zaTgfPr7dw6wx4zvzwbcsoZDP4ytOjGc79wRB/8ewm/vIdK4key0qtgAw5C8fl7bYx6+ujc0UwBnz3qpPlxJkRAE6W1ej28bQrGD+73sR2u4d7ZzAQnF6sIJshPL/R8rIYU15IXNB94toe7MHQ+HjOM8sVXN5qoz8Y4tn1JlZqRcxPqS9HBPecmsdet4/nNloYDhmevL6Hu2OqIju9VMELWy2nkiqhkto0EAiCWzl/47lNtOwBbludfiCoFnP4wVuX8KeP3/B2Kt98fgsNq48fe0Wyc51z2QzOLlfx9M0mrmx3jFlf8x3uhRec6qi4AwHf+X/reSfL+vNnNgAA956bvUBQyGVwy1IFz200cXGtiRPzJWOzGkr5LBYqeXzbLUYwnYndcbSG/pDh4noTj13ZnbmKrHG84Ywz7vXhF7bxwlYbbXsQWyA4t1LBzT3L+UwTYh60AgER/Q0iepyIhkR0PuRx9xHRU0R0kYg+6Lv9HBF9073900Q0Wx60PpxaLGO+nMdnH70GALh1Rjxn7n/tSVzabOOb7sL1h9++gnoxhx+/60jix/LK43P4b0+vw+4PjQl/3DTvi0/exEqtEPvs1lOLZZxZruBPH78JAPjcd6/jrmN1nJ2BDDAIdx6t47Eru3j6ZgO3HzW7mJ5ZqniZmGme+vW3OAvrl7+/jqduNnD+zOwFWj9uXalhsZLH1y5u4P+76GwOXn8mnlng/Fp78vpeYpVUuhnB9wD8NQBfnfQAIsoC+E0A7wBwN4D3EtHd7t2/DuBjjLHbAWwD+DnN44kNRIR7Ts17vOZdMfGDsvjJ1xzHSq2A//tPn8LTNxt48JFr+KnXn0Qpn3xF0yuP1z3h2lSp5enFMiqFLBhLpnyTiPBX7zmBrz+7gT9+9BoeurSNd772ROx/VxVvun0ZV7Y7ePyaeariDjewZMhZCE3ilqUKVmoF/D9/9gwYA86fjWdRNYVMhnDfq4/hC0/cxB8/eg23LFViYwX89F5S64xWIGCMPckYeyriYfcCuMgYe44xZgP4FID73YH1bwbwGfdxn4QzwH5mwXniu4/PYXlGKkjKhSw+cN9deOjSNu77F19FrZTDL/z47VM5lvM+Hv0eQz0MuWzGS8t/+PZlI68ZhZ/+oTOoFnL4h7//HSxVC/jpv3Qmkb+rgh/1UYBvu9tsFvhDtzrn+44jdeOl0kSEt7/qGNr2ACu14kxSb+N49xtOo20P8K3nt/Cu152Mjbt/hS+zS+q8JOHwdBLAZd/vVwD8IIBlADuMsb7v9gNzjTmI6H0A3gcAt9xySzxHGoEH3nQW2+0e3vW62doh/o3zpwEA33huCz/3I+emVtr6g+eW8Mv//d04sVA2mpH8yl99FT71rRcTW5CPzpXwb37mDfhP376Kn/mhM7HMSDaFM8tVfPSnXg2rN8QbDNMrf/UHTuDSZgtvu/uo0dfl+KW334lyPot3vPpY4rO/VfCGM4v4jb9+D55db+If/He3xfZ38tkMfvfvvRFP3WgkVgJOQQZb+x5A9EUAxwLu+jBj7LPuY74C4JfcofXjz383gPsYYz/v/v7TcALBrwL4hksLgYhOA/gTxtirow76/Pnz7MKFA38qRYoUKVKEgIgeZowd0HMjMwLG2Fs1//ZVAKd9v59yb9sEsEBEOTcr4LenSJEiRYoEkUQ+9hCAO9wKoQKA9wB4kDmpyJcBvNt93AMAPpvA8aRIkSJFCh90y0d/ioiuAPghAP+FiD7v3n6CiD4HAO5u//0APg/gSQB/wBh73H2JDwD4RSK6CEcz+G2d40mRIkWKFPKI1AhmEalGkCJFihTymKQRzL5UnyJFihQpYkUaCFKkSJHikCMNBClSpEhxyJEGghQpUqQ45HhJisVEtA7gBcWnrwDYMHg4LwWk7/lwIH3PL3/ovt8zjLED1sQvyUCgAyK6EKSav5yRvufDgfQ9v/wR1/tNqaEUKVKkOORIA0GKFClSHHIcxkDw8WkfwBSQvufDgfQ9v/wRy/s9dBpBihQpUqTYj8OYEaRIkSJFCh/SQJAiRYoUhxwvq0BARPcR0VNEdJGIPhhwf5GIPu3e/00iOuu770Pu7U8R0U8keuCKUH2/RPQ2InqYiL7r/v/mxA9eETqfsXv/LUTUJKJfSuygNaF5Xd9DRH9BRI+7n/d0xtdJQuPazhPRJ933+iQRfSjxg1eEwHv+USL6NhH13YFf/vseIKJn3H8PSP9xxtjL4h+ALIBnAdwKoADgUQB3jz3mHwD41+7P7wHwaffnu93HFwGcc18nO+33FOP7fR2AE+7PrwZwddrvJ+737Lv/MwD+I5yJelN/TzF/zjkAjwH4Aff35Vm/rg28578N4FPuzxUAlwCcnfZ7MvSezwK4B8C/A/Bu3+1LAJ5z/190f16U+fsvp4zgXgAXGWPPMcZsAJ8CcP/YY+4H8En3588AeAs5E6jvh3PxWIyx5wFcdF9vlqH8fhlj32GMXXNvfxxAmYiKiRy1HnQ+YxDRuwA8D+c9v1Sg857fDuAxxtijAMAY22SMDRI6bh3ovGcGoEpEOQBlADaAvWQOWwuR75kxdokx9hiA4dhzfwLAFxhjW4yxbQBfAHCfzB9/OQWCkwAu+36/4t4W+BjmDMzZhbNLEnnurEHn/frx1wF8mzFmxXScJqH8nomoBmcQ0v+RwHGahM7n/AoAjIg+71IK/2sCx2sCOu/5MwBaAK4DeBHAP2eMbcV9wAagswZpr1+RM4tTvHxBRK8C8Otwdo4vd/wqgI8xxppugnAYkAPwIwDeCKAN4EvuYJIvTfewYsW9AAYATsChSf6ciL7IGHtuuoc123g5ZQRXAZz2/X7KvS3wMW7qOA9gU/C5swad9wsiOgXgjwD8DGPs2diP1gx03vMPAvgNIroE4B8B+CdE9P6Yj9cEdN7zFQBfZYxtMMbaAD4H4PWxH7E+dN7z3wbwXxljPcbYGoCvAXgpeBHprEH669e0RRKDYksOjkhyDiOx5VVjj/kF7BeY/sD9+VXYLxY/hxkX1TTf74L7+L827feR1Hsee8yv4qUjFut8zosAvg1HNM0B+CKAn5z2e4r5PX8AwO+4P1cBPAHgnmm/JxPv2ffY38VBsfh59/NedH9ekvr70z4Bhk/mXwHwNBz1/cPubR8B8E735xKcipGLAL4F4Fbfcz/sPu8pAO+Y9nuJ8/0C+N/g8KiP+P4dmfb7ifsz9r3GSyYQ6L5nAH8Hjjj+PQC/Me33Evd7BlBzb3/cDQL/eNrvxeB7fiOcLK8FJ/t53Pfcn3XPxUUAf0/2b6cWEylSpEhxyPFy0ghSpEiRIoUC0kCQIkWKFIccaSBIkSJFikOONBCkSJEixSFHGghSpEiR4pAjDQQpUqRIcciRBoIUKVKkOOT4/wEvwj3sw7mOBwAAAABJRU5ErkJggg==", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\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()" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/buch/papers/fm/Python animation/Bessel-FM.py b/buch/papers/fm/Python animation/Bessel-FM.py new file mode 100644 index 0000000..cf30e16 --- /dev/null +++ b/buch/papers/fm/Python animation/Bessel-FM.py @@ -0,0 +1,42 @@ +import numpy as np +from scipy import signal +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() + + +beta_slider.on_changed(update) +plt.show() + +yf_old = fft(y_old) +plt.plot(xf, np.abs(yf_old)) +plt.show()
\ No newline at end of file diff --git a/buch/papers/fm/RS presentation/FM_presentation.pdf b/buch/papers/fm/RS presentation/FM_presentation.pdf Binary files differnew file mode 100644 index 0000000..496e35e --- /dev/null +++ b/buch/papers/fm/RS presentation/FM_presentation.pdf diff --git a/buch/papers/fm/RS presentation/FM_presentation.tex b/buch/papers/fm/RS presentation/FM_presentation.tex new file mode 100644 index 0000000..92cb501 --- /dev/null +++ b/buch/papers/fm/RS presentation/FM_presentation.tex @@ -0,0 +1,125 @@ +%% !TeX root = RS.tex + +\documentclass[11pt,aspectratio=169]{beamer} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[ngerman]{babel} +\usepackage{tikz} +\usetheme{Hannover} + +\begin{document} + \author{Joshua Bär} + \title{FM - Bessel} + \subtitle{} + \logo{} + \institute{OST Ostschweizer Fachhochschule} + \date{16.5.2022} + \subject{Mathematisches Seminar} + %\setbeamercovered{transparent} + \setbeamercovered{invisible} + \setbeamertemplate{navigation symbols}{} + \begin{frame}[plain] + \maketitle + \end{frame} +%------------------------------------------------------------------------------- +\section{Einführung} + \begin{frame} + \frametitle{Frequenzmodulation} + + \visible<1->{ + \begin{equation} \cos(\omega_c t+\beta\sin(\omega_mt)) + \end{equation}} + + \only<2>{\includegraphics[scale= 0.7]{images/fm_in_time.png}} + \only<3>{\includegraphics[scale= 0.7]{images/fm_frequenz.png}} + \only<4>{\includegraphics[scale= 0.7]{images/bessel_frequenz.png}} + + + \end{frame} +%------------------------------------------------------------------------------- +\section{Proof} +\begin{frame} + \frametitle{Bessel} + + \visible<1->{\begin{align} + \cos(\beta\sin\varphi) + &= + J_0(\beta) + 2\sum_{m=1}^\infty J_{2m}(\beta) \cos(2m\varphi) + \\ + \sin(\beta\sin\varphi) + &= + J_0(\beta) + 2\sum_{m=1}^\infty J_{2m}(\beta) \cos(2m\varphi) + \\ + J_{-n}(\beta) &= (-1)^n J_n(\beta) + \end{align}} + \visible<2->{\begin{align} + \cos(A + B) + &= + \cos(A)\cos(B)-\sin(A)\sin(B) + \\ + 2\cos (A)\cos (B) + &= + \cos(A-B)+\cos(A+B) + \\ + 2\sin(A)\sin(B) + &= + \cos(A-B)-\cos(A+B) + \end{align}} +\end{frame} + +%------------------------------------------------------------------------------- +\begin{frame} + \frametitle{Prof->Done} + \begin{align} + \cos(\omega_ct+\beta\sin(\omega_mt)) + &= + \sum_{k= -\infty}^\infty J_{k}(\beta) \cos((\omega_c+k\omega_m)t) + \end{align} + \end{frame} +%------------------------------------------------------------------------------- + \begin{frame} + \begin{figure} + \only<1>{\includegraphics[scale = 0.75]{images/fm_frequenz.png}} + \only<2>{\includegraphics[scale = 0.75]{images/bessel_frequenz.png}} + \end{figure} + \end{frame} +%------------------------------------------------------------------------------- +\section{Input Parameter} + \begin{frame} + \frametitle{Träger-Frequenz Parameter} + \onslide<1->{\begin{equation}\cos(\omega_ct+\beta\sin(\omega_mt))\end{equation}} + \only<1>{\includegraphics[scale=0.75]{images/100HZ.png}} + \only<2>{\includegraphics[scale=0.75]{images/200HZ.png}} + \only<3>{\includegraphics[scale=0.75]{images/300HZ.png}} + \only<4>{\includegraphics[scale=0.75]{images/400HZ.png}} + \end{frame} +%------------------------------------------------------------------------------- +\begin{frame} +\frametitle{Modulations-Frequenz Parameter} +\onslide<1->{\begin{equation}\cos(\omega_ct+\beta\sin(\omega_mt))\end{equation}} +\only<1>{\includegraphics[scale=0.75]{images/fm_3Hz.png}} +\only<2>{\includegraphics[scale=0.75]{images/fm_5Hz.png}} +\only<3>{\includegraphics[scale=0.75]{images/fm_7Hz.png}} +\only<4>{\includegraphics[scale=0.75]{images/fm_10Hz.png}} +\only<5>{\includegraphics[scale=0.75]{images/fm_20Hz.png}} +\only<6>{\includegraphics[scale=0.75]{images/fm_30Hz.png}} +\end{frame} +%------------------------------------------------------------------------------- +\begin{frame} +\frametitle{Beta Parameter} + \onslide<1->{\begin{equation}\sum_{k= -\infty}^\infty J_{k}(\beta) \cos((\omega_c+k\omega_m)t)\end{equation}} + \only<1>{\includegraphics[scale=0.7]{images/beta_0.001.png}} + \only<2>{\includegraphics[scale=0.7]{images/beta_0.1.png}} + \only<3>{\includegraphics[scale=0.7]{images/beta_0.5.png}} + \only<4>{\includegraphics[scale=0.7]{images/beta_1.png}} + \only<5>{\includegraphics[scale=0.7]{images/beta_2.png}} + \only<6>{\includegraphics[scale=0.7]{images/beta_3.png}} + \only<7>{\includegraphics[scale=0.7]{images/bessel.png}} +\end{frame} +%------------------------------------------------------------------------------- +\begin{frame} + \includegraphics[scale=0.5]{images/beta_1.png} + \includegraphics[scale=0.5]{images/bessel.png} +\end{frame} +\end{document} diff --git a/buch/papers/fm/RS presentation/Frequency modulation (FM) and Bessel functions.pdf b/buch/papers/fm/RS presentation/Frequency modulation (FM) and Bessel functions.pdf Binary files differnew file mode 100644 index 0000000..a6e701c --- /dev/null +++ b/buch/papers/fm/RS presentation/Frequency modulation (FM) and Bessel functions.pdf diff --git a/buch/papers/fm/RS presentation/README.txt b/buch/papers/fm/RS presentation/README.txt new file mode 100644 index 0000000..4d0620f --- /dev/null +++ b/buch/papers/fm/RS presentation/README.txt @@ -0,0 +1 @@ +Dies ist die Presentation des Reed-Solomon-Code
\ No newline at end of file diff --git a/buch/papers/fm/RS presentation/RS.tex b/buch/papers/fm/RS presentation/RS.tex new file mode 100644 index 0000000..8a67619 --- /dev/null +++ b/buch/papers/fm/RS presentation/RS.tex @@ -0,0 +1,123 @@ +%% !TeX root = RS.tex + +\documentclass[11pt,aspectratio=169]{beamer} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[ngerman]{babel} +\usepackage{tikz} +\usetheme{Hannover} + +\begin{document} + \author{Joshua Bär} + \title{FM - Bessel} + \subtitle{} + \logo{} + \institute{OST Ostschweizer Fachhochschule} + \date{16.5.2022} + \subject{Mathematisches Seminar- Spezielle Funktionen} + %\setbeamercovered{transparent} + \setbeamercovered{invisible} + \setbeamertemplate{navigation symbols}{} + \begin{frame}[plain] + \maketitle + \end{frame} +%------------------------------------------------------------------------------- +\section{Einführung} + \begin{frame} + \frametitle{Frequenzmodulation} + + \visible<1->{\begin{equation} \cos(\omega_c t+\beta\sin(\omega_mt))\end{equation}} + + \only<2>{\includegraphics[scale= 0.7]{images/fm_in_time.png}} + \only<3>{\includegraphics[scale= 0.7]{images/fm_frequenz.png}} + \only<4>{\includegraphics[scale= 0.7]{images/bessel_frequenz.png}} + + + \end{frame} +%------------------------------------------------------------------------------- +\section{Proof} +\begin{frame} + \frametitle{Bessel} + + \visible<1->{\begin{align} + \cos(\beta\sin\varphi) + &= + J_0(\beat) + 2\sum_{m=1}^\infty J_{2m}(\beta) \cos(2m\varphi) + \\ + \sin(\beta\sin\varphi) + &= + J_0(\beat) + 2\sum_{m=1}^\infty J_{2m}(\beta) \cos(2m\varphi) + \\ + J_{-n}(\beat) &= (-1)^n J_n(\beta) + \end{align}} + \visible<2->{\begin{align} + \cos(A + B) + &= + \cos(A)\cos(B)-\sin(A)\sin(B) + \\ + 2\cos (A)\cos (B) + &= + \cos(A-B)+\cos(A+B) + \\ + 2\sin(A)\sin(B) + &= + \cos(A-B)-\cos(A+B) + \end{align}} +\end{frame} + +%------------------------------------------------------------------------------- +\begin{frame} + \frametitle{Prof->Done} + \begin{align} + \cos(\omega_ct+\beta\sin(\omega_mt)) + &= + \sum_{k= -\infty}^\infty J_{k}(\beta) \cos((\omega_c+k\omgea_m)t) + \end{align} + \end{frame} +%------------------------------------------------------------------------------- + \begin{frame} + \begin{figure} + \only<1>{\includegraphics[scale = 0.75]{images/fm_frequenz.png}} + \only<2>{\includegraphics[scale = 0.75]{images/bessel_frequenz.png}} + \end{figure} + \end{frame} +%------------------------------------------------------------------------------- +\section{Input Parameter} + \begin{frame} + \frametitle{Träger-Frequenz Parameter} + \onslide<1->{\begin{equation}\cos(\omega_ct+\beta\sin(\omega_mt))\end{equation}} + \only<1>{\includegraphics[scale=0.75]{images/100HZ.png}} + \only<2>{\includegraphics[scale=0.75]{images/200HZ.png}} + \only<3>{\includegraphics[scale=0.75]{images/300HZ.png}} + \only<4>{\includegraphics[scale=0.75]{images/400HZ.png}} + \end{frame} +%------------------------------------------------------------------------------- +\begin{frame} +\frametitle{Modulations-Frequenz Parameter} +\onslide<1->{\begin{equation}\cos(\omega_ct+\beta\sin(\omega_mt))\end{equation}} +\only<1>{\includegraphics[scale=0.75]{images/fm_3Hz.png}} +\only<2>{\includegraphics[scale=0.75]{images/fm_5Hz.png}} +\only<3>{\includegraphics[scale=0.75]{images/fm_7Hz.png}} +\only<4>{\includegraphics[scale=0.75]{images/fm_10Hz.png}} +\only<5>{\includegraphics[scale=0.75]{images/fm_20Hz.png}} +\only<6>{\includegraphics[scale=0.75]{images/fm_30Hz.png}} +\end{frame} +%------------------------------------------------------------------------------- +\begin{frame} +\frametitle{Beta Parameter} + \onslide<1->{\begin{equation}\sum_{k= -\infty}^\infty J_{k}(\beta) \cos((\omega_c+k\omgea_m)t)\end{equation}} + \only<1>{\includegraphics[scale=0.7]{images/beta_0.001.png}} + \only<2>{\includegraphics[scale=0.7]{images/beta_0.1.png}} + \only<3>{\includegraphics[scale=0.7]{images/beta_0.5.png}} + \only<4>{\includegraphics[scale=0.7]{images/beta_1.png}} + \only<5>{\includegraphics[scale=0.7]{images/beta_2.png}} + \only<6>{\includegraphics[scale=0.7]{images/beta_3.png}} + \only<7>{\includegraphics[scale=0.7]{images/bessel.png}} +\end{frame} +%------------------------------------------------------------------------------- +\begin{frame} + \includegraphics[scale=0.5]{images/beta_1.png} + \includegraphics[scale=0.5]{images/bessel.png} +\end{frame} +\end{document} diff --git a/buch/papers/fm/RS presentation/images/100HZ.png b/buch/papers/fm/RS presentation/images/100HZ.png Binary files differnew file mode 100644 index 0000000..371b9bf --- /dev/null +++ b/buch/papers/fm/RS presentation/images/100HZ.png diff --git a/buch/papers/fm/RS presentation/images/200HZ.png b/buch/papers/fm/RS presentation/images/200HZ.png Binary files differnew file mode 100644 index 0000000..f6836bd --- /dev/null +++ b/buch/papers/fm/RS presentation/images/200HZ.png diff --git a/buch/papers/fm/RS presentation/images/300HZ.png b/buch/papers/fm/RS presentation/images/300HZ.png Binary files differnew file mode 100644 index 0000000..6762c1a --- /dev/null +++ b/buch/papers/fm/RS presentation/images/300HZ.png diff --git a/buch/papers/fm/RS presentation/images/400HZ.png b/buch/papers/fm/RS presentation/images/400HZ.png Binary files differnew file mode 100644 index 0000000..236c428 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/400HZ.png diff --git a/buch/papers/fm/RS presentation/images/bessel.png b/buch/papers/fm/RS presentation/images/bessel.png Binary files differnew file mode 100644 index 0000000..f4c83ea --- /dev/null +++ b/buch/papers/fm/RS presentation/images/bessel.png diff --git a/buch/papers/fm/RS presentation/images/bessel2.png b/buch/papers/fm/RS presentation/images/bessel2.png Binary files differnew file mode 100644 index 0000000..ccda3f9 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/bessel2.png diff --git a/buch/papers/fm/RS presentation/images/bessel_beta1.png b/buch/papers/fm/RS presentation/images/bessel_beta1.png Binary files differnew file mode 100644 index 0000000..1f5c47e --- /dev/null +++ b/buch/papers/fm/RS presentation/images/bessel_beta1.png diff --git a/buch/papers/fm/RS presentation/images/bessel_frequenz.png b/buch/papers/fm/RS presentation/images/bessel_frequenz.png Binary files differnew file mode 100644 index 0000000..4f228b9 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/bessel_frequenz.png diff --git a/buch/papers/fm/RS presentation/images/beta_0.001.png b/buch/papers/fm/RS presentation/images/beta_0.001.png Binary files differnew file mode 100644 index 0000000..7e4e276 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/beta_0.001.png diff --git a/buch/papers/fm/RS presentation/images/beta_0.1.png b/buch/papers/fm/RS presentation/images/beta_0.1.png Binary files differnew file mode 100644 index 0000000..e7722b3 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/beta_0.1.png diff --git a/buch/papers/fm/RS presentation/images/beta_0.5.png b/buch/papers/fm/RS presentation/images/beta_0.5.png Binary files differnew file mode 100644 index 0000000..5261b43 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/beta_0.5.png diff --git a/buch/papers/fm/RS presentation/images/beta_1.png b/buch/papers/fm/RS presentation/images/beta_1.png Binary files differnew file mode 100644 index 0000000..6d3535c --- /dev/null +++ b/buch/papers/fm/RS presentation/images/beta_1.png diff --git a/buch/papers/fm/RS presentation/images/beta_2.png b/buch/papers/fm/RS presentation/images/beta_2.png Binary files differnew file mode 100644 index 0000000..6930eae --- /dev/null +++ b/buch/papers/fm/RS presentation/images/beta_2.png diff --git a/buch/papers/fm/RS presentation/images/beta_3.png b/buch/papers/fm/RS presentation/images/beta_3.png Binary files differnew file mode 100644 index 0000000..c6df82c --- /dev/null +++ b/buch/papers/fm/RS presentation/images/beta_3.png diff --git a/buch/papers/fm/RS presentation/images/fm_10Hz.png b/buch/papers/fm/RS presentation/images/fm_10Hz.png Binary files differnew file mode 100644 index 0000000..51bddc7 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/fm_10Hz.png diff --git a/buch/papers/fm/RS presentation/images/fm_20hz.png b/buch/papers/fm/RS presentation/images/fm_20hz.png Binary files differnew file mode 100644 index 0000000..126ecf3 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/fm_20hz.png diff --git a/buch/papers/fm/RS presentation/images/fm_30Hz.png b/buch/papers/fm/RS presentation/images/fm_30Hz.png Binary files differnew file mode 100644 index 0000000..371b9bf --- /dev/null +++ b/buch/papers/fm/RS presentation/images/fm_30Hz.png diff --git a/buch/papers/fm/RS presentation/images/fm_3Hz.png b/buch/papers/fm/RS presentation/images/fm_3Hz.png Binary files differnew file mode 100644 index 0000000..d4098af --- /dev/null +++ b/buch/papers/fm/RS presentation/images/fm_3Hz.png diff --git a/buch/papers/fm/RS presentation/images/fm_40Hz.png b/buch/papers/fm/RS presentation/images/fm_40Hz.png Binary files differnew file mode 100644 index 0000000..4cf11d4 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/fm_40Hz.png diff --git a/buch/papers/fm/RS presentation/images/fm_5Hz.png b/buch/papers/fm/RS presentation/images/fm_5Hz.png Binary files differnew file mode 100644 index 0000000..e495b5c --- /dev/null +++ b/buch/papers/fm/RS presentation/images/fm_5Hz.png diff --git a/buch/papers/fm/RS presentation/images/fm_7Hz.png b/buch/papers/fm/RS presentation/images/fm_7Hz.png Binary files differnew file mode 100644 index 0000000..b3dd7e3 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/fm_7Hz.png diff --git a/buch/papers/fm/RS presentation/images/fm_frequenz.png b/buch/papers/fm/RS presentation/images/fm_frequenz.png Binary files differnew file mode 100644 index 0000000..26bfd86 --- /dev/null +++ b/buch/papers/fm/RS presentation/images/fm_frequenz.png diff --git a/buch/papers/fm/RS presentation/images/fm_in_time.png b/buch/papers/fm/RS presentation/images/fm_in_time.png Binary files differnew file mode 100644 index 0000000..068eafc --- /dev/null +++ b/buch/papers/fm/RS presentation/images/fm_in_time.png diff --git a/buch/papers/fm/main.tex b/buch/papers/fm/main.tex index 1e75235..1f8ebde 100644 --- a/buch/papers/fm/main.tex +++ b/buch/papers/fm/main.tex @@ -2,35 +2,42 @@ % main.tex -- Paper zum Thema <fm> % % (c) 2020 Hochschule Rapperswil -% +% +% !TeX root = buch.tex +%\begin {document} \chapter{Thema\label{chapter:fm}} \lhead{Thema} \begin{refsection} -\chapterauthor{Hans Muster} -Ein paar Hinweise für die korrekte Formatierung des Textes -\begin{itemize} -\item -Absätze werden gebildet, indem man eine Leerzeile einfügt. -Die Verwendung von \verb+\\+ ist nur in Tabellen und Arrays gestattet. -\item -Die explizite Platzierung von Bildern ist nicht erlaubt, entsprechende -Optionen werden gelöscht. -Verwenden Sie Labels und Verweise, um auf Bilder hinzuweisen. -\item -Beginnen Sie jeden Satz auf einer neuen Zeile. -Damit ermöglichen Sie dem Versionsverwaltungssysteme, Änderungen -in verschiedenen Sätzen von verschiedenen Autoren ohne Konflikt -anzuwenden. -\item -Bilden Sie auch für Formeln kurze Zeilen, einerseits der besseren -Übersicht wegen, aber auch um GIT die Arbeit zu erleichtern. -\end{itemize} +\chapterauthor{Joshua Bär} + +Dieser Abschnitt beschreibt die Beziehung von der Besselfunktion(Ref) zur Frequenz Modulatrion (FM)(acronym?). -\input{papers/fm/teil0.tex} -\input{papers/fm/teil1.tex} -\input{papers/fm/teil2.tex} -\input{papers/fm/teil3.tex} +%Ein paar Hinweise für die korrekte Formatierung des Textes +%\begin{itemize} +%\item +%Absätze werden gebildet, indem man eine Leerzeile einfügt. +%Die Verwendung von \verb+\\+ ist nur in Tabellen und Arrays gestattet. +%\item +%Die explizite Platzierung von Bildern ist nicht erlaubt, entsprechende +%Optionen werden gelöscht. +%Verwenden Sie Labels und Verweise, um auf Bilder hinzuweisen. +%\item +%Beginnen Sie jeden Satz auf einer neuen Zeile. +%Damit ermöglichen Sie dem Versionsverwaltungssysteme, Änderungen +%in verschiedenen Sätzen von verschiedenen Autoren ohne Konflikt +%anzuwenden. +%\item +%Bilden Sie auch für Formeln kurze Zeilen, einerseits der besseren +%Übersicht wegen, aber auch um GIT die Arbeit zu erleichtern. +%\end{itemize} + +\input{papers/fm/01_AM-FM.tex} +\input{papers/fm/02_frequenzyspectrum.tex} +\input{papers/fm/03_bessel.tex} +\input{papers/fm/04_fazit.tex} \printbibliography[heading=subbibliography] \end{refsection} + +%\end {document} diff --git a/buch/papers/nav/beispiel.txt b/buch/papers/nav/beispiel.txt index 70e3ce2..b8716fc 100644 --- a/buch/papers/nav/beispiel.txt +++ b/buch/papers/nav/beispiel.txt @@ -7,7 +7,7 @@ Deneb RA 20h 42m 12.14s 20.703372h DEC 45 21' 40.3" 45.361194 -H 50g 15' 17.1" 50.254750h +H 50g 15' 17.1" 50.254750 Azi 59g 36' 02.0" 59.600555 Spica diff --git a/buch/papers/nav/bilder/beispiele1.pdf b/buch/papers/nav/bilder/beispiele1.pdf Binary files differnew file mode 100644 index 0000000..1f91809 --- /dev/null +++ b/buch/papers/nav/bilder/beispiele1.pdf diff --git a/buch/papers/nav/bilder/beispiele2.pdf b/buch/papers/nav/bilder/beispiele2.pdf Binary files differnew file mode 100644 index 0000000..4b28f2f --- /dev/null +++ b/buch/papers/nav/bilder/beispiele2.pdf diff --git a/buch/papers/nav/bilder/position1.pdf b/buch/papers/nav/bilder/position1.pdf Binary files differnew file mode 100644 index 0000000..ba7755f --- /dev/null +++ b/buch/papers/nav/bilder/position1.pdf diff --git a/buch/papers/nav/bilder/position2.pdf b/buch/papers/nav/bilder/position2.pdf Binary files differnew file mode 100644 index 0000000..3333dd4 --- /dev/null +++ b/buch/papers/nav/bilder/position2.pdf diff --git a/buch/papers/nav/bilder/position3.pdf b/buch/papers/nav/bilder/position3.pdf Binary files differnew file mode 100644 index 0000000..fae0b85 --- /dev/null +++ b/buch/papers/nav/bilder/position3.pdf diff --git a/buch/papers/nav/bilder/position4.pdf b/buch/papers/nav/bilder/position4.pdf Binary files differnew file mode 100644 index 0000000..ac80c46 --- /dev/null +++ b/buch/papers/nav/bilder/position4.pdf diff --git a/buch/papers/nav/bilder/position5.pdf b/buch/papers/nav/bilder/position5.pdf Binary files differnew file mode 100644 index 0000000..afe120e --- /dev/null +++ b/buch/papers/nav/bilder/position5.pdf diff --git a/buch/papers/nav/bilder/sextant.jpg b/buch/papers/nav/bilder/sextant.jpg Binary files differindex 53dd784..472e61f 100644 --- a/buch/papers/nav/bilder/sextant.jpg +++ b/buch/papers/nav/bilder/sextant.jpg diff --git a/buch/papers/nav/bsp.tex b/buch/papers/nav/bsp.tex new file mode 100644 index 0000000..ff01828 --- /dev/null +++ b/buch/papers/nav/bsp.tex @@ -0,0 +1,182 @@ +\section{Beispielrechnung} +\rhead{Beispielrechnung} + +\subsection{Einführung} +In diesem Abschnitt wird die Theorie vom Abschnitt 21.6 in einem Praxisbeispiel angewendet. +Wir haben die Deklination, Rektaszension, Höhe der beiden Planeten Deneb und Arktur und die Sternzeit von Greenwich als Ausgangslage. +Die Deklinationen und Rektaszensionen sind von einem vergangenen Datum und die Höhe der Gestirne und die Sternzeit wurden von unserem Dozenten digital in einer Stadt in Japan mit den Koordinaten 35.716672 N, 140.233336 E bestimmt. +Wir werden rechnerisch beweisen, dass wir mit diesen Ergebnissen genau auf diese Koordinaten kommen. +\subsection{Vorgehen} + +\begin{center} + \begin{tabular}{l l l} + 1. & Koordinaten der Bildpunkte der Gestirne bestimmen \\ + 2. & Dreiecke aufzeichnen und richtig beschriften\\ + 3. & Dreieck ABC bestimmmen\\ + 4. & Dreieck BPC bestimmen \\ + 5. & Dreieck ABP bestimmen \\ + 6. & Geographische Breite bestimmen \\ + 7. & Geographische Länge bestimmen \\ + \end{tabular} +\end{center} + +\subsection{Ausgangslage} +\begin{wrapfigure}{R}{5.6cm} + \includegraphics{papers/nav/bilder/position1.pdf} + \caption{Ausgangslage} +\end{wrapfigure} +Die Rektaszension und die Sternzeit sind in der Regeln in Stunden angegeben. +Für die Umrechnung in Grad kann folgender Zusammenhang verwendet werden: +\[ Stunden \cdot 15 = Grad\]. +Dies wurde hier bereits gemacht. +\begin{center} + \begin{tabular}{l l l} + Sternzeit $s$ & $118.610804^\circ$ \\ + Deneb&\\ + & Rektaszension $RA_{Deneb}$& $310.55058^\circ$ \\ + & Deklination $DEC_{Deneb}$& $45.361194^\circ$ \\ + & Höhe $h_c$ & $50.256027^\circ$ \\ + Arktur &\\ + & Rektaszension $RA_{Arktur}$& $214.17558^\circ$ \\ + & Deklination $DEC_{Arktur}$& $19.063222^\circ$ \\ + & Höhe $h_b$ & $47.427444^\circ$ \\ + \end{tabular} +\end{center} +\subsection{Koordinaten der Bildpunkte} +Als erstes benötigen wir die Koordinaten der Bildpunkte von Arktur und Deneb. +$\delta$ ist die Breite, $\lambda$ die Länge. +\begin{align} +\delta_{Deneb}&=DEC_{Deneb} = \underline{\underline{45.361194^\circ}} \nonumber \\ +\lambda_{Deneb}&=RA_{Deneb} - s = 310.55058^\circ -118.610804^\circ =\underline{\underline{191.939776^\circ}} \nonumber \\ +\delta_{Arktur}&=DEC_{Arktur} = \underline{\underline{19.063222^\circ}} \nonumber \\ +\lambda_{Arktur}&=RA_{Arktur} - s = 214.17558^\circ -118.610804^\circ = \underline{\underline{5.5647759^\circ}} \nonumber +\end{align} + + +\subsection{Dreiecke definieren} +\begin{figure} + \begin{center} + \includegraphics[width=6cm]{papers/nav/bilder/beispiele1.pdf} + \includegraphics[width=6cm]{papers/nav/bilder/beispiele2.pdf} + \caption{Arktur-Deneb; Spica-Altiar} +\end{center} +\end{figure} +Das Festlegen der Dreiecke ist essenziell für die korrekten Berechnungen. +Ein Problem, welches in der Theorie nicht berücksichtigt wurde ist, dass der Punkt $P$ nicht zwingend unterhalb der Seite $a$ sein muss. +Wenn man das nicht berücksichtigt, erhält man falsche oder keine Ergebnisse. +In der Realität weiss man jedoch ungefähr auf welchem Breitengrad man ist, so kann man relativ einfach entscheiden, ob der eigene Standort über $a$ ist oder nicht. +Beim unserem genutzten Paar Arktur-Deneb ist dies kein Problem, da der Punkt unterhalb der Seite $a$ liegt. +Würde man aber das Paar Altair-Spica nehmen, liegt $P$ über $a$ (vgl. Abbildung 21.11) und man müsste trigonometrisch anders vorgehen. + +\subsection{Dreieck $ABC$} +\begin{wrapfigure}{R}{5.6cm} + \includegraphics{papers/nav/bilder/position2.pdf} + \caption{Dreieck ABC} +\end{wrapfigure} +Nun berechnen wir alle Seitenlängen $a$, $b$, $c$ und die Innnenwinkel $\alpha$, $\beta$ und $\gamma$ +Wir können $b$ und $c$ mit den geltenten Zusammenhängen des nautischen Dreiecks wie folgt bestimmen: +\begin{align} + b=90^\circ-DEC_{Deneb} = 90^\circ - 45.361194^\circ = \underline{\underline{44.638806^\circ}}\nonumber \\ + c=90^\circ-DEC_{Arktur} = 90^\circ - 19.063222^\circ = \underline{\underline{70.936778^\circ}} \nonumber +\end{align} +Um $a$ zu bestimmen, benötigen wir zuerst den Winkel \[\alpha= RA_{Deneb} - RA_{Arktur} = 310.55058^\circ -214.17558^\circ = \underline{\underline{96.375^\circ}}.\] +Danach nutzen wir den sphärischen Winkelkosinussatz, um $a$ zu berechnen: +\begin{align} + a &= \cos^{-1}(\cos(b) \cdot \cos(c) + \sin(b) \cdot \sin(c) \cdot \cos(\alpha)) \nonumber \\ + &= \cos^{-1}(\cos(44.638806) \cdot \cos(70.936778) + \sin(44.638806) \cdot \sin(70.936778) \cdot \cos(96.375)) \nonumber \\ + &= \underline{\underline{80.8707801^\circ}} \nonumber +\end{align} +Für $\beta$ und $\gamma$ nutzen wir den sphärischen Seitenkosinussatz: +\begin{align} + \beta &= \cos^{-1} \bigg[\frac{\cos(b)-\cos(a) \cdot \cos(c)}{\sin(a) \cdot \sin(c)}\bigg] \nonumber \\ + &= \cos^{-1} \bigg[\frac{\cos(44.638806)-\cos(80.8707801) \cdot \cos(70.936778)}{\sin(80.8707801) \cdot \sin(70.936778)}\bigg] \nonumber \\ + &= \underline{\underline{45.0115314^\circ}} \nonumber +\end{align} + + \begin{align} + \gamma &= \cos^{-1} \bigg[\frac{\cos(c)-\cos(b) \cdot \cos(a)}{\sin(a) \cdot \sin(b)}\bigg] \nonumber \\ + &= \cos^{-1} \bigg[\frac{\cos(70.936778)-\cos(44.638806) \cdot \cos(80.8707801)}{\sin(80.8707801) \cdot \sin(44.638806)}\bigg] \nonumber \\ + &=\underline{\underline{72.0573328^\circ}} \nonumber +\end{align} +\subsection{Dreieck $BPC$} +\begin{wrapfigure}{R}{5.6cm} + \includegraphics{papers/nav/bilder/position3.pdf} + \caption{Dreieck BPC} +\end{wrapfigure} +Als nächstes berechnen wir die Seiten $h_b$, $h_c$ und die Innenwinkel $\beta_1$ und $\gamma_1$. +\begin{align} + h_b&=90^\circ - h_b \nonumber \\ + &= 90^\circ - 47.42744^\circ \nonumber \\ + &= \underline{\underline{42.572556^\circ}} \nonumber +\end{align} +\begin{align} + h_c &= 90^\circ - h_c \nonumber \\ + &= 90^\circ - 50.256027^\circ \nonumber \\ + &= \underline{\underline{39.743973^\circ}} \nonumber +\end{align} +\begin{align} + \beta_1 &= \cos^{-1} \bigg[\frac{\cos(h_c)-\cos(a) \cdot \cos(h_b)}{\sin(a) \cdot \sin(h_b)}\bigg] \nonumber \\ + &= \cos^{-1} \bigg[\frac{\cos(39.743973)-\cos(80.8707801) \cdot \cos(42.572556)}{\sin(80.8707801) \cdot \sin(42.572556)}\bigg] \nonumber \\ + &=\underline{\underline{12.5211127^\circ}} \nonumber +\end{align} +\begin{align} + \gamma_1 &= \cos^{-1} \bigg[\frac{\cos(h_b)-\cos(a) \cdot \cos(h_c)}{\sin(a) \cdot \sin(h_c)}\bigg] \nonumber \\ + &= \cos^{-1} \bigg[\frac{\cos(42.572556)-\cos(80.8707801) \cdot \cos(39.743973)}{\sin(80.8707801) \cdot \sin(39.743973)}\bigg] \nonumber \\ + &=\underline{\underline{13.2618475^\circ}} \nonumber +\end{align} + +\subsection{Dreieck $ABP$} +\begin{wrapfigure}{R}{5.6cm} + \includegraphics{papers/nav/bilder/position4.pdf} + \caption{Dreieck ABP} +\end{wrapfigure} +Als erster müssen wir den Winkel $\beta_2$ berechnen: +\begin{align} + \beta_2 &= \beta + \beta_1 = 45.011513^\circ + 12.5211127^\circ \nonumber \\ + &=\underline{\underline{44.6687451^\circ}} \nonumber +\end{align} +Danach können wir mithilfe von $\beta_2$, $c$ und $h_b$ die Seite $l$ berechnen: +\begin{align} + l &= \cos^{-1}(\cos(c) \cdot \cos(h_b) + \sin(c) \cdot \sin(h_b) \cdot \cos(\beta_2)) \nonumber \\ + &= \cos^{-1}(\cos(70.936778) \cdot \cos(42.572556) + \sin(70.936778) \cdot \sin(42.572556) \cdot \cos(57.5326442)) \nonumber \\ + &= \underline{\underline{54.2833404^\circ}} \nonumber +\end{align} +Damit wir gleich den Längengrad berechnen können, benötigen wir noch den Winkel $\omega$: +\begin{align} + \omega &= \cos^{-1} \bigg[\frac{\cos(h_b)-\cos(c) \cdot \cos(l)}{\sin(c) \cdot \sin(l)}\bigg] \nonumber \\ + &=\cos^{-1} \bigg[\frac{\cos(42.572556)-\cos(70.936778) \cdot \cos(54.2833404)}{\sin(70.936778) \cdot \sin(54.2833404)}\bigg] \nonumber \\ + &= \underline{\underline{44.6687451^\circ}} \nonumber +\end{align} + +\subsection{Längengrad und Breitengrad bestimmen} + +\begin{align} + \delta &= 90^\circ - l \nonumber \\ + &= 90^\circ - 54.2833404 \nonumber \\ + &= \underline{\underline{35.7166596^\circ}} \nonumber +\end{align} +\begin{align} + \lambda &= \lambda_{Arktur} + \omega \nonumber \\ + &= 95.5647759^\circ + 44.6687451^\circ \nonumber \\ + &= \underline{\underline{140.233521^\circ}} \nonumber +\end{align} +Wie wir sehen, stimmen die berechneten Koordinaten mit den Koordinaten des Punktes, an welchem gemessen wurde überein. + +\subsection{Fazit} +Die theoretische Anleitung im Abschnitt 21.6 scheint grundsätzlich zu funktionieren. +Allerdings gab es zwei interessante Probleme. + +Einerseits das Problem, ob der Punkt P sich oberhalb oder unterhalb von $a$ befindet. +Da wir eigentlich wussten, wo der gesuchte Punkt P ist, konnten wir das Dreieck anhand der Koordinaten der Bildpunkte richtig aufstellen. +In der Praxis muss man aber schon wissen, auf welchem Breitengrad man ungefähr ist. +Dies weis man in der Regeln aber, da die eigene Breite die Höhe des Polarsterns ist. +Diese Höhe wird mit dem Sextant gemessen. + +Andererseits ist da noch ein Problem mit dem Sinussatz. +Beim Sinussatz gibt es immer zwei Lösungen, weil \[ \sin(\pi-a)=\sin(a).\] +Da kann es sein (und war in unserem Fall auch so), dass man das falsche Ergebnis erwischt. +Durch diese Erkenntnis haben wir nur Kosinussätze verwendet und dies ebenfalls im Abschnitt 21.6 abgeändert, da es für den Leser auch relevant sein kann, wenn er es Probieren möchte. + + + + diff --git a/buch/papers/nav/bsp2.tex b/buch/papers/nav/bsp2.tex new file mode 100644 index 0000000..8d9083b --- /dev/null +++ b/buch/papers/nav/bsp2.tex @@ -0,0 +1,236 @@ +\section{Beispielrechnung} +\rhead{Beispielrechnung} + +\subsection{Einführung} +In diesem Abschnitt wird die Theorie vom Abschnitt \ref{sta} in einem Praxisbeispiel angewendet. +Wir haben die Deklination, Rektaszension, Höhe der beiden Planeten Deneb und Arktur und die Sternzeit von Greenwich als Ausgangslage. +Die Deklinationen und Rektaszensionen sind von einem vergangenen Datum und die Höhe der Gestirne und die Sternzeit wurden digital in einer Stadt in Japan mit den Koordinaten 35.716672 N, 140.233336 E bestimmt. +Wir werden nachrechnen, dass wir mit unserer Methode genau auf diese Koordinaten kommen. +\subsection{Vorgehen} +Unser Vorgehen erschliesst sich aus unserer Methode, die wir im Abschnitt \ref{p} theoretisch erklärt haben. +\begin{compactenum} +\item +Koordinaten der Bildpunkte der Gestirne bestimmen +\item +Dreiecke aufzeichnen und richtig beschriften +\item +Dreieck ABC bestimmmen +\item +Dreieck BPC bestimmen +\item +Dreieck ABP bestimmen +\item +Geographische Breite bestimmen +\item +Geographische Länge bestimmen +\end{compactenum} + +\subsection{Ausgangslage} +\hbox to\textwidth{% +\begin{minipage}{8.4cm} +Die Rektaszension und die Sternzeit sind in der Regel in Stunden angegeben. +Für die Umrechnung in Grad kann folgender Zusammenhang verwendet werden: +\[ +\text{Stunden} \cdot 15 = \text{Grad}. +\] +Dies wurde hier bereits gemacht. +\begin{center} +\begin{tabular}{l l >{$}l<{$}} +Sternzeit $s$ & $118.610804^\circ$ \\ +Deneb &\\ + & Rektaszension $RA_{\text{Deneb}}$ & 310.55058^\circ\\ + & Deklination $DEC_{\text{Deneb}}$ & \phantom{0}45.361194^\circ \\ + & Höhe $h_c$ & \phantom{0}50.256027^\circ \\ +Arktur &\\ + & Rektaszension $RA_{\text{Arktur}}$& 214.17558^\circ \\ + & Deklination $DEC_{\text{Arktur}}$ & \phantom{0}19.063222^\circ \\ + & Höhe $h_b$ & \phantom{0}47.427444^\circ \\ +\end{tabular} +\end{center} +\end{minipage}% +\hfill% +\raisebox{-2cm}{\includegraphics{papers/nav/bilder/position1.pdf}}% +} +\medskip + +\subsection{Koordinaten der Bildpunkte} +Als erstes benötigen wir die Koordinaten der Bildpunkte von Arktur und Deneb. +$\delta$ ist die Breite, $\lambda$ die Länge. +\begin{align} +\delta_{\text{Deneb}}&=DEC_{\text{Deneb}} = \underline{\underline{45.361194^\circ}} \nonumber \\ +\lambda_{\text{Deneb}}&=RA_{\text{Deneb}} - s = 310.55058^\circ -118.610804^\circ =\underline{\underline{191.939776^\circ}} \nonumber \\ +\delta_{\text{Arktur}}&=DEC_{\text{Arktur}} = \underline{\underline{19.063222^\circ}} \nonumber \\ +\lambda_{\text{Arktur}}&=RA_{\text{Arktur}} - s = 214.17558^\circ -118.610804^\circ = \underline{\underline{5.5647759^\circ}} \nonumber +\end{align} + + +\subsection{Dreiecke definieren} +\begin{figure} +\hbox{% +\includegraphics{papers/nav/bilder/beispiele1.pdf}% +\hfill% +\includegraphics{papers/nav/bilder/beispiele2.pdf}} +\caption{Arktur-Deneb; Spica-Altiar +\label{nav:beispiele}} +\end{figure} +Das Festlegen der Dreiecke ist essenziell für die korrekten Berechnungen. +Ein Problem, welches in der Theorie nicht berücksichtigt wurde ist, dass der Punkt $P$ nicht zwingend unterhalb der Seite $a$ sein muss. +Wenn man das nicht berücksichtigt, erhält man falsche oder keine Ergebnisse. +In der Realität weiss man jedoch ungefähr auf welchem Breitengrad man ist, so kann man relativ einfach entscheiden, ob der eigene Standort über $a$ ist oder nicht. +Beim unserem genutzten Paar Arktur-Deneb ist dies kein Problem, da der Punkt unterhalb der Seite $a$ liegt. +Würde man aber das Paar Altair-Spica nehmen, liegt $P$ über $a$ +(vgl. Abbildung\ref{nav:beispiele}) und man müsste trigonometrisch +anders vorgehen. + +\subsection{Dreieck $ABC$} +\vspace*{-3mm} +\hbox to\textwidth{% +\begin{minipage}{8.4cm}% +Nun berechnen wir alle Seitenlängen $a$, $b$, $c$ und die +Innnenwinkel $\alpha$, $\beta$ und $\gamma$. +Wir können $b$ und $c$ mit den geltenten Zusammenhängen des nautischen Dreiecks wie folgt bestimmen: +\begin{align*} +b +&= +90^\circ-DEC_{\text{Deneb}} += +90^\circ - 45.361194^\circ +\\ +&= +\underline{\underline{44.638806^\circ}} +\\ +c +&= +90^\circ-DEC_{\text{Arktur}} += +90^\circ - 19.063222^\circ +\\ +&= +\underline{\underline{70.936778^\circ}} +\end{align*} +\end{minipage}% +\hfill% +\raisebox{-2.4cm}{\includegraphics{papers/nav/bilder/position2.pdf}}% +} +Um $a$ zu bestimmen, benötigen wir zuerst den Winkel +\begin{align*} +\alpha +&= +RA_{\text{Deneb}} - RA_{\text{Arktur}} += +310.55058^\circ -214.17558^\circ +\\ +&= +\underline{\underline{96.375^\circ}}. +\end{align*} +Danach nutzen wir den sphärischen Winkelkosinussatz, um $a$ zu berechnen: +\begin{align*} + a &= \cos^{-1}(\cos(b) \cdot \cos(c) + \sin(b) \cdot \sin(c) \cdot \cos(\alpha)) \\ + &= \cos^{-1}(\cos(44.638806^\circ) \cdot \cos(70.936778^\circ) + \sin(44.638806^\circ) \cdot \sin(70.936778^\circ) \cdot \cos(96.375^\circ)) \\ + &= \underline{\underline{80.8707801^\circ}} +\end{align*} +Für $\beta$ und $\gamma$ nutzen wir den sphärischen Seitenkosinussatz: +\begin{align*} + \beta &= \cos^{-1} \bigg[\frac{\cos(b)-\cos(a) \cdot \cos(c)}{\sin(a) \cdot \sin(c)}\bigg] \\ + &= \cos^{-1} \bigg[\frac{\cos(44.638806^\circ)-\cos(80.8707801^\circ) \cdot \cos(70.936778^\circ)}{\sin(80.8707801^\circ) \cdot \sin(70.936778^\circ)}\bigg] \\ + &= \underline{\underline{45.0115314^\circ}} +\\ +\gamma &= \cos^{-1} \bigg[\frac{\cos(c)-\cos(b) \cdot \cos(a)}{\sin(a) \cdot \sin(b)}\bigg] \\ + &= \cos^{-1} \bigg[\frac{\cos(70.936778^\circ)-\cos(44.638806^\circ) \cdot \cos(80.8707801^\circ)}{\sin(80.8707801^\circ) \cdot \sin(44.638806^\circ)}\bigg] \\ + &=\underline{\underline{72.0573328^\circ}} +\end{align*} + + + +\subsection{Dreieck $BPC$} +\vspace*{-4mm} +\hbox to\textwidth{% +\begin{minipage}{8.4cm}% +Als nächstes berechnen wir die Seiten $h_B$, $h_B$ und die Innenwinkel $\beta_1$ und $\gamma_1$. +\begin{align*} +h_B&=90^\circ - pbb + = 90^\circ - 47.42744^\circ \\ + &= \underline{\underline{42.572556^\circ}} +\\ + h_C &= 90^\circ - pc + = 90^\circ - 50.256027^\circ \\ + &= \underline{\underline{39.743973^\circ}} +\end{align*} +\end{minipage}% +\hfill% +\raisebox{-2.8cm}{\includegraphics{papers/nav/bilder/position3.pdf}}% +} +\begin{align*} +\beta_1 &= \cos^{-1} \bigg[\frac{\cos(h_c)-\cos(a) \cdot \cos(h_B)}{\sin(a) \cdot \sin(h_B)}\bigg] \\ + &= \cos^{-1} \bigg[\frac{\cos(39.743973^\circ)-\cos(80.8707801^\circ) \cdot \cos(42.572556^\circ)}{\sin(80.8707801^\circ) \cdot \sin(42.572556^\circ)}\bigg] \\ + &=\underline{\underline{12.5211127^\circ}} +\\ +\gamma_1 &= \cos^{-1} \bigg[\frac{\cos(h_b)-\cos(a) \cdot \cos(h_C)}{\sin(a) \cdot \sin(h_C)}\bigg] \\ + &= \cos^{-1} \bigg[\frac{\cos(42.572556^\circ)-\cos(80.8707801^\circ) \cdot \cos(39.743973^\circ)}{\sin(80.8707801^\circ) \cdot \sin(39.743973^\circ)}\bigg] \\ + &=\underline{\underline{13.2618475^\circ}} +\end{align*} + +\subsection{Dreieck $ABP$} +\vspace*{-2mm} +\hbox to\textwidth{% +\begin{minipage}{8.4cm}% +Als erstes müssen wir den Winkel $\beta_2$ berechnen: +\begin{align*} + \beta_2 &= \beta + \beta_1 = 45.011513^\circ + 12.5211127^\circ \\ + &=\underline{\underline{44.6687451^\circ}} +\end{align*} +Danach können wir mithilfe von $\beta_2$, $c$ und $h_B$ die Seite $l$ berechnen: +\begin{align*} +l +&= +\cos^{-1}(\cos(c) \cdot \cos(h_B) + + \sin(c) \cdot \sin(h_B) \cdot \cos(\beta_2)) \\ +&= +\cos^{-1}(\cos(70.936778^\circ) \cdot \cos(42.572556^\circ)\\ +&\qquad + \sin(70.936778^\circ) \cdot \sin(42.572556^\circ) \cdot \cos(57.5326442^\circ)) \\ +&= \underline{\underline{54.2833404^\circ}} +\end{align*} +\end{minipage}% +\hfill% +\raisebox{-2.0cm}{\includegraphics{papers/nav/bilder/position4.pdf}}% +} + +\medskip + +Damit wir gleich den Längengrad berechnen können, benötigen wir noch den Winkel $\omega$: +\begin{align*} + \omega &= \cos^{-1} \bigg[\frac{\cos(h_B)-\cos(c) \cdot \cos(l)}{\sin(c) \cdot \sin(l)}\bigg] \\ + &=\cos^{-1} \bigg[\frac{\cos(42.572556^\circ)-\cos(70.936778^\circ) \cdot \cos(54.2833404^\circ)}{\sin(70.936778^\circ) \cdot \sin(54.2833404^\circ)}\bigg] \\ + &= \underline{\underline{44.6687451^\circ}} +\end{align*} + +\subsection{Längengrad und Breitengrad bestimmen} + +\begin{align*} +\delta &= 90^\circ - l & + \lambda &= \lambda_{\text{Arktur}} + \omega \\ +&= 90^\circ - 54.2833404 & + &= 95.5647759^\circ + 44.6687451^\circ \\ +&= \underline{\underline{35.7166596^\circ}} & + &= \underline{\underline{140.233521^\circ}} +\end{align*} +Wie wir sehen, stimmen die berechneten Koordinaten mit den Koordinaten des Punktes, an welchem gemessen wurde überein. + +\subsection{Fazit} +Die theoretische Anleitung im Abschnitt \ref{sta} scheint grundsätzlich zu funktionieren. +Allerdings gab es zwei interessante Probleme. + +Einerseits das Problem, ob der Punkt $P$ sich oberhalb oder unterhalb von $a$ befindet. +Da wir eigentlich wussten, wo der gesuchte Punkt $P$ ist, konnten wir das Dreieck anhand der Koordinaten der Bildpunkte richtig aufstellen. +In der Praxis muss man aber schon wissen, auf welchem Breitengrad man ungefähr ist. +Dies weis man in der Regeln aber, da die eigene Breite die Höhe des Polarsterns ist. +Diese Höhe wird mit dem Sextant gemessen. + +Andererseits ist da noch ein Problem mit dem Sinussatz. +Beim Sinussatz gibt es immer zwei Lösungen, weil \[ \sin(\pi-a)=\sin(a).\] +Da kann es sein (und war in unserem Fall auch so), dass man das falsche Ergebnis erwischt. +Wegen dieser Erkenntnis haben wir nur Kosinussätze verwendet und dies ebenfalls im Abschnitt \ref{sta} abgeändert, da es für den Leser auch relevant sein kann, wenn er es Probieren möchte. + + + + diff --git a/buch/papers/nav/einleitung.tex b/buch/papers/nav/einleitung.tex index 8eb4481..c778d5c 100644 --- a/buch/papers/nav/einleitung.tex +++ b/buch/papers/nav/einleitung.tex @@ -1,6 +1,7 @@ \section{Einleitung} +\rhead{Einleitung} Heutzutage ist die Navigation ein Teil des Lebens. Man sendet dem Kollegen seinen eigenen Standort, um sich das ewige Erklären zu sparen oder gibt die Adresse des Ziels ein, damit man seinen Aufenthaltsort zum Beispiel auf einer riesigen Wiese am See findet. Dies wird durch Technologien wie Funknavigation, welches ein auf Laufzeitmessung beruhendes Hyperbelverfahren mit Langwellen ist, oder die verbreitete Satellitennavigation, welche vier Satelliten für eine Messung zur Standortbestimmung nutzt. diff --git a/buch/papers/nav/flatearth.tex b/buch/papers/nav/flatearth.tex index 3b08e8d..9745cdc 100644 --- a/buch/papers/nav/flatearth.tex +++ b/buch/papers/nav/flatearth.tex @@ -1,11 +1,12 @@ \section{Warum ist die Erde nicht flach?} - +\rhead{Warum ist die Erde nicht flach?} \begin{figure} \begin{center} \includegraphics[width=10cm]{papers/nav/bilder/projektion.png} \caption[Mercator Projektion]{Mercator Projektion} + \label{merc} \end{center} \end{figure} @@ -17,7 +18,7 @@ Eratosthenes konnte etwa 100 Jahre später den Erdumfang berechnen. Er beobachtete, dass die Sonne in Syene mittags im Zenit steht und gleichzeitig in Alexandria unter einem Winkel einfällt. Mithilfe der Trigonometrie konnte er mit dem Abstand der Städte und dem Einfallswinkel den Umfang berechnen. -Der Kartograph Gerhard Mercator projizierte die Erdkugel wie in Abbildung 21.1 dargestellt auf ein Papier und erstellte so eine winkeltreue Karte. +Der Kartograph Gerhard Mercator projizierte die Erdkugel wie in Abbildung \ref{merc} dargestellt auf ein Papier und erstellte so eine winkeltreue Karte. Jedoch wurden die Länder, die einen grösseren Abstand zum Äquator haben vergrössert, damit die Winkel stimmen können. Wurde man also nun davon ausgehen, dass die Erde flach ist so würden wir nie dort ankommen wo wir es wollen. Dies sieht man zum Beispiel sehr gut, wenn man die Anwendung Google Earth und eine Weltkarte vergleicht. diff --git a/buch/papers/nav/images/2k_earth_daymap.png b/buch/papers/nav/images/2k_earth_daymap.png Binary files differnew file mode 100644 index 0000000..4d55da8 --- /dev/null +++ b/buch/papers/nav/images/2k_earth_daymap.png diff --git a/buch/papers/nav/images/Makefile b/buch/papers/nav/images/Makefile index da4defa..39bfbcf 100644 --- a/buch/papers/nav/images/Makefile +++ b/buch/papers/nav/images/Makefile @@ -51,73 +51,80 @@ DREIECKE3D = \ dreieck3d5.pdf \ dreieck3d6.pdf \ dreieck3d7.pdf \ - dreieck3d8.pdf + dreieck3d8.pdf dreiecke3d: $(DREIECKE3D) POVRAYOPTIONS = -W1080 -H1080 #POVRAYOPTIONS = -W480 -H480 -dreieck3d1.png: dreieck3d1.pov common.inc +dreieck3d1.png: dreieck3d1.pov common.inc macros.inc povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d1.png dreieck3d1.pov dreieck3d1.jpg: dreieck3d1.png convert dreieck3d1.png -density 300 -units PixelsPerInch dreieck3d1.jpg dreieck3d1.pdf: dreieck3d1.tex dreieck3d1.jpg pdflatex dreieck3d1.tex -dreieck3d2.png: dreieck3d2.pov common.inc +dreieck3d2.png: dreieck3d2.pov common.inc macros.inc povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d2.png dreieck3d2.pov dreieck3d2.jpg: dreieck3d2.png convert dreieck3d2.png -density 300 -units PixelsPerInch dreieck3d2.jpg dreieck3d2.pdf: dreieck3d2.tex dreieck3d2.jpg pdflatex dreieck3d2.tex -dreieck3d3.png: dreieck3d3.pov common.inc +dreieck3d3.png: dreieck3d3.pov common.inc macros.inc povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d3.png dreieck3d3.pov dreieck3d3.jpg: dreieck3d3.png convert dreieck3d3.png -density 300 -units PixelsPerInch dreieck3d3.jpg dreieck3d3.pdf: dreieck3d3.tex dreieck3d3.jpg pdflatex dreieck3d3.tex -dreieck3d4.png: dreieck3d4.pov common.inc +dreieck3d4.png: dreieck3d4.pov common.inc macros.inc povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d4.png dreieck3d4.pov dreieck3d4.jpg: dreieck3d4.png convert dreieck3d4.png -density 300 -units PixelsPerInch dreieck3d4.jpg dreieck3d4.pdf: dreieck3d4.tex dreieck3d4.jpg pdflatex dreieck3d4.tex -dreieck3d5.png: dreieck3d5.pov common.inc +dreieck3d5.png: dreieck3d5.pov common.inc macros.inc povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d5.png dreieck3d5.pov dreieck3d5.jpg: dreieck3d5.png convert dreieck3d5.png -density 300 -units PixelsPerInch dreieck3d5.jpg dreieck3d5.pdf: dreieck3d5.tex dreieck3d5.jpg pdflatex dreieck3d5.tex -dreieck3d6.png: dreieck3d6.pov common.inc +dreieck3d6.png: dreieck3d6.pov common.inc macros.inc povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d6.png dreieck3d6.pov dreieck3d6.jpg: dreieck3d6.png convert dreieck3d6.png -density 300 -units PixelsPerInch dreieck3d6.jpg dreieck3d6.pdf: dreieck3d6.tex dreieck3d6.jpg pdflatex dreieck3d6.tex -dreieck3d7.png: dreieck3d7.pov common.inc +dreieck3d7.png: dreieck3d7.pov common.inc macros.inc povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d7.png dreieck3d7.pov dreieck3d7.jpg: dreieck3d7.png convert dreieck3d7.png -density 300 -units PixelsPerInch dreieck3d7.jpg dreieck3d7.pdf: dreieck3d7.tex dreieck3d7.jpg pdflatex dreieck3d7.tex -dreieck3d8.png: dreieck3d8.pov common.inc +dreieck3d8.png: dreieck3d8.pov common.inc macros.inc povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d8.png dreieck3d8.pov dreieck3d8.jpg: dreieck3d8.png convert dreieck3d8.png -density 300 -units PixelsPerInch dreieck3d8.jpg dreieck3d8.pdf: dreieck3d8.tex dreieck3d8.jpg pdflatex dreieck3d8.tex -dreieck3d9.png: dreieck3d9.pov common.inc +dreieck3d9.png: dreieck3d9.pov common.inc macros.inc povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d9.png dreieck3d9.pov dreieck3d9.jpg: dreieck3d9.png convert dreieck3d9.png -density 300 -units PixelsPerInch dreieck3d9.jpg dreieck3d9.pdf: dreieck3d9.tex dreieck3d9.jpg pdflatex dreieck3d9.tex +dreieck3d10.png: dreieck3d10.pov common.inc macros.inc + povray +A0.1 $(POVRAYOPTIONS) -Odreieck3d10.png dreieck3d10.pov +dreieck3d10.jpg: dreieck3d10.png + convert dreieck3d10.png -density 300 -units PixelsPerInch dreieck3d10.jpg +dreieck3d10.pdf: dreieck3d10.tex dreieck3d10.jpg macros.inc + pdflatex dreieck3d10.tex + diff --git a/buch/papers/nav/images/beispiele/2k_earth_daymap.png b/buch/papers/nav/images/beispiele/2k_earth_daymap.png Binary files differnew file mode 100644 index 0000000..4d55da8 --- /dev/null +++ b/buch/papers/nav/images/beispiele/2k_earth_daymap.png diff --git a/buch/papers/nav/images/beispiele/Makefile b/buch/papers/nav/images/beispiele/Makefile new file mode 100644 index 0000000..9546c8e --- /dev/null +++ b/buch/papers/nav/images/beispiele/Makefile @@ -0,0 +1,38 @@ +# +# Makefile to build images +# +# (c) 2022 +# +all: beispiele + +POSITION = \ + beispiele1.pdf \ + beispiele2.pdf \ + beispiele3.pdf + +beispiele: $(POSITION) + +POVRAYOPTIONS = -W1080 -H1080 +#POVRAYOPTIONS = -W480 -H480 + +beispiele1.png: beispiele1.pov common.inc geometrie.inc ../macros.inc + povray +A0.1 $(POVRAYOPTIONS) -Obeispiele1.png beispiele1.pov +beispiele1.jpg: beispiele1.png + convert beispiele1.png -density 300 -units PixelsPerInch beispiele1.jpg +beispiele1.pdf: beispiele1.tex common.tex beispiele1.jpg + pdflatex beispiele1.tex + +beispiele2.png: beispiele2.pov common.inc geometrie.inc ../macros.inc + povray +A0.1 $(POVRAYOPTIONS) -Obeispiele2.png beispiele2.pov +beispiele2.jpg: beispiele2.png + convert beispiele2.png -density 300 -units PixelsPerInch beispiele2.jpg +beispiele2.pdf: beispiele2.tex common.tex beispiele2.jpg + pdflatex beispiele2.tex + +beispiele3.png: beispiele3.pov common.inc geometrie.inc ../macros.inc + povray +A0.1 $(POVRAYOPTIONS) -Obeispiele3.png beispiele3.pov +beispiele3.jpg: beispiele3.png + convert beispiele3.png -density 300 -units PixelsPerInch beispiele3.jpg +beispiele3.pdf: beispiele3.tex common.tex beispiele3.jpg + pdflatex beispiele3.tex + diff --git a/buch/papers/nav/images/beispiele/beispiele1.pdf b/buch/papers/nav/images/beispiele/beispiele1.pdf Binary files differnew file mode 100644 index 0000000..1f91809 --- /dev/null +++ b/buch/papers/nav/images/beispiele/beispiele1.pdf diff --git a/buch/papers/nav/images/beispiele/beispiele1.pov b/buch/papers/nav/images/beispiele/beispiele1.pov new file mode 100644 index 0000000..7fb3de2 --- /dev/null +++ b/buch/papers/nav/images/beispiele/beispiele1.pov @@ -0,0 +1,12 @@ +// +// beispiele1.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#include "common.inc" + +#declare Stern1 = Deneb; +#declare Stern2 = Arktur; + +#include "geometrie.inc" + diff --git a/buch/papers/nav/images/beispiele/beispiele1.tex b/buch/papers/nav/images/beispiele/beispiele1.tex new file mode 100644 index 0000000..0dfae2f --- /dev/null +++ b/buch/papers/nav/images/beispiele/beispiele1.tex @@ -0,0 +1,49 @@ +% +% beispiele1.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,calc} +\usepackage{ifthen} +\begin{document} + +\input{common.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick,scale=0.8125] + +% Povray Bild +\node at (0,0) {\includegraphics[width=6.5cm]{beispiele1.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]; +}{} + +\labelA +\labelP +\labelDeneb +\labelArktur +\labelhDeneb +\labelhArktur +\labellone +\labeldDeneb +\labeldArktur + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/beispiele/beispiele2.pdf b/buch/papers/nav/images/beispiele/beispiele2.pdf Binary files differnew file mode 100644 index 0000000..4b28f2f --- /dev/null +++ b/buch/papers/nav/images/beispiele/beispiele2.pdf diff --git a/buch/papers/nav/images/beispiele/beispiele2.pov b/buch/papers/nav/images/beispiele/beispiele2.pov new file mode 100644 index 0000000..b69f0f9 --- /dev/null +++ b/buch/papers/nav/images/beispiele/beispiele2.pov @@ -0,0 +1,12 @@ +// +// beispiele1.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#include "common.inc" + +#declare Stern1 = Altair; +#declare Stern2 = Spica; + +#include "geometrie.inc" + diff --git a/buch/papers/nav/images/beispiele/beispiele2.tex b/buch/papers/nav/images/beispiele/beispiele2.tex new file mode 100644 index 0000000..04c1e4d --- /dev/null +++ b/buch/papers/nav/images/beispiele/beispiele2.tex @@ -0,0 +1,50 @@ +% +% beispiele2.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,calc} +\usepackage{ifthen} +\begin{document} + +\input{common.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick,scale=0.8125] + +% Povray Bild +\node at (0,0) {\includegraphics[width=6.5cm]{beispiele2.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]; +}{} + +\labelA +\labelP +\labelAltair +\labelSpica +\labelhAltair +\labelhSpica +\labelltwo +\labeldAltair +\labeldSpica + + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/beispiele/beispiele3.pdf b/buch/papers/nav/images/beispiele/beispiele3.pdf Binary files differnew file mode 100644 index 0000000..049ccdf --- /dev/null +++ b/buch/papers/nav/images/beispiele/beispiele3.pdf diff --git a/buch/papers/nav/images/beispiele/beispiele3.pov b/buch/papers/nav/images/beispiele/beispiele3.pov new file mode 100644 index 0000000..af9a468 --- /dev/null +++ b/buch/papers/nav/images/beispiele/beispiele3.pov @@ -0,0 +1,12 @@ +// +// beispiele1.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#include "common.inc" + +#declare Stern1 = Deneb; +#declare Stern2 = Altair; + +#include "geometrie.inc" + diff --git a/buch/papers/nav/images/beispiele/beispiele3.tex b/buch/papers/nav/images/beispiele/beispiele3.tex new file mode 100644 index 0000000..2573199 --- /dev/null +++ b/buch/papers/nav/images/beispiele/beispiele3.tex @@ -0,0 +1,49 @@ +% +% beispiele3.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,calc} +\usepackage{ifthen} +\begin{document} + +\input{common.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=8cm]{beispiele3.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]; +}{} + +\labelA +\labelP +\labelDeneb +\labelAltair +\labelhDeneb +\labelhAltair +\labellone +%\labeldDeneb +%\labeldAltair + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/beispiele/common.inc b/buch/papers/nav/images/beispiele/common.inc new file mode 100644 index 0000000..51fbd1f --- /dev/null +++ b/buch/papers/nav/images/beispiele/common.inc @@ -0,0 +1,50 @@ +// +// common.inc -- 3d Darstellung +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "colors.inc" +#include "../macros.inc" + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.034; + +camera { + location <40, 20, -20> + look_at <0, 0.24, -0.20> + right x * imagescale + up y * imagescale +} + +light_source { + <30, 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> + } +} + +erde(0) +achse(fein, White) +koordinatennetz(gitterfarbe, 9, 0.001) + +union { + punkt(Sakura, fett) + pigment { + color rot + } + finish { + metallic + specular 0.9 + } +} + diff --git a/buch/papers/nav/images/beispiele/common.tex b/buch/papers/nav/images/beispiele/common.tex new file mode 100644 index 0000000..81dc037 --- /dev/null +++ b/buch/papers/nav/images/beispiele/common.tex @@ -0,0 +1,79 @@ +% +% common.tex +% +% (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% + +\def\labelA{\node at (0.7,3.8) {$A$};} + +\def\labelSpica{ + \node at (-3.6,-2.8) {Spica}; +} +\def\labelAltair{ + \node at (3.0,-2.3) {Altair}; +} +\def\labelArktur{ + \node at (-3.3,-0.7) {Arktur}; +} +\def\labelDeneb{ + \node at (3.4,0.9) {Deneb}; +} + +\def\labelP{\node at (0,-0.2) {$P$};} + +\def\labellone{\node at (0.1,1.9) {$l$};} +\def\labelltwo{\node at (0.1,2.0) {$l$};} + +\def\labelhSpica{ + \coordinate (Spica) at (-1.8,-0.3); + \node at (Spica) {$h_{\text{Spica}}\mathstrut$}; +} +\def\labelhAltair{ + \coordinate (Altair) at (1.1,-1.0); + \node at (Altair) {$h_{\text{Altair}}\mathstrut$}; +} +\def\labelhArktur{ + \coordinate (Arktur) at (-1.3,-0.3); + \node at (Arktur) {$h_{\text{Arktur}}\mathstrut$}; +} +\def\labelhDeneb{ + \coordinate (Deneb) at (1.6,0.45); + \node at (Deneb) {$h_{\text{Deneb}}\mathstrut$}; +} + +\def\labeldSpica{ + \coordinate (dSpica) at (-1.5,2.6); + \fill[color=white,opacity=0.5] + ($(dSpica)+(-1.8,0.13)$) + rectangle + ($(dSpica)+(-0.06,0.60)$); + \node at (dSpica) [above left] + {$90^\circ-\delta_{\text{Spica}}\mathstrut$}; +} +\def\labeldAltair{ + \coordinate (dAltair) at (2.0,2.1); + \fill[color=white,opacity=0.5] + ($(dAltair)+(0.10,0.10)$) + rectangle + ($(dAltair)+(2.0,0.60)$); + \node at (dAltair) [above right] + {$90^\circ-\delta_{\text{Altair}}\mathstrut$}; +} +\def\labeldArktur{ + \coordinate (dArktur) at (-1.2,2.5); + \fill[color=white,opacity=0.5] + ($(dArktur)+(-1.8,0.10)$) + rectangle + ($(dArktur)+(-0.06,0.55)$); + \node at (dArktur) [above left] + {$90^\circ-\delta_{\text{Arktur}}\mathstrut$}; +} +\def\labeldDeneb{ + \coordinate (dDeneb) at (2.0,2.8); + \fill[color=white,opacity=0.5] + ($(dDeneb)+(0.05,0.60)$) + rectangle + ($(dDeneb)+(1.87,0.10)$); + \node at (dDeneb) [above right] + {$90^\circ-\delta_{\text{Deneb}}\mathstrut$}; +} diff --git a/buch/papers/nav/images/beispiele/geometrie.inc b/buch/papers/nav/images/beispiele/geometrie.inc new file mode 100644 index 0000000..2f6084e --- /dev/null +++ b/buch/papers/nav/images/beispiele/geometrie.inc @@ -0,0 +1,41 @@ +union { + punkt(A, fett) + punkt(Stern1, fein) + punkt(Stern2, fein) + seite(Stern1, Stern2, fein) + pigment { + color kugelfarbe + } + finish { + metallic + specular 0.9 + } +} + +union { + seite(A, Stern1, fein) + seite(A, Stern2, fein) + seite(Stern1, Sakura, fein) + seite(Stern2, Sakura, fein) + winkel(A, Stern1, Stern2, 0.5*fein, gross) + pigment { + color bekannt + } + finish { + metallic + specular 0.9 + } +} + +union { + seite(A, Sakura, fein) + winkel(A, Sakura, Stern1, 0.5*fett, klein) + pigment { + color unbekannt + } + finish { + metallic + specular 0.9 + } +} + diff --git a/buch/papers/nav/images/common.inc b/buch/papers/nav/images/common.inc index 2c0ae6e..7b861de 100644 --- a/buch/papers/nav/images/common.inc +++ b/buch/papers/nav/images/common.inc @@ -5,6 +5,7 @@ // #version 3.7; #include "colors.inc" +#include "macros.inc" global_settings { assumed_gamma 1 @@ -12,12 +13,6 @@ global_settings { #declare imagescale = 0.034; -#declare O = <0, 0, 0>; -#declare A = vnormalize(< 0, 1, 0>); -#declare B = vnormalize(< 1, 2, -8>); -#declare C = vnormalize(< 5, 1, 0>); -#declare P = vnormalize(< 5, -1, -7>); - camera { location <40, 20, -20> look_at <0, 0.24, -0.20> @@ -26,7 +21,7 @@ camera { } light_source { - <10, 10, -40> color White + <30, 10, -40> color White area_light <1,0,0> <0,0,1>, 10, 10 adaptive 1 jitter @@ -38,150 +33,3 @@ sky_sphere { } } -// -// draw an arrow from <from> to <to> with thickness <arrowthickness> with -// color <c> -// -#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 - -#macro grosskreis(normale, staerke) -union { - #declare v1 = vcross(normale, <normale.x, normale.z, normale.y>); - #declare v1 = vnormalize(v1); - #declare v2 = vnormalize(vcross(v1, normale)); - #declare phisteps = 100; - #declare phistep = pi / phisteps; - #declare phi = 0; - #declare p1 = v1; - #while (phi < 2 * pi - phistep/2) - sphere { p1, staerke } - #declare phi = phi + phistep; - #declare p2 = v1 * cos(phi) + v2 * sin(phi); - cylinder { p1, p2, staerke } - #declare p1 = p2; - #end -} -#end - -#macro seite(p, q, staerke) - #declare n = vcross(p, q); - intersection { - grosskreis(n, staerke) - plane { -vcross(n, q) * vdot(vcross(n, q), p), 0 } - plane { -vcross(n, p) * vdot(vcross(n, p), q), 0 } - } -#end - -#macro winkel(w, p, q, staerke, r) - #declare n = vnormalize(w); - #declare pp = vnormalize(p - vdot(n, p) * n); - #declare qq = vnormalize(q - vdot(n, q) * n); - intersection { - sphere { O, 1 + staerke } - cone { O, 0, 1.2 * vnormalize(w), r } - plane { -vcross(n, qq) * vdot(vcross(n, qq), pp), 0 } - plane { -vcross(n, pp) * vdot(vcross(n, pp), qq), 0 } - } -#end - -#macro punkt(p, staerke) - sphere { p, 1.5 * staerke } -#end - -#macro dreieck(p, q, r, farbe) - #declare n1 = vnormalize(vcross(p, q)); - #declare n2 = vnormalize(vcross(q, r)); - #declare n3 = vnormalize(vcross(r, p)); - intersection { - plane { n1, 0 } - plane { n2, 0 } - plane { n3, 0 } - sphere { <0, 0, 0>, 1 + 0.001 } - pigment { - color farbe - } - finish { - metallic - specular 0.4 - } - } -#end - -#macro ebenerwinkel(a, p, q, s, r, farbe) - #declare n = vnormalize(-vcross(p, q)); - #declare np = vnormalize(-vcross(p, n)); - #declare nq = -vnormalize(-vcross(q, n)); -// arrow(a, a + n, 0.02, White) -// arrow(a, a + np, 0.01, Red) -// arrow(a, a + nq, 0.01, Blue) - intersection { - cylinder { a - (s/2) * n, a + (s/2) * n, r } - plane { np, vdot(np, a) } - plane { nq, vdot(nq, a) } - pigment { - farbe - } - finish { - metallic - specular 0.5 - } - } -#end - -#macro komplement(a, p, q, s, r, farbe) - #declare n = vnormalize(-vcross(p, q)); -// arrow(a, a + n, 0.015, Orange) - #declare m = vnormalize(-vcross(q, n)); -// arrow(a, a + m, 0.015, Pink) - ebenerwinkel(a, p, m, s, r, farbe) -#end - -#declare fett = 0.015; -#declare fein = 0.010; - -#declare klein = 0.3; -#declare gross = 0.4; - -#declare dreieckfarbe = rgb<0.6,0.6,0.6>; -#declare rot = rgb<0.8,0.2,0.2>; -#declare gruen = rgb<0,0.6,0>; -#declare blau = rgb<0.2,0.2,0.8>; - -#declare kugelfarbe = rgb<0.8,0.8,0.8>; -#declare kugeltransparent = rgbt<0.8,0.8,0.8,0.5>; - -#macro kugel(farbe) -sphere { - <0, 0, 0>, 1 - pigment { - color farbe - } -} -#end - diff --git a/buch/papers/nav/images/dreieck3d1.pdf b/buch/papers/nav/images/dreieck3d1.pdf Binary files differindex 015bce7..fecaece 100644 --- a/buch/papers/nav/images/dreieck3d1.pdf +++ b/buch/papers/nav/images/dreieck3d1.pdf diff --git a/buch/papers/nav/images/dreieck3d1.pov b/buch/papers/nav/images/dreieck3d1.pov index e491075..336161c 100644 --- a/buch/papers/nav/images/dreieck3d1.pov +++ b/buch/papers/nav/images/dreieck3d1.pov @@ -3,8 +3,11 @@ // // (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule // +#version 3.7; #include "common.inc" +kugel(kugeldunkel) + union { seite(A, B, fett) seite(B, C, fett) diff --git a/buch/papers/nav/images/dreieck3d10.pov b/buch/papers/nav/images/dreieck3d10.pov new file mode 100644 index 0000000..2dd7c79 --- /dev/null +++ b/buch/papers/nav/images/dreieck3d10.pov @@ -0,0 +1,46 @@ +// +// dreiecke3d10.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#include "common.inc" + +erde() + +#declare Stern1 = Deneb; +#declare Stern2 = Spica; + +koordinatennetz(gitterfarbe, 9, 0.001) + +union { + seite(A, Stern1, 0.5*fein) + seite(A, Stern2, 0.5*fein) + seite(A, Sakura, 0.5*fein) + seite(Stern1, Sakura, 0.5*fein) + seite(Stern2, Sakura, 0.5*fein) + seite(Stern1, Stern2, 0.5*fein) + + punkt(A, fein) + punkt(Sakura, fett) + punkt(Deneb, fein) + punkt(Spica, fein) + punkt(Altair, fein) + punkt(Arktur, fein) + pigment { + color Red + } +} + +//arrow(<-1.3,0,0>, <1.3,0,0>, fein, White) +arrow(<0,-1.3,0>, <0,1.3,0>, fein, White) +//arrow(<0,0,-1.3>, <0,0,1.3>, fein, White) + +#declare imagescale = 0.044; + +camera { + location <40, 20, -20> + look_at <0, 0.24, -0.20> + right x * imagescale + up y * imagescale +} + diff --git a/buch/papers/nav/images/dreieck3d2.pdf b/buch/papers/nav/images/dreieck3d2.pdf Binary files differindex 6b3f09d..28af5fe 100644 --- a/buch/papers/nav/images/dreieck3d2.pdf +++ b/buch/papers/nav/images/dreieck3d2.pdf diff --git a/buch/papers/nav/images/dreieck3d2.pov b/buch/papers/nav/images/dreieck3d2.pov index c0625ce..9e57d22 100644 --- a/buch/papers/nav/images/dreieck3d2.pov +++ b/buch/papers/nav/images/dreieck3d2.pov @@ -5,6 +5,8 @@ // #include "common.inc" +kugel(kugeldunkel) + union { seite(A, B, fett) seite(B, C, fett) diff --git a/buch/papers/nav/images/dreieck3d3.pdf b/buch/papers/nav/images/dreieck3d3.pdf Binary files differindex 7d79455..4fc4fc1 100644 --- a/buch/papers/nav/images/dreieck3d3.pdf +++ b/buch/papers/nav/images/dreieck3d3.pdf diff --git a/buch/papers/nav/images/dreieck3d3.pov b/buch/papers/nav/images/dreieck3d3.pov index b6f64d5..bde780b 100644 --- a/buch/papers/nav/images/dreieck3d3.pov +++ b/buch/papers/nav/images/dreieck3d3.pov @@ -5,6 +5,8 @@ // #include "common.inc" +kugel(kugeldunkel) + union { seite(A, B, fett) seite(B, C, fett) diff --git a/buch/papers/nav/images/dreieck3d4.pdf b/buch/papers/nav/images/dreieck3d4.pdf Binary files differindex e1ea757..0d57fc2 100644 --- a/buch/papers/nav/images/dreieck3d4.pdf +++ b/buch/papers/nav/images/dreieck3d4.pdf diff --git a/buch/papers/nav/images/dreieck3d4.pov b/buch/papers/nav/images/dreieck3d4.pov index b6f17e3..08f266b 100644 --- a/buch/papers/nav/images/dreieck3d4.pov +++ b/buch/papers/nav/images/dreieck3d4.pov @@ -5,6 +5,8 @@ // #include "common.inc" +kugel(kugelfarbe) + union { seite(A, B, fein) seite(A, C, fein) diff --git a/buch/papers/nav/images/dreieck3d5.pdf b/buch/papers/nav/images/dreieck3d5.pdf Binary files differindex 0c86d36..a5dd0ae 100644 --- a/buch/papers/nav/images/dreieck3d5.pdf +++ b/buch/papers/nav/images/dreieck3d5.pdf diff --git a/buch/papers/nav/images/dreieck3d5.pov b/buch/papers/nav/images/dreieck3d5.pov index 188f181..1aac0dc 100644 --- a/buch/papers/nav/images/dreieck3d5.pov +++ b/buch/papers/nav/images/dreieck3d5.pov @@ -5,6 +5,8 @@ // #include "common.inc" +kugel(kugeldunkel) + union { seite(A, B, fein) seite(A, C, fein) diff --git a/buch/papers/nav/images/dreieck3d6.pov b/buch/papers/nav/images/dreieck3d6.pov index 191a1e7..6bbd1a9 100644 --- a/buch/papers/nav/images/dreieck3d6.pov +++ b/buch/papers/nav/images/dreieck3d6.pov @@ -5,6 +5,8 @@ // #include "common.inc" +kugel(kugeldunkel) + union { seite(A, B, fett) seite(A, C, fett) diff --git a/buch/papers/nav/images/dreieck3d7.pov b/buch/papers/nav/images/dreieck3d7.pov index aae5c6c..45dc5d6 100644 --- a/buch/papers/nav/images/dreieck3d7.pov +++ b/buch/papers/nav/images/dreieck3d7.pov @@ -5,6 +5,8 @@ // #include "common.inc" +kugel(kugeldunkel) + union { seite(A, C, fett) seite(A, P, fett) diff --git a/buch/papers/nav/images/dreieck3d8.jpg b/buch/papers/nav/images/dreieck3d8.jpg Binary files differindex 52bd25e..f24ea33 100644 --- a/buch/papers/nav/images/dreieck3d8.jpg +++ b/buch/papers/nav/images/dreieck3d8.jpg diff --git a/buch/papers/nav/images/dreieck3d8.pdf b/buch/papers/nav/images/dreieck3d8.pdf Binary files differindex 9d630aa..da3b110 100644 --- a/buch/papers/nav/images/dreieck3d8.pdf +++ b/buch/papers/nav/images/dreieck3d8.pdf diff --git a/buch/papers/nav/images/dreieck3d8.pov b/buch/papers/nav/images/dreieck3d8.pov index 9e9921a..dae7f67 100644 --- a/buch/papers/nav/images/dreieck3d8.pov +++ b/buch/papers/nav/images/dreieck3d8.pov @@ -93,4 +93,5 @@ object { dreieck(A, B, C, White) +kugel(kugeldunkel) diff --git a/buch/papers/nav/images/macros.inc b/buch/papers/nav/images/macros.inc new file mode 100644 index 0000000..20cb2ff --- /dev/null +++ b/buch/papers/nav/images/macros.inc @@ -0,0 +1,345 @@ +// +// macros.inc -- 3d Darstellung +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "colors.inc" + +// +// Dimensions +// +#declare fett = 0.015; +#declare fein = 0.010; + +#declare klein = 0.3; +#declare gross = 0.4; + +// +// colors +// +#declare dreieckfarbe = rgb<0.6,0.6,0.6>; +#declare rot = rgb<0.8,0.2,0.2>; +#declare gruen = rgb<0,0.6,0>; +#declare blau = rgb<0.2,0.2,0.8>; + +#declare bekannt = rgb<0.2,0.6,1>; +#declare unbekannt = rgb<1.0,0.6,0.8>; + +#declare kugelfarbe = rgb<0.8,0.8,0.8>; +#declare kugeldunkel = rgb<0.4,0.4,0.4>; +#declare kugeltransparent = rgbt<0.8,0.8,0.8,0.5>; + +#declare gitterfarbe = rgb<0.2,0.6,1>; +#declare gitterfarbe = rgb<1.0,0.8,0>; + +// +// Points Points +// +#declare O = <0, 0, 0>; +#declare Nordpol = vnormalize(< 0, 1, 0>); +#declare A = vnormalize(< 0, 1, 0>); +#declare B = vnormalize(< 1, 2, -8>); +#declare C = vnormalize(< 5, 1, 0>); +#declare P = vnormalize(< 5, -1, -7>); + +// +// \brief convert spherical coordinates to recctangular coordinates +// +// \param phi +// \param theta +// +#macro kugelpunkt(phi, theta) + < sin(theta) * cos(phi - pi), cos(theta), sin(theta) * sin(phi - pi) > +#end + +#declare Sakura = kugelpunkt(radians(140.2325498), radians(90 - 35.71548014)); +#declare Deneb = kugelpunkt(radians(191.9397759), radians(90 - 45.361194)); +#declare Spica = kugelpunkt(radians(82.9868559), radians(90 - (-11.279666))); +#declare Altair = kugelpunkt(radians(179.3616609), radians(90 - 8.928416)); +#declare Arktur = kugelpunkt(radians(95.5647759), radians(90 - 19.063222)); + +// +// draw an arrow from <from> to <to> with thickness <arrowthickness> with +// color <c> +// +#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 + +#declare ntsteps = 100; + +// +// \brief Draw a circle +// +// \param b1 basis vector for a coordinate system of the plane containing +// the circle +// \param b2 the other basis vector +// \param o center of the circle +// \param thick diameter of the circular tube +// +#macro kreis(b1, b2, o, thick, maxwinkel) + #declare tpstep = pi / ntsteps; + #declare tp = tpstep; + #declare p1 = b1 + o; + sphere { p1, thick } + #declare tpstep = pi/ntsteps; + #while (tp < (maxwinkel - tpstep/2)) + #declare p2 = cos(tp) * b1 + sin(tp) * b2 + o; + cylinder { p1, p2, thick } + sphere { p2, thick } + #declare p1 = p2; + #declare tp = tp + tpstep; + #end + #if ((tp - tpstep) < maxwinkel) + #declare p2 = cos(maxwinkel) * b1 + sin(maxwinkel) * b2 + o; + cylinder { p1, p2, thick } + sphere { p2, thick } + #end +#end + +// +// \brief Draw a great circle +// +// \param normale the normal of the plane containing the great circle +// \param thick diameter +// +#macro grosskreis(normale, thick) + #declare other = < normale.y, -normale.x, normale.z >; + #declare b1 = vnormalize(vcross(other, normale)); + #declare b2 = vnormalize(vcross(normale, b1)); + kreis(b1, b2, <0,0,0>, thick, 2*pi) +#end + +// +// \brief Draw a circle of latitude +// +// \param theta latitude +// \param thick diameter +// +#macro breitenkreis(theta, thick) + #declare b1 = sin(theta) * kugelpunkt(0, pi/2); + #declare b2 = sin(theta) * kugelpunkt(pi/2, pi/2); + #declare o = < 0, cos(theta), 0 >; + kreis(b1, b2, o, thick, 2*pi) +#end + +// +// \brief Draw the great circle connecting the two points +// +// \param p first point +// \param q second point +// \param staerke diameter +// + +#macro seite(p, q, staerke) + #declare s1 = vnormalize(p); + #declare s2 = vnormalize(q); + #declare w = acos(vdot(s1, s2)); + #declare n = vnormalize(vcross(p, q)); + #declare s2 = vnormalize(vcross(n, s1)); + kreis(s1, s2, O, staerke, w) +#end + +// +// \brief Draw an angle +// +// \param w the edge where the angle is located +// \param p point on the first leg +// \param q point on the second leg +// \param r diameter of the angle +// +#macro winkel(w, p, q, staerke, r) + #declare n = vnormalize(w); + #declare pp = vnormalize(p - vdot(n, p) * n); + #declare qq = vnormalize(q - vdot(n, q) * n); + intersection { + sphere { O, 1 + staerke } + cone { O, 0, 1.2 * vnormalize(w), r } + plane { -vcross(n, qq) * vdot(vcross(n, qq), pp), 0 } + plane { -vcross(n, pp) * vdot(vcross(n, pp), qq), 0 } + } +#end + +// +// \brief Draw a point on the sphere as a circle +// +// \param p the point +// \param staerke the diameter of the point +// +#macro punkt(p, staerke) + sphere { p, 1.5 * staerke } +#end + +// +// \brief Draw a circle as a part of the differently colored cutout from +// the sphere +// +// \param p first point of the triangle +// \param q second point of the triangle +// \param r third point of the triangle +// \param farbe color +// +#macro dreieck(p, q, r, farbe) + #declare n1 = vnormalize(vcross(p, q)); + #declare n2 = vnormalize(vcross(q, r)); + #declare n3 = vnormalize(vcross(r, p)); + intersection { + plane { n1, 0 } + plane { n2, 0 } + plane { n3, 0 } + sphere { <0, 0, 0>, 1 + 0.001 } + pigment { + color farbe + } + finish { + metallic + specular 0.4 + } + } +#end + +// +// \brief +// +// \param a axis of the angle +// \param p first leg +// \param q second leg +// \param s thickness of the angle disk +// \param r radius of the angle disk +// \param farbe color +// +#macro ebenerwinkel(a, p, q, s, r, farbe) + #declare n = vnormalize(-vcross(p, q)); + #declare np = vnormalize(-vcross(p, n)); + #declare nq = -vnormalize(-vcross(q, n)); +// arrow(a, a + n, 0.02, White) +// arrow(a, a + np, 0.01, Red) +// arrow(a, a + nq, 0.01, Blue) + intersection { + cylinder { a - (s/2) * n, a + (s/2) * n, r } + plane { np, vdot(np, a) } + plane { nq, vdot(nq, a) } + pigment { + farbe + } + finish { + metallic + specular 0.5 + } + } +#end + +// +// \brief Show the complement angle +// +// +#macro komplement(a, p, q, s, r, farbe) + #declare n = vnormalize(-vcross(p, q)); +// arrow(a, a + n, 0.015, Orange) + #declare m = vnormalize(-vcross(q, n)); +// arrow(a, a + m, 0.015, Pink) + ebenerwinkel(a, p, m, s, r, farbe) +#end + +// +// \brief Show a coordinate grid on the sphere +// +// \param farbe the color of the grid +// \param thick the line thickness +// +#macro koordinatennetz(farbe, netzschritte, thick) +union { + // circles of latitude + #declare theta = pi/(2*netzschritte); + #declare thetastep = pi/(2*netzschritte); + #while (theta < pi - thetastep/2) + breitenkreis(theta, thick) + #declare theta = theta + thetastep; + #end + // cirles of longitude + #declare phi = 0; + #declare phistep = pi/(2*netzschritte); + #while (phi < pi-phistep/2) + grosskreis(kugelpunkt(phi, pi/2), thick) + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +// +// \brief Display a color of given color +// +// \param farbe the color +// +#macro kugel(farbe) +sphere { + <0, 0, 0>, 1 + pigment { + color farbe + } +} +#end + +// +// \brief Display the earth +// +#macro erde(winkel) +sphere { + <0, 0, 0>, 1 + pigment { + image_map { + png "2k_earth_daymap.png" gamma 1.0 + map_type 1 + } + } + rotate <0,winkel,0> +} +#end + +// +// achse +// +#macro achse(durchmesser, farbe) + cylinder { + < 0, -1.2, 0 >, <0, 1.2, 0 >, durchmesser + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } + } +#end diff --git a/buch/papers/nav/images/position/2k_earth_daymap.png b/buch/papers/nav/images/position/2k_earth_daymap.png Binary files differnew file mode 100644 index 0000000..4d55da8 --- /dev/null +++ b/buch/papers/nav/images/position/2k_earth_daymap.png diff --git a/buch/papers/nav/images/position/Makefile b/buch/papers/nav/images/position/Makefile new file mode 100644 index 0000000..eed2e56 --- /dev/null +++ b/buch/papers/nav/images/position/Makefile @@ -0,0 +1,69 @@ +# +# Makefile to build images +# +# (c) 2022 +# +all: position + +POSITION = \ + position1.pdf position1-small.pdf \ + position2.pdf position2-small.pdf \ + position3.pdf position3-small.pdf \ + position4.pdf position4-small.pdf \ + position5.pdf position5-small.pdf + +position: $(POSITION) + +POVRAYOPTIONS = -W1080 -H1080 +#POVRAYOPTIONS = -W480 -H480 + +position1.png: position1.pov common.inc ../macros.inc + povray +A0.1 $(POVRAYOPTIONS) -Oposition1.png position1.pov +position1.jpg: position1.png + convert position1.png -density 300 -units PixelsPerInch position1.jpg +position1.pdf: position1.tex common.tex position1.jpg + pdflatex position1.tex + +position2.png: position2.pov common.inc ../macros.inc + povray +A0.1 $(POVRAYOPTIONS) -Oposition2.png position2.pov +position2.jpg: position2.png + convert position2.png -density 300 -units PixelsPerInch position2.jpg +position2.pdf: position2.tex common.tex position2.jpg + pdflatex position2.tex + +position3.png: position3.pov common.inc ../macros.inc + povray +A0.1 $(POVRAYOPTIONS) -Oposition3.png position3.pov +position3.jpg: position3.png + convert position3.png -density 300 -units PixelsPerInch position3.jpg +position3.pdf: position3.tex common.tex position3.jpg + pdflatex position3.tex + +position4.png: position4.pov common.inc ../macros.inc + povray +A0.1 $(POVRAYOPTIONS) -Oposition4.png position4.pov +position4.jpg: position4.png + convert position4.png -density 300 -units PixelsPerInch position4.jpg +position4.pdf: position4.tex common.tex position4.jpg + pdflatex position4.tex + +position5.png: position5.pov common.inc ../macros.inc + povray +A0.1 $(POVRAYOPTIONS) -Oposition5.png position5.pov +position5.jpg: position5.png + convert position5.png -density 300 -units PixelsPerInch position5.jpg +position5.pdf: position5.tex common.tex position5.jpg + pdflatex position5.tex + +position1-small.pdf: position1-small.tex common.tex position1.jpg + pdflatex position1-small.tex +position2-small.pdf: position2-small.tex common.tex position2.jpg + pdflatex position2-small.tex +position3-small.pdf: position3-small.tex common.tex position3.jpg + pdflatex position3-small.tex +position4-small.pdf: position4-small.tex common.tex position4.jpg + pdflatex position4-small.tex +position5-small.pdf: position5-small.tex common.tex position5.jpg + pdflatex position5-small.tex + +test: test.pdf + +test.pdf: test.tex $(POSITION) + pdflatex test.tex diff --git a/buch/papers/nav/images/position/common-small.tex b/buch/papers/nav/images/position/common-small.tex new file mode 100644 index 0000000..9430608 --- /dev/null +++ b/buch/papers/nav/images/position/common-small.tex @@ -0,0 +1,32 @@ +% +% common.tex +% +% (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% + +\def\labelA{\node at (0.7,3.8) {$A$};} +\def\labelB{\node at (-3.4,-0.8) {$B$};} +\def\labelC{\node at (3.3,-2.1) {$C$};} +\def\labelP{\node at (-1.4,-3.5) {$P$};} + +\def\labelc{\node at (-1.9,2.1) {$c$};} +\def\labela{\node at (-0.2,-1.2) {$a$};} +\def\labelb{\node at (2.6,1.5) {$b$};} + +\def\labelhb{\node at (-2.6,-2.2) {$h_B$};} +\def\labelhc{\node at (1,-2.9) {$h_C$};} +\def\labell{\node at (-0.7,0.3) {$l$};} + +\def\labelalpha{\node at (0.6,2.85) {$\alpha$};} +\def\labelbeta{\node at (-2.5,-0.5) {$\beta$};} +\def\labelgamma{\node at (2.3,-1.2) {$\gamma$};} +\def\labelomega{\node at (0.85,3.3) {$\omega$};} + +\def\labelgammaone{\node at (2.1,-2.0) {$\gamma_1$};} +\def\labelgammatwo{\node at (2.3,-1.3) {$\gamma_2$};} +\def\labelbetaone{\node at (-2.4,-1.4) {$\beta_1$};} +\def\labelbetatwo{\node at (-2.5,-0.8) {$\beta_2$};} + +\def\labelomegalinks{\node at (0.25,3.25) {$\omega$};} +\def\labelomegarechts{\node at (0.85,3.1) {$\omega$};} + diff --git a/buch/papers/nav/images/position/common.inc b/buch/papers/nav/images/position/common.inc new file mode 100644 index 0000000..56e2836 --- /dev/null +++ b/buch/papers/nav/images/position/common.inc @@ -0,0 +1,39 @@ +// +// common.inc -- 3d Darstellung +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "colors.inc" +#include "../macros.inc" + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.034; + +camera { + location <40, 20, -20> + look_at <0, 0.24, -0.20> + right x * imagescale + up y * imagescale +} + +light_source { + <30, 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> + } +} + +//kugel(kugeldunkel) +erde(-100) +koordinatennetz(gitterfarbe, 9, 0.001) +achse(fein, White) diff --git a/buch/papers/nav/images/position/common.tex b/buch/papers/nav/images/position/common.tex new file mode 100644 index 0000000..9430608 --- /dev/null +++ b/buch/papers/nav/images/position/common.tex @@ -0,0 +1,32 @@ +% +% common.tex +% +% (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% + +\def\labelA{\node at (0.7,3.8) {$A$};} +\def\labelB{\node at (-3.4,-0.8) {$B$};} +\def\labelC{\node at (3.3,-2.1) {$C$};} +\def\labelP{\node at (-1.4,-3.5) {$P$};} + +\def\labelc{\node at (-1.9,2.1) {$c$};} +\def\labela{\node at (-0.2,-1.2) {$a$};} +\def\labelb{\node at (2.6,1.5) {$b$};} + +\def\labelhb{\node at (-2.6,-2.2) {$h_B$};} +\def\labelhc{\node at (1,-2.9) {$h_C$};} +\def\labell{\node at (-0.7,0.3) {$l$};} + +\def\labelalpha{\node at (0.6,2.85) {$\alpha$};} +\def\labelbeta{\node at (-2.5,-0.5) {$\beta$};} +\def\labelgamma{\node at (2.3,-1.2) {$\gamma$};} +\def\labelomega{\node at (0.85,3.3) {$\omega$};} + +\def\labelgammaone{\node at (2.1,-2.0) {$\gamma_1$};} +\def\labelgammatwo{\node at (2.3,-1.3) {$\gamma_2$};} +\def\labelbetaone{\node at (-2.4,-1.4) {$\beta_1$};} +\def\labelbetatwo{\node at (-2.5,-0.8) {$\beta_2$};} + +\def\labelomegalinks{\node at (0.25,3.25) {$\omega$};} +\def\labelomegarechts{\node at (0.85,3.1) {$\omega$};} + diff --git a/buch/papers/nav/images/position/position1-small.pdf b/buch/papers/nav/images/position/position1-small.pdf Binary files differnew file mode 100644 index 0000000..ba7755f --- /dev/null +++ b/buch/papers/nav/images/position/position1-small.pdf diff --git a/buch/papers/nav/images/position/position1-small.tex b/buch/papers/nav/images/position/position1-small.tex new file mode 100644 index 0000000..05fad44 --- /dev/null +++ b/buch/papers/nav/images/position/position1-small.tex @@ -0,0 +1,55 @@ +% +% position1-small.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} + +\input{common-small.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick,scale=0.625] + +% Povray Bild +\node at (0,0) {\includegraphics[width=5cm]{position1.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]; +}{} + +\labelA +\labelB +\labelC +\labelP + +\labelc +\labela +\labelb +\labell + +\labelhb +\labelhc + +\labelalpha +\labelomega + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/position1.pdf b/buch/papers/nav/images/position/position1.pdf Binary files differnew file mode 100644 index 0000000..fc4f760 --- /dev/null +++ b/buch/papers/nav/images/position/position1.pdf diff --git a/buch/papers/nav/images/position/position1.pov b/buch/papers/nav/images/position/position1.pov new file mode 100644 index 0000000..a79a9f1 --- /dev/null +++ b/buch/papers/nav/images/position/position1.pov @@ -0,0 +1,71 @@ +// +// position1.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "common.inc" + +union { + seite(B, C, fett) + punkt(A, fett) + punkt(B, fett) + punkt(C, fett) + punkt(P, fett) + pigment { + color dreieckfarbe + } + finish { + specular 0.95 + metallic + } +} + +union { + seite(A, P, fett) + pigment { + color rot + } + finish { + specular 0.95 + metallic + } +} + + +union { + seite(A, B, fett) + seite(A, C, fett) + seite(B, P, fett) + seite(C, P, fett) + pigment { + color bekannt + } + finish { + specular 0.95 + metallic + } +} + +object { + winkel(A, B, C, fein, gross) + pigment { + color bekannt + } + finish { + specular 0.95 + metallic + } +} + +object { + winkel(A, P, C, fett, klein) + pigment { + color rot + } + finish { + specular 0.95 + metallic + } +} + diff --git a/buch/papers/nav/images/position/position1.tex b/buch/papers/nav/images/position/position1.tex new file mode 100644 index 0000000..d6c21c3 --- /dev/null +++ b/buch/papers/nav/images/position/position1.tex @@ -0,0 +1,55 @@ +% +% dreieck3d1.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} + +\input{common.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=8cm]{position1.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]; +}{} + +\labelA +\labelB +\labelC +\labelP + +\labelc +\labela +\labelb +\labell + +\labelhb +\labelhc + +\labelalpha +\labelomega + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/position2-small.pdf b/buch/papers/nav/images/position/position2-small.pdf Binary files differnew file mode 100644 index 0000000..3333dd4 --- /dev/null +++ b/buch/papers/nav/images/position/position2-small.pdf diff --git a/buch/papers/nav/images/position/position2-small.tex b/buch/papers/nav/images/position/position2-small.tex new file mode 100644 index 0000000..e5c33cf --- /dev/null +++ b/buch/papers/nav/images/position/position2-small.tex @@ -0,0 +1,53 @@ +% +% position2-small.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} + +\input{common-small.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick,scale=0.625] + +% Povray Bild +\node at (0,0) {\includegraphics[width=5cm]{position2.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]; +}{} + +\labelA +\labelB +\labelC + +\labelc +\labela +\labelb + +\begin{scope}[yshift=0.3cm,xshift=0.1cm] +\labelalpha +\end{scope} +\labelbeta +\labelgamma + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/position2.pdf b/buch/papers/nav/images/position/position2.pdf Binary files differnew file mode 100644 index 0000000..dbd2ea9 --- /dev/null +++ b/buch/papers/nav/images/position/position2.pdf diff --git a/buch/papers/nav/images/position/position2.pov b/buch/papers/nav/images/position/position2.pov new file mode 100644 index 0000000..2abcd94 --- /dev/null +++ b/buch/papers/nav/images/position/position2.pov @@ -0,0 +1,70 @@ +// +// position3.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "common.inc" + +dreieck(A, B, C, kugelfarbe) + +union { + punkt(A, fett) + punkt(B, fett) + punkt(C, fett) + pigment { + color dreieckfarbe + } + finish { + specular 0.95 + metallic + } +} + +union { + seite(A, B, fett) + seite(A, C, fett) + pigment { + color bekannt + } + finish { + specular 0.95 + metallic + } +} + +union { + seite(B, C, fett) + pigment { + color unbekannt + } + finish { + specular 0.95 + metallic + } +} + +object { + winkel(A, B, C, fein, gross) + pigment { + color bekannt + } + finish { + specular 0.95 + metallic + } +} + +union { + winkel(B, C, A, fein, gross) + winkel(C, A, B, fein, gross) + pigment { + color unbekannt + } + finish { + specular 0.95 + metallic + } +} + + diff --git a/buch/papers/nav/images/position/position2.tex b/buch/papers/nav/images/position/position2.tex new file mode 100644 index 0000000..339592c --- /dev/null +++ b/buch/papers/nav/images/position/position2.tex @@ -0,0 +1,53 @@ +% +% position2.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} + +\input{common.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=8cm]{position2.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]; +}{} + +\labelA +\labelB +\labelC + +\labelc +\labela +\labelb + +\begin{scope}[yshift=0.3cm,xshift=0.1cm] +\labelalpha +\end{scope} +\labelbeta +\labelgamma + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/position3-small.pdf b/buch/papers/nav/images/position/position3-small.pdf Binary files differnew file mode 100644 index 0000000..fae0b85 --- /dev/null +++ b/buch/papers/nav/images/position/position3-small.pdf diff --git a/buch/papers/nav/images/position/position3-small.tex b/buch/papers/nav/images/position/position3-small.tex new file mode 100644 index 0000000..4f7b0e9 --- /dev/null +++ b/buch/papers/nav/images/position/position3-small.tex @@ -0,0 +1,51 @@ +% +% position3-small.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} + +\input{common-small.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick,scale=0.625] + +% Povray Bild +\node at (0,0) {\includegraphics[width=5cm]{position3.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]; +}{} + +\labelB +\labelC +\labelP + +\labela + +\labelhb +\labelhc + +\labelbetaone +\labelgammaone + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/position3.pdf b/buch/papers/nav/images/position/position3.pdf Binary files differnew file mode 100644 index 0000000..2c940d2 --- /dev/null +++ b/buch/papers/nav/images/position/position3.pdf diff --git a/buch/papers/nav/images/position/position3.pov b/buch/papers/nav/images/position/position3.pov new file mode 100644 index 0000000..f6823eb --- /dev/null +++ b/buch/papers/nav/images/position/position3.pov @@ -0,0 +1,48 @@ +// +// position3.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "common.inc" + +dreieck(B, P, C, kugelfarbe) + +union { + punkt(B, fett) + punkt(C, fett) + punkt(P, fett) + pigment { + color dreieckfarbe + } + finish { + specular 0.95 + metallic + } +} + +union { + seite(B, C, fett) + seite(B, P, fett) + seite(C, P, fett) + pigment { + color bekannt + } + finish { + specular 0.95 + metallic + } +} + +union { + winkel(B, P, C, fein, gross) + winkel(C, B, P, fein, gross) + pigment { + color unbekannt + } + finish { + specular 0.95 + metallic + } +} + diff --git a/buch/papers/nav/images/position/position3.tex b/buch/papers/nav/images/position/position3.tex new file mode 100644 index 0000000..d5480da --- /dev/null +++ b/buch/papers/nav/images/position/position3.tex @@ -0,0 +1,51 @@ +% +% dreieck3d1.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} + +\input{common.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=8cm]{position3.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]; +}{} + +\labelB +\labelC +\labelP + +\labela + +\labelhb +\labelhc + +\labelbetaone +\labelgammaone + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/position4-small.pdf b/buch/papers/nav/images/position/position4-small.pdf Binary files differnew file mode 100644 index 0000000..ac80c46 --- /dev/null +++ b/buch/papers/nav/images/position/position4-small.pdf diff --git a/buch/papers/nav/images/position/position4-small.tex b/buch/papers/nav/images/position/position4-small.tex new file mode 100644 index 0000000..e06523b --- /dev/null +++ b/buch/papers/nav/images/position/position4-small.tex @@ -0,0 +1,50 @@ +% +% position4-small.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} + +\input{common-small.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick,scale=0.625] + +% Povray Bild +\node at (0,0) {\includegraphics[width=5cm]{position4.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]; +}{} + +\labelA +\labelB +\labelP + +\labelc +\labell +\labelhb + +\labelomegalinks +\labelbetatwo + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/position4.pdf b/buch/papers/nav/images/position/position4.pdf Binary files differnew file mode 100644 index 0000000..8eeeaac --- /dev/null +++ b/buch/papers/nav/images/position/position4.pdf diff --git a/buch/papers/nav/images/position/position4.pov b/buch/papers/nav/images/position/position4.pov new file mode 100644 index 0000000..80628f9 --- /dev/null +++ b/buch/papers/nav/images/position/position4.pov @@ -0,0 +1,69 @@ +// +// position4.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "common.inc" + +dreieck(A, B, P, kugelfarbe) + +union { + punkt(A, fett) + punkt(B, fett) + punkt(P, fett) + pigment { + color dreieckfarbe + } + finish { + specular 0.95 + metallic + } +} + +union { + seite(A, P, fett) + pigment { + color unbekannt + } + finish { + specular 0.95 + metallic + } +} + + +union { + seite(A, B, fett) + seite(B, P, fett) + pigment { + color bekannt + } + finish { + specular 0.95 + metallic + } +} + +object { + winkel(B, P, A, fein, gross) + pigment { + color bekannt + } + finish { + specular 0.95 + metallic + } +} + +object { + winkel(A, B, P, fein, gross) + pigment { + color unbekannt + } + finish { + specular 0.95 + metallic + } +} + diff --git a/buch/papers/nav/images/position/position4.tex b/buch/papers/nav/images/position/position4.tex new file mode 100644 index 0000000..27c1757 --- /dev/null +++ b/buch/papers/nav/images/position/position4.tex @@ -0,0 +1,50 @@ +% +% position4.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} + +\input{common.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=8cm]{position4.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]; +}{} + +\labelA +\labelB +\labelP + +\labelc +\labell +\labelhb + +\labelomegalinks +\labelbetatwo + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/position5-small.pdf b/buch/papers/nav/images/position/position5-small.pdf Binary files differnew file mode 100644 index 0000000..afe120e --- /dev/null +++ b/buch/papers/nav/images/position/position5-small.pdf diff --git a/buch/papers/nav/images/position/position5-small.tex b/buch/papers/nav/images/position/position5-small.tex new file mode 100644 index 0000000..0a0e229 --- /dev/null +++ b/buch/papers/nav/images/position/position5-small.tex @@ -0,0 +1,50 @@ +% +% position5-small.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} + +\input{common-small.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick,scale=0.625] + +% Povray Bild +\node at (0,0) {\includegraphics[width=5cm]{position5.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]; +}{} + +\labelA +\labelC +\labelP + +\labelb +\labell +\labelhc + +\labelomegarechts +\labelgammatwo + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/position5.pdf b/buch/papers/nav/images/position/position5.pdf Binary files differnew file mode 100644 index 0000000..05a64cb --- /dev/null +++ b/buch/papers/nav/images/position/position5.pdf diff --git a/buch/papers/nav/images/position/position5.pov b/buch/papers/nav/images/position/position5.pov new file mode 100644 index 0000000..7ed33c5 --- /dev/null +++ b/buch/papers/nav/images/position/position5.pov @@ -0,0 +1,69 @@ +// +// position5.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "common.inc" + +dreieck(A, P, C, kugelfarbe) + +union { + punkt(A, fett) + punkt(C, fett) + punkt(P, fett) + pigment { + color dreieckfarbe + } + finish { + specular 0.95 + metallic + } +} + +union { + seite(A, P, fett) + pigment { + color unbekannt + } + finish { + specular 0.95 + metallic + } +} + + +union { + seite(A, C, fett) + seite(C, P, fett) + pigment { + color bekannt + } + finish { + specular 0.95 + metallic + } +} + +object { + winkel(C, P, A, fein, gross) + pigment { + color bekannt + } + finish { + specular 0.95 + metallic + } +} + +object { + winkel(A, C, P, fein, gross) + pigment { + color unbekannt + } + finish { + specular 0.95 + metallic + } +} + diff --git a/buch/papers/nav/images/position/position5.tex b/buch/papers/nav/images/position/position5.tex new file mode 100644 index 0000000..b234429 --- /dev/null +++ b/buch/papers/nav/images/position/position5.tex @@ -0,0 +1,50 @@ +% +% position5.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} + +\input{common.tex} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=8cm]{position5.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]; +}{} + +\labelA +\labelC +\labelP + +\labelb +\labell +\labelhc + +\labelomegarechts +\labelgammatwo + +\end{tikzpicture} + +\end{document} + diff --git a/buch/papers/nav/images/position/test.tex b/buch/papers/nav/images/position/test.tex new file mode 100644 index 0000000..3247ed1 --- /dev/null +++ b/buch/papers/nav/images/position/test.tex @@ -0,0 +1,135 @@ +% +% test.tex +% +% (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[12pt]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{etex} +\usepackage[ngerman]{babel} +\usepackage{times} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{amsfonts} +\usepackage{amsthm} +\usepackage{graphicx} +\usepackage{wrapfig} +\begin{document} + +\begin{wrapfigure}{R}{5.6cm} +\includegraphics{position1-small.pdf} +\end{wrapfigure} +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +Aenean +commodo ligula eget dolor. +Aenean massa. +Cum sociis natoque penatibus +et magnis dis parturient montes, nascetur ridiculus mus. +Donec quam +felis, ultricies nec, pellentesque eu, pretium quis, sem. +Nulla +consequat massa quis enim. +Donec pede justo, fringilla vel, aliquet +nec, vulputate eget, arcu. +In enim justo, rhoncus ut, imperdiet a, +venenatis vitae, justo. +Nullam dictum felis eu pede mollis pretium. +Integer tincidunt. +Cras dapibus. +Vivamus elementum semper nisi. +Aenean vulputate eleifend tellus. +Aenean leo ligula, porttitor eu, +consequat vitae, eleifend ac, enim. +Aliquam lorem ante, dapibus in, +viverra quis, feugiat a, tellus. + +\begin{wrapfigure}{R}{5.2cm} +\includegraphics{position2-small.pdf} +\end{wrapfigure} +Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper +libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, +blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec +odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis +faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus +tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec +sodales sagittis magna. Sed consequat, leo eget bibendum sodales, +augue velit cursus nunc, quis gravida magna mi a libero. Fusce +vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, +mollis sed, nonummy id, metus. Nullam accumsan lorem in dui. Cras +ultricies mi eu turpis hendrerit fringilla. Vestibulum ante ipsum +primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +\pagebreak + +\begin{wrapfigure}{R}{5.2cm} +\includegraphics{position3-small.pdf} +\end{wrapfigure} +Integer ante arcu, accumsan a, consectetuer eget, posuere ut, mauris. +Praesent adipiscing. Phasellus ullamcorper ipsum rutrum nunc. Nunc +nonummy metus. Vestibulum volutpat pretium libero. Cras id dui. +Aenean ut eros et nisl sagittis vestibulum. Nullam nulla eros, +ultricies sit amet, nonummy id, imperdiet feugiat, pede. Sed lectus. +Donec mollis hendrerit risus. Phasellus nec sem in justo pellentesque +facilisis. Etiam imperdiet imperdiet orci. Nunc nec neque. Phasellus +leo dolor, tempus non, auctor et, hendrerit quis, nisi. Curabitur +ligula sapien, tincidunt non, euismod vitae, posuere imperdiet, +leo. Maecenas malesuada. Praesent congue erat at massa. Sed cursus +turpis vitae tortor. Donec posuere vulputate arcu. Phasellus accumsan +cursus velit. Vestibulum ante ipsum primis in faucibus orci luctus +et ultrices posuere cubilia Curae; Sed aliquam, nisi quis porttitor +congue, elit erat euismod orci, ac placerat dolor lectus quis orci. +Phasellus consectetuer vestibulum elit. + +\begin{wrapfigure}{R}{5.2cm} +\includegraphics{position4-small.pdf} +\end{wrapfigure} +Aenean tellus metus, bibendum sed, posuere ac, mattis non, nunc. +Vestibulum fringilla pede sit amet augue. In turpis. Pellentesque +posuere. Praesent turpis. Aenean posuere, tortor sed cursus feugiat, +nunc augue blandit nunc, eu sollicitudin urna dolor sagittis lacus. +Donec elit libero, sodales nec, volutpat a, suscipit non, turpis. +Nullam sagittis. Suspendisse pulvinar, augue ac venenatis condimentum, +sem libero volutpat nibh, nec pellentesque velit pede quis nunc. +Vestibulum ante ipsum primis in faucibus orci luctus et ultrices +posuere cubilia Curae; Fusce id purus. Ut varius tincidunt libero. +Phasellus dolor. Maecenas vestibulum mollis diam. Pellentesque ut +neque. Pellentesque habitant morbi tristique senectus et netus et +malesuada fames ac turpis egestas. In dui magna, posuere eget, +vestibulum et, tempor auctor, justo. In ac felis quis tortor malesuada +pretium. Pellentesque auctor neque nec urna. + +\pagebreak + +\begin{wrapfigure}{R}{5.2cm} +\includegraphics{position5-small.pdf} +\end{wrapfigure} +Proin sapien ipsum, porta a, auctor quis, euismod ut, mi. Aenean +viverra rhoncus pede. Pellentesque habitant morbi tristique senectus +et netus et malesuada fames ac turpis egestas. Ut non enim eleifend +felis pretium feugiat. Vivamus quis mi. Phasellus a est. Phasellus +magna. In hac habitasse platea dictumst. Curabitur at lacus ac velit +ornare lobortis. Curabitur a felis in nunc fringilla tristique. +Morbi mattis ullamcorper velit. Phasellus gravida semper nisi. +Nullam vel sem. Pellentesque libero tortor, tincidunt et, tincidunt +eget, semper nec, quam. Sed hendrerit. Morbi ac felis. Nunc egestas, +augue at pellentesque laoreet, felis eros vehicula leo, at malesuada +velit leo quis pede. Donec interdum, metus et hendrerit aliquet, +dolor diam sagittis ligula, eget egestas libero turpis vel mi. Nunc +nulla. Fusce risus nisl, viverra et, tempor et, pretium in, sapien. +Donec venenatis vulputate lorem. Morbi nec metus. Phasellus blandit +leo ut odio. Maecenas ullamcorper, dui et placerat feugiat, eros +pede varius nisi, condimentum viverra felis nunc et lorem. Sed magna +purus, fermentum eu, tincidunt eu, varius ut, felis. In auctor +lobortis lacus. Quisque libero metus, condimentum nec, tempor a, +commodo mollis, magna. Vestibulum ullamcorper mauris at ligula. +Fusce fermentum. Nullam cursus lacinia erat. Praesent blandit laoreet +nibh. Fusce convallis metus id felis luctus adipiscing. Pellentesque +egestas, neque sit amet convallis pulvinar, justo nulla eleifend +augue, ac auctor orci leo non est. Quisque id mi. Ut tincidunt +tincidunt erat. Etiam feugiat lorem non metus. Vestibulum dapibus +nunc ac augue. Curabitur vestibulum aliquam leo. Praesent egestas +neque eu enim. In hac habitasse platea dictumst. Fusce a quam. Etiam +ut purus mattis mauris + +\end{document} diff --git a/buch/papers/nav/main.tex b/buch/papers/nav/main.tex index 4c52547..f993559 100644 --- a/buch/papers/nav/main.tex +++ b/buch/papers/nav/main.tex @@ -15,6 +15,7 @@ \input{papers/nav/sincos.tex} \input{papers/nav/trigo.tex} \input{papers/nav/nautischesdreieck.tex} +\input{papers/nav/bsp2.tex} \printbibliography[heading=subbibliography] diff --git a/buch/papers/nav/nautischesdreieck.tex b/buch/papers/nav/nautischesdreieck.tex index 36e9c99..32d1b8b 100644 --- a/buch/papers/nav/nautischesdreieck.tex +++ b/buch/papers/nav/nautischesdreieck.tex @@ -1,10 +1,11 @@ \section{Das Nautische Dreieck} +\rhead{Das nautische Dreieck} \subsection{Definition des Nautischen Dreiecks} Die Himmelskugel ist eine gedachte Kugel, welche die Erde und dessen Beobachter umgibt und als Rechenfläche für Koordinaten in der Astronomie und Geodäsie dient. Der Zenit ist jener Punkt, der vom Erdmittelpunkt durch denn eigenen Standort an die Himmelskugel verlängert wird. -Ein Gestirn ist ein Planet oder ein Fixstern, zu welchen es diverse Jahrbücher mit allen astronomischen Eigenschaften gibt. +Als Gestirne kommen Sterne und Planeten in Frage, zu welchen in diversen Jahrbüchern die für die Navigation nötigen Daten publiziert sind. Der Himmelspol ist der Nordpol an die Himmelskugel projiziert. -Das nautische Dreieck hat die Ecken Zenit, Gestirn und Himmelspol, wie man in der Abbildung 21.5 sehen kann. +Das nautische Dreieck hat die Ecken Zenit, Gestirn und Himmelspol, wie man in der Abbildung \ref{naut} sehen kann. Ursprünglich ist das nautische Dreieck ein Hilfsmittel der sphärischen Astronomie um die momentane Position eines Fixsterns oder Planeten an der Himmelskugel zu bestimmen. @@ -13,21 +14,24 @@ Ursprünglich ist das nautische Dreieck ein Hilfsmittel der sphärischen Astrono \begin{center} \includegraphics[width=8cm]{papers/nav/bilder/kugel3.png} \caption[Nautisches Dreieck]{Nautisches Dreieck} + \label{naut} \end{center} \end{figure} Man kann das nautische Dreieck auf die Erdkugel projizieren. Dieses Dreieck nennt man dann Bilddreieck. Als Bildpunkt wird in der astronomischen Navigation der Punkt bezeichnet, an dem eine gedachte Linie vom Mittelpunkt eines beobachteten Gestirns zum Mittelpunkt der Erde die Erdoberfläche schneidet. -Die Projektion auf der Erdkugel hat die Ecken Nordpol, Standort und Bildpunkt. +Die Projektion des nautischen Dreiecks auf die Erdkugel hat die Ecken Nordpol, Standort und Bildpunkt. \section{Standortbestimmung ohne elektronische Hilfsmittel} +\label{sta} Um den eigenen Standort herauszufinden, wird in diesem Kapitel die Projektion des nautische Dreiecks auf die Erdkugel zur Hilfe genommen. Mithilfe eines Sextanten, einem Jahrbuch und der sphärischen Trigonometrie kann man dann die Längen- und Breitengrade des eigenen Standortes bestimmen. -Was ein Sextant und ein Jahrbuch ist, wird im Abschnitt 21.6.3 erklärt. +Was ein Sextant und ein Jahrbuch ist, wird im Abschnitt \ref{ephe} erklärt. \begin{figure} \begin{center} \includegraphics[width=10cm]{papers/nav/bilder/dreieck.pdf} \caption[Dreieck für die Standortbestimmung]{Dreieck für die Standortbestimmung} + \label{d1} \end{center} \end{figure} @@ -39,15 +43,16 @@ Unser eigener Standort ist der gesuchte Ecke $P$ und die Ecke $A$ ist in unserem Der Vorteil an der Idee des nautischen Dreiecks ist, dass eine Ecke immer der Nordpol ist. Somit ist diese Ecke immer bekannt und nur deswegen sind die Zusammenhänge von Rektaszension, Sternzeit und Deklination so einfach. -\subsection{Ecke $B$ und $C$ - Bildpunkt $X$ und $Y$} +\subsection{Ecke $B$ und $C$ - Bildpunkt von $X$ und $Y$} Für die Standortermittlung benötigt man als weiteren Punkt ein Gestirn bzw. seinen Bildpunkt auf der Erdkugel. Damit das trigonometrische Rechnen einfacher wird, werden hier zwei Gestirne zur Hilfe genommen. Es gibt diverse Gestirne, die man nutzen kann wie zum Beispiel die Sonne, der Mond oder die vier Navigationsplaneten Venus, Mars, Jupiter und Saturn. -Die Bildpunkte von den beiden Gestirnen $X$ und $Y$ bilden die beiden Ecken $B$ und $C$ im Dreieck der Abbildung 21.5. +Die Bildpunkte von den beiden Gestirnen $X$ und $Y$ bilden die beiden Ecken $B$ und $C$ im Dreieck der Abbildung \ref{d1}. \subsection{Ephemeriden} -Zu all diesen Gestirnen gibt es Ephemeriden. -Diese enthalten die Rektaszensionen und Deklinationen in Abhängigkeit von der Zeit. +\label{ephe} +Zu all diesen Gestirnen gibt es Ephemeridentabellen. +Diese Tabellen enthalten die Rektaszensionen und Deklinationen in Abhängigkeit von der Zeit. \begin{figure} \begin{center} @@ -63,20 +68,19 @@ Die Deklination $\delta$ beschreibt den Winkel zwischen dem Himmelsäquator und Die Rektaszension $\alpha$ gibt an, in welchem Winkel das Gestirn zum Frühlingspunkt, welcher der Nullpunkt auf dem Himmelsäquator ist, steht und geht vom Koordinatensystem der Himmelskugel aus. Die Tatsache, dass sich die Himmelskugel ca. vier Minuten schneller um die eigene Achse dreht als die Erdkugel, stellt hier ein kleines Problem dar. -Die Lösung ist die Sternzeit. -Mit dieser können wir die schnellere Drehung der Himmelskugel ausgleichen und können die am Frühlingspunkt (21. März) 12:00 Uhr ist die Sternzeit $\theta = 0$. - -Die Sternzeit geht vom Frühlungspunkt aus, an welchem die Sonne den Himmelsäquator schneidet. +Die Lösung ist die Sternzeit $\theta$. +Mit dieser können wir die schnellere Drehung der Himmelskugel ausgleichen. +Die Sternzeit geht vom Frühlungspunkt aus, an welchem die Sonne den Himmelsäquator schneidet und $\theta=0$ ist. Für die Standortermittlung auf der Erdkugel ist es am einfachsten, wenn man die Sternzeit von Greenwich berechnet. Für die Sternzeit von Greenwich $\theta$ braucht man als erstes das Julianische Datum $T$ vom aktuellen Tag, welches sich leicht nachschlagen lässt. Im Anschluss berechnet man die Sternzeit von Greenwich -\[\theta = 6^h 41^m 50^s,54841 + 8640184^s,812866 \cdot T + 0^s,093104 \cdot T^2 - 0^s,0000062 \cdot T^3.\] +\[\theta = 6^h 41^m 50^s.54841 + 8640184^s.812866 \cdot T + 0^s.093104 \cdot T^2 - 0^s.0000062 \cdot T^3.\] Wenn man die Sternzeit von Greenwich ausgerechnet hat, kann man den Längengrad des Gestirns $\lambda = \theta - \alpha$ bestimmen, wobei $\alpha$ die Rektaszension und $\theta$ die Sternzeit von Greenwich ist. Dies gilt analog auch für das zweite Gestirn. \subsubsection{Sextant} -Ein Sextant ist ein nautisches Messinstrument, mit dem man den Winkel zwischen der Blickrichtung zu weit entfernten Objekten bestimmen kann. Es wird vor allem der Winkelabstand zu Gestirnen gemessen. +Ein Sextant ist ein nautisches Messinstrument, mit dem man den Winkel zwischen der Blickrichtung zu weit entfernten Objekten bestimmen kann. Es wird vor allem der Winkelabstand vom Horizont zum Gestirn gemessen. Man benutzt ihn vor allem für die astronomische Navigation auf See. \begin{figure} @@ -85,49 +89,24 @@ Man benutzt ihn vor allem für die astronomische Navigation auf See. \caption[Sextant]{Sextant} \end{center} \end{figure} -\subsubsection{Eingeschaften} -Für das nautische Dreieck gibt es folgende Eigenschaften: -\begin{center} - \begin{tabular}{ l c l } - Legende && Name / Beziehung \\ - \hline - $\alpha$ && Rektaszension \\ - $\delta$ && Deklination \\ - $\theta$ && Sternzeit von Greenwich\\ - $\phi$ && Geographische Breite\\ - $\tau=\theta-\alpha$ && Stundenwinkel und Längengrad des Gestirns. \\ - $a$ && Azimut\\ - $h$ && Höhe - \end{tabular} -\end{center} -\begin{center} - \begin{tabular}{ l c l } - Eigenschaften \\ - \hline - Seitenlänge Zenit zu Himmelspol= && $\frac{\pi}{2} - \phi$ \\ - Seitenlänge Himmelspol zu Gestirn= && $\frac{\pi}{2} - \delta$ \\ - Seitenlänge Himmelspol zu Gestirn= && $\frac{\pi}{2} - h$ \\ - Winkel von Zenit zu Himmelsnordpol zu Gestirn= && $\pi-\alpha$\\ - Winkel von Himmelsnordpol zu Zenit zu Gestirn= && $\tau$\\ - \end{tabular} -\end{center} -\subsection{Bestimmung des eigenen Standortes $P$} +\subsection{Bestimmung des eigenen Standortes $P$} \label{p} +Wir nehmen die Abbildung \ref{d2} zur Hilfe. Nun hat man die Koordinaten der beiden Gestirne und man weiss die Koordinaten des Nordpols. Damit wir unseren Standort bestimmen können, bilden wir zuerst das Dreieck $ABC$, dann das Dreieck $BPC$ und zum Schluss noch das Dreieck $ABP$. -Mithilfe dieser Dreiecken können wir die einfachen Sätze der sphärischen Trigonometrie anwenden und benötigen lediglich ein Ephemeride zu den Gestirnen und einen Sextant. +Auf diese Dreiecke können wir die einfachen Sätze der sphärischen Trigonometrie anwenden und benötigen lediglich ein Ephemeride zu den Gestirnen und einen Sextant. \begin{figure} \begin{center} \includegraphics[width=8cm]{papers/nav/bilder/dreieck.pdf} \caption[Dreieck für die Standortbestimmung]{Dreieck für die Standortbestimmung} + \label{d2} \end{center} \end{figure} - \subsubsection{Dreieck $ABC$} \begin{center} - \begin{tabular}{ c c c } + \begin{tabular}{ l l l } Ecke && Name \\ \hline $A$ && Nordpol \\ @@ -137,19 +116,17 @@ Mithilfe dieser Dreiecken können wir die einfachen Sätze der sphärischen Trig \end{center} Mit unserem erlangten Wissen können wir nun alle Seiten des Dreiecks $ABC$ berechnen. +Dazu sind die folgenden vorbereiteten Berechnungen nötigt: -Die Seite vom Nordpol zum Bildpunkt $X$ sei $c$. -Dann ist $c = \frac{\pi}{2} - \delta_1$. - -Die Seite vom Nordpol zum Bildpunkt $Y$ sei $b$. -Dann ist $b = \frac{\pi}{2} - \delta_2$. - -Der Innenwinkel bei der Ecke, wo der Nordpol ist sei $\alpha$. -Dann ist $ \alpha = |\lambda_1 - \lambda_2|$. +\begin{enumerate} + \item Die Seite vom Nordpol zum Bildpunkt $X$ sei $c$, dann ist $c = \frac{\pi}{2} - \delta_1$. + \item Die Seite vom Nordpol zum Bildpunkt $Y$ sei $b$, dann ist $b = \frac{\pi}{2} - \delta_2$. + \item Der Innenwinkel bei der Ecke, wo der Nordpol ist sei $\alpha$, dann ist $ \alpha = |\lambda_1 - \lambda_2|$. +\end{enumerate} mit \begin{center} - \begin{tabular}{ c c c } + \begin{tabular}{ l l l } Ecke && Name \\ \hline $\delta_1$ && Deklination vom Bildpunkt $X$ \\ @@ -166,12 +143,9 @@ können wir nun die dritte Seitenlänge bestimmen. Es ist darauf zu achten, dass hier natürlich die Seitenlängen in Bogenmass sind und dementsprechend der Kosinus und Sinus verwendet wird. Jetzt fehlen noch die beiden anderen Innenwinkel $\beta$ und\ $\gamma$. -Diese bestimmen wir mithilfe des Sinussatzes \[\frac{\sin (a)}{\sin (\alpha)} =\frac{\sin (b)}{\sin (\beta)} = \frac{\sin (c)}{\sin (\gamma)}.\] -Hier muss man aufpassen, dass man Seite von Winkel unterscheiden kann. -Im Zähler sind die Seiten, im Nenner die Winkel. -Somit ist \[\beta =\sin^{-1} [\sin(b) \cdot \frac{\sin(\alpha)}{\sin(a)}].\] +Diese bestimmen wir mithilfe des Kosinussatzes: \[\beta=\cos^{-1} \bigg[\frac{\cos(b)-\cos(a) \cdot \cos(c)}{\sin(a) \cdot \sin(c)}\bigg]\] und \[\gamma = \cos^{-1} \bigg[\frac{\cos(c)-\cos(b) \cdot \cos(a)}{\sin(a) \cdot \sin(b)}\bigg]\]. -Schlussendlich haben wir die Seiten $a,b\ und \ c$, die Ecken A,B und C und die Winkel $\alpha$, $\beta$ und $\gamma$ bestimmt und somit das ganze Kugeldreieck $ABC$ berechnet. +Schlussendlich haben wir die Seiten $a$, $b$ und $c$, die Ecken $A$,$B$ und $C$ und die Winkel $\alpha$, $\beta$ und $\gamma$ bestimmt und somit das ganze Kugeldreieck $ABC$ berechnet. \subsubsection{Dreieck $BPC$} Wir bilden nun ein zweites Dreieck, welches die Ecken $B$ und $C$ des ersten Dreiecks besitzt. @@ -180,12 +154,11 @@ Unser Standort definiere sich aus einer geographischen Breite $\delta$ und einer Die Seite von $P$ zu $B$ sei $pb$ und die Seite von $P$ zu $C$ sei $pc$. Die beiden Seitenlängen kann man mit dem Sextant messen und durch eine einfache Formel bestimmen, nämlich $pb=\frac{\pi}{2} - h_{B}$ und $pc=\frac{\pi}{2} - h_{C}$ - mit $h_B=$ Höhe von Gestirn in $B$ und $h_C=$ Höhe von Gestirn in $C$ mit Sextant gemessen. Zum Schluss müssen wir noch den Winkel $\beta_1$ mithilfe des Seiten-Kosinussatzes \[\cos(pb)=\cos(pc)\cdot\cos(a)+\sin(pc)\cdot\sin(a)\cdot\cos(\beta_1)\] mit den bekannten Seiten $pc$, $pb$ und $a$ bestimmen. \subsubsection{Dreieck $ABP$} -Nun muss man eine Verbindungslinie ziehen zwischen $P$ und $A$. Die Länge $l$ dieser Linie entspricht der gesuchten geographischen Breite $\delta$. Diese lässt sich mithilfe des Dreiecks $ABP$, den bekannten Seiten $c$ und $pb$ und des Seiten-Kosinussatzes berechnen. +Nun muss man eine Verbindungslinie des Standorts zwischen $P$ und $A$ ziehen. Die Länge $l$ dieser Linie entspricht der gesuchten geographischen Breite $\delta$. Diese lässt sich mithilfe des Dreiecks $ABP$, den bekannten Seiten $c$ und $pb$ und des Seiten-Kosinussatzes berechnen. Für den Seiten-Kosinussatz benötigt es noch $\kappa=\beta + \beta_1$. Somit ist \[\cos(l) = \cos(c)\cdot \cos(pb) + \sin(c) \cdot \sin(pb) \cdot \cos(\kappa)\] und @@ -193,8 +166,7 @@ und \delta =\cos^{-1} [\cos(c) \cdot \cos(pb) + \sin(c) \cdot \sin(pb) \cdot \cos(\kappa)]. \] -Für die Geographische Länge $\lambda$ des eigenen Standortes muss man den Winkel $\omega$, welcher sich im Dreieck $ACP$ in der Ecke bei $A$ befindet. -Mithilfe des Sinussatzes \[\frac{\sin (a)}{\sin (\alpha)} =\frac{\sin (b)}{\sin (\beta)} = \frac{\sin (c)}{\sin (\gamma)}\] können wir das bestimmen. -Somit ist \[ \omega=\sin^{-1}[\sin(pc) \cdot \frac{\sin(\gamma)}{\sin(l)}] \]und unsere gesuchte geographische Länge schlussendlich -\[\lambda=\lambda_1 - \omega\] +Für die geographische Länge $\lambda$ des eigenen Standortes nutzt man den Winkel $\omega$, welcher sich im Dreieck $ACP$ in der Ecke bei $A$ befindet. +Mithilfe des Kosinussatzes können wir \[\omega = \cos^{-1} \bigg[\frac{\cos(pb)-\cos(c) \cdot \cos(l)}{\sin(c) \cdot \sin(l)}\bigg]\] berechnen und bekommen schlussendlich die geographische Länge +\[\lambda=\lambda_1 - \omega,\] wobei $\lambda_1$ die Länge des Bildpunktes $X$ von $C$ ist. diff --git a/buch/papers/nav/packages.tex b/buch/papers/nav/packages.tex index f2e6132..bedaccd 100644 --- a/buch/papers/nav/packages.tex +++ b/buch/papers/nav/packages.tex @@ -9,4 +9,4 @@ %\usepackage{packagename} \usepackage{amsmath} -\usepackage{cancel}
\ No newline at end of file +\usepackage{cancel} diff --git a/buch/papers/nav/references.bib b/buch/papers/nav/references.bib index 236323b..c67aaac 100644 --- a/buch/papers/nav/references.bib +++ b/buch/papers/nav/references.bib @@ -32,4 +32,10 @@ pages = {607--627}, url = {https://doi.org/10.1016/j.acha.2017.11.004} } +@online{nav:winkel, + editor={Unbekannt}, + title = {Sphärische Trigonometrie}, + year={2022}, + url = {https://de.wikipedia.org/wiki/Sphärische_Trigonometrie} +} diff --git a/buch/papers/nav/sincos.tex b/buch/papers/nav/sincos.tex index a1653e8..b64d100 100644 --- a/buch/papers/nav/sincos.tex +++ b/buch/papers/nav/sincos.tex @@ -2,18 +2,19 @@ \section{Sphärische Navigation und Winkelfunktionen} -Es gibt Hinweise, dass sich schon die Babylonier und Ägypter vor 4000 Jahren sich mit Problemen der sphärischen Trigonometrie beschäftigt haben um den Lauf von Gestirnen zu berechnen. +\rhead{Sphärische Navigation und Winkelfunktionen} +Es gibt Hinweise, dass sich schon die Babylonier und Ägypter vor 4000 Jahren mit Problemen der sphärischen Trigonometrie beschäftigt haben, um den Lauf von Gestirnen zu berechnen. Jedoch konnten sie dieses Problem nicht lösen. +Die Geschichte der sphärischen Trigonometrie ist daher eng mit der Astronomie verknüpft. Ca. 350 BCE dachten die Griechen über Kugelgeometrie nach, sie wurde damit zu einer Hilfswissenschaft der Astronomen. -Die Geschichte der sphärischen Trigonometrie ist daher eng mit der Astronomie verknüpft. Ca. 350 vor Christus dachten die Griechen über Kugelgeometrie nach und sie wurde zu einer Hilfswissenschaft der Astronomen. -Zwischen 190 v. Chr. und 120 v. Chr. lebte ein griechischer Astronom names Hipparchos. -Dieser entwickelte unter anderem die Chordentafeln, welche die Chord - Funktionen, auch Chord genannt, beinhalten und im Abschnitt 3.1.1 beschrieben sind. +Zwischen 190 v. Chr. und 120 v. Chr. lebte ein griechischer Astronom namens Hipparchos. +Dieser entwickelte unter anderem die Chordentafeln, welche die Chordfunktionen, auch Chord genannt, beinhalten. Chord ist der Vorgänger der Sinusfunktion und galt damals als wichtigste Grundlage der Trigonometrie. In dieser Zeit wurden auch die ersten Sternenkarten angefertigt. Damals kannte man die Sinusfunktionen noch nicht. +Die Definition der trigonometrischen Funktionen aus Griechenland ermöglicht nur, rechtwinklige Dreiecke zu berechnen. Aus Indien stammten die ersten Ansätze zu den Kosinussätzen. -Aufbauend auf den indischen und griechischen Forschungen entwickeln die Araber um das 9. Jahrhundert den Sinussatz. -Die Definition der trigonometrischen Funktionen ermöglicht nur, rechtwinklige Dreiecke zu berechnen. +Aufbauend auf den indischen und griechischen Forschungen entwickeln die Araber um das 9. Jahrhundert den Sinussatz. Die Beziehung zwischen Seiten und Winkeln sind komplizierter und als Sinus- und Kosinussätze bekannt. Doch ein paar weitere Jahrhunderte vergingen bis zu diesem Thema wieder verstärkt Forschung betrieben wurde, da im 15. Jahrhundert grosse Entdeckungsreisen, hauptsächlich per Schiff, erfolgten und die Orientierung mit Sternen vermehrt an Wichtigkeit gewann. Man nutzte für die Kartographie nun die Kugelgeometrie, um die Genauigkeit zu erhöhen. diff --git a/buch/papers/nav/trigo.tex b/buch/papers/nav/trigo.tex index aca8bd2..483b612 100644 --- a/buch/papers/nav/trigo.tex +++ b/buch/papers/nav/trigo.tex @@ -1,5 +1,7 @@ \section{Sphärische Trigonometrie} +\rhead{Sphärische Trigonometrie} + \subsection{Das Kugeldreieck} Damit man die Definition des Kugeldreiecks versteht, müssen wir zuerst Begriffe wie Grosskreisebene und Grosskreisbögen verstehen. Ein Grosskreis ist ein grösstmöglicher Kreis auf einer Kugeloberfläche. @@ -7,46 +9,49 @@ Sein Mittelpunkt fällt immer mit dem Mittelpunkt der Kugel zusammen und ein Sch Da es unendlich viele Möglichkeiten gibt, eine Kugel so zu zerschneiden, dass die Schnittebene den Kugelmittelpunkt trifft, gibt es auch unendlich viele Grosskreise. Grosskreisbögen sind die kürzesten Verbindungslinien zwischen zwei Punkten auf der Kugel. -Werden drei voneinander verschiedene Punkte, die sich nicht auf derselben Grosskreisebene befinden, mit Grosskreisbögen verbunden werden, so entsteht ein Kugeldreieck $ABC$. -Für ein Kugeldreieck gilt, dass die Summe der drei Seiten kleiner als $2\pi$ aber grösser als 0 ist. -$A$, $B$ und $C$ sind die Ecken des Dreiecks und dessen Seiten sind die Grosskreisbögen zwischen den Eckpunkten (siehe Abbildung 21.2). - Da die Länge der Grosskreisbögen wegen der Abhängigkeit vom Kugelradius ungeeignet ist, wird die Grösse einer Seite mit dem zugehörigen Mittelpunktwinkel des Grosskreisbogens angegeben. Laut dieser Definition ist die Seite $c$ der Winkel $AMB$, wobei der Punkt $M$ die Erdmitte ist. Man kann bei Kugeldreiecken nicht so einfach unterscheiden, was Innen oder Aussen ist. Wenn man drei Eckpunkte miteinander verbindet, ergeben sich immer 16 Kugeldreiecke. +Werden drei voneinander verschiedene Punkte, die sich nicht auf derselben Grosskreisebene befinden, mit Grosskreisbögen verbunden werden, so entsteht ein Kugeldreieck $ABC$. +Für ein Kugeldreieck gilt, dass die Summe der drei Seiten kleiner als $3\pi$ aber grösser als 0 ist. +$A$, $B$ und $C$ sind die Ecken des Dreiecks und dessen Seiten sind die Grosskreisbögen zwischen den Eckpunkten (siehe Abbildung \ref{kugel}). + \begin{figure} \begin{center} - \includegraphics[width=6cm]{papers/nav/bilder/kugel1.png} + \includegraphics[width=3.5cm]{papers/nav/bilder/kugel1.png} \caption[Das Kugeldreieck]{Das Kugeldreieck} + \label{kugel} \end{center} \end{figure} \subsection{Rechtwinkliges Dreieck und rechtseitiges Dreieck} -In der sphärischen Trigonometrie gibt es eine Symetrie zwischen Seiten und Winkel, also zu jedem Satz über Seiten und Winkel gibt es einen entsprechenden Satz, mit dem man Winkel durch Seiten und Seiten durch Winkel ersetzt hat. +In der sphärischen Trigonometrie gibt es eine Symmetrie zwischen Seiten und Winkeln, also zu jedem Satz über Seiten und Winkel gibt es einen entsprechenden Satz, mit dem man Winkel durch Seiten und Seiten durch Winkel ersetzt hat. Wie auch im ebenen Dreieck gibt es beim Kugeldreieck auch ein rechtwinkliges Kugeldreieck, bei dem ein Winkel $\frac{\pi}{2}$ ist. -Ein Rechtseitiges Dreieck gibt es jedoch nur beim Kugeldreieck, weil dort eine Seitenlänge $\frac{\pi}{2}$ lang sein muss, wie man in der Abbildung 21.3 sehen kann. +Ein rechtseitiges Dreieck gibt es jedoch nur beim Kugeldreieck, weil dort eine Seitenlänge $\frac{\pi}{2}$ lang sein muss, wie man in der Abbildung \ref{recht} sehen kann. \begin{figure} \begin{center} - \includegraphics[width=10cm]{papers/nav/bilder/recht.jpg} - \caption[Rechtseitiges Kugeldreieck]{Rechtseitiges Kugeldreieck} + \includegraphics[width=5cm]{papers/nav/bilder/recht.jpg} + \caption[Rechtseitiges und rechtwinkliges Kugeldreieck]{Rechtseitiges und rechtwinkliges Kugeldreieck} + \label{recht} \end{center} \end{figure} \subsection{Winkelsumme und Flächeninhalt} -\begin{figure} +\label{trigo} +%\begin{figure} ----- Brauche das Bild eigentlich nicht! - \begin{center} - \includegraphics[width=8cm]{papers/nav/bilder/kugel2.png} - \caption[Winkelangabe im Kugeldreieck]{Winkelangabe im Kugeldreieck} - \end{center} -\end{figure} +% \begin{center} +% \includegraphics[width=8cm]{papers/nav/bilder/kugel2.png} +% \caption[Winkelangabe im Kugeldreieck]{Winkelangabe im Kugeldreieck} +% \end{center} +%\end{figure} Die Winkel eines Kugeldreiecks sind die, welche die Halbtangenten in den Eckpunkten einschliessen. @@ -64,16 +69,17 @@ beschreibt die Abweichung der Innenwinkelsumme von $\pi$ und ist proportional zu \subsubsection{Flächeninnhalt} Mithilfe des Radius $r$ und dem sphärischen Exzess $\epsilon$ gilt für den Flächeninhalt -\[ F=\frac{\pi \cdot r^2}{\frac{\pi}{2}} \cdot \epsilon\]. +\[ F=\frac{\pi \cdot r^2}{\frac{\pi}{2}} \cdot \epsilon = 2 \cdot r^2 \cdot \epsilon.\] +In diesem Kapitel sind keine Begründungen für die erhaltenen Resultate im Abschnitt \ref{trigo} zu erwarten und können in der Referenz \cite{nav:winkel} nachgeschlagen werden. \subsection{Seiten und Winkelberechnung} Es gibt in der sphärischen Trigonometrie eigentlich gar keinen Satz des Pythagoras, wie man ihn aus der zweidimensionalen Geometrie kennt. -Es gibt aber auch einen Satz, der alle drei Seiten eines rechtwinkligen Kugeldreiecks, nicht aber für das rechtseitige Kugeldreieck, in eine Beziehung bringt und zum jetzigen Punkt noch unklar ist, weshalb dieser Satz so aussieht. -Die Approximation folgt noch. +Es gibt aber einen Satz, der alle drei Seiten eines rechtwinkligen Kugeldreiecks in eine Beziehung bringt. Dieser Satz gilt jedoch nicht für das rechtseitige Kugeldreieck. +Die Approximation im nächsten Abschnitt wird erklären, warum man dies als eine Form des Satzes des Pythagoras sehen kann. Es gilt nämlich: \begin{align} \cos c = \cos a \cdot \cos b \quad \text{wenn} \nonumber & - \quad \alpha = \frac{\pi}{2} \nonumber + \quad \alpha = \frac{\pi}{2}. \nonumber \end{align} \subsubsection{Approximation von kleinen Dreiecken} @@ -87,20 +93,22 @@ So kann mit dem Taylorpolynom 2. Grades den Sinus und den Kosinus vom Sphärisch Es gibt ebenfalls folgende Approximierung der Seiten von der Sphäre in die Ebene: \begin{align} a &\approx \sin(a) \nonumber \intertext{und} - a^2 &\approx 1-\cos(a). \nonumber + \frac{a^2}{2} &\approx 1-\cos(a). \nonumber \end{align} -Die Korrespondenzen zwischen der ebenen- und sphärischen Trigonometrie werden in den kommenden Abschnitten erläutert. +Die Korrespondenzen zwischen der ebenen und sphärischen Trigonometrie werden in den kommenden Abschnitten erläutert. \subsubsection{Sphärischer Satz des Pythagoras} -Die Korrespondenz \[ a^2 \approx 1-cos(a)\] liefert unter Anderem einen entsprechenden Satz des Pythagoras, nämlich +Die Korrespondenz \[ a^2 \approx 1- \cos(a)\] liefert unter anderem einen entsprechenden Satz des Pythagoras, nämlich -\begin{align} - \cos(a)\cdot \cos(b) &= \cos(c) \\ - \bigg[1-\frac{a^2}{2}\bigg] \cdot \bigg[1-\frac{b^2}{2}\bigg] &= 1-\frac{c^2}{2} \\ - \xcancel{1}- \frac{a^2}{2} - \frac{b^2}{2} + \xcancel{\frac{a^2b^2}{4}}&= \xcancel{1}- \frac{c^2}{2} \intertext{Höhere Potenzen vernachlässigen} +\begin{align*} + \cos(a)\cdot \cos(b) &= \cos(c), \\ + \bigg[1-\frac{a^2}{2}\bigg] \cdot \bigg[1-\frac{b^2}{2}\bigg] &= 1-\frac{c^2}{2}. + \intertext{Höhere Potenzen vernachlässigen:} + \xcancel{1}- \frac{a^2}{2} - \frac{b^2}{2} + \xcancel{\frac{a^2b^2}{4}}&= \xcancel{1}- \frac{c^2}{2} \\ -a^2-b^2 &=-c^2\\ - a^2+b^2&=c^2 -\end{align} + a^2+b^2&=c^2. +\end{align*} +Dies ist der wohlbekannte ebene Satz des Pythagoras. \subsubsection{Sphärischer Sinussatz} Den sphärischen Sinussatz @@ -116,7 +124,6 @@ In der sphärischen Trigonometrie gibt es den Seitenkosinussatz \cos \ a = \cos b \cdot \cos c + \sin b \cdot \sin c \cdot \cos \alpha \nonumber \end{align} %Seitenkosinussatz und den Winkelkosinussatz - \begin{align} \cos \gamma = -\cos \alpha \cdot \cos \beta + \sin \alpha \cdot \sin \beta \cdot \cos c, \nonumber \end{align} der nur in der sphärischen Trigonometrie vorhanden ist. @@ -124,9 +131,9 @@ und den Winkelkosinussatz Analog gibt es auch beim Seitenkosinussatz eine Korrespondenz zu \[ a^2 \leftrightarrow 1-\cos(a),\] die den ebenen Kosinussatz herleiten lässt, nämlich \begin{align} \cos(a)&= \cos(b)\cdot \cos(c) + \sin(b) \cdot \sin(c)\cdot \cos(\alpha) \\ - 1-\frac{a^2}{2} &= \bigg[1-\frac{b^2}{2}\bigg]\bigg[1-\frac{c^2}{2}\bigg]+bc\cdot\cos(\alpha) \\ - \xcancel{1}-\frac{a^2}{2} &= \xcancel{1}-\frac{b^2}{2}-\frac{c^2}{2} \xcancel{+\frac{b^2c^2}{4}}+bc \cdot \cos(\alpha)\intertext{Höhere Potenzen vernachlässigen} - a^2&=b^2+c^2-2bc \cdot \cos(\alpha) + 1-\frac{a^2}{2} &= \bigg[1-\frac{b^2}{2}\bigg]\bigg[1-\frac{c^2}{2}\bigg]+bc\cdot\cos(\alpha). \intertext{Höhere Potenzen vernachlässigen:} + \xcancel{1}-\frac{a^2}{2} &= \xcancel{1}-\frac{b^2}{2}-\frac{c^2}{2} \xcancel{+\frac{b^2c^2}{4}}+bc \cdot \cos(\alpha)\\ + a^2&=b^2+c^2-2bc \cdot \cos(\alpha). \end{align} |