aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Müller <andreas.mueller@ost.ch>2022-08-12 15:18:49 +0200
committerGitHub <noreply@github.com>2022-08-12 15:18:49 +0200
commit52d072fbb74ac9afa1b5d12dbf66201ce83bf23f (patch)
tree2d993fb81f2e4b1b5ef40c12a58c65267fcb1ad2
parentMerge pull request #46 from Runterer/master (diff)
parent1. Ueberarbeitung (diff)
downloadSeminarSpezielleFunktionen-52d072fbb74ac9afa1b5d12dbf66201ce83bf23f.tar.gz
SeminarSpezielleFunktionen-52d072fbb74ac9afa1b5d12dbf66201ce83bf23f.zip
Merge pull request #47 from f1bi1n/master
1. Ueberarbeitung
-rw-r--r--buch/papers/0f1/teil1.tex22
-rw-r--r--buch/papers/0f1/teil2.tex21
-rw-r--r--buch/papers/0f1/teil3.tex18
3 files changed, 30 insertions, 31 deletions
diff --git a/buch/papers/0f1/teil1.tex b/buch/papers/0f1/teil1.tex
index 2ca9647..f697f45 100644
--- a/buch/papers/0f1/teil1.tex
+++ b/buch/papers/0f1/teil1.tex
@@ -6,12 +6,12 @@
\section{Mathematischer Hintergrund
\label{0f1:section:mathHintergrund}}
\rhead{Mathematischer Hintergrund}
-Basierend auf den Herleitungen des vorhergehenden Kapitels \ref{buch:rekursion:section:hypergeometrische-funktion}, werden im nachfolgenden Abschnitt nochmals die Resultate
+Basierend auf den Herleitungen des vorhergehenden Abschnittes \ref{buch:rekursion:section:hypergeometrische-funktion}, werden im nachfolgenden Abschnitt nochmals die Resultate
beschrieben.
\subsection{Hypergeometrische Funktion
\label{0f1:subsection:hypergeometrisch}}
-Als Grundlage der umgesetzten Algorithmen dient die Hypergeometrische Funktion $\mathstrut_0F_1$. Diese ist eine Unterfunktion der allgemein definierten Funktion $\mathstrut_pF_q$.
+Als Grundlage der umgesetzten Algorithmen dient die hypergeometrische Funktion $\mathstrut_0F_1$. Diese ist eine Anwendung der allgemein definierten Funktion $\mathstrut_pF_q$.
\begin{definition}
\label{0f1:math:qFp:def}
@@ -42,7 +42,7 @@ Angewendet auf die Funktion $\mathstrut_pF_q$ ergibt sich für $\mathstrut_0F_1$
\mathstrut_0F_1
\biggl(
\begin{matrix}
- \\
+ \\-
b_1
\end{matrix}
;
@@ -60,22 +60,22 @@ Angewendet auf die Funktion $\mathstrut_pF_q$ ergibt sich für $\mathstrut_0F_1$
\subsection{Airy Funktion
\label{0f1:subsection:airy}}
-Die Airy-Funktion $Ai(x)$ und die verwandte Funktion $Bi(x)$ werden als Airy-Funktion bezeichnet. Sie werden zur Lösung verschiedener physikalischer Probleme benutzt, wie zum Beispiel zur Lösung der Schrödinger-Gleichung. \cite{0f1:wiki-airyFunktion}
+Die Funktion Ai(x) und die verwandte Funktion Bi(x) werden als Airy-Funktion bezeichnet. Sie werden zur Lösung verschiedener physikalischer Probleme benutzt, wie zum Beispiel zur Lösung der Schrödinger-Gleichung \cite{0f1:wiki-airyFunktion}.
\begin{definition}
\label{0f1:airy:differentialgleichung:def}
Die Differentialgleichung
$y'' - xy = 0$
- heisst die {\em Airy-Differentialgleichung}. \cite{0f1:wiki-airyFunktion}
+ heisst die {\em Airy-Differentialgleichung}.
\end{definition}
-Die Airy Funktion lässt sich auf verschiedene Arten darstellen. \cite{0f1:wiki-airyFunktion}
-Als hypergeometrische Funktion berechnet, ergibt sich wie in Kapitel \ref{buch:differentialgleichungen:section:hypergeometrisch} hergeleitet, folgende Lösungen der Airy-Differentialgleichung zu den Anfangsbedingungen $A(0)=1$ und $A'(0)=0$, sowie $B(0)=0$ und $B'(0)=0$.
+Die Airy Funktion lässt sich auf verschiedene Arten darstellen.
+Als hypergeometrische Funktion berechnet, ergibt sich wie in Abschnitt \ref{buch:differentialgleichungen:section:hypergeometrisch} hergeleitet, folgende Lösungen der Airy-Differentialgleichung zu den Anfangsbedingungen $Ai(0)=1$ und $Ai'(0)=0$, sowie $Bi(0)=0$ und $Bi'(0)=0$.
\begin{align}
\label{0f1:airy:hypergeometrisch:eq}
Ai(x)
-=
+=&
\sum_{k=0}^\infty
\frac{1}{(\frac23)_k} \frac{1}{k!}\biggl(\frac{x^3}{9}\biggr)^k
=
@@ -84,7 +84,7 @@ Ai(x)
\biggr).
\\
Bi(x)
-=
+=&
\sum_{k=0}^\infty
\frac{1}{(\frac43)_k} \frac{1}{k!}\biggl(\frac{x^3}{9}\biggr)^k
=
@@ -95,7 +95,7 @@ x\cdot\mathstrut_0F_1\biggl(
\qedhere
\end{align}
-In diesem speziellem Fall wird die Airy Funktion $Ai(x)$ \eqref{0f1:airy:hypergeometrisch:eq}
-benutzt, um die Stabilität der Algorithmen zu $\mathstrut_0F_1$ zu überprüfen.
+Um die Stabilität der Algorithmen zu $\mathstrut_0F_1$ zu überprüfen, wird in diesem speziellem Fall die Airy Funktion $Ai(x)$ \eqref{0f1:airy:hypergeometrisch:eq}
+benutzt.
diff --git a/buch/papers/0f1/teil2.tex b/buch/papers/0f1/teil2.tex
index 9269961..15a1c44 100644
--- a/buch/papers/0f1/teil2.tex
+++ b/buch/papers/0f1/teil2.tex
@@ -6,12 +6,12 @@
\section{Umsetzung
\label{0f1:section:teil2}}
\rhead{Umsetzung}
-Zur Umsetzung wurden drei verschiedene Ansätze gewählt.\cite{0f1:code} Dabei wurde der Schwerpunkt auf die Funktionalität und eine gute Lesbarkeit des Codes gelegt.
-Die Unterprogramme wurde jeweils, wie die GNU Scientific Library, in C geschrieben. Die Zwischenresultate wurden vom Hauptprogramm in einem CSV-File gespeichert. Anschliessen wurde mit der Matplot-Libray in Python die Resultate geplottet.
+Zur Umsetzung wurden drei verschiedene Ansätze gewählt \cite{0f1:code}. Dabei wurde der Schwerpunkt auf die Funktionalität und eine gute Lesbarkeit des Codes gelegt.
+Die Unterprogramme wurde jeweils, wie die GNU Scientific Library, in C geschrieben. Die Zwischenresultate wurden vom Hauptprogramm in einem CSV-File gespeichert. Anschliessen wurde mit der Matplot-Library in Python die Resultate geplottet.
\subsection{Potenzreihe
\label{0f1:subsection:potenzreihe}}
-Die naheliegendste Lösung ist die Programmierung der Potenzreihe. Allerdings ist ein Problem dieser Umsetzung \ref{0f1:listing:potenzreihe}, dass die Fakultät im Nenner schnell grosse Werte annimmt und so der Bruch gegen Null strebt. Spätesten ab $k=167$ stösst diese Umsetzung \eqref{0f1:umsetzung:0f1:eq} an ihre Grenzen, da die Fakultät von $168$ eine Bereichsüberschreitung des \textit{double} Bereiches darstellt. \cite{0f1:double}
+Die naheliegendste Lösung ist die Programmierung der Potenzreihe. Allerdings ist ein Problem dieser Umsetzung \ref{0f1:listing:potenzreihe}, dass die Fakultät im Nenner schnell grosse Werte annimmt und so der Bruch gegen Null strebt. Spätesten ab $k=167$ stösst diese Umsetzung \eqref{0f1:umsetzung:0f1:eq} an ihre Grenzen, da die Fakultät von $168$ eine Bereichsüberschreitung des \textit{double} Bereiches darstellt \cite{0f1:double}.
\begin{align}
\label{0f1:umsetzung:0f1:eq}
@@ -34,23 +34,22 @@ Ein endlicher Kettenbruch ist ein Bruch der Form
\begin{equation*}
a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{b_3}{a_3+\cdots}}}
\end{equation*}
-in welchem $a_0, a_1,\dots,a_n$ und $b_1,b_2,\dots,b_n$ ganze Zahlen darstellen.
+in welchem $a_0, a_1,\dots,a_n$ und $b_1,b_2,\dots,b_n$ ganze Zahlen sind.
Die Kurzschreibweise für einen allgemeinen Kettenbruch ist
\begin{equation*}
a_0 + \frac{a_1|}{|b_1} + \frac{a_2|}{|b_2} + \frac{a_3|}{|b_3} + \cdots
\end{equation*}
-und ist somit verknüpfbar mit der Potenzreihe.
-\cite{0f1:wiki-kettenbruch}
-Angewendet auf die Funktion $\mathstrut_0F_1$ bedeutet dies\cite{0f1:wiki-fraction}:
+\cite{0f1:wiki-kettenbruch}.
+Angewendet auf die Funktion $\mathstrut_0F_1$ bedeutet dies \cite{0f1:wiki-fraction}:
\begin{equation*}
\mathstrut_0F_1(;c;z) = 1 + \frac{z}{c\cdot1!} + \frac{z^2}{c(c+1)\cdot2!} + \frac{z^3}{c(c+1)(c+2)\cdot3!} + \cdots
\end{equation*}
-Nach allen Umformungen ergibt sich folgender, irregulärer Kettenbruch \eqref{0f1:math:kettenbruch:0f1:eq}
+Umgeformt ergibt sich folgender Kettenbruch
\begin{equation}
\label{0f1:math:kettenbruch:0f1:eq}
\mathstrut_0F_1(;c;z) = 1 + \cfrac{\cfrac{z}{c}}{1+\cfrac{-\cfrac{z}{2(c+1)}}{1+\cfrac{z}{2(c+1)}+\cfrac{-\cfrac{z}{3(c+2)}}{1+\cfrac{z}{5(c+4)} + \cdots}}},
\end{equation}
-der als Code \ref{0f1:listing:kettenbruchIterativ} umgesetzt wurde.
+der als Code (siehe: Listing \ref{0f1:listing:kettenbruchIterativ}) umgesetzt wurde.
\cite{0f1:wolfram-0f1}
\lstinputlisting[style=C,float,caption={Iterativ umgesetzter Kettenbruch.},label={0f1:listing:kettenbruchIterativ}, firstline=8]{papers/0f1/listings/kettenbruchIterativ.c}
@@ -138,7 +137,7 @@ Nach vollständiger Induktion ergibt sich für den Schritt $k$, die Matrix
\end{equation}
Und Schlussendlich kann der Näherungsbruch
\[
-\frac{Ak}{Bk}
+\frac{A_k}{B_k}
\]
berechnet werden.
@@ -166,7 +165,7 @@ B_{k+1} &= B_{k-1} \cdot b_k + B_k \cdot a_k
Näherungsbruch: \qquad$\displaystyle\frac{A_k}{B_k}$
\end{itemize}
-Ein grosser Vorteil dieser Umsetzung \ref{0f1:listing:kettenbruchRekursion} ist, dass im Vergleich zum Code \ref{0f1:listing:kettenbruchIterativ} eine Division gespart werden kann und somit weniger Rundungsfehler entstehen können.
+Ein grosser Vorteil dieser Umsetzung als Rekursionsformel ist \ref{0f1:listing:kettenbruchRekursion}, dass im Vergleich zum Code \ref{0f1:listing:kettenbruchIterativ} eine Division gespart werden kann und somit weniger Rundungsfehler entstehen können.
%Code
\lstinputlisting[style=C,float,caption={Rekursionsformel für Kettenbruch.},label={0f1:listing:kettenbruchRekursion}, firstline=8]{papers/0f1/listings/kettenbruchRekursion.c} \ No newline at end of file
diff --git a/buch/papers/0f1/teil3.tex b/buch/papers/0f1/teil3.tex
index 2855e26..72b1b21 100644
--- a/buch/papers/0f1/teil3.tex
+++ b/buch/papers/0f1/teil3.tex
@@ -6,19 +6,19 @@
\section{Auswertung
\label{0f1:section:teil3}}
\rhead{Resultate}
-Im Verlauf des Seminares hat sich gezeigt,
+Im Verlauf dieser Arbeit hat sich gezeigt,
das ein einfacher mathematischer Algorithmus zu implementieren gar nicht so einfach ist.
So haben alle drei umgesetzten Ansätze Probleme mit grossen negativen $z$ in der Funktion $\mathstrut_0F_1(;c;z)$.
-Ebenso kann festgestellt werden,dass je grösser der Wert $z$ in $\mathstrut_0F_1(;c;z)$ wird, desto mehr weichen die berechneten Resultate von den Erwarteten ab. \cite{0f1:wolfram-0f1}
+Ebenso kann festgestellt werden, dass je grösser der Wert $z$ in $\mathstrut_0F_1(;c;z)$ wird, desto mehr weichen die berechneten Resultate von den Erwarteten ab \cite{0f1:wolfram-0f1}.
\subsection{Konvergenz
\label{0f1:subsection:konvergenz}}
Es zeigt sich in Abbildung \ref{0f1:ausblick:plot:airy:konvergenz}, dass schon nach drei Iterationen ($k = 3$) die Funktionen schon genaue Resultate im Bereich von -2 bis 2 liefert. Ebenso kann festgestellt werden, dass der Kettenbruch schneller konvergiert und im positiven Bereich sogar mit der Referenzfunktion $Ai(x)$ übereinstimmt. Da die Rekursionsformel \ref{0f1:listing:kettenbruchRekursion} eine Abwandlung des Kettenbruches ist, verhalten sich die Funktionen in diesem Fall gleich.
-Erst wenn mehrere Durchläufe gemacht werden, um die Genauigkeit zu verbessern, ist der Kettenbruch den anderen zwei Algorithmen, bezüglich Konvergenz überlegen.
-Interessant ist auch, dass die Rekursionsformel nahezu gleich schnell wie die Potenzreihe konvergiert, aber sich danach einschwingt. Dieses Verhalten ist auch bei grösseren $z$ zu beobachten, allerdings ist dann die Differenz zwischen dem ersten lokalen Minimum von k bis zum Abbruch kleiner.
-\ref{0f1:ausblick:plot:konvergenz:positiv}
-Dieses Phänomen ist auf die Lösung der Rekursionsformel zurück zu führen.\ref{0f1:math:loesung:eq} Da im Gegensatz die ganz kleinen Werte nicht zu einer Konvergenz wie beim Kettenbruch führen, sondern sich noch eine Zeit lang durch die Multiplikation aufschwingen.
+Erst wenn mehrerer Iterationen gemacht werden, um die Genauigkeit zu verbessern, ist der Kettenbruch den anderen zwei Algorithmen, bezüglich Konvergenz überlegen.
+Interessant ist auch, dass die Rekursionsformel nahezu gleich schnell wie die Potenzreihe konvergiert, aber sich danach einschwingt \ref{0f1:ausblick:plot:konvergenz:positiv}. Dieses Verhalten ist auch bei grösseren $z$ zu beobachten, allerdings ist dann die Differenz zwischen dem ersten lokalen Minimum von k bis zum Abbruch kleiner
+\ref{0f1:ausblick:plot:konvergenz:positiv}.
+Dieses Phänomen ist auf die Lösung der Rekursionsformel zurück zu führen\eqref{0f1:math:loesung:eq}. Da im Gegensatz die ganz kleinen Werte nicht zu einer Konvergenz wie beim Kettenbruch führen, sondern sich noch eine Zeit lang durch die Multiplikation aufschwingen.
Ist $z$ negativ wie im Abbild \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies zu einer Gegenseitigen Kompensation von negativen und positiven Termen so bricht die Rekursionsformel hier zusammen mit der Potenzreihe ab.
Die ansteigende Differenz mit anschliessender, ist aufgrund der sich alternierenden Termen mit wechselnden Vorzeichens zu erklären.
@@ -27,10 +27,10 @@ Die ansteigende Differenz mit anschliessender, ist aufgrund der sich alternieren
\label{0f1:subsection:Stabilitaet}}
Verändert sich der Wert von z in $\mathstrut_0F_1(;c;z)$ gegen grössere positive Werte, wie zum Beispiel $c = 800$ liefert die Kettenbruch-Funktion \ref{0f1:listing:kettenbruchIterativ} \verb+inf+ zurück. Dies könnte durch ein Abbruchkriterien abgefangen werden. Allerdings würde das, bei grossen Werten zulasten der Genauigkeit gehen. Trotzdem könnte, je nach Anwendung, auf ein paar Nachkommastellen verzichtet werden.
-Wohingegen die Potenzreihe \ref{0f1:listing:potenzreihe} das Problem hat, dass je mehr Terme berechnet werden, desto schneller wächst die Fakultät und irgendwann gibt es eine Bereichsüberschreitung von \verb+double+. Schlussendlich gibt das Unterprogramm das Resultat \verb+-nan(ind)+ zurück.
-Die Rekursionformel \ref{0f1:listing:kettenbruchRekursion} liefert für sehr grosse positive Werte die genausten Ergebnisse, verglichen mit der GNU Scientific Library. Wie schon vermutet ist die Rekursionsformel, im positivem Bereich, der stabilste Algorithmus. Um die Stabilität zu gewährleisten, muss wie in \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, die Iterationstiefe $k$ genug gross gewählt werden.
+Wohingegen die Potenzreihe \eqref{0f1:listing:potenzreihe} das Problem hat, dass je mehr Terme berechnet werden, desto schneller wächst die Fakultät und irgendwann gibt es eine Bereichsüberschreitung von \verb+double+. Schlussendlich gibt das Unterprogramm das Resultat \verb+-nan(ind)+ zurück.
+Die Rekursionformel \eqref{0f1:listing:kettenbruchRekursion} liefert für sehr grosse positive Werte die genausten Ergebnisse, verglichen mit der GNU Scientific Library. Wie schon vermutet ist die Rekursionsformel, im positivem Bereich, der stabilste Algorithmus. Um die Stabilität zu gewährleisten, muss wie in Abbild \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, die Iterationstiefe $k$ genug gross gewählt werden.
-Im negativem Bereich sind alle gewählten und umgesetzten Ansätze instabil. Grund dafür ist die Fakultät im Nenner, was zum Phänomen der Auslöschung führt.\cite{0f1:SeminarNumerik} Schön zu beobachten ist dies in der Abbildung \ref{0f1:ausblick:plot:airy:stabilitaet} mit der Airy-Funktion als Test. So sind sowohl der Kettenbruch, als auch die Rekursionsformel bis ungefähr $\frac{-15^3}{9}$ stabil. Dies macht auch Sinn, da beide auf der gleichen mathematischen Grundlage basieren. Danach verhält sich allerdings die Instabilität unterschiedlich. Das unterschiedliche Verhalten kann damit erklärt werden, dass beim Kettenbruch jeweils eine zusätzliche Division stattfindet. Diese Unterschiede sind auch in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} festzustellen.
+Im negativem Bereich sind alle gewählten und umgesetzten Ansätze instabil. Grund dafür ist die Potenz von z, was zum Phänomen der Auslöschung führt \cite{0f1:SeminarNumerik}. Schön zu beobachten ist dies in der Abbildung \ref{0f1:ausblick:plot:airy:stabilitaet} mit der Airy-Funktion als Test. So sind sowohl der Kettenbruch, als auch die Rekursionsformel bis ungefähr $\frac{-15^3}{9}$ stabil. Dies macht auch Sinn, da beide auf der gleichen mathematischen Grundlage basieren. Danach verhält sich allerdings die Instabilität unterschiedlich. Das unterschiedliche Verhalten kann damit erklärt werden, dass beim Kettenbruch jeweils eine zusätzliche Division stattfindet. Diese Unterschiede sind auch in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} festzustellen.