diff options
author | JODBaer <55744603+JODBaer@users.noreply.github.com> | 2022-07-18 13:54:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-18 13:54:57 +0200 |
commit | eb8cc4b5029fd6fedfd5aaa133fd966a48b643db (patch) | |
tree | 313c7fce3526f271f07180839a5d8dfcf2d1b3a3 /buch/chapters/110-elliptisch | |
parent | Merge branch 'AndreasFMueller:master' into master (diff) | |
parent | Merge pull request #21 from enezerdem/master (diff) | |
download | SeminarSpezielleFunktionen-eb8cc4b5029fd6fedfd5aaa133fd966a48b643db.tar.gz SeminarSpezielleFunktionen-eb8cc4b5029fd6fedfd5aaa133fd966a48b643db.zip |
Merge branch 'AndreasFMueller:master' into master
Diffstat (limited to '')
44 files changed, 3625 insertions, 237 deletions
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..613f130 100644 --- a/buch/chapters/110-elliptisch/dglsol.tex +++ b/buch/chapters/110-elliptisch/dglsol.tex @@ -228,6 +228,7 @@ 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 $\operatorname{qp}(u,k) = 1/\operatorname{pq}(u,k)$ der Differentialgleichung @@ -339,12 +340,205 @@ y(u) = F^{-1}(u+C). Die Jacobischen elliptischen Funktionen sind daher inverse Funktionen der unvollständigen elliptischen Integrale. +% +% 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} @@ -492,3 +686,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..54b7531 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,153 @@ 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. + + \begin{figure} \centering \includegraphics[width=\textwidth]{chapters/110-elliptisch/images/jacobiplots.pdf} @@ -179,72 +261,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) |