From 10a72bf8d66de28f3f1b5598c37c32d29a306893 Mon Sep 17 00:00:00 2001 From: Fabian <@> Date: Tue, 16 Aug 2022 18:25:31 +0200 Subject: 3. Ueberarbeitung, Verbesserungen --- buch/papers/0f1/teil0.tex | 4 ++-- buch/papers/0f1/teil1.tex | 12 +++++------- buch/papers/0f1/teil2.tex | 20 ++++++++++++-------- buch/papers/0f1/teil3.tex | 12 ++++++------ 4 files changed, 25 insertions(+), 23 deletions(-) (limited to 'buch/papers/0f1') diff --git a/buch/papers/0f1/teil0.tex b/buch/papers/0f1/teil0.tex index 9aca368..335cf92 100644 --- a/buch/papers/0f1/teil0.tex +++ b/buch/papers/0f1/teil0.tex @@ -6,10 +6,10 @@ \section{Ausgangslage\label{0f1:section:ausgangslage}} \rhead{Ausgangslage} Die hypergeometrische Funktion $\mathstrut_0F_1$ wird in vielen Funktionen als Basisfunktion benutzt, -zum Beispiel um die Airy Funktion zu berechnen. +zum Beispiel um die Airy-Funktion zu berechnen. In der GNU Scientific Library \cite{0f1:library-gsl} ist die Funktion $\mathstrut_0F_1$ vorhanden. -Allerdings wirft die Funktion bei negativen Übergabenwerten wie zum Beispiel \verb+gsl_sf_hyperg_0F1(1, -1)+ eine Exception. +Allerdings wirft die Funktion bei negativen Übergabewerten wie zum Beispiel \verb+gsl_sf_hyperg_0F1(1, -1)+ eine Exception. Bei genauerer Untersuchung hat sich gezeigt, dass die Funktion je nach Betriebssystem funktioniert oder eben nicht. So kann die Funktion unter Windows fehlerfrei aufgerufen werden, beim Mac OS und Linux sind negative Übergabeparameter im Moment nicht möglich. Ziel dieser Arbeit war es zu evaluieren, ob es mit einfachen mathematischen Operationen möglich ist, die hypergeometrische Funktion $\mathstrut_0F_1$ zu implementieren. diff --git a/buch/papers/0f1/teil1.tex b/buch/papers/0f1/teil1.tex index c0f857d..8d00f95 100644 --- a/buch/papers/0f1/teil1.tex +++ b/buch/papers/0f1/teil1.tex @@ -6,8 +6,7 @@ \section{Mathematischer Hintergrund \label{0f1:section:mathHintergrund}} \rhead{Mathematischer Hintergrund} -Basierend auf den Herleitungen des Abschnittes \ref{buch:rekursion:section:hypergeometrische-funktion}, werden im nachfolgenden Abschnitt nochmals die Resultate -beschrieben. +Basierend auf den Herleitungen des Abschnittes \ref{buch:rekursion:section:hypergeometrische-funktion} werden im nachfolgenden Abschnitt nochmals die Resultate beschrieben. \subsection{Hypergeometrische Funktion \label{0f1:subsection:hypergeometrisch}} @@ -59,7 +58,7 @@ Angewendet auf die Funktion $\mathstrut_pF_q$ ergibt sich für $\mathstrut_0F_1$ -\subsection{Airy Funktion +\subsection{Airy-Funktion \label{0f1:subsection:airy}} Die Funktion $\operatorname{Ai}(x)$ und die verwandte Funktion $\operatorname{Bi}(x)$ werden als Airy-Funktion bezeichnet. Sie werden zur Lösung verschiedener physikalischer Probleme benutzt, wie zum Beispiel zur Lösung der Schrödinger-Gleichung \cite{0f1:wiki-airyFunktion}. @@ -70,8 +69,8 @@ Die Funktion $\operatorname{Ai}(x)$ und die verwandte Funktion $\operatorname{Bi heisst die {\em Airy-Differentialgleichung}. \end{definition} -Die Airy Funktion lässt sich auf verschiedene Arten darstellen. -Als hypergeometrische Funktion berechnet, ergibt sich wie in Abschnitt \ref{buch:differentialgleichungen:section:hypergeometrisch} hergeleitet, folgende Lösungen der Airy-Differentialgleichung zu den Anfangsbedingungen $\operatorname{Ai}(0)=1$ und $\operatorname{Ai}'(0)=0$, sowie $\operatorname{Bi}(0)=0$ und $\operatorname{Bi}'(0)=1$. +Die Airy-Funktion lässt sich auf verschiedene Arten darstellen. +Als hypergeometrische Funktion berechnet, ergeben sich wie in Abschnitt \ref{buch:differentialgleichungen:section:hypergeometrisch} hergeleitet, folgende Lösungen der Airy-Differentialgleichung zu den Anfangsbedingungen $\operatorname{Ai}(0)=1$ und $\operatorname{Ai}'(0)=0$, sowie $\operatorname{Bi}(0)=0$ und $\operatorname{Bi}'(0)=1$: \begin{align} \label{0f1:airy:hypergeometrisch:eq} @@ -96,7 +95,6 @@ x\cdot\mathstrut_0F_1\biggl( \qedhere \end{align} -Um die Stabilität der Algorithmen zu $\mathstrut_0F_1$ zu überprüfen, wird in dieser Arbeit die Airy Funktion $\operatorname{Ai}(x)$ \eqref{0f1:airy:hypergeometrisch:eq} -benutzt. +Um die Stabilität der Algorithmen zu $\mathstrut_0F_1$ zu überprüfen, wird in dieser Arbeit die Airy Funktion $\operatorname{Ai}(x)$ benutzt. diff --git a/buch/papers/0f1/teil2.tex b/buch/papers/0f1/teil2.tex index ef9f55e..9b3a586 100644 --- a/buch/papers/0f1/teil2.tex +++ b/buch/papers/0f1/teil2.tex @@ -11,7 +11,7 @@ Die Unterprogramme wurde jeweils, wie die GNU Scientific Library, in C geschrieb \subsection{Potenzreihe \label{0f1:subsection:potenzreihe}} -Die naheliegendste Lösung ist die Programmierung der Potenzreihe \eqref{0f1:umsetzung:0f1:eq}. +Die naheliegendste Lösung ist die Programmierung der Potenzreihe \begin{align} \label{0f1:umsetzung:0f1:eq} @@ -23,7 +23,7 @@ Die naheliegendste Lösung ist die Programmierung der Potenzreihe \eqref{0f1:ums \frac{1}{c} +\frac{z^1}{(c+1) \cdot 1} + \cdots - + \frac{z^{20}}{c(c+1)(c+2)\cdots(c+19) \cdot 2.4 \cdot 10^{18}} + + \frac{z^{20}}{c(c+1)(c+2)\cdots(c+19) \cdot 2.4 \cdot 10^{18}}. \end{align} \lstinputlisting[style=C,float,caption={Potenzreihe.},label={0f1:listing:potenzreihe}, firstline=59]{papers/0f1/listings/potenzreihe.c} @@ -31,15 +31,17 @@ Die naheliegendste Lösung ist die Programmierung der Potenzreihe \eqref{0f1:ums \subsection{Kettenbruch \label{0f1:subsection:kettenbruch}} Eine weitere Variante zur Berechnung von $\mathstrut_0F_1(;c;z)$ ist die Umsetzung als Kettenbruch. -Der Vorteil einer Umsetzung als Kettenbruch gegenüber der Potenzreihe, ist die schnellere Konvergenz. +Der Vorteil einer Umsetzung als Kettenbruch gegenüber der Potenzreihe ist die schnellere Konvergenz. +\subsubsection{Grundlage} Ein endlicher Kettenbruch \cite{0f1:wiki-kettenbruch} ist ein Bruch der Form \begin{equation*} -a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{b_3}{a_3+\cdots}}} +a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{b_3}{a_3+\cdots}}}, \end{equation*} in welchem $a_0, a_1,\dots,a_n$ und $b_1,b_2,\dots,b_n$ ganze Zahlen sind. -Nimmt man nun folgenden Gleichung \cite{0f1:wiki-fraction}: +\subsubsection{Rekursionsbeziehungen und Kettenbrüche} +Nimmt man nun folgende Gleichung \cite{0f1:wiki-fraction}: \begin{equation*} f_{i-1} - f_i = k_i z f_{i+1}, \end{equation*} @@ -48,7 +50,7 @@ Ergibt sich folgender Zusammenhang: \begin{equation*} \cfrac{f_i}{f_{i-1}} = \cfrac{1}{1+k_iz\cfrac{f_{i+1}}{f_i}} \end{equation*} - +\subsubsection{Rekursion für $\mathstrut_0F_1$} Angewendet auf die Funktion $\mathstrut_0F_1$ bedeutet dies: \begin{equation} \label{0f1:math:potenzreihe:0f1:eq} @@ -68,6 +70,7 @@ erhält man: \cfrac{\mathstrut_0F_1(;c+1;z)}{\mathstrut_0F_1(;c;z)} = \cfrac{1}{1+\cfrac{\cfrac{z}{c(c+1)}}{1+\cfrac{\cfrac{z}{(c+1)(c+2)}}{1+\cfrac{\cfrac{z}{(c+2)(c+3)}}{\cdots}}}}. \end{equation*} +\subsubsection{Algorithmus} Mit weiteren Relationen ergibt sich nach Wolfram Alpha \cite{0f1:wolfram-0f1} folgender Kettenbruch \begin{equation} \label{0f1:math:kettenbruch:0f1:eq} @@ -92,7 +95,7 @@ lässt sich zu \cfrac{A_k}{B_k} = \cfrac{b_{k+1}}{a_{k+1} + \cfrac{p}{q}} = \frac{b_{k+1} \cdot q}{a_{k+1} \cdot q + p} \end{align*} umformen. -Dies lässt sich auch durch die folgende Matrizenschreibweise ausdrücken: +Dies lässt sich auch durch die folgende Matrizenschreibweise \begin{equation*} \begin{pmatrix} A_k\\ @@ -112,6 +115,7 @@ Dies lässt sich auch durch die folgende Matrizenschreibweise ausdrücken: \end{pmatrix}. %\label{0f1:math:rekursionsformel:herleitung} \end{equation*} +ausdrücken. Wendet man dies nun auf den Kettenbruch in der Form \begin{equation*} \frac{A_k}{B_k} = a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{\cdots}{\cdots+\cfrac{b_{k-1}}{a_{k-1} + \cfrac{b_k}{a_k}}}}} @@ -166,7 +170,7 @@ Und schlussendlich kann der Näherungsbruch berechnet werden. -\subsubsection{Lösung} +\subsubsection{Algorithmus} Die Berechnung von $A_k, B_k$ gemäss \eqref{0f1:math:matrix:ende:eq} kann man auch ohne die Matrizenschreibweise \cite{0f1:kettenbrueche} aufschreiben: \begin{itemize} \item Startbedingungen: diff --git a/buch/papers/0f1/teil3.tex b/buch/papers/0f1/teil3.tex index b283b07..d7cdfe8 100644 --- a/buch/papers/0f1/teil3.tex +++ b/buch/papers/0f1/teil3.tex @@ -13,9 +13,9 @@ Ebenso kann festgestellt werden, dass je grösser der Wert $z$ in $\mathstrut_0F \subsection{Konvergenz \label{0f1:subsection:konvergenz}} -Es zeigt sich in Abbildung \ref{0f1:ausblick:plot:airy:konvergenz}, dass nach drei Iterationen ($k = 3$) die Funktionen genaue Resultate im Bereich von $-2$ bis $2$ liefert. Ebenso kann festgestellt werden, dass der Kettenbruch schneller konvergiert und im positiven Bereich sogar mit der Referenzfunktion $\operatorname{Ai}(x)$ übereinstimmt. Da die Rekursionsformel eine Abwandlung des Kettenbruches ist, verhalten sich die Funktionen in diesem Fall gleich. +Es zeigt sich in Abbildung \ref{0f1:ausblick:plot:airy:konvergenz}, dass nach drei Iterationen ($k = 3$) die Funktionen genaue Resultate im Bereich von $-2$ bis $2$ liefert. Ebenso kann festgestellt werden, dass der Kettenbruch schneller konvergiert und im positiven Bereich mit der Referenzfunktion $\operatorname{Ai}(x)$ übereinstimmt. Da die Rekursionsformel eine Abwandlung des Kettenbruches ist, verhalten sich die Funktionen in diesem Fall gleich. -Erst wenn mehrerer Iterationen gemacht werden, um die Genauigkeit zu verbessern, ist der Kettenbruch den anderen zwei Algorithmen bezüglich Konvergenz überlegen. +Erst wenn mehrerer Iterationen gerechnet 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, wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} zu beobachten ist, 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. Dieses Phänomen ist auf die Lösung der Rekursionsformel \eqref{0f1:math:matrix:ende:eq} zurück zu führen. 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. @@ -29,7 +29,7 @@ Verändert sich der Wert von $z$ in $\mathstrut_0F_1(;c;z)$ gegen grössere posi Wohingegen die Potenzreihe (Listing \ref{0f1:listing:potenzreihe}) das Problem hat, dass je mehr Terme berechnet werden, desto schneller wächst die Fakultät im Nenner. Dies führt zu einer Bereichsüberschreitung des \verb+double+ Bereiches \cite{0f1:double}, der spätesten ab $k=167$ eintritt. Schlussendlich gibt das Unterprogramm das Resultat \verb+-nan(ind)+ zurück. Die Rekursionformel \eqref{0f1:listing:kettenbruchRekursion} liefert für sehr grosse positive Werte die genausten Ergebnisse, verglichen mit der GNU Scientific Library. Wie schon vermutet ist die Rekursionsformel, im positivem Bereich, der stabilste Algorithmus. Um die Konvergenz zu gewährleisten, muss wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, die Iterationstiefe $k$ genug gross gewählt werden. -Im negativem Bereich sind alle gewählten und umgesetzten Ansätze instabil. Grund dafür ist die Potenz von $z$, was zum Phänomen der Auslöschung \cite{0f1:SeminarNumerik} führt. Schön zu beobachten ist dies in der Abbildung \ref{0f1:ausblick:plot:airy:stabilitaet} mit der Airy-Funktion als Test. So sind sowohl die Potenzreihe, der Kettenbruch, als auch die Rekursionsformel bis ungefähr $\frac{-15^3}{9}$ stabil. Dies macht auch Sinn, da alle Algorithmen auf der gleichen mathematischen Grundlage basieren. Danach verhält sich allerdings die Instabilität unterschiedlich. Diese programmiertechnischen Unterschiede sind auch in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} und \ref{0f1:ausblick:plot:konvergenz:negativ} festzustellen. +Im negativem Bereich sind alle gewählten und umgesetzten Ansätze instabil. Grund dafür ist die Potenz von $z$, was zum Phänomen der Auslöschung \cite{0f1:SeminarNumerik} führt. Schön zu beobachten ist dies in der Abbildung \ref{0f1:ausblick:plot:airy:stabilitaet} mit der Airy-Funktion als Test. So sind nach Abbildung \ref{0f1:ausblick:plot:airy:stabilitaet} die Potenzreihe, der Kettenbruch, als auch die Rekursionsformel, bis ungefähr $\frac{-15^3}{9}$ stabil. Dies macht auch Sinn, da alle Algorithmen auf der gleichen mathematischen Grundlage basieren. Danach verhält sich allerdings die Instabilität unterschiedlich. Diese programmiertechnischen Unterschiede sind auch in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} und \ref{0f1:ausblick:plot:konvergenz:negativ} festzustellen. \begin{figure} \centering @@ -41,21 +41,21 @@ Im negativem Bereich sind alle gewählten und umgesetzten Ansätze instabil. Gru \begin{figure} \centering \includegraphics[width=0.8\textwidth]{papers/0f1/images/konvergenzPositiv.pdf} - \caption{Konvergenz mit positivem z; Logarithmisch, vorzeichenlose dargestellte Differenz vom erwarteten Endresultat. + \caption{Konvergenz mit positivem $z$; Logarithmisch, vorzeichenlose dargestellte Differenz vom erwarteten Endresultat. \label{0f1:ausblick:plot:konvergenz:positiv}} \end{figure} \begin{figure} \centering \includegraphics[width=0.8\textwidth]{papers/0f1/images/konvergenzNegativ.pdf} - \caption{Konvergenz mit negativem z; Logarithmisch, vorzeichenlose dargestellte Differenz vom erwarteten Endresultat. + \caption{Konvergenz mit negativem $z$; Logarithmisch, vorzeichenlose dargestellte Differenz vom erwarteten Endresultat. \label{0f1:ausblick:plot:konvergenz:negativ}} \end{figure} \begin{figure} \centering \includegraphics[width=1\textwidth]{papers/0f1/images/stabilitaet.pdf} - \caption{Stabilität der 3 Algorithmen verglichen mit der Referenz Funktion $\operatorname{Ai}(x)$. + \caption{Stabilität der drei Algorithmen verglichen mit der Referenz Funktion $\operatorname{Ai}(x)$. \label{0f1:ausblick:plot:airy:stabilitaet}} \end{figure} -- cgit v1.2.1 From cd9bd7f2fb6e1088130c9eef5a96ea996fd14947 Mon Sep 17 00:00:00 2001 From: Fabian <@> Date: Tue, 16 Aug 2022 21:44:28 +0200 Subject: 3. Ueberarbeitung, bilder --- buch/papers/0f1/images/konvergenzNegativ.pdf | Bin 18155 -> 18226 bytes buch/papers/0f1/images/konvergenzPositiv.pdf | Bin 18581 -> 17532 bytes buch/papers/0f1/teil3.tex | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) (limited to 'buch/papers/0f1') diff --git a/buch/papers/0f1/images/konvergenzNegativ.pdf b/buch/papers/0f1/images/konvergenzNegativ.pdf index 03b2ba1..232c964 100644 Binary files a/buch/papers/0f1/images/konvergenzNegativ.pdf and b/buch/papers/0f1/images/konvergenzNegativ.pdf differ diff --git a/buch/papers/0f1/images/konvergenzPositiv.pdf b/buch/papers/0f1/images/konvergenzPositiv.pdf index 2e45129..71b1042 100644 Binary files a/buch/papers/0f1/images/konvergenzPositiv.pdf and b/buch/papers/0f1/images/konvergenzPositiv.pdf differ diff --git a/buch/papers/0f1/teil3.tex b/buch/papers/0f1/teil3.tex index d7cdfe8..eb32c52 100644 --- a/buch/papers/0f1/teil3.tex +++ b/buch/papers/0f1/teil3.tex @@ -16,7 +16,7 @@ Ebenso kann festgestellt werden, dass je grösser der Wert $z$ in $\mathstrut_0F Es zeigt sich in Abbildung \ref{0f1:ausblick:plot:airy:konvergenz}, dass nach drei Iterationen ($k = 3$) die Funktionen genaue Resultate im Bereich von $-2$ bis $2$ liefert. Ebenso kann festgestellt werden, dass der Kettenbruch schneller konvergiert und im positiven Bereich mit der Referenzfunktion $\operatorname{Ai}(x)$ übereinstimmt. Da die Rekursionsformel eine Abwandlung des Kettenbruches ist, verhalten sich die Funktionen in diesem Fall gleich. Erst wenn mehrerer Iterationen gerechnet 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, wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} zu beobachten ist, 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. +Interessant ist auch, dass die Rekursionsformel nahezu gleich schnell wie die Potenzreihe konvergiert, aber sich danach, wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} zu beobachten ist, auf. 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. Dieses Phänomen ist auf die Lösung der Rekursionsformel \eqref{0f1:math:matrix:ende:eq} zurück zu führen. 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 in Abbildung \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies zu aufgrund des Vorzeichens zu alternierenden Termen. So steigt bei allen Algorithmen zuerst die Differenz zum erwarteten Endwert. Erst nach genügend Iterationen sind die Terme genügend klein, so dass sie das Endresultat nicht mehr signifikant beeinflussen. @@ -24,7 +24,7 @@ Auch hier konvergiert der Kettenbruch am schnellsten von allen Algorithmen. Eben \subsection{Stabilität \label{0f1:subsection:Stabilitaet}} -Verändert sich der Wert von $z$ in $\mathstrut_0F_1(;c;z)$ gegen grössere positive Werte, wie zum Beispiel $c = 800$ liefert die Kettenbruch-Funktion (Listing \ref{0f1:listing:kettenbruchIterativ}) \verb+inf+ zurück. Dies könnte durch ein Abbruchkriterien abgefangen werden. Allerdings würde das, bei grossen Werten zulasten der Genauigkeit gehen. Trotzdem könnte, je nach Anwendung, auf ein paar Nachkommastellen verzichtet werden. +Verändert sich der Wert von $z$ in $\mathstrut_0F_1(;c;z)$ gegen grössere positive Werte, wie zum Beispiel $c = 800$ liefert die Kettenbruch-Funktion (Listing \ref{0f1:listing:kettenbruchIterativ}) \verb+inf+ zurück. Dies könnte durch ein Abbruchkriterien abgefangen werden. Allerdings würde das bei grossen Werten zulasten der Genauigkeit gehen. Trotzdem könnte, je nach Anwendung, auf ein paar Nachkommastellen verzichtet werden. Wohingegen die Potenzreihe (Listing \ref{0f1:listing:potenzreihe}) das Problem hat, dass je mehr Terme berechnet werden, desto schneller wächst die Fakultät im Nenner. Dies führt zu einer Bereichsüberschreitung des \verb+double+ Bereiches \cite{0f1:double}, der spätesten ab $k=167$ eintritt. Schlussendlich gibt das Unterprogramm das Resultat \verb+-nan(ind)+ zurück. Die Rekursionformel \eqref{0f1:listing:kettenbruchRekursion} liefert für sehr grosse positive Werte die genausten Ergebnisse, verglichen mit der GNU Scientific Library. Wie schon vermutet ist die Rekursionsformel, im positivem Bereich, der stabilste Algorithmus. Um die Konvergenz zu gewährleisten, muss wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, die Iterationstiefe $k$ genug gross gewählt werden. -- cgit v1.2.1 From 7d969250f8860f407255091a61b0b441b172c524 Mon Sep 17 00:00:00 2001 From: Fabian <@> Date: Tue, 16 Aug 2022 22:53:23 +0200 Subject: 3.Ueberarbeitung, bilder2 --- buch/papers/0f1/images/konvergenzNegativ.pdf | Bin 18226 -> 18524 bytes buch/papers/0f1/images/konvergenzPositiv.pdf | Bin 17532 -> 18253 bytes buch/papers/0f1/teil3.tex | 12 +++++------- 3 files changed, 5 insertions(+), 7 deletions(-) (limited to 'buch/papers/0f1') diff --git a/buch/papers/0f1/images/konvergenzNegativ.pdf b/buch/papers/0f1/images/konvergenzNegativ.pdf index 232c964..07d2a44 100644 Binary files a/buch/papers/0f1/images/konvergenzNegativ.pdf and b/buch/papers/0f1/images/konvergenzNegativ.pdf differ diff --git a/buch/papers/0f1/images/konvergenzPositiv.pdf b/buch/papers/0f1/images/konvergenzPositiv.pdf index 71b1042..8e1e7e4 100644 Binary files a/buch/papers/0f1/images/konvergenzPositiv.pdf and b/buch/papers/0f1/images/konvergenzPositiv.pdf differ diff --git a/buch/papers/0f1/teil3.tex b/buch/papers/0f1/teil3.tex index eb32c52..b6c0f4f 100644 --- a/buch/papers/0f1/teil3.tex +++ b/buch/papers/0f1/teil3.tex @@ -15,12 +15,10 @@ Ebenso kann festgestellt werden, dass je grösser der Wert $z$ in $\mathstrut_0F \label{0f1:subsection:konvergenz}} Es zeigt sich in Abbildung \ref{0f1:ausblick:plot:airy:konvergenz}, dass nach drei Iterationen ($k = 3$) die Funktionen genaue Resultate im Bereich von $-2$ bis $2$ liefert. Ebenso kann festgestellt werden, dass der Kettenbruch schneller konvergiert und im positiven Bereich mit der Referenzfunktion $\operatorname{Ai}(x)$ übereinstimmt. Da die Rekursionsformel eine Abwandlung des Kettenbruches ist, verhalten sich die Funktionen in diesem Fall gleich. -Erst wenn mehrerer Iterationen gerechnet 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, wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} zu beobachten ist, auf. 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. -Dieses Phänomen ist auf die Lösung der Rekursionsformel \eqref{0f1:math:matrix:ende:eq} zurück zu führen. Da im Gegensatz die ganz kleinen Werte nicht zu einer Konvergenz wie beim Kettenbruch führen, sondern sich noch eine Zeit lang durch die Multiplikation aufschwingen. +Erst wenn mehrerer Iterationen gerechnet werden, ist wie Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, der Kettenbruch den anderen zwei Algorithmen bezüglich Konvergenz überlegen. Allerdings muss beachtet werden, dass die Rekursionsformel zwar erst nach 35 Approximationen gänzlich konvergiert, nach 27 Iterationen sich nicht mehr gross verändert. + +Ist $z$ negativ wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies zu aufgrund des Vorzeichens zu alternierenden Termen. So steigt bei allen Algorithmen zuerst die Differenz zum erwarteten Endwert. Erst nach genügend Iterationen sind die Terme so klein, dass sie das Endresultat nicht mehr signifikant beeinflussen. Während die Potenzreihe zusammen mit dem Kettenbruch nach 34 Approximationen konvergiert, braucht die Rekursionsformel noch zwei Iterationen mehr. Wohingegen die Rekursionsformel der genauste Algorithmus im negativen Bereich ist. Da der Computer mit einer relativen Genauigkeit von $10^{-15}$ rechnet, ist dies das Maximum an Präzision, dass erreicht werden kann. -Ist $z$ negativ wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies zu aufgrund des Vorzeichens zu alternierenden Termen. So steigt bei allen Algorithmen zuerst die Differenz zum erwarteten Endwert. Erst nach genügend Iterationen sind die Terme genügend klein, so dass sie das Endresultat nicht mehr signifikant beeinflussen. -Auch hier konvergiert der Kettenbruch am schnellsten von allen Algorithmen. Ebenso bricht die Rekursionsformel nahezu gleichzeitig mit der Potenzreihe ab. \subsection{Stabilität \label{0f1:subsection:Stabilitaet}} @@ -41,14 +39,14 @@ Im negativem Bereich sind alle gewählten und umgesetzten Ansätze instabil. Gru \begin{figure} \centering \includegraphics[width=0.8\textwidth]{papers/0f1/images/konvergenzPositiv.pdf} - \caption{Konvergenz mit positivem $z$; Logarithmisch, vorzeichenlose dargestellte Differenz vom erwarteten Endresultat. + \caption{Konvergenz mit positivem $z$; Logarithmisch dargestellte absoluter Fehler. \label{0f1:ausblick:plot:konvergenz:positiv}} \end{figure} \begin{figure} \centering \includegraphics[width=0.8\textwidth]{papers/0f1/images/konvergenzNegativ.pdf} - \caption{Konvergenz mit negativem $z$; Logarithmisch, vorzeichenlose dargestellte Differenz vom erwarteten Endresultat. + \caption{Konvergenz mit negativem $z$; Logarithmisch dargestellte absoluter Fehler. \label{0f1:ausblick:plot:konvergenz:negativ}} \end{figure} -- cgit v1.2.1 From 4a97506a4759a46f3263aee2c46d684aed0fb104 Mon Sep 17 00:00:00 2001 From: Fabian <@> Date: Wed, 17 Aug 2022 01:35:28 +0200 Subject: 3. Ueberarbeitung, done --- buch/papers/0f1/teil2.tex | 35 ++++++++++++++++++++++++++--------- buch/papers/0f1/teil3.tex | 8 ++++---- 2 files changed, 30 insertions(+), 13 deletions(-) (limited to 'buch/papers/0f1') diff --git a/buch/papers/0f1/teil2.tex b/buch/papers/0f1/teil2.tex index 9b3a586..64f8d83 100644 --- a/buch/papers/0f1/teil2.tex +++ b/buch/papers/0f1/teil2.tex @@ -41,37 +41,54 @@ a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{b_3}{a_3+\cdots}}}, in welchem $a_0, a_1,\dots,a_n$ und $b_1,b_2,\dots,b_n$ ganze Zahlen sind. \subsubsection{Rekursionsbeziehungen und Kettenbrüche} -Nimmt man nun folgende Gleichung \cite{0f1:wiki-fraction}: +Will man einen Kettenbruch für das Verhältnis $\frac{f_i(z)}{f_{i-1}(z)}$ finden, braucht man dazu eine Relation der analytischer Funktion $f_i(z)$. +Nimmt man die Gleichung \cite{0f1:wiki-fraction}: \begin{equation*} f_{i-1} - f_i = k_i z f_{i+1}, \end{equation*} wo $f_i$ analytische Funktionen sind und $i > 0$ ist, sowie $k_i$ konstant. Ergibt sich folgender Zusammenhang: \begin{equation*} - \cfrac{f_i}{f_{i-1}} = \cfrac{1}{1+k_iz\cfrac{f_{i+1}}{f_i}} + \cfrac{f_i}{f_{i-1}} = \cfrac{1}{1+k_iz\cfrac{f_{i+1}}{f_i}}. \end{equation*} +Geht man einen Schritt weiter und nimmt für $g_i = \frac{f_i}{f_{i-1}}$ an, kommt man zur Formel +\begin{equation*} + g_i = \cfrac{1}{1+k_izg_{i+1}}. +\end{equation*} +Setzt man dies nun für $g_1$ in den Bruch ein, ergibt sich folgendes: +\begin{equation*} + g_1 = \cfrac{f_1}{f_0} = \cfrac{1}{1+k_izg_2} = \cfrac{1}{1+\cfrac{k_1z}{1+k_2zg_3}} = \cdots +\end{equation*} +Repetiert man dies unendlich, erhält man einen Kettenbruch in der Form: +\begin{equation} + \label{0f1:math:rekursion:eq} + \cfrac{f_1}{f_0} = \cfrac{1}{1+\cfrac{k_1z}{1+\cfrac{k_2z}{1+\cfrac{k_3z}{\cdots}}}}. +\end{equation} + \subsubsection{Rekursion für $\mathstrut_0F_1$} -Angewendet auf die Funktion $\mathstrut_0F_1$ bedeutet dies: +Angewendet auf die Potenzreihe \begin{equation} \label{0f1:math:potenzreihe:0f1:eq} \mathstrut_0F_1(;c;z) = 1 + \frac{z}{c\cdot1!} + \frac{z^2}{c(c+1)\cdot2!} + \frac{z^3}{c(c+1)(c+2)\cdot3!} + \cdots \end{equation} -Durch Substitution kann bewiesen werden, dass die nachfolgende Formel eine Relation zur obigen Potenzreihe \eqref{0f1:math:potenzreihe:0f1:eq} ist: +kann durch Substitution bewiesen werden, dass \begin{equation*} - \mathstrut_0F_1(;c-1;z) - \mathstrut_0F_1(;c;z) = \frac{z}{c(c-1)} \cdot \mathstrut_0F_1(;c+1;z). + \mathstrut_0F_1(;c-1;z) - \mathstrut_0F_1(;c;z) = \frac{z}{c(c-1)} \cdot \mathstrut_0F_1(;c+1;z) \end{equation*} +eine Relation dazu ist. Wenn man für $f_i$ und $k_i$ folgende Annahme trifft: \begin{align*} - f_i =& \mathstrut_0F_1(;c+1;z)\\ - k_i =& \frac{1}{(c+1)(c+i-1)} + f_i =& \mathstrut_0F_1(;c+i;z)\\ + k_i =& \frac{1}{(c+i)(c+i-1)} \end{align*} -erhält man: +und in die Formel \eqref{0f1:math:rekursion:eq} einsetzt, erhält man: \begin{equation*} \cfrac{\mathstrut_0F_1(;c+1;z)}{\mathstrut_0F_1(;c;z)} = \cfrac{1}{1+\cfrac{\cfrac{z}{c(c+1)}}{1+\cfrac{\cfrac{z}{(c+1)(c+2)}}{1+\cfrac{\cfrac{z}{(c+2)(c+3)}}{\cdots}}}}. \end{equation*} \subsubsection{Algorithmus} -Mit weiteren Relationen ergibt sich nach Wolfram Alpha \cite{0f1:wolfram-0f1} folgender Kettenbruch +Da mit obigen Formeln nur ein Verhältnis zwischen $ \frac{\mathstrut_0F_1(;c+1;z)}{\mathstrut_0F_1(;c;z)}$ berechnet wurde, braucht es weitere Relationen um $\mathstrut_0F_1(;c;z)$ zu erhalten. +So ergeben ähnliche Relationen nach Wolfram Alpha \cite{0f1:wolfram-0f1} 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}}}, diff --git a/buch/papers/0f1/teil3.tex b/buch/papers/0f1/teil3.tex index b6c0f4f..2afc34b 100644 --- a/buch/papers/0f1/teil3.tex +++ b/buch/papers/0f1/teil3.tex @@ -15,9 +15,9 @@ Ebenso kann festgestellt werden, dass je grösser der Wert $z$ in $\mathstrut_0F \label{0f1:subsection:konvergenz}} Es zeigt sich in Abbildung \ref{0f1:ausblick:plot:airy:konvergenz}, dass nach drei Iterationen ($k = 3$) die Funktionen genaue Resultate im Bereich von $-2$ bis $2$ liefert. Ebenso kann festgestellt werden, dass der Kettenbruch schneller konvergiert und im positiven Bereich mit der Referenzfunktion $\operatorname{Ai}(x)$ übereinstimmt. Da die Rekursionsformel eine Abwandlung des Kettenbruches ist, verhalten sich die Funktionen in diesem Fall gleich. -Erst wenn mehrerer Iterationen gerechnet werden, ist wie Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, der Kettenbruch den anderen zwei Algorithmen bezüglich Konvergenz überlegen. Allerdings muss beachtet werden, dass die Rekursionsformel zwar erst nach 35 Approximationen gänzlich konvergiert, nach 27 Iterationen sich nicht mehr gross verändert. +Erst wenn mehrerer Iterationen gerechnet werden, ist wie Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, der Kettenbruch den anderen zwei Algorithmen bezüglich Konvergenz überlegen. Bei der Rekursionsformel muss beachtet werden, dass sie zwar erst nach 35 Approximationen gänzlich konvergiert, allerdings nach 27 Iterationen sich nicht mehr gross verändert. -Ist $z$ negativ wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies zu aufgrund des Vorzeichens zu alternierenden Termen. So steigt bei allen Algorithmen zuerst die Differenz zum erwarteten Endwert. Erst nach genügend Iterationen sind die Terme so klein, dass sie das Endresultat nicht mehr signifikant beeinflussen. Während die Potenzreihe zusammen mit dem Kettenbruch nach 34 Approximationen konvergiert, braucht die Rekursionsformel noch zwei Iterationen mehr. Wohingegen die Rekursionsformel der genauste Algorithmus im negativen Bereich ist. Da der Computer mit einer relativen Genauigkeit von $10^{-15}$ rechnet, ist dies das Maximum an Präzision, dass erreicht werden kann. +Ist $z$ negativ wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies zu aufgrund des Vorzeichens zu alternierenden Termen. So steigt bei allen Algorithmen zuerst die Differenz zum erwarteten Endwert. Erst nach genügend Iterationen sind die Terme so klein, dass sie das Endresultat nicht mehr signifikant beeinflussen. Während die Potenzreihe zusammen mit dem Kettenbruch nach 34 Approximationen konvergiert, braucht die Rekursionsformel noch zwei Iterationen mehr. \subsection{Stabilität @@ -39,14 +39,14 @@ Im negativem Bereich sind alle gewählten und umgesetzten Ansätze instabil. Gru \begin{figure} \centering \includegraphics[width=0.8\textwidth]{papers/0f1/images/konvergenzPositiv.pdf} - \caption{Konvergenz mit positivem $z$; Logarithmisch dargestellte absoluter Fehler. + \caption{Konvergenz mit positivem $z$; Logarithmisch dargestellter absoluter Fehler. \label{0f1:ausblick:plot:konvergenz:positiv}} \end{figure} \begin{figure} \centering \includegraphics[width=0.8\textwidth]{papers/0f1/images/konvergenzNegativ.pdf} - \caption{Konvergenz mit negativem $z$; Logarithmisch dargestellte absoluter Fehler. + \caption{Konvergenz mit negativem $z$; Logarithmisch dargestellter absoluter Fehler. \label{0f1:ausblick:plot:konvergenz:negativ}} \end{figure} -- cgit v1.2.1 From 9d52cc84df44e8479cafdd7b0d7f264aeb0c8a10 Mon Sep 17 00:00:00 2001 From: Fabian <@> Date: Wed, 17 Aug 2022 21:38:44 +0200 Subject: letzte Korrektur --- buch/papers/0f1/teil2.tex | 18 +++++++++--------- buch/papers/0f1/teil3.tex | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'buch/papers/0f1') diff --git a/buch/papers/0f1/teil2.tex b/buch/papers/0f1/teil2.tex index 64f8d83..fdcb0fc 100644 --- a/buch/papers/0f1/teil2.tex +++ b/buch/papers/0f1/teil2.tex @@ -41,13 +41,13 @@ a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{b_3}{a_3+\cdots}}}, in welchem $a_0, a_1,\dots,a_n$ und $b_1,b_2,\dots,b_n$ ganze Zahlen sind. \subsubsection{Rekursionsbeziehungen und Kettenbrüche} -Will man einen Kettenbruch für das Verhältnis $\frac{f_i(z)}{f_{i-1}(z)}$ finden, braucht man dazu eine Relation der analytischer Funktion $f_i(z)$. -Nimmt man die Gleichung \cite{0f1:wiki-fraction}: +Wenn es eine Relation analytischer Funktion $f_i(z)$ hat, dann gibt es einen Kettenbruch für das Verhältnis $\frac{f_i(z)}{f_{i-1}(z)}$ \cite{0f1:wiki-fraction}. +Nimmt man die Gleichung \begin{equation*} f_{i-1} - f_i = k_i z f_{i+1}, \end{equation*} wo $f_i$ analytische Funktionen sind und $i > 0$ ist, sowie $k_i$ konstant. -Ergibt sich folgender Zusammenhang: +Ergibt sich der Zusammenhang \begin{equation*} \cfrac{f_i}{f_{i-1}} = \cfrac{1}{1+k_iz\cfrac{f_{i+1}}{f_i}}. \end{equation*} @@ -55,7 +55,7 @@ Geht man einen Schritt weiter und nimmt für $g_i = \frac{f_i}{f_{i-1}}$ an, kom \begin{equation*} g_i = \cfrac{1}{1+k_izg_{i+1}}. \end{equation*} -Setzt man dies nun für $g_1$ in den Bruch ein, ergibt sich folgendes: +Setzt man dies nun für $g_1$ in den Bruch ein, ergibt sich \begin{equation*} g_1 = \cfrac{f_1}{f_0} = \cfrac{1}{1+k_izg_2} = \cfrac{1}{1+\cfrac{k_1z}{1+k_2zg_3}} = \cdots \end{equation*} @@ -76,19 +76,19 @@ kann durch Substitution bewiesen werden, dass \mathstrut_0F_1(;c-1;z) - \mathstrut_0F_1(;c;z) = \frac{z}{c(c-1)} \cdot \mathstrut_0F_1(;c+1;z) \end{equation*} eine Relation dazu ist. -Wenn man für $f_i$ und $k_i$ folgende Annahme trifft: +Wenn man für $f_i$ und $k_i$ die Annahme \begin{align*} f_i =& \mathstrut_0F_1(;c+i;z)\\ k_i =& \frac{1}{(c+i)(c+i-1)} \end{align*} -und in die Formel \eqref{0f1:math:rekursion:eq} einsetzt, erhält man: +trifft und in die Formel \eqref{0f1:math:rekursion:eq} einsetzt, erhält man: \begin{equation*} \cfrac{\mathstrut_0F_1(;c+1;z)}{\mathstrut_0F_1(;c;z)} = \cfrac{1}{1+\cfrac{\cfrac{z}{c(c+1)}}{1+\cfrac{\cfrac{z}{(c+1)(c+2)}}{1+\cfrac{\cfrac{z}{(c+2)(c+3)}}{\cdots}}}}. \end{equation*} \subsubsection{Algorithmus} Da mit obigen Formeln nur ein Verhältnis zwischen $ \frac{\mathstrut_0F_1(;c+1;z)}{\mathstrut_0F_1(;c;z)}$ berechnet wurde, braucht es weitere Relationen um $\mathstrut_0F_1(;c;z)$ zu erhalten. -So ergeben ähnliche Relationen nach Wolfram Alpha \cite{0f1:wolfram-0f1} folgender Kettenbruch +So ergeben ähnliche Relationen nach Wolfram Alpha \cite{0f1:wolfram-0f1} den Kettenbruch \begin{equation} \label{0f1:math:kettenbruch:0f1:eq} \mathstrut_0F_1(;c;z) = 1 + \cfrac{\cfrac{z}{c}}{1+\cfrac{-\cfrac{z}{2(c+1)}}{1+\cfrac{z}{2(c+1)}+\cfrac{-\cfrac{z}{3(c+2)}}{1+\cfrac{z}{5(c+4)} + \cdots}}}, @@ -112,7 +112,7 @@ lässt sich zu \cfrac{A_k}{B_k} = \cfrac{b_{k+1}}{a_{k+1} + \cfrac{p}{q}} = \frac{b_{k+1} \cdot q}{a_{k+1} \cdot q + p} \end{align*} umformen. -Dies lässt sich auch durch die folgende Matrizenschreibweise +Dies lässt sich auch durch die Matrizenschreibweise \begin{equation*} \begin{pmatrix} A_k\\ @@ -137,7 +137,7 @@ Wendet man dies nun auf den Kettenbruch in der Form \begin{equation*} \frac{A_k}{B_k} = a_0 + \cfrac{b_1}{a_1+\cfrac{b_2}{a_2+\cfrac{\cdots}{\cdots+\cfrac{b_{k-1}}{a_{k-1} + \cfrac{b_k}{a_k}}}}} \end{equation*} -an, ergibt sich folgende Matrixdarstellungen: +an, ergibt sich die Matrixdarstellungen: \begin{align*} \begin{pmatrix} diff --git a/buch/papers/0f1/teil3.tex b/buch/papers/0f1/teil3.tex index 2afc34b..147668a 100644 --- a/buch/papers/0f1/teil3.tex +++ b/buch/papers/0f1/teil3.tex @@ -15,9 +15,9 @@ Ebenso kann festgestellt werden, dass je grösser der Wert $z$ in $\mathstrut_0F \label{0f1:subsection:konvergenz}} Es zeigt sich in Abbildung \ref{0f1:ausblick:plot:airy:konvergenz}, dass nach drei Iterationen ($k = 3$) die Funktionen genaue Resultate im Bereich von $-2$ bis $2$ liefert. Ebenso kann festgestellt werden, dass der Kettenbruch schneller konvergiert und im positiven Bereich mit der Referenzfunktion $\operatorname{Ai}(x)$ übereinstimmt. Da die Rekursionsformel eine Abwandlung des Kettenbruches ist, verhalten sich die Funktionen in diesem Fall gleich. -Erst wenn mehrerer Iterationen gerechnet werden, ist wie Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, der Kettenbruch den anderen zwei Algorithmen bezüglich Konvergenz überlegen. Bei der Rekursionsformel muss beachtet werden, dass sie zwar erst nach 35 Approximationen gänzlich konvergiert, allerdings nach 27 Iterationen sich nicht mehr gross verändert. +Erst wenn mehrerer Iterationen gerechnet werden, ist wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:positiv} dargestellt, der Kettenbruch den anderen zwei Algorithmen bezüglich Konvergenz überlegen. Bei der Rekursionsformel muss beachtet werden, dass sie zwar erst nach 35 Approximationen gänzlich konvergiert, allerdings nach 27 Iterationen sich nicht mehr gross verändert. -Ist $z$ negativ wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies zu aufgrund des Vorzeichens zu alternierenden Termen. So steigt bei allen Algorithmen zuerst die Differenz zum erwarteten Endwert. Erst nach genügend Iterationen sind die Terme so klein, dass sie das Endresultat nicht mehr signifikant beeinflussen. Während die Potenzreihe zusammen mit dem Kettenbruch nach 34 Approximationen konvergiert, braucht die Rekursionsformel noch zwei Iterationen mehr. +Ist $z$ negativ, wie in Abbildung \ref{0f1:ausblick:plot:konvergenz:negativ}, führt dies aufgrund des Vorzeichens zu alternierenden Termen. So steigt bei allen Algorithmen zuerst die Differenz zum erwarteten Endwert. Erst nach genügend Iterationen sind die Terme so klein, dass sie das Endresultat nicht mehr signifikant beeinflussen. Während die Potenzreihe zusammen mit dem Kettenbruch nach 34 Approximationen konvergiert, braucht die Rekursionsformel noch zwei Iterationen mehr. \subsection{Stabilität -- cgit v1.2.1