aboutsummaryrefslogtreecommitdiffstats
path: root/buch
diff options
context:
space:
mode:
Diffstat (limited to 'buch')
-rw-r--r--buch/chapters/030-geometrie/laenge.tex6
-rw-r--r--buch/chapters/110-elliptisch/ellintegral.tex408
-rw-r--r--buch/chapters/110-elliptisch/images/Makefile25
-rw-r--r--buch/chapters/110-elliptisch/images/ellipsenumfang.m21
-rw-r--r--buch/chapters/110-elliptisch/images/ellipsenumfang.pdfbin0 -> 22986 bytes
-rw-r--r--buch/chapters/110-elliptisch/images/ellipsenumfang.tex83
-rw-r--r--buch/chapters/110-elliptisch/images/rechteck.cpp415
-rw-r--r--buch/chapters/110-elliptisch/images/rechteck.pdfbin0 -> 91630 bytes
-rw-r--r--buch/chapters/110-elliptisch/images/rechteck.tex80
-rw-r--r--buch/chapters/110-elliptisch/images/unvollstaendig.m81
-rw-r--r--buch/chapters/110-elliptisch/images/unvollstaendig.pdfbin0 -> 46390 bytes
-rw-r--r--buch/chapters/110-elliptisch/images/unvollstaendig.tex100
-rw-r--r--buch/chapters/110-elliptisch/lemniskate.tex2
-rw-r--r--buch/chapters/references.bib7
14 files changed, 1218 insertions, 10 deletions
diff --git a/buch/chapters/030-geometrie/laenge.tex b/buch/chapters/030-geometrie/laenge.tex
index b0b1b32..aebc13d 100644
--- a/buch/chapters/030-geometrie/laenge.tex
+++ b/buch/chapters/030-geometrie/laenge.tex
@@ -306,12 +306,16 @@ $\beta$ ist dann
l(\alpha,\beta)
=
\int_\alpha^\beta
+\sqrt{
a^2 \sin^2 t + b^2 \cos^2t
+}
\,dt
=
-a^2
+a
\int_\alpha^\beta
+\sqrt{
\sin^2 t + \frac{b^2}{a^2} \cos^2t
+}
\,dt.
\]
Auch dieses Integral ist nicht in geschlossener Form lösbar.
diff --git a/buch/chapters/110-elliptisch/ellintegral.tex b/buch/chapters/110-elliptisch/ellintegral.tex
index 1e35616..67891f2 100644
--- a/buch/chapters/110-elliptisch/ellintegral.tex
+++ b/buch/chapters/110-elliptisch/ellintegral.tex
@@ -15,7 +15,9 @@ neue spezielle Funktionen zu definieren.
\subsection{Definition
\label{buch:elliptisch:subsection:definition}}
-Ein elliptisches Integral ist ein Integral der Form
+Ein {\em elliptisches Integral} ist ein Integral der Form
+\index{elliptishes Integral}%
+\index{Integral, elliptisch}%
\begin{equation}
\int R\left( x, \sqrt{p(x)}\right)\,dx
\label{buch:elliptisch:def:allgemein}
@@ -33,7 +35,8 @@ Wir verlangen daher, dass $p(x)$ keine mehrfachen Nullstellen hat.
Man kann zeigen, dass sich elliptische Integrale in Summen von
elementaren Funktionen und speziellen elliptischen Integralen
-der folgenden Form überführen lassen.
+der folgenden Form überführen lassen
+\cite[Abschnitt 164, p.~506]{buch:smirnov32}.
\begin{definition}
\label{buch:elliptisch:def:integrale123}
@@ -53,6 +56,9 @@ Integrale
\]
mit $0<k<1$.
Es ist auch üblich, den Parameter $m=k^2$ zu verwenden.
+Die Zahl $k$ heisst {\em Modul} des elliptischen Integrals.
+\index{Modul eines elliptischen Integrals}%
+\index{elliptisches Integral}%
\end{definition}
Wie gesagt lassen sich für diese unbestimmten Integrale keine
@@ -129,14 +135,16 @@ K(k)
=
\int_0^{\frac{\pi}2}
\frac{d\varphi}{\sqrt{1-k^2\sin^2\varphi}}
+,
\\
E(k)
&=
\int_0^{\frac{\pi}2}
-\sqrt{\frac{1-k^2\sin^2\varphi}{1-\sin^2\varphi}}(1-\sin^2\varphi)\,d\varphi
+\sqrt{\frac{1-k^2\sin^2\varphi}{1-\sin^2\varphi}}\sqrt{1-\sin^2\varphi}\,d\varphi
=
\int_0^{\frac{\pi}2}
\sqrt{1-k^2\sin^2\varphi}\,d\varphi
+,
\\
\Pi(n,k)
&=
@@ -153,6 +161,7 @@ d\varphi
}{
(1-n\sin^2\varphi)\sqrt{1-k^2\sin^2\varphi}
}
+.
\end{align*}
Diese Form wird auch die {\em Legendre-Normalform} der vollständigen
\index{Legendre-Normalform}%
@@ -161,21 +170,406 @@ Definition~\ref{buch:elliptisch:def:vollstintegrale123}
die {\em Jacobi-Normalform} heisst.
\index{Jacobi-Normalform}%
+\subsubsection{Umfang einer Ellipse}
+\begin{figure}
+\centering
+\includegraphics{chapters/110-elliptisch/images/ellipsenumfang.pdf}
+\caption{Bogenlänge eines Viertels einer Ellipse mit Exzentrizität
+$\varepsilon$.
+Eine solche Ellipse hat Halbachsen $1$ und $\sqrt{1-\varepsilon^2}$,
+ein entsprechender Ellipsenbogen ist für ausgewählte Werte in blau
+eingezeichnet.
+\label{buch:elliptisch:fig:ellipsenumfang}}
+\end{figure}
+Wir zeigen, wie sich die Berechnung des Umfangs $U$ einer Ellipse
+mit Halbachsen $a$ und $b$, $a\le b$, auf ein volltändiges elliptisches
+Integral zurückführen lässt.
+Der Fall $a>b$ kann behandelt werden, indem die $x$- und $y$-Koordinaten
+vertauscht werden.
+
+Die Parametrisierung
+\[
+t\mapsto \begin{pmatrix}a\cos t\\ b\sin t\end{pmatrix}
+\]
+einer Ellipse führt auf das Integral
+\begin{align}
+U
+&=
+\int_0^{2\pi} \sqrt{a^2\sin^2t + b^2\cos^2 t}\,dt
+\notag
+\\
+&=
+4\int_0^{\frac{\pi}2}
+\sqrt{a^2\sin^2t + b^2(1-\sin^2 t)}
+\,dt
+\notag
+\\
+&=
+4b \int_0^{\frac{\pi}2} \sqrt{1-(b^2-a^2)/b^2\cdot \sin^2t}\,dt
+\label{buch:elliptisch:eqn:umfangellipse}
+\end{align}
+für den Umfang der Ellipse.
+Bei einem Kreis ist $a=b$ und der zweite Term unter der Wurzel fällt weg,
+der Umfang wird $4b\frac{\pi}2=2\pi b$.
+Die Differenz $e^2=b^2-a^2$ ist die {\em lineare Exzentrizität} der Ellipse,
+\index{lineare Exzentrizität}%
+der Quotient $e/b$ wird die {\em numerische Exzentrizität} der Ellipse
+genannt.
+Insbesondere ist $k = \varepsilon$.
+
+Das Integral~\eqref{buch:elliptisch:eqn:umfangellipse} erhält jetzt die
+Form
+\[
+U
+=
+4b\int_0^{\frac{\pi}2} \sqrt{1-k^2\sin^2t}\,dt
+\]
+und ist damit als elliptisches Integral zweiter Art erkannt.
+Für den Umfang der Ellipse finden wir damit die Formel
+\[
+U
+=
+4b E(k)
+=
+4b E(\varepsilon).
+\]
+Das vollständige elliptische Integral zweiter Art $E(\varepsilon)$
+liefert also genau den Umfang eines Viertels der Ellipse mit
+numerischer Exzentrizität $\varepsilon$ und kleiner Halbachse $1$.
+Für den extremen Wert $\varepsilon=0$ entsteht der Umfang einer Ellipse,
+also $E(0)=\frac{\pi}2$.
+Für $\varepsilon=1$ ist $a=0$, es entsteht eine Strecke mit Länge $E(1)=1$.
\subsubsection{Komplementäre Integrale}
-XXX Komplementäre Integrale \\
\subsubsection{Ableitung}
XXX Ableitung \\
XXX Stammfunktion \\
\subsection{Unvollständige elliptische Integrale}
-XXX Vollständige und Unvollständige Integrale \\
+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
+\index{unvollständiges elliptisches Integral}%
+obere Grenze des Integrals variabel wird:
+\[
+\begin{aligned}
+\text{1.~Art:}&&
+F(x,k)
+&=
+\int_0^x \frac{dt}{\sqrt{(1-t^2)(1-k^2t^2)}}
+&&=
+\int_0^\varphi \frac{d\vartheta}{\sqrt{1-k^2\sin^2\vartheta}}
+\\
+\text{2.~Art:}&&
+E(x,k)
+&=
+\int_0^x \sqrt{\frac{1-k^2t^2}{1-t^2}}\,dt
+&&=
+\int_0^\varphi \sqrt{1-k^2\sin^2\vartheta}\,d\vartheta
+\\
+\text{3.~Art:}&&
+\Pi(n,x,k)
+&=
+\int_0^x \frac{dt}{(1-nt^2)\sqrt{(1-t^2)(1-k^2t^2)}}
+&&=
+\int_0^\varphi
+\frac{d\vartheta}{(1-n\sin^2\vartheta)\sqrt{1-k^2\sin^2\vartheta}},
+\end{aligned}
+\]
+die erste Formel ist jeweils die Jacobi-Form, die zweite die Legrendre-Form
+\index{Jacobi-Form}%
+\index{Legendre-Form}%
+mit dem Parameter $\varphi$, gegeben durch
+$\sin \vartheta=x$.
+Wie bei den vollständigen elliptischen Integralen ist auch hier in manchen
+Referenzen die Parameterkonvention mit dem Parameter $m=k^2$ üblich.
+
+Die vollständigen elliptischen Integrale sind die Werte der
+unvollständigen elliptischen Integrale mit $x=1$, also
+\begin{align*}
+K(k) &= F(1,k),
+&
+E(k) &= E(1,k),
+&
+\Pi(n,k) &=\Pi(n,x,k).
+\end{align*}
+Man beachte auch, dass $F(x,0) = E(x,0)$ gilt.
+
+\begin{figure}
+\centering
+\includegraphics{chapters/110-elliptisch/images/unvollstaendig.pdf}
+\caption{Unvollständige elliptische Integrale $F(x,k)$ und $E(x,k)$
+für verschiedene Werte des Parameters $k$.
+Für $k=0$ stimmen die Integrale erster und zweiter Art überein,
+$F(x,0)=E(x,0)$.
+\label{buch:elliptisch:fig:unvollstaendigeintegrale}}
+\end{figure}
+Wegen $k<1$ sind alle drei Integranden als reelle Funktionen nicht
+mehr definiert, wenn $|x|>1$ ist.
+Die Abbildung~\ref{buch:elliptisch:fig:unvollstaendigeintegrale}
+zeigt Graphen der unvollständigen elliptischen Integrale für verschiedene
+Werte des Parameters.
+
+\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$.
+
+\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.
+Dazu muss für die Berechnung des Integrals ein Pfad in der komplexen
+Ebene gewählt werden, der die Singulariätten des Integranden vermeidet.
+
+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 \\
+\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
+$F(k,x)$ nur Werte zwischen $0$ und $K(k)$ an.
+Wenn komplexe Werte zulässig sind, kann man das Integral auch über die
+Singularitäten bei $\pm 1$ und $\pm 1/k$ hinweg ausführen, erhält
+dabe aber möglicherweise komplexe Werte, weil die Radikanden in den
+Integralen negativ werden.
+Die Schwierigkeit dabei ist, dass die Quadratwurzel nicht eindeutig ist.
+Welcher Wert der im Zusammenhang richtige ist, hängt davon ab, wie wir
+dorthin kommen.
+
+Die reelle Achse teilt den Definitionsbereich der unvollständigen
+elliptischen Integrale in die obere und die untere Halbebene.
+die Werte für reelle Argument beschreiben daher den Rand der Wertebereichs
+für Argumente in der oberen bzw.~untere Halbebene.
+Indem wir die Werte der elliptischen Integrale für reelle Argumente
+berechnen, können wir daher den Rand des Wertebereichs ermitteln.
+
+Im folgenden diskutieren wir nur das elliptische Integral erster Art,
+die anderen können in der gleichen Art behandelt werden.
+Für Argumentwerte $x$ im Interval $[0,1]$ ist $F(k,x)\in\mathbb{R}$.
+An der Stelle $x=1$ wechselt der Faktor $(1-t^2)$ im Nenner das
+Vorzeichen, der Integrand wird negativ.
+Für Argumente zwischen $1$ und $1/k$ ist bleibt der Integrand negativ,
+es muss also ein Wert der Quadratwurzel gewählt werden.
+Beide Vorzeichen von
+\begin{equation}
+\frac{1}{\sqrt{(1-t^2)(1-k^2t^2)}}
+=
+\frac{\pm i}{\sqrt{(t^2-1)(1-k^2t^2)}}
+\label{buch:elliptisch:eqn:imaginaerintegrand}
+\end{equation}
+sind möglich.
+Doch welche Wahl ist die ``richtige''?
+
+Dazu betrachten wir die Argument $z=x+i\varepsilon$ auf einer Geraden
+parallel zur reellen Achse des Definitionsbereichs und in der oberen
+Halbebene.
+Da eine holomorphe Funktion die Orientierung erhält und weil das
+Interval $[0,1]$ auf die reelle Achse abgebildet wird, müssen wir das
+Vorzeichen der Wurzel so wählen, dass die Werte der Wurzel ebenfalls
+in der oberen Halbebene liegen.
+Die ``richtige'' Wahl der Wurzel von
+\[
+1-z^2 = 1-x^2-2i\varepsilon x + \varepsilon^2
+\]
+erfüllt zwei Bedingungen.
+\begin{enumerate}
+\item
+Für nicht zu grosse Werte von $x$ muss der Wert in der oberen
+Halbebene liegen.
+Für solche Werte von $x$ ist der Realteil $1-x^2+\varepsilon^2>0$ und
+der Imaginärteil $-2\varepsilon x<0$.
+Für die Wurzel muss man also das Argument von $1-z^2$ als Winkel zwischen
+$3\pi2$ und $2\pi$ wählen und für die Wurzel durch zwei teilen.
+\item
+Der Realteil von $1-z^2$ wechsel das Vorzeichen, wenn
+$x=\sqrt{1+\varepsilon^2}$, der Imaginärteil bleibt dabei negativ.
+Das Argument ändert von einem Winkel nahe bei aber kleiner als $2\pi$
+zu einem Winkel nahe bei aber grösser als $\pi$.
+Als Wurzel muss daher jene verwendet werden, deren Argument in der
+Nähe von $\frac{\pi}2$ liegt.
+\end{enumerate}
+Aus diesem Argument kann man ableiten, dass für die Berandung des
+Bildes der oberen Halbebene zwischen $1$ und $1/k$ das positive
+Zeichen in~\eqref{buch:elliptisch:eqn:imaginaerintegrand}
+gewählt werden muss.
+
+Die anderen Singularitäten auf der reellen Achse können analog
+behandelt werden und es folgt, dass das Bild der oberen Halbebene
+ein Rechteck in der oberen Halbebene ist
+(Abbildung~\ref{buch:elliptisch:fig:rechteck}).
+Die Ecken auf der reellen Achse liegen bei den reellen Koordinaten
+\[
+\pm F(1,k)
+=
+\pm\int_0^1\frac{dt}{\sqrt{(1-t^2)(1-k^2t^2)}}
+=
+\pm K(k).
+\]
+Für die Höhe muss das Integral
+\begin{equation}
+l({\textstyle\frac{1}{k}})=\int_1^{\frac1{k}}
+\frac{dt}{\sqrt{(t^2-1)(1-k^2t^2)}}
+\label{buch:elliptisch:eqn:hoeheintegral}
+\end{equation}
+ausgewertet werden.
+
+\subsubsection{Komplementärmodul}
+Im vorangegangen Abschnitt wurde gezeigt, dass der Wertebereicht des
+unvollständigen elliptischen Integrals der ersten Art als komplexe
+Funktion ein Rechteck ist.
+Die obere Halbebene wird auf Rechteck der Breite $2K(k)$ abgebildet,
+für die Höhe des Rechtecks muss das
+Integral~\eqref{buch:elliptisch:eqn:hoeheintegral} ausgewertet werden.
+Das Integral läuft von $t=1$ bis $t=1/k$, wir möchten daraus ein
+elliptisches Integral machen, dessen Integrationsinterval bei $0$
+beginnt.
+Dazu verwenden wir die Variablentransformation
+\[
+t = \frac{1}{\sqrt{1-k'^2y^2}},
+\]
+die für $y=0$ den Wert $1$ ergibt, für $y=1$ aber $1/\sqrt{1-k'^2}$.
+Damit das richtige Integrationsintervall entsteht, muss $k'$ so gewählt
+werden, dass $1-k'^2=k^2$ ist.
+
+\begin{definition}
+Ist $0\le k\le 1$ der Modul eines elliptischen Integrals, dann heisst
+$k' = \sqrt{1-k^2}$ er {\em Komplementärmodul} oder {\em Komplement
+des Moduls}. Es ist $k^2+k'^2=1$.
+\end{definition}
+
+Mit der Ableitung
+\[
+\frac{dt}{dy}
+=
+\frac{k'^2 y}{(1-k'^2y^2)^{\frac32}}
+\]
+der Substitution
+wird das Integral~\eqref{buch:elliptisch:eqn:hoeheintegral} mit der
+oberen Grenze $x$ zu einem Integral mit oberer Grenze
+\[
+x^2 = \frac{1}{1-k'^2y_0^2}
+\quad\Rightarrow\quad
+y_0^2 = \frac{1}{k'^2}\biggl(1-\frac{1}{x^2}\biggr)
+\quad\Rightarrow\quad
+y_0=\frac{1}{k'}\sqrt{1-\frac{1}{x^2}}
+\]
+jetzt zu
+\begin{align*}
+l(x)
+&=
+\int_0^{y_0}
+\frac{1}{\sqrt{\frac{1}{1-k'^2y^2}-1}}
+\cdot
+\frac{1}{\sqrt{1-\frac{k^2}{1-k'^2y^2}}}
+\cdot
+\frac{k'^2y}{\sqrt{1-k'^2y^2}}
+\cdot
+\frac{1}{1-k'^2y^2}
+\,dy
+\\
+&=
+\int_0^{y_0}
+\frac{\sqrt{1-k'^2y^2}}{\sqrt{k'^2y^2}}
+\cdot
+\frac{1}{\sqrt{1-k^2 -k'^2y^2}}
+\cdot
+\frac{k'^2y}{1-k'^2y^2}
+\,dy
+\\
+&=
+\int_0^{y_0}
+\sqrt{1-k'^2y^2}
+\cdot
+\frac{1}{k'\sqrt{1-y^2}}
+\cdot
+\frac{k'}{1-k'^2y^2}
+\,dy
+\\
+&=
+\int_0^{y_0} \frac{dy}{\sqrt{(1-y^2)(1-k'^2y^2)}}
+=
+F(y_0,k')
+\end{align*}
+Die gesuchte Höhe des Rechtecks ergibt sich für die obere Grenze $\frac1k$.
+In diesem Fall ist
+\[
+y_0
+=
+\frac{1}{k'}\sqrt{1-k^2} = 1
+\]
+und das unvollständig elliptische Integral wird zum vollständigen
+elliptischen Integral $K(k')$.
+Die Höhe des Rechtecks des Wertebereichs der oberen Halbebene ist
+als der Wert des vollständigen elliptischen Integrals erster Art
+für den Komplementärmodul.
+Das Bild der komplexen Ebene unter der Abbildung gegeben durch das
+unvollständige elliptische Integral zweiter Art ist symmetrisch um
+den Nullpunkt und hat Breite $2K(k)$ und Höhe $2K(k')$.
+
+\begin{figure}
+\centering
+\includegraphics{chapters/110-elliptisch/images/rechteck.pdf}
+\caption{Der Wertebereich der Funktion $F(k,z)$ ist ein Rechteck
+der Breite $2K(k)$ und $2K(k')$.
+Die obere Halbebene wird in das rote Rechteck abgebildet, die unter
+in das blaue.
+\label{buch:elliptisch:fig:rechteck}}
+\end{figure}
+
+\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
+daher wieder als gewöhnliches reelles Integral berechnet werden,
+es sollte sich daher auch auf das unvollständige elliptische Integral
+erster Art zurückführen lassen.
+
+Da wir bereits wissen, dass
+\[
+\lim_{x\to\infty} F(x,k) = iK(k'),
+\]
+können wir $F(x,k)$ auch als
+\[
+F(x,k)
+=
+iK(k')
+-
+\int_x^\infty \frac{dt}{\sqrt{(1-t^2)(1-k^2t^2)}}
+\]
+berechnen.
+Dazu werden wir die Variablentransformation
+\[
+y=\frac{1}{kt}\quad\Leftrightarrow\quad t=\frac{1}{ky}
+\qquad\text{mit}\qquad
+\frac{dt}{dy} = -\frac{1}{ky^2}
+\]
+auf das Integral an und erhalten
+\begin{align*}
+\int_x^\infty \frac{dt}{\sqrt{(1-t^2)(1-k^2t^2)}}
+&=
+-\int_{\frac1{kx}}^0 \frac{dy}{ky^2\sqrt{(1-1/(ky)^2)(1-1/y^2)}}
+\\
+&=
+\int_0^{\frac{1}{kx}} \frac{dy}{\sqrt{(k^2y^2-1)(y^2-1)}}
+=
+F\biggl(\frac{1}{kx},k\biggr).
+\end{align*}
+Dies ist das gesuchte unvollständige elliptische Integral erster Art.
+Insbesondere halten wir noch die Formel
+\[
+F(x,k) = iK(k') - F\biggl(\frac1{kx},k\biggr)
+\qquad\text{für $x>\frac1k$}
+\]
+für die Werte des elliptischen Integrals erster Art für grosse Argumentwerte
+fest.
+
\subsection{Potenzreihe}
XXX Potenzreihen \\
XXX Als hypergeometrische Funktionen \\
-
-
+XXX Berechnung mit der Landen-Transformation https://en.wikipedia.org/wiki/Landen%27s_transformation
diff --git a/buch/chapters/110-elliptisch/images/Makefile b/buch/chapters/110-elliptisch/images/Makefile
index afa70ba..931564b 100644
--- a/buch/chapters/110-elliptisch/images/Makefile
+++ b/buch/chapters/110-elliptisch/images/Makefile
@@ -3,11 +3,34 @@
#
# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
#
-all: lemniskate.pdf ellipse.pdf
+all: lemniskate.pdf ellipsenumfang.pdf unvollstaendig.pdf rechteck.pdf \
+ ellipse.pdf
lemniskate.pdf: lemniskate.tex
pdflatex lemniskate.tex
+ellipsenumfang.pdf: ellipsenumfang.tex ekplot.tex
+ pdflatex ellipsenumfang.tex
+
+ekplot.tex: ellipsenumfang.m
+ octave ellipsenumfang.m
+
+rechteck: rechteck.cpp
+ g++ `pkg-config --cflags gsl` `pkg-config --libs gsl` -O -Wall -g -std=c++11 rechteck.cpp -o rechteck
+
+rechteckpfade.tex: rechteck
+ ./rechteck --outfile rechteckpfade.tex
+
+rechteck.pdf: rechteck.tex rechteckpfade.tex
+ pdflatex rechteck.tex
+
+unvollstaendig.pdf: unvollstaendig.tex unvollpath.tex
+ pdflatex unvollstaendig.tex
+
+unvollpath.tex: unvollstaendig.m
+ octave unvollstaendig.m
+
ellipse.pdf: ellipse.tex
pdflatex ellipse.tex
+
diff --git a/buch/chapters/110-elliptisch/images/ellipsenumfang.m b/buch/chapters/110-elliptisch/images/ellipsenumfang.m
new file mode 100644
index 0000000..9ac8fe2
--- /dev/null
+++ b/buch/chapters/110-elliptisch/images/ellipsenumfang.m
@@ -0,0 +1,21 @@
+#
+# ellipsenumfang
+#
+# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+f = fopen("ekplot.tex", "w");
+fprintf(f, "\\def\\ekpath{\n");
+fprintf(f, "(0,{\\dy*%.4f})\n", pi / 2);
+for epsilon = (1:100) / 100
+ [k, e] = ellipke(epsilon^2);
+ fprintf(f, "--({\\dx*%.4f},{\\dy*%.4f})\n", epsilon, e);
+endfor
+fprintf(f, "\n}\n");
+fprintf(f, "\\def\\punkte{\n");
+for epsilon = (0.05:0.1:0.95)
+ [k, e] = ellipke(epsilon^2);
+ fprintf(f, "\\fill[color=blue] ({\\dx*%.4f},{\\dy*%.4f}) circle[radius=0.08];\n", epsilon, e);
+ fprintf(f, "\\draw[color=blue,line width=0.2pt] ({\\dx*%.4f},{\\dy*%.4f}) -- ({\\dx*%.4f},{\\dy*1.85});\n", epsilon, e, epsilon);
+endfor
+fprintf(f,"}\n");
+fclose(f);
diff --git a/buch/chapters/110-elliptisch/images/ellipsenumfang.pdf b/buch/chapters/110-elliptisch/images/ellipsenumfang.pdf
new file mode 100644
index 0000000..fc27f21
--- /dev/null
+++ b/buch/chapters/110-elliptisch/images/ellipsenumfang.pdf
Binary files differ
diff --git a/buch/chapters/110-elliptisch/images/ellipsenumfang.tex b/buch/chapters/110-elliptisch/images/ellipsenumfang.tex
new file mode 100644
index 0000000..0d1b807
--- /dev/null
+++ b/buch/chapters/110-elliptisch/images/ellipsenumfang.tex
@@ -0,0 +1,83 @@
+%
+% ellipsenumfang.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}
+\input{ekplot.tex}
+\def\skala{1.19}
+\begin{tikzpicture}[>=latex,thick,scale=\skala]
+
+\pgfkeys{/pgf/number format/.cd, fixed, fixed zerofill, precision=1}
+
+\def\dx{10}
+\def\dy{4}
+
+%\draw[line width=0.4pt] (0,\dy) -- (10,\dy);
+%\draw[line width=0.4pt] (\dx,0) -- (10,\dy);
+
+\draw[->] (0,{\dy-0.1}) -- (0,7.0) coordinate[label={left:$E(k=\varepsilon)$}];
+\draw[->] (-0.1,\dy) -- (10.5,\dy) coordinate[label={$\varepsilon$}];
+
+\foreach \i in {0,...,10}{
+ \pgfmathparse{\i/10}
+ \xdef\wert{\pgfmathresult}
+ \draw (\i,{\dy-0.1}) -- (\i,{\dy+0.1});
+ \node at (\i,{\dy-0.1}) [below] {$\pgfmathprintnumber{\wert}$};
+}
+
+\draw[color=red,line width=1.4pt] \ekpath;
+\fill[color=red] (\dx,\dy) circle[radius=0.07];
+
+\foreach \y in {1.0,1.2,1.4}{
+ \draw (-0.1,{\dy*\y}) -- (0.1,{\dy*\y});
+ \node at (-0.1,{\dy*\y}) [left] {$\pgfmathprintnumber{\y}$};
+}
+
+\draw (-0.1,{\dy*3.14159/2}) -- (0.1,{\dy*3.14159/2});
+\node at (0,{\dy*3.14159/2}) [left] {$\displaystyle\frac{\pi}2$};
+
+
+\punkte
+
+\foreach \exzentrizitaet in {0.05,0.15,...,0.95}{
+ \pgfmathparse{sqrt(1-\exzentrizitaet*\exzentrizitaet)}
+ \xdef\halbachse{\pgfmathresult}
+
+ \pgfmathparse{\exzentrizitaet*\dx}
+ \xdef\mitte{\pgfmathresult}
+ %\node at (\mitte,1) {$\pgfmathprintnumber{\mitte}$};
+
+ \pgfmathparse{(1-\exzentrizitaet)}
+ \xdef\breite{\halbachse}
+ %\node at (\mitte,0.5) {$\pgfmathprintnumber{\breite}$};
+
+ \begin{scope}
+
+ \clip ({\mitte-(\breite/2)},{1.8*\dy})
+ rectangle ({\mitte+(\breite/2)+0.1},{1.8*\dy+1.1});
+ \fill[color=blue!20] ({\mitte-\breite/2},{1.8*\dy})
+ ellipse({\breite} and 1);
+ \draw[color=blue,line width=1.4pt]
+ ({\mitte-\breite/2},{1.8*\dy})
+ ellipse({\breite} and 1);
+ \draw[color=blue,line width=0.2pt]
+ ({\mitte-\breite/2},{1.8*\dy+1})
+ --
+ ({\mitte-\breite/2},{1.8*\dy})
+ --
+ ({\mitte+\breite/2},{1.8*\dy});
+ \end{scope}
+}
+
+
+\end{tikzpicture}
+\end{document}
+
diff --git a/buch/chapters/110-elliptisch/images/rechteck.cpp b/buch/chapters/110-elliptisch/images/rechteck.cpp
new file mode 100644
index 0000000..c65ae0f
--- /dev/null
+++ b/buch/chapters/110-elliptisch/images/rechteck.cpp
@@ -0,0 +1,415 @@
+/*
+ * rechteck.cpp
+ *
+ * (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+ */
+#include <cmath>
+#include <cstdlib>
+#include <cstdio>
+#include <complex>
+#include <iostream>
+#include <fstream>
+#include <list>
+#include <getopt.h>
+#include <gsl/gsl_sf_ellint.h>
+
+double ast = 1;
+
+/**
+ * \brief Base class for integrands
+ */
+class integrand {
+protected:
+ double _k;
+public:
+ double k() const { return _k; }
+ integrand(double k) : _k(k) { }
+ virtual std::complex<double> operator()(const std::complex<double>& z) const = 0;
+ static double kprime(double k);
+};
+
+double integrand::kprime(double k) {
+ return sqrt(1 - k*k);
+}
+
+/**
+ * \brief Elliptic integral of the first kind
+ */
+class integrand1 : public integrand {
+public:
+ integrand1(double k) : integrand(k) { }
+ virtual std::complex<double> operator()(
+ const std::complex<double>& z) const {
+ std::complex<double> square = z * z;
+ std::complex<double> eins(1.0);
+ std::complex<double> result = eins
+ / sqrt((eins - square) * (eins - k() * k() * square));
+ return ast * ((result.imag() < 0) ? -result : result);
+ }
+};
+
+/**
+ * \brief A class to trace curves
+ */
+class curvetracer {
+ const integrand& _f;
+public:
+ typedef std::list<std::complex<double> > curve_t;
+ curvetracer(const integrand& f) : _f(f) { }
+
+ std::complex<double> startpoint(const std::complex<double>& z,
+ int n = 100) const;
+
+ std::complex<double> segment(const std::complex<double>& z1,
+ const std::complex<double>& z2, int n) const;
+
+ std::pair<std::complex<double>,std::complex<double> > segmentl(
+ const std::complex<double>& start,
+ const std::complex<double>& dir,
+ double stepsize, int n = 10) const;
+
+ curve_t trace(const std::complex<double>& startz,
+ const std::complex<double>& dir,
+ const std::complex<double>& startw,
+ int maxsteps) const;
+
+ static curve_t mirrorx(const curve_t& c);
+ static curve_t mirrory(const curve_t& c);
+ static curve_t mirror(const curve_t& c);
+};
+
+/**
+ * \brief Perform integration for a
+ *
+ * \param z1 the start point of the segment in the domain
+ * \param z2 the end point of the segment in the domain
+ * \param n the number of integration steps to use
+ * \return the increment along that segment
+ */
+std::complex<double> curvetracer::segment(const std::complex<double>& z1,
+ const std::complex<double>& z2, int n = 100) const {
+ std::complex<double> dz = z2 - z1;
+ std::complex<double> summe(0);
+ double h = 1. / (2 * n);
+ for (int i = 1; i < 2 * n; i += 2) {
+ double t = i * h;
+ std::complex<double> z = (1 - t) * z1 + t * z2;
+ summe += _f(z);
+ }
+ return dz * h * summe * 2.;
+}
+
+/**
+ * \brief Exception thrown when the number of iterations is exceeded
+ */
+class toomanyiterations : public std::runtime_error {
+public:
+ toomanyiterations(const std::string& cause)
+ : std::runtime_error(cause) {
+ }
+};
+
+/**
+ * \brief Perform integration with a given target length
+ *
+ * \param start the start point
+ * \param dir the direction in which to integrate
+ * \param stepsize the required length of the step
+ * \param n the number of integration steps
+ * \return the increment in the range by this segment
+ */
+std::pair<std::complex<double>, std::complex<double> > curvetracer::segmentl(
+ const std::complex<double>& start,
+ const std::complex<double>& dir,
+ double stepsize,
+ int n) const {
+ std::complex<double> s(0.);
+ std::complex<double> z = start;
+ int counter = 100;
+ while (abs(s) < stepsize) {
+ s = s + segment(z, z + dir, n);
+ z = z + dir;
+ if (counter-- == 0) {
+ throw toomanyiterations("too many iterations");
+ }
+ }
+ return std::make_pair(z, s);
+}
+
+/**
+ * \brief Trace a curve from a starting point in the domain
+ *
+ * \param startz the start point of the curve in the domain
+ * \param dir the direction of the curve in the domain
+ * \param startw the initial function value where the curve starts in
+ * the range
+ * \param maxsteps the maximum number of dir-steps before giving up
+ * \return the curve as a list of points
+ */
+curvetracer::curve_t curvetracer::trace(const std::complex<double>& startz,
+ const std::complex<double>& dir,
+ const std::complex<double>& startw,
+ int maxsteps) const {
+ curve_t result;
+ std::complex<double> z = startz;
+ std::complex<double> w = startw;
+ result.push_back(w);
+ while (maxsteps-- > 0) {
+ try {
+ auto seg = segmentl(z, dir, abs(dir), 40);
+ z = seg.first;
+ w = w + seg.second;
+ result.push_back(w);
+ } catch (const toomanyiterations& x) {
+ std::cerr << "iterations exceeded after ";
+ std::cerr << result.size();
+ std::cerr << " points";
+ maxsteps = 0;
+ }
+ }
+ return result;
+}
+
+/**
+ * \brief Find the initial point for a coordinate curve
+ *
+ * \param k the elliptic integral parameter
+ * \param z the desired starting point argument
+ */
+std::complex<double> curvetracer::startpoint(const std::complex<double>& z,
+ int n) const {
+ std::cerr << "start at " << z.real() << "," << z.imag() << std::endl;
+ return segment(std::complex<double>(0.), z, n);
+}
+
+
+curvetracer::curve_t curvetracer::mirrorx(const curve_t& c) {
+ curve_t result;
+ for (auto z : c) {
+ result.push_back(-std::conj(z));
+ }
+ return result;
+}
+
+curvetracer::curve_t curvetracer::mirrory(const curve_t& c) {
+ curve_t result;
+ for (auto z : c) {
+ result.push_back(std::conj(z));
+ }
+ return result;
+}
+
+curvetracer::curve_t curvetracer::mirror(const curve_t& c) {
+ curve_t result;
+ for (auto z : c) {
+ result.push_back(-z);
+ }
+ return result;
+}
+
+/**
+ * \brief Class to draw the curves to a file
+ */
+class curvedrawer {
+ std::ostream *_out;
+ std::string _color;
+public:
+ curvedrawer(std::ostream *out) : _out(out), _color("red") { }
+ const std::string& color() const { return _color; }
+ void color(const std::string& c) { _color = c; }
+ void operator()(const curvetracer::curve_t& curve);
+ std::ostream *out() { return _out; }
+};
+
+/**
+ * \brief Operator to draw a curve
+ *
+ * \param curve the curve to draw
+ */
+void curvedrawer::operator()(const curvetracer::curve_t& curve) {
+ double first = true;
+ for (auto z : curve) {
+ if (first) {
+ *_out << "\\draw[color=" << _color << "] ";
+ first = false;
+ } else {
+ *_out << std::endl << " -- ";
+ }
+ *_out << "({" << z.real() << "*\\dx},{" << z.imag() << "*\\dy})";
+ }
+ *_out << ";" << std::endl;
+}
+
+static struct option longopts[] = {
+{ "outfile", required_argument, NULL, 'o' },
+{ "k", required_argument, NULL, 'k' },
+{ "deltax", required_argument, NULL, 'd' },
+{ NULL, 0, NULL, 0 }
+};
+
+/**
+ * \brief Main function
+ */
+int main(int argc, char *argv[]) {
+ double k = 0.625;
+ double deltax = 0.2;
+
+ int c;
+ int longindex;
+ std::string outfilename;
+ while (EOF != (c = getopt_long(argc, argv, "o:k:d:", longopts,
+ &longindex)))
+ switch (c) {
+ case 'd':
+ deltax = std::stod(optarg);
+ break;
+ case 'o':
+ outfilename = std::string(optarg);
+ break;
+ case 'k':
+ k = std::stod(optarg);
+ break;
+ }
+
+ double kprime = integrand::kprime(k);
+
+ double xmax = gsl_sf_ellint_Kcomp(k, GSL_PREC_DOUBLE);
+ double ymax = gsl_sf_ellint_Kcomp(kprime, GSL_PREC_DOUBLE);
+ std::cout << "xmax = " << xmax << std::endl;
+ std::cout << "ymax = " << ymax << std::endl;
+
+ curvedrawer *cdp;
+ std::ofstream *outfile = NULL;
+ if (outfilename.c_str()) {
+ outfile = new std::ofstream(outfilename.c_str());
+ }
+ if (outfile) {
+ cdp = new curvedrawer(outfile);
+ } else {
+ cdp = new curvedrawer(&std::cout);
+ }
+
+ integrand1 f(k);
+ curvetracer ct(f);
+
+ // fill
+ (*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;
+
+ // "circles"
+ std::complex<double> dir(0.01, 0);
+ for (double im = deltax; im < 3; im += deltax) {
+ std::complex<double> startz(0, im);
+ std::complex<double> startw = ct.startpoint(startz);
+ curvetracer::curve_t curve = ct.trace(startz, dir,
+ startw, 1000);
+ cdp->color("red");
+ (*cdp)(curve);
+ (*cdp)(curvetracer::mirrorx(curve));
+ cdp->color("blue");
+ (*cdp)(curvetracer::mirrory(curve));
+ (*cdp)(curvetracer::mirror(curve));
+ }
+
+ // imaginary axis
+ (*cdp->out()) << "\\draw[color=red] (0,0) -- (0,{" << ymax
+ << "*\\dy});" << std::endl;
+ (*cdp->out()) << "\\draw[color=blue] (0,0) -- (0,{" << (-ymax)
+ << "*\\dy});" << std::endl;
+
+ // arguments between 0 and 1
+ dir = std::complex<double>(0, 0.01);
+ for (double re = 0.2; re < 1; re += 0.2) {
+ std::complex<double> startz(re, 0.001);
+ std::complex<double> startw = ct.startpoint(startz);
+ startw = std::complex<double>(startw.real(), 0);
+ curvetracer::curve_t curve = ct.trace(startz, dir,
+ startw, 1000);
+ cdp->color("red");
+ (*cdp)(curve);
+ (*cdp)(curvetracer::mirrorx(curve));
+ cdp->color("blue");
+ (*cdp)(curvetracer::mirrory(curve));
+ (*cdp)(curvetracer::mirror(curve));
+ }
+
+ // argument 1 (singularity)
+ {
+ std::complex<double> startz(1.);
+ std::complex<double> startw(xmax);
+ curvetracer::curve_t curve = ct.trace(startz, dir,
+ startw, 1000);
+ cdp->color("red");
+ (*cdp)(curve);
+ (*cdp)(curvetracer::mirrorx(curve));
+ cdp->color("blue");
+ (*cdp)(curvetracer::mirror(curve));
+ (*cdp)(curvetracer::mirrory(curve));
+ }
+
+ // arguments between 1 and 1/k
+ {
+ for (double x0 = 1 + deltax; x0 < 1/k; 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,
+ GSL_PREC_DOUBLE);
+ std::complex<double> startz(x0);
+ std::complex<double> startw(xmax, y);
+ curvetracer::curve_t curve = ct.trace(startz, dir,
+ startw, 1000);
+ cdp->color("red");
+ (*cdp)(curve);
+ (*cdp)(curvetracer::mirrorx(curve));
+ cdp->color("blue");
+ (*cdp)(curvetracer::mirror(curve));
+ (*cdp)(curvetracer::mirrory(curve));
+ }
+ }
+
+ // argument 1/k
+#if 0
+ {
+ std::complex<double> startz(1/k);
+ std::complex<double> startw(xmax, ymax);
+ curvetracer::curve_t curve = ct.trace(startz, dir,
+ startw, 1000);
+ cdp->color("red");
+ (*cdp)(curve);
+ (*cdp)(curvetracer::mirrorx(curve));
+ cdp->color("blue");
+ (*cdp)(curvetracer::mirror(curve));
+ (*cdp)(curvetracer::mirrory(curve));
+ }
+#endif
+
+ // arguments larger than 1/k
+ {
+ dir = std::complex<double>(0, 0.01);
+ double x0 = 1;
+ while (x0 <= 1/k + 0.0001) { x0 += deltax; }
+ for (; x0 < 4; x0 += deltax) {
+ std::complex<double> startz(x0);
+ std::complex<double> startw(gsl_sf_ellint_F(
+ asin(1/(k*x0)), k, GSL_PREC_DOUBLE), ymax);
+ curvetracer::curve_t curve = ct.trace(startz, dir,
+ startw, 1000);
+ cdp->color("red");
+ (*cdp)(curve);
+ (*cdp)(curvetracer::mirrorx(curve));
+ cdp->color("blue");
+ (*cdp)(curvetracer::mirror(curve));
+ (*cdp)(curvetracer::mirrory(curve));
+ }
+ }
+
+ // border
+ (*cdp->out()) << "\\def\\xmax{" << xmax << "}" << std::endl;
+ (*cdp->out()) << "\\def\\ymax{" << ymax << "}" << std::endl;
+
+ return EXIT_SUCCESS;
+}
diff --git a/buch/chapters/110-elliptisch/images/rechteck.pdf b/buch/chapters/110-elliptisch/images/rechteck.pdf
new file mode 100644
index 0000000..894091f
--- /dev/null
+++ b/buch/chapters/110-elliptisch/images/rechteck.pdf
Binary files differ
diff --git a/buch/chapters/110-elliptisch/images/rechteck.tex b/buch/chapters/110-elliptisch/images/rechteck.tex
new file mode 100644
index 0000000..622a9e9
--- /dev/null
+++ b/buch/chapters/110-elliptisch/images/rechteck.tex
@@ -0,0 +1,80 @@
+%
+% rechteck.tex -- rechteck für Wertebereich der ell. Integrale
+%
+% (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{3}
+\def\dy{3}
+
+\input{rechteckpfade.tex}
+
+\begin{scope}
+ \clip ({-\xmax*\dx},{-\ymax*\dy}) rectangle ({\xmax*\dx},{\ymax*\dy});
+ \fill[color=red!10] (0,{\ymax*\dy}) circle[radius=0.45];
+ \fill[color=blue!10] (0,{-\ymax*\dy}) circle[radius=0.45];
+ \draw[color=gray!80] (0,{\ymax*\dy}) -- (0,{\ymax*\dy-0.45});
+ \draw[color=gray!80] (0,{-\ymax*\dy}) -- (0,{-\ymax*\dy+0.45});
+\end{scope}
+
+\draw ({-\xmax*\dx},{-\ymax*\dy}) rectangle ({\xmax*\dx},{\ymax*\dy});
+
+\draw[->] ({-\xmax*\dx-0.3},0) -- ({\xmax*\dx+0.9},0)
+ coordinate[label={$\operatorname{Re}F(k,z)$}];
+
+\draw[<->,line width=0.7pt]
+ ({-\xmax*\dx},{\ymax*\dy+0.2})
+ --
+ ({\xmax*\dx},{\ymax*\dy+0.2});
+\draw[line width=0.2pt]
+ ({-\xmax*\dx},{\ymax*\dy})
+ --
+ ({-\xmax*\dx},{\ymax*\dy+0.3});
+\draw[line width=0.2pt]
+ ({\xmax*\dx},{\ymax*\dy})
+ --
+ ({\xmax*\dx},{\ymax*\dy+0.3});
+
+\node at ({-0.5*\xmax*\dx},{\ymax*\dy+0.2}) [above] {$2K(k)$};
+\draw[->] (0,{\ymax*\dy}) -- (0,{\ymax*\dy+0.7})
+ coordinate[label={right:$\operatorname{Im}F(k,z)$}];
+\draw (0,{-\ymax*\dy}) -- (0,{-\ymax*\dy-0.2});
+
+\draw[line width=0.2pt]
+ ({-\xmax*\dx-0.3},{-\ymax*\dy})
+ --
+ ({-\xmax*\dx},{-\ymax*\dy});
+\draw[line width=0.2pt]
+ ({-\xmax*\dx-0.3},{\ymax*\dy})
+ --
+ ({-\xmax*\dx},{\ymax*\dy});
+\draw[<->,line width=0.7pt]
+ ({-\xmax*\dx-0.2},{\ymax*\dy})
+ --
+ ({-\xmax*\dx-0.2},0);
+
+\node at ({-\xmax*\dx-0.2},{-0.5*\ymax*\dy}) [rotate=90,above] {$K(k')$};
+\node at ({-\xmax*\dx-0.2},{0.5*\ymax*\dy}) [rotate=90,above] {$K(k')$};
+
+\draw[<->,line width=0.7pt]
+ ({-\xmax*\dx-0.2},{-\ymax*\dy})
+ --
+ ({-\xmax*\dx-0.2},0);
+
+\node at ({\xmax*\dx},{\ymax*\dy}) [right] {$K(k)+iK(k')$};
+\fill[color=white] ({\xmax*\dx},{\ymax*\dy}) circle[radius=0.05];
+\draw ({\xmax*\dx},{\ymax*\dy}) circle[radius=0.05];
+
+\end{tikzpicture}
+\end{document}
+
diff --git a/buch/chapters/110-elliptisch/images/unvollstaendig.m b/buch/chapters/110-elliptisch/images/unvollstaendig.m
new file mode 100644
index 0000000..25196d0
--- /dev/null
+++ b/buch/chapters/110-elliptisch/images/unvollstaendig.m
@@ -0,0 +1,81 @@
+#
+# unvollstaendig.m
+#
+# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+global N;
+N = 200;
+global n;
+n = 5;
+
+function retval = integrand_f(t, k)
+ retval = 1 / sqrt((1 - t^2) * (1 - k^2 * t^2));
+endfunction
+
+function retval = integrand_e(t, k)
+ retval = sqrt((1-k^2*t^2)/(1-t^2));
+endfunction
+
+function retval = integrand_pi(n, t, k)
+ retval = 1 / ((1-n*t^2) * sqrt((1-k^2*t^2)*(1-t^2)));
+endfunction
+
+function retval = elliptisch1(f, name, k)
+ global N;
+ global n;
+ s = 0;
+ fprintf(f, "\\def\\ell%s{ (0,0)", name);
+ delta = 1 / N;
+ for x = (0:delta:(1-delta))
+ h = delta / n;
+ for t = (x+h/2:h:x+delta)
+ s = s + integrand_f(t, k) * h;
+ endfor
+ fprintf(f, "\n -- ({\\dx*%.4f},{\\dy*%.4f})", x + delta, s);
+ endfor
+ fprintf(f, "}\n");
+endfunction
+
+function retval = elliptisch2(f, name, k)
+ global N;
+ global n;
+ s = 0;
+ fprintf(f, "\\def\\ell%s{ (0,0)", name);
+ delta = 1 / N;
+ for x = (0:delta:(1-delta))
+ h = delta / n;
+ for t = (x+h/2:h:x+delta)
+ s = s + integrand_e(t, k) * h;
+ endfor
+ fprintf(f, "\n -- ({\\dx*%.4f},{\\dy*%.4f})", x + delta, s);
+ endfor
+ fprintf(f, "\n}\n");
+endfunction
+
+fn = fopen("unvollpath.tex", "w");
+
+elliptisch1(fn, "Fzero", 0.0);
+elliptisch1(fn, "Fone", 0.1);
+elliptisch1(fn, "Ftwo", 0.2);
+elliptisch1(fn, "Fthree", 0.3);
+elliptisch1(fn, "Ffour", 0.4);
+elliptisch1(fn, "Ffive", 0.5);
+elliptisch1(fn, "Fsix", 0.6);
+elliptisch1(fn, "Fseven", 0.7);
+elliptisch1(fn, "Feight", 0.8);
+elliptisch1(fn, "Fnine", 0.9);
+elliptisch1(fn, "Ften", 1.0);
+
+elliptisch2(fn, "Ezero", 0.0);
+elliptisch2(fn, "Eone", 0.1);
+elliptisch2(fn, "Etwo", 0.2);
+elliptisch2(fn, "Ethree", 0.3);
+elliptisch2(fn, "Efour", 0.4);
+elliptisch2(fn, "Efive", 0.5);
+elliptisch2(fn, "Esix", 0.6);
+elliptisch2(fn, "Eseven", 0.7);
+elliptisch2(fn, "Eeight", 0.8);
+elliptisch2(fn, "Enine", 0.9);
+elliptisch2(fn, "Eten", 1.0);
+
+fclose(fn);
diff --git a/buch/chapters/110-elliptisch/images/unvollstaendig.pdf b/buch/chapters/110-elliptisch/images/unvollstaendig.pdf
new file mode 100644
index 0000000..4da2c0c
--- /dev/null
+++ b/buch/chapters/110-elliptisch/images/unvollstaendig.pdf
Binary files differ
diff --git a/buch/chapters/110-elliptisch/images/unvollstaendig.tex b/buch/chapters/110-elliptisch/images/unvollstaendig.tex
new file mode 100644
index 0000000..1a1af13
--- /dev/null
+++ b/buch/chapters/110-elliptisch/images/unvollstaendig.tex
@@ -0,0 +1,100 @@
+%
+% unvollstaendig.tex -- Plots der unvollständigen elliptischen integrale
+%
+% (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}
+\input{unvollpath.tex}
+\begin{document}
+\def\skala{1}
+\begin{tikzpicture}[>=latex,thick,scale=\skala]
+
+\pgfkeys{/pgf/number format/.cd, fixed, fixed zerofill, precision=1}
+
+\def\dx{12.8}
+\def\dy{6}
+
+\definecolor{darkgreen}{rgb}{0,0.6,0}
+\definecolor{blau}{rgb}{0.3,0.3,1}
+
+\begin{scope}
+\begin{scope}
+\clip (-0.1,-0.1) rectangle ({\dx+0.0},{10.1});
+
+\fill[color=darkgreen!10] \ellEzero -- (\dx,{1.571*\dy}) -- (\dx,0) -- cycle;
+\fill[color=red!10] \ellEzero -- (\dx,{1.571*\dy}) -- (\dx,10.1) -- (0,10.2) -- cycle;
+
+\node[color=red] at ({0.6*\dx},{1.3*\dy}) [scale=2] {$F(x,k)$};
+\node[color=darkgreen] at ({0.6*\dx},{0.3*\dy}) [scale=2] {$E(x,k)$};
+
+
+\draw[color=red!0!blau,line width=1.0pt] \ellFzero;
+\draw[color=red!10!blau,line width=1.0pt] \ellFone;
+\draw[color=red!20!blau,line width=1.0pt] \ellFtwo;
+\draw[color=red!30!blau,line width=1.0pt] \ellFthree;
+\draw[color=red!40!blau,line width=1.0pt] \ellFfour;
+\draw[color=red!50!blau,line width=1.0pt] \ellFfive;
+\draw[color=red!60!blau,line width=1.0pt] \ellFsix;
+\draw[color=red!70!blau,line width=1.0pt] \ellFseven;
+\draw[color=red!80!blau,line width=1.0pt] \ellFeight;
+\draw[color=red!90!blau,line width=1.0pt] \ellFnine;
+\draw[color=red!100!blau,line width=1.0pt] \ellFten;
+
+\draw[color=darkgreen!100!blau,line width=1.0pt] \ellEten;
+\draw[color=darkgreen!90!blau,line width=1.0pt] \ellEnine;
+\draw[color=darkgreen!80!blau,line width=1.0pt] \ellEeight;
+\draw[color=darkgreen!70!blau,line width=1.0pt] \ellEseven;
+\draw[color=darkgreen!60!blau,line width=1.0pt] \ellEsix;
+\draw[color=darkgreen!50!blau,line width=1.0pt] \ellEfive;
+\draw[color=darkgreen!40!blau,line width=1.0pt] \ellEfour;
+\draw[color=darkgreen!30!blau,line width=1.0pt] \ellEthree;
+\draw[color=darkgreen!20!blau,line width=1.0pt] \ellEtwo;
+\draw[color=darkgreen!10!blau,line width=1.0pt] \ellEone;
+\draw[color=darkgreen!0!blau,line width=1.0pt] \ellEzero;
+
+\end{scope}
+
+\draw[line width=0.2pt] (\dx,0) -- (\dx,10.1);
+
+\begin{scope}
+ \clip ({0.7*\dx},0) rectangle (\dx,10.1);
+ \draw[color=white,line width=0.5pt] \ellEzero -- (\dx,{1.571*\dy});
+\end{scope}
+
+\draw[->] ({-0.1},0) -- ({\dx+0.3},0) coordinate[label={$x$}];
+\foreach \x in {0,0.2,...,1.0}{
+ \draw ({\x*\dx},-0.1) -- ({\x*\dx},0.1);
+ \node at ({\x*\dx},0) [below] {$\pgfmathprintnumber{\x}$};
+}
+\draw[->] (0,{-0.1}) -- (0,{10.3}) coordinate[label={right:$y$}];
+\foreach \y in {0.5,1,1.5}{
+ %\draw[line width=0.2pt] (0,{\y*\dy}) -- (\dx,{\y*\dy});
+ \draw (-0.1,{\y*\dy}) -- (0.1,{\y*\dy});
+ \node at (0,{\y*\dy}) [left] {$\pgfmathprintnumber{\y}$};
+}
+\foreach \c in {0,10,...,100}{
+ \pgfmathparse{\c/100}
+ \xdef\k{\pgfmathresult}
+ \node[color=red!\c!blau] at ({0.02*\dx},{0.95*\dy+0.04*\c})
+ [right] {$k=\pgfmathprintnumber{\k}$};
+}
+\foreach \c in {0,10,...,100}{
+ \pgfmathparse{\c/100}
+ \xdef\k{\pgfmathresult}
+ \node[color=darkgreen!\c!blau] at ({0.98*\dx},{0.75*\dy-0.04*\c})
+ [left] {$k=\pgfmathprintnumber{\k}$};
+}
+
+\draw ({\dx-0.1},{1.571*\dy}) -- ({\dx+0.1},{1.571*\dy});
+\node at (\dx,{1.571*\dy}) [right] {$\frac{\pi}2$};
+\end{scope}
+
+\end{tikzpicture}
+\end{document}
+
diff --git a/buch/chapters/110-elliptisch/lemniskate.tex b/buch/chapters/110-elliptisch/lemniskate.tex
index d4ad019..7083b63 100644
--- a/buch/chapters/110-elliptisch/lemniskate.tex
+++ b/buch/chapters/110-elliptisch/lemniskate.tex
@@ -127,7 +127,7 @@ s(r)
Das unvollständige elliptische Integral erster Art mit Parameter
$m=-1$ ist
\[
-F(r,-1)
+K(r,-1)
=
\int_0^x \frac{dt}{\sqrt{(1-t^2)(1-(-1)t^2)}}
=
diff --git a/buch/chapters/references.bib b/buch/chapters/references.bib
index b047d23..dd813d0 100644
--- a/buch/chapters/references.bib
+++ b/buch/chapters/references.bib
@@ -68,3 +68,10 @@
url = {https://www.stephenwolfram.com/publications/history-future-special-functions/}
}
+@book{buch:smirnov32,
+ title = {Lehrgang der höheren Mathematik},
+ author = {Wladimir Ivanowitsch Smirnow},
+ volume = { III/2 },
+ publisher = {VEB Deutscher Verlag der Wissenschaften},
+ year = 1979
+}