aboutsummaryrefslogtreecommitdiffstats
path: root/buch/papers/laguerre
diff options
context:
space:
mode:
authorPatrik Müller <patrik.mueller@ost.ch>2022-07-18 17:34:37 +0200
committerPatrik Müller <patrik.mueller@ost.ch>2022-07-18 17:34:37 +0200
commite1f5d6267540ea8dc758696fb08cb7540362cf8f (patch)
tree9262e3e7dd31bcea50a5e1dc43cab4fa8f681625 /buch/papers/laguerre
parentChange image scripts to PDF format, update Makefile, add complex plane plot (diff)
downloadSeminarSpezielleFunktionen-e1f5d6267540ea8dc758696fb08cb7540362cf8f.tar.gz
SeminarSpezielleFunktionen-e1f5d6267540ea8dc758696fb08cb7540362cf8f.zip
First complete draft of Laguerre chapter
Diffstat (limited to 'buch/papers/laguerre')
-rw-r--r--buch/papers/laguerre/Makefile2
-rw-r--r--buch/papers/laguerre/definition.tex6
-rw-r--r--buch/papers/laguerre/gamma.tex242
-rw-r--r--buch/papers/laguerre/images/estimates.pdfbin13780 -> 13780 bytes
-rw-r--r--buch/papers/laguerre/images/gammaplot.pdfbin23297 -> 23297 bytes
-rw-r--r--buch/papers/laguerre/images/integrand.pdfbin16109 -> 16109 bytes
-rw-r--r--buch/papers/laguerre/images/integrand_exp.pdfbin16951 -> 16951 bytes
-rw-r--r--buch/papers/laguerre/images/laguerre_poly.pdfbin19815 -> 19815 bytes
-rw-r--r--buch/papers/laguerre/images/rel_error_complex.pdfbin198151 -> 195590 bytes
-rw-r--r--buch/papers/laguerre/images/rel_error_mirror.pdfbin26866 -> 26866 bytes
-rw-r--r--buch/papers/laguerre/images/rel_error_range.pdfbin25704 -> 25105 bytes
-rw-r--r--buch/papers/laguerre/images/rel_error_shifted.pdfbin16231 -> 16317 bytes
-rw-r--r--buch/papers/laguerre/images/rel_error_simple.pdfbin23353 -> 23353 bytes
-rw-r--r--buch/papers/laguerre/images/targets.pdfbin14757 -> 14462 bytes
-rw-r--r--buch/papers/laguerre/main.tex2
-rw-r--r--buch/papers/laguerre/presentation/sections/gamma_approx.tex24
-rw-r--r--buch/papers/laguerre/presentation/sections/laguerre.tex3
-rw-r--r--buch/papers/laguerre/quadratur.tex14
-rw-r--r--buch/papers/laguerre/references.bib18
-rw-r--r--buch/papers/laguerre/scripts/gamma_approx.py1
-rw-r--r--buch/papers/laguerre/scripts/rel_error_complex.py4
-rw-r--r--buch/papers/laguerre/scripts/rel_error_range.py2
-rw-r--r--buch/papers/laguerre/scripts/rel_error_shifted.py2
-rw-r--r--buch/papers/laguerre/scripts/targets.py4
24 files changed, 211 insertions, 113 deletions
diff --git a/buch/papers/laguerre/Makefile b/buch/papers/laguerre/Makefile
index 48f8066..85a1b83 100644
--- a/buch/papers/laguerre/Makefile
+++ b/buch/papers/laguerre/Makefile
@@ -28,7 +28,7 @@ images: $(FIGURES)
.PHONY: presentation
presentation: $(PRESFOLDER)/presentation.pdf
-images/%.pdf images/%.pgf: scripts/%.py
+images/%.pdf images/%.pgf: scripts/%.py scripts/gamma_approx.py
python3 $<
images/gammaplot.pdf: images/gammaplot.tex images/gammapaths.tex
diff --git a/buch/papers/laguerre/definition.tex b/buch/papers/laguerre/definition.tex
index 9ebc288..42cd6f6 100644
--- a/buch/papers/laguerre/definition.tex
+++ b/buch/papers/laguerre/definition.tex
@@ -125,10 +125,8 @@ Die Laguerre-Polynome von Grad $0$ bis $7$ sind in
Abbildung~\ref{laguerre:fig:polyeval} dargestellt.
\begin{figure}
\centering
-\scalebox{0.8}{\input{papers/laguerre/images/laguerre_poly.pgf}}
-% \includegraphics[width=0.7\textwidth]{%
-% papers/laguerre/images/laguerre_polynomes.eps%
-% }
+% \scalebox{0.8}{\input{papers/laguerre/images/laguerre_poly.pgf}}
+\includegraphics[width=0.9\textwidth]{papers/laguerre/images/laguerre_poly.pdf}
\caption{Laguerre-Polynome vom Grad $0$ bis $7$}
\label{laguerre:fig:polyeval}
\end{figure}
diff --git a/buch/papers/laguerre/gamma.tex b/buch/papers/laguerre/gamma.tex
index a28c180..eb64fa2 100644
--- a/buch/papers/laguerre/gamma.tex
+++ b/buch/papers/laguerre/gamma.tex
@@ -23,8 +23,8 @@ Integral der Form
,
\quad
\text{wobei Realteil von $z$ grösser als $0$}
-,
\label{laguerre:gamma}
+.
\end{align}
Der Term $e^{-t}$ ist genau die Gewichtsfunktion der Laguerre-Integration und
der Definitionsbereich passt ebenfalls genau für dieses Verfahren.
@@ -72,7 +72,7 @@ allerdings müssten die Gewichte und Nullstellen für jedes $z$
neu berechnet werden,
da sie per Definition von $z$ abhängen.
Dazu kommt,
-dass die Berechnung der Gewichte $A_i$ nach \cite{Cassity1965AbcissasCA}
+dass die Berechnung der Gewichte $A_i$ nach \cite{laguerre:Cassity1965AbcissasCA}
\begin{align*}
A_i
=
@@ -85,7 +85,7 @@ A_i
}
\end{align*}
Evaluationen der Gamma-Funktion benötigen.
-Somit scheint diese Methode nicht geeignet für unser Vorhaben.
+Somit ist diese Methode eindeutig nicht geeignet für unser Vorhaben.
Bei der zweiten Variante benötigen wir keine Neuberechung der Gewichte
und Nullstellen für unterschiedliche $z$.
@@ -95,10 +95,10 @@ Auch die Nullstellen können vorgängig,
mittels eines geeigneten Verfahrens aus den Polynomen bestimmt werden.
Als problematisch könnte sich höchstens
die zu integrierende Funktion $f(x)=x^{z-1}$ für $|z| \gg 0$ erweisen.
-Somit entscheiden wir uns auf Grund der vorherigen Punkte,
+Somit entscheiden wir uns aufgrund der vorherigen Punkte,
die zweite Variante weiterzuverfolgen.
-\subsubsection{Naiver Ansatz}
+\subsubsection{Direkter Ansatz}
Wenden wir also die Gauss-Laguerre-Quadratur aus
\eqref{laguerre:laguerrequadratur} auf die Gamma-Funktion
\eqref{laguerre:gamma} an ergibt sich
@@ -111,15 +111,16 @@ Wenden wir also die Gauss-Laguerre-Quadratur aus
\begin{figure}
\centering
-\input{papers/laguerre/images/rel_error_simple.pgf}
-\vspace{-12pt}
-\caption{Relativer Fehler des naiven Ansatzes
+% \input{papers/laguerre/images/rel_error_simple.pgf}
+\includegraphics{papers/laguerre/images/rel_error_simple.pdf}
+%\vspace{-12pt}
+\caption{Relativer Fehler des direkten Ansatzes
für verschiedene reele Werte von $z$ und Grade $n$ der Laguerre-Polynome}
\label{laguerre:fig:rel_error_simple}
\end{figure}
Bevor wir die Gauss-Laguerre-Quadratur anwenden,
-möchten wir als erstes eine Fehlerabschätzung durchführen.
+möchten wir als ersten Schritt eine Fehlerabschätzung durchführen.
Für den Fehlerterm \eqref{laguerre:lag_error} wird die $2n$-te Ableitung
der zu integrierenden Funktion $f(\xi)$ benötigt.
Für das Integral der Gamma-Funktion ergibt sich also
@@ -130,6 +131,7 @@ Für das Integral der Gamma-Funktion ergibt sich also
\\
& =
(z - 2n)_{2n} \xi^{z - 2n - 1}
+.
\end{align*}
Eingesetzt im Fehlerterm \eqref{laguerre:lag_error} resultiert
\begin{align}
@@ -147,17 +149,19 @@ und für $z > 2n - 1$ bei $\xi \rightarrow \infty$ divergiert.
Nur für den unwahrscheinlichen Fall $ z = 2n - 1$
wäre eine Fehlerabschätzung plausibel.
-Wenden wir nun also naiv die Gauss-Laguerre-Quadratur auf die Gammafunktion an.
+Wenden wir nun also direkt die Gauss-Laguerre-Quadratur auf die Gamma-Funktion
+an.
Dazu benötigen wir die Gewichte nach
\eqref{laguerre:quadratur_gewichte}
und als Stützstellen die Nullstellen des Laguerre-Polynomes $L_n$.
Evaluieren wir den relativen Fehler unserer Approximation zeigt sich ein
Bild wie in Abbildung~\ref{laguerre:fig:rel_error_simple}.
Man kann sehen,
-wie der relative Fehler Nullstellen aufweist für ganzzahlige $z < 2n$,
+wie der relative Fehler Nullstellen aufweist für ganzzahlige $z \leq 2n$,
was laut der Theorie der Gauss-Quadratur auch zu erwarten ist,
denn die Approximation via Gauss-Quadratur
-ist exakt für zu integrierende Polynome mit Grad $< 2n-1$.
+ist exakt für zu integrierende Polynome mit Grad $\leq 2n-1$
+und von $z$ auch noch $1$ abgezogen wird im Exponenten.
Es ist ersichtlich,
dass sich für den Polynomgrad $n$ ein Interval gibt,
in dem der relative Fehler minimal ist.
@@ -168,9 +172,10 @@ könnten wir die Reflektionsformel der Gamma-Funktion ausnutzen.
\begin{figure}
\centering
-\input{papers/laguerre/images/rel_error_mirror.pgf}
-\vspace{-12pt}
-\caption{Relativer Fehler des naiven Ansatz mit Spiegelung negativer Realwerte
+% \input{papers/laguerre/images/rel_error_mirror.pgf}
+\includegraphics{papers/laguerre/images/rel_error_mirror.pdf}
+%\vspace{-12pt}
+\caption{Relativer Fehler des Ansatzes mit Spiegelung negativer Realwerte
für verschiedene reele Werte von $z$ und Grade $n$ der Laguerre-Polynome}
\label{laguerre:fig:rel_error_mirror}
\end{figure}
@@ -202,8 +207,9 @@ dadurch geeignete Gegenmassnahmen zu entwickeln.
% und Abbildung~\ref{laguerre:fig:integrand_exp} grafisch dargestellt werden.
\begin{figure}
\centering
-\input{papers/laguerre/images/integrand.pgf}
-\vspace{-12pt}
+% \input{papers/laguerre/images/integrand.pgf}
+\includegraphics{papers/laguerre/images/integrand.pdf}
+%\vspace{-12pt}
\caption{Integrand $x^z$ mit unterschiedlichen Werten für $z$}
\label{laguerre:fig:integrand}
\end{figure}
@@ -211,7 +217,7 @@ dadurch geeignete Gegenmassnahmen zu entwickeln.
In Abbildung~\ref{laguerre:fig:integrand} ist der Integrand $x^z$ für
unterschiedliche Werte von $z$ dargestellt.
Dies entspricht der zu integrierenden Funktion $f(x)$
-der Gauss-Laguerre-Quadratur für die Gamma-Funktion-
+der Gauss-Laguerre-Quadratur für die Gamma-Funktion.
Man erkennt,
dass für kleine $z$ sich ein singulärer Integrand ergibt
und auch für grosse $z$ wächst der Integrand sehr schnell an.
@@ -223,8 +229,9 @@ dass kleine Exponenten um $0$ genauere Resultate liefern sollten.
\begin{figure}
\centering
-\input{papers/laguerre/images/integrand_exp.pgf}
-\vspace{-12pt}
+% \input{papers/laguerre/images/integrand_exp.pgf}
+\includegraphics{papers/laguerre/images/integrand_exp.pdf}
+%\vspace{-12pt}
\caption{Integrand $x^z e^{-x}$ mit unterschiedlichen Werten für $z$}
\label{laguerre:fig:integrand_exp}
\end{figure}
@@ -246,9 +253,9 @@ Damit formulieren wir die Vermutung,
dass $a(n)$,
welches das Intervall $[a(n), a(n) + 1]$ definiert,
in dem der relative Fehler minimal ist,
-grösser als $0$ ist.
+grösser als $0$ und kleiner als $2n-1$ ist.
-\subsubsection{Finden der optimalen Berechnungsstelle}
+\subsubsection{Ansatz mit Verschiebungsterm}
% Mittels der Funktionalgleichung \eqref{laguerre:gamma_funktional}
% kann der Wert von $\Gamma(z)$ im Interval $z \in [a,a+1]$,
% in dem der relative Fehler minimal ist,
@@ -287,12 +294,13 @@ s(z, m)
=
\begin{cases}
\displaystyle
-\frac{1}{(z - m)_m} & \text{wenn } m \geq 0 \\
-(z + m)_{-m} & \text{wenn } m < 0
+\frac{1}{(z)_m} & \text{wenn } m \geq 0 \\
+(z + m)_{-m} & \text{wenn } m < 0
\end{cases}
.
\end{align*}
+\subsubsection{Finden der optimalen Berechnungsstelle}
Um die optimale Stelle $z^*(n) \in \left[a(n), a(n) + 1\right]$,
$z^*(n) \in \mathbb{R}$,
zu finden,
@@ -305,9 +313,17 @@ s(z, m) \cdot (z - 2n)_{2n} \frac{(n!)^2}{(2n)!} \xi^{z + m - 2n - 1}
,\quad
\text{für }
\xi \in (0, \infty)
-.
\label{laguerre:gamma_err_shifted}
+.
\end{align}
+
+\begin{figure}
+\centering
+\includegraphics{papers/laguerre/images/targets.pdf}
+% %\vspace{-12pt}
+\caption{$a$ in Abhängigkeit von $z$ und $n$}
+\label{laguerre:fig:targets}
+\end{figure}
% wobei ist
% mit $z^*(n) \in \mathbb{R}$ wollen wir finden,
% in dem wir den Fehlerterm \eqref{laguerre:lag_error} anpassen
@@ -329,21 +345,14 @@ m^*
\operatorname*{argmin}_m \max_\xi R_{n,m}(\xi)
.
\end{align*}
-Allerdings ist die Funktion $R_{n,m}(\xi)$ unbeschränkt.
+Allerdings ist die Funktion $R_{n,m}(\xi)$ unbeschränkt und
+hat die gleichen Probleme wie die Fehlerabschätzung des direkten Ansatzes.
Dazu müssten wir $\xi$ versuchen unter Kontrolle zu bringen,
was ein äussersts schwieriges Unterfangen zu sein scheint.
-Da die Gauss-Quadratur aber sowieso nur wirklich Sinn macht für kleine $n$,
+Da die Gauss-Quadratur aber sowieso
+nur wirklich praktisch sinnvoll für kleine $n$ ist,
können die Intervalle $[a(n), a(n)+1]$ empirisch gesucht werden.
-\begin{figure}
-\centering
-% \includegraphics{papers/laguerre/images/targets.pdf}
-\input{papers/laguerre/images/targets.pgf}
-\vspace{-12pt}
-\caption{$a$ in Abhängigkeit von $z$ und $n$}
-\label{laguerre:fig:targets}
-\end{figure}
-
Wir bestimmen nun die optimalen Verschiebungsterme empirisch
für $n = 2,\ldots, 12$ im Intervall $z \in (0, 1)$,
da $z$ sowieso um den Term $m$ verschoben wird,
@@ -369,11 +378,20 @@ Den linearen Regressor
machen wir nur abhängig von $n$
in dem wir den Mittelwert $\overline{m}$ von $m^*$ über $z$ berechnen.
+\begin{figure}
+\centering
+% \input{papers/laguerre/images/estimates.pgf}
+\includegraphics{papers/laguerre/images/estimates.pdf}
+%\vspace{-12pt}
+\caption{Schätzung Mittelwert von $m$ und Fehler}
+\label{laguerre:fig:schaetzung}
+\end{figure}
+
In Abbildung~\ref{laguerre:fig:schaetzung} sind die Resultate
der linearen Regression aufgezeigt mit $\alpha = 1.34094$ und $\beta =
0.854093$.
Die lineare Beziehung ist ganz klar ersichtlich und der Fit scheint zu genügen.
-Der optimalen Verschiebungsterm
+Der optimalen Verschiebungsterm kann nun mit
\begin{align*}
m^*
\approx
@@ -381,61 +399,127 @@ m^*
=
\lceil \alpha n + \beta - z \rceil
\end{align*}
-kann nun mit dem linearen Regressor und $z$ gefunden werden.
-
-\begin{figure}
-\centering
-\input{papers/laguerre/images/estimates.pgf}
-\vspace{-12pt}
-\caption{Schätzung Mittelwert von $m$ und Fehler}
-\label{laguerre:fig:schaetzung}
-\end{figure}
-
-\subsection{Resultate}
-
-\subsubsection{Relativer Fehler}
+% kann nun mit dem linearen Regressor und $z$
+gefunden werden.
+\subsubsection{Evaluation des Schätzers}
+In einem ersten Schritt möchten wir analysieren,
+wie gut die Abschätzung des optimalen Verschiebungsterms ist.
+Dazu bestimmen wir den relativen Fehler für verschiedene Verschiebungsterme $m$
+rund um $m^*$ bei gegebenem Polynomgrad $n = 8$ für $z \in (0, 1)$.
+Abbildung~\ref{laguerre:fig:rel_error_shifted} sind die relativen Fehler
+der Approximation dargestellt.
+Man kann deutlich sehen,
+dass der relative Fehler anwächst,
+je weiter der Verschiebungsterm vom idealen Wert abweicht.
+Zudem scheint der Schätzer den optimalen Verschiebungsterm gut zu bestimmen,
+da der Schätzer zuerst der grünen Linie folgt und
+dann beim Übergang auf die orange Linie wechselt.
\begin{figure}
\centering
-\input{papers/laguerre/images/rel_error_shifted.pgf}
-\vspace{-12pt}
+% \input{papers/laguerre/images/rel_error_shifted.pgf}
+\includegraphics{papers/laguerre/images/rel_error_shifted.pdf}
+%\vspace{-12pt}
\caption{Relativer Fehler des Ansatzes mit Verschiebungsterm
für verschiedene reele Werte von $z$ und Verschiebungsterme $m$.
Das verwendete Laguerre-Polynom besitzt den Grad $n = 8$.
$m^*$ bezeichnet hier den optimalen Verschiebungsterm}
\label{laguerre:fig:rel_error_shifted}
\end{figure}
-
+
+\subsubsection{Resultate}
+Das Verfahren scheint für den Grad $n=8$ und $z \in (0,1)$ gut zu funktioneren.
+Es stellt sich nun die Frage,
+wie der relative Fehler sich für verschiedene $z$ und $n$ verhält.
+In Abbildung~\ref{laguerre:fig:rel_error_range} sind die relativen Fehler für
+unterschiedliche $n$ dargestellt.
+Der relative Fehler scheint immer noch Nullstellen aufzuweisen,
+bei für ganzzahlige $z$.
+Durch das Verschieben ergibt sich jetzt aber,
+wie zu erwarten war,
+ein periodischer relativer Fehler mit einer Periodendauer von $1$.
+Zudem lässt sich erkennen,
+dass der Fehler abhängig von der Ordnung $n$
+des verwendeten Laguerre-Polynoms ist.
+Wenn der Grad $n$ um $1$ erhöht wird,
+verbessert sich die Genauigkeit des Resultats um etwa eine signifikante Stelle.
+
+In Abbildung~\ref{laguerre:fig:rel_error_complex}
+ist der Betrag des relativen Fehlers in der komplexen Ebene dargestellt.
+Je stärker der Imaginäranteil von $z$ von $0$ abweicht,
+umso schlechter wird die Genauigkeit der Approximation.
+Das erstaunt nicht weiter,
+da die Gauss-Quadratur eigentlich nur für reelle Zahlen definiert ist.
+Wenn der Imaginäranteil von $z$ ungefähr $0$ ist,
+lässt sich das gleiche Bild beobachten wie in
+Abbildung~\ref{laguerre:fig:rel_error_range}.
+
\begin{figure}
\centering
-\input{papers/laguerre/images/rel_error_range.pgf}
-\vspace{-12pt}
+% \input{papers/laguerre/images/rel_error_range.pgf}
+\includegraphics{papers/laguerre/images/rel_error_range.pdf}
+%\vspace{-12pt}
\caption{Relativer Fehler des Ansatzes mit optimalen Verschiebungsterm
-für verschiedene reele Werte von $z$ und Grade $n$ der Laguerre-Polynome}
+für verschiedene reele Werte von $z$ und Laguerre-Polynome vom Grad $n$}
\label{laguerre:fig:rel_error_range}
\end{figure}
-\subsubsection{Vergleich mit Lanczos-Methode}
-{\color{red}
-$ $\newline
-$n = 7$:\newline
-Lanczos Polynomgrad auf 13 Stellen.\newline
-Unsere Methode auf 7 Stellen
-}
-
-% 2. Die Fehlerabschätzung ist problematisch,
-% weil die Funktion R_n(\xi) unbeschränkt ist.
-% Daher kann man nicht einfach nach dem Maximum von R_n(\xi) suchen.
-% Man muss zunächst irgendwie das \xi unter Kontrolle bringen.
-% Das scheint mir äusserst schwierig zu sein.
+\begin{figure}
+\centering
+\includegraphics{papers/laguerre/images/rel_error_complex.pdf}
+%\vspace{-12pt}
+\caption{Absolutwert des relativen Fehlers in der komplexen Ebene}
+\label{laguerre:fig:rel_error_complex}
+\end{figure}
-% Ich möchte daher folgendes anregen:
-% Im Sinne der Formulierung des Problems,
-% wie im Punkt 1 oben könnten Sie für verschiedene n
-% nach den optimalen Intervallen [a(n),a(n)+1] suchen,
-% und versuchen, einen empirischen Zusammenhang (Faustregel)
-% zwischen n und a(n) zu formulieren.
-% Das ist etwa gleich gut,
-% da ja der Witz der Gauss-Integration ist,
-% dass man eben nur sehr kleine n überhaupt in Betracht zieht,
-% d.h. man braucht keine exakte Gesetzmässigkeit für a(n).
+\subsubsection{Vergleich mit Lanczos-Methode}
+Nun stellt sich die Frage,
+wie das in diesem Abschnitt beschriebene Approximationsverfahren
+der Gamma-Funktion sich gegenüber den üblichen Approximationsverfahren schlägt.
+Eine häufig verwendete Methode ist die Lanczos-Approximation,
+welche gegeben ist durch
+\begin{align}
+\Gamma(z + 1)
+\approx
+\sqrt{2\pi} \left( z + \sigma + \frac{1}{2} \right)^{z + 1/2}
+e^{-(z + \sigma + 1/2)} \sum_{k=0}^n g_k H_k(z)
+,
+\end{align}
+wobei
+\begin{align*}
+g_k = \frac{e^\sigma \varepsilon_k (-1)^k}{\sqrt{2\pi}}
+\sum_{r=0}^k (-1)^r \, \binom{k}{r} \, (k)_r
+\left( \frac{e}{r + \sigma + \frac{1}{2}}\right)^{r + 1/2}
+,
+\end{align*}
+\begin{align*}
+\varepsilon_k
+=
+\begin{cases}
+1 & \text{für } k = 0 \\
+2 & \text{sonst}
+\end{cases}
+\quad \text{und}\quad
+H_k(z)
+=
+\frac{(-1)^k (-z)_k}{(z+1)_k}
+\end{align*}
+mit $H_0 = 1$ und $\sum_0^n g_k = 1$ (siehe \cite{laguerre:lanczos}).
+Diese Methode wurde zum Beispiel in
+{\em GNU Scientific Library}, {\em Boost}, {\em CPython} und
+{\em musl} implementiert.
+Diese Methode erreicht für $n = 7$ typischerweise Genauigkeit von $13$
+korrekten, signifikanten Stellen für reele Argumente.
+Zum Vergleich: die vorgestellte Methode erreicht für $n = 7$
+eine minimale Genauigkeit von $6$-$7$ korrekten, signifikanten Stellen
+für reele Argumente.
+Das Resultat ist etwas enttäuschend,
+aber nicht unerwartet,
+da die Lanczos-Methode spezifisch auf dieses Problem zugeschnitten ist und
+unsere Methode eine erweiterte allgemeine Methode ist.
+Was die Komplexität der Berechnungen im Betrieb angeht,
+ist die Gauss-Laguerre-Quadratur wesentlich ressourcensparender,
+weil sie nur aus $n$ Funktionasevaluationen,
+wenigen Multiplikationen und Additionen besteht.
+Also könnte diese Methode z.B. Anwendung in Systemen mit wenig Rechenleistung
+und/oder knappen Energieressourcen finden. \ No newline at end of file
diff --git a/buch/papers/laguerre/images/estimates.pdf b/buch/papers/laguerre/images/estimates.pdf
index c93a4f0..bd995de 100644
--- a/buch/papers/laguerre/images/estimates.pdf
+++ b/buch/papers/laguerre/images/estimates.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/gammaplot.pdf b/buch/papers/laguerre/images/gammaplot.pdf
index b65cf1b..7c195f2 100644
--- a/buch/papers/laguerre/images/gammaplot.pdf
+++ b/buch/papers/laguerre/images/gammaplot.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/integrand.pdf b/buch/papers/laguerre/images/integrand.pdf
index 676ac98..76be412 100644
--- a/buch/papers/laguerre/images/integrand.pdf
+++ b/buch/papers/laguerre/images/integrand.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/integrand_exp.pdf b/buch/papers/laguerre/images/integrand_exp.pdf
index 5e021d5..5fe7a7b 100644
--- a/buch/papers/laguerre/images/integrand_exp.pdf
+++ b/buch/papers/laguerre/images/integrand_exp.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/laguerre_poly.pdf b/buch/papers/laguerre/images/laguerre_poly.pdf
index d74f652..21278f5 100644
--- a/buch/papers/laguerre/images/laguerre_poly.pdf
+++ b/buch/papers/laguerre/images/laguerre_poly.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/rel_error_complex.pdf b/buch/papers/laguerre/images/rel_error_complex.pdf
index d23ebd1..c7bb37a 100644
--- a/buch/papers/laguerre/images/rel_error_complex.pdf
+++ b/buch/papers/laguerre/images/rel_error_complex.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/rel_error_mirror.pdf b/buch/papers/laguerre/images/rel_error_mirror.pdf
index e51dd83..8a27d41 100644
--- a/buch/papers/laguerre/images/rel_error_mirror.pdf
+++ b/buch/papers/laguerre/images/rel_error_mirror.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/rel_error_range.pdf b/buch/papers/laguerre/images/rel_error_range.pdf
index fca4019..bb8a2d7 100644
--- a/buch/papers/laguerre/images/rel_error_range.pdf
+++ b/buch/papers/laguerre/images/rel_error_range.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/rel_error_shifted.pdf b/buch/papers/laguerre/images/rel_error_shifted.pdf
index d0c2ae0..b7e72dc 100644
--- a/buch/papers/laguerre/images/rel_error_shifted.pdf
+++ b/buch/papers/laguerre/images/rel_error_shifted.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/rel_error_simple.pdf b/buch/papers/laguerre/images/rel_error_simple.pdf
index 24e11b6..3212e42 100644
--- a/buch/papers/laguerre/images/rel_error_simple.pdf
+++ b/buch/papers/laguerre/images/rel_error_simple.pdf
Binary files differ
diff --git a/buch/papers/laguerre/images/targets.pdf b/buch/papers/laguerre/images/targets.pdf
index e1ec07c..9514a6d 100644
--- a/buch/papers/laguerre/images/targets.pdf
+++ b/buch/papers/laguerre/images/targets.pdf
Binary files differ
diff --git a/buch/papers/laguerre/main.tex b/buch/papers/laguerre/main.tex
index f4263de..d69fbed 100644
--- a/buch/papers/laguerre/main.tex
+++ b/buch/papers/laguerre/main.tex
@@ -13,7 +13,7 @@ benannt nach Edmond Laguerre (1834 - 1886),
sind Lösungen der ebenfalls nach Laguerre benannten Differentialgleichung.
Laguerre entdeckte diese Polynome als er Approximationsmethoden
für das Integral $\int_0^\infty \exp(-x) / x \, dx$ suchte.
-Darum möchten wir in diesem Kapitel uns,
+Darum möchten wir uns in diesem Kapitel,
ganz im Sinne des Entdeckers,
den Laguerre-Polynomen für Approximationen von Integralen mit
exponentiell-abfallenden Funktionen widmen.
diff --git a/buch/papers/laguerre/presentation/sections/gamma_approx.tex b/buch/papers/laguerre/presentation/sections/gamma_approx.tex
index 3d32aae..ecd02ab 100644
--- a/buch/papers/laguerre/presentation/sections/gamma_approx.tex
+++ b/buch/papers/laguerre/presentation/sections/gamma_approx.tex
@@ -49,7 +49,8 @@ R_n(\xi)
\begin{figure}[h]
\centering
% \scalebox{0.91}{\input{../images/rel_error_simple.pgf}}
-\resizebox{!}{0.72\textheight}{\input{../images/rel_error_simple.pgf}}
+% \resizebox{!}{0.72\textheight}{\input{../images/rel_error_simple.pgf}}
+\includegraphics[width=0.77\textwidth]{../images/rel_error_simple.pdf}
\caption{Relativer Fehler des einfachen Ansatzes für verschiedene reele Werte
von $z$ und Grade $n$ der Laguerre-Polynome}
\end{figure}
@@ -81,7 +82,8 @@ von $z$ und Grade $n$ der Laguerre-Polynome}
\begin{frame}{$f(x) = x^z$}
\begin{figure}[h]
\centering
-\scalebox{0.91}{\input{../images/integrand.pgf}}
+% \scalebox{0.91}{\input{../images/integrand.pgf}}
+\includegraphics[width=0.8\textwidth]{../images/integrand.pdf}
% \caption{Integrand $x^z$ mit unterschiedlichen Werten für $z$}
\end{figure}
\end{frame}
@@ -89,7 +91,8 @@ von $z$ und Grade $n$ der Laguerre-Polynome}
\begin{frame}{Integrand $x^z e^{-x}$}
\begin{figure}[h]
\centering
-\scalebox{0.91}{\input{../images/integrand_exp.pgf}}
+% \scalebox{0.91}{\input{../images/integrand_exp.pgf}}
+\includegraphics[width=0.8\textwidth]{../images/integrand_exp.pdf}
% \caption{Integrand $x^z$ mit unterschiedlichen Werten für $z$}
\end{figure}
\end{frame}
@@ -144,15 +147,16 @@ da Gauss-Quadratur nur für kleine $n$ praktischen Nutzen hat}
\begin{frame}{Schätzen von $m^*$}
\begin{columns}
-\begin{column}{0.6\textwidth}
+\begin{column}{0.65\textwidth}
\begin{figure}
\centering
-\vspace{-24pt}
-\scalebox{0.7}{\input{../images/estimates.pgf}}
+\vspace{-12pt}
+% \scalebox{0.7}{\input{../images/estimates.pgf}}
+\includegraphics[width=1.0\textwidth]{../images/estimates.pdf}
% \caption{Integrand $x^z$ mit unterschiedlichen Werten für $z$}
\end{figure}
\end{column}
-\begin{column}{0.39\textwidth}
+\begin{column}{0.34\textwidth}
\begin{align*}
\hat{m}
&=
@@ -173,7 +177,8 @@ m^*
\begin{frame}{}
\begin{figure}[h]
\centering
-\scalebox{0.6}{\input{../images/rel_error_shifted.pgf}}
+% \scalebox{0.6}{\input{../images/rel_error_shifted.pgf}}
+\includegraphics{../images/rel_error_shifted.pdf}
\caption{Relativer Fehler mit $n=8$, unterschiedlichen Verschiebungstermen $m$ und $z\in(0, 1)$}
\end{figure}
\end{frame}
@@ -181,7 +186,8 @@ m^*
\begin{frame}{}
\begin{figure}[h]
\centering
-\scalebox{0.6}{\input{../images/rel_error_range.pgf}}
+% \scalebox{0.6}{\input{../images/rel_error_range.pgf}}
+\includegraphics{../images/rel_error_range.pdf}
\caption{Relativer Fehler mit $n=8$, Verschiebungsterm $m^*$ und $z\in(-5, 5)$}
\end{figure}
\end{frame}
diff --git a/buch/papers/laguerre/presentation/sections/laguerre.tex b/buch/papers/laguerre/presentation/sections/laguerre.tex
index ed29387..f99214e 100644
--- a/buch/papers/laguerre/presentation/sections/laguerre.tex
+++ b/buch/papers/laguerre/presentation/sections/laguerre.tex
@@ -55,7 +55,8 @@ L_n(x)
\begin{frame}
\begin{figure}[h]
\centering
-\resizebox{0.74\textwidth}{!}{\input{../images/laguerre_poly.pgf}}
+% \resizebox{0.74\textwidth}{!}{\input{../images/laguerre_poly.pgf}}
+\includegraphics[width=0.7\textwidth]{../images/laguerre_poly.pdf}
\caption{Laguerre-Polynome vom Grad $0$ bis $7$}
\end{figure}
\end{frame}
diff --git a/buch/papers/laguerre/quadratur.tex b/buch/papers/laguerre/quadratur.tex
index 7cbae48..4ca6913 100644
--- a/buch/papers/laguerre/quadratur.tex
+++ b/buch/papers/laguerre/quadratur.tex
@@ -48,13 +48,13 @@ darum müssen wir sie mit einer Funktion multiplizieren,
die schneller als jedes Polynom gegen $0$ geht,
damit das Integral immer noch konvergiert.
Die Laguerre-Polynome $L_n$ bieten hier Abhilfe,
-da ihre Gewichtsfunktion $e^{-x}$ schneller
+da ihre Gewichtsfunktion $w(x) = e^{-x}$ schneller
gegen $0$ konvergiert als jedes Polynom.
% In unserem Falle möchten wir die Gauss Quadratur auf die Laguerre-Polynome
% $L_n$ ausweiten.
% Diese sind orthogonal im Intervall $(0, \infty)$ bezüglich
% der Gewichtsfunktion $e^{-x}$.
-Gleichung~\eqref{laguerre:gaussquadratur} lässt sich wie folgt
+Die Gleichung~\eqref{laguerre:gaussquadratur} lässt sich wie folgt
umformulieren:
\begin{align}
\int_{0}^{\infty} f(x) e^{-x} dx
@@ -81,7 +81,7 @@ l_i(x_j)
% .
\end{align*}
die Lagrangschen Interpolationspolynome.
-Laut \cite{hildebrand2013introduction} können die Gewicht mit
+Laut \cite{laguerre:hildebrand2013introduction} können die Gewichte mit
\begin{align*}
A_i
& =
@@ -97,7 +97,7 @@ des orthogonalen Polynoms $\phi_n(x)$, $\forall i =0,\ldots,n$ und
\end{align*}
dem Normalisierungsfaktor.
Wir setzen nun $\phi_n(x) = L_n(x)$ und
-nutzen den Vorzeichenwechsel der Laguerrekoeffizienten aus,
+nutzen den Vorzeichenwechsel der Laguerre-Koeffizienten aus,
damit erhalten wir
\begin{align*}
A_i
@@ -135,7 +135,7 @@ n L_n(x) - n L_{n-1}(x)
&= (x - n - 1) L_n(x) + (n + 1) L_{n+1}(x)
\end{align*}
umgeformt werden und da $x_i$ die Nullstellen von $L_n(x)$ sind,
-folgt
+vereinfacht sich der Term zu
\begin{align*}
x_i L'_n(x_i)
&=
@@ -145,7 +145,7 @@ x_i L'_n(x_i)
(n + 1) L_{n+1}(x_i)
.
\end{align*}
-Setzen wir das nun in \eqref{laguerre:gewichte_lag_temp} ein ergibt sicht
+Setzen wir das nun in \eqref{laguerre:gewichte_lag_temp} ein ergibt sich
\begin{align}
\nonumber
A_i
@@ -168,7 +168,7 @@ Der Fehlerterm $R_n$ folgt direkt aus der Approximation
=
\sum_{i=1}^n f(x_i) A_i + R_n
\end{align*}
-und \cite{abramowitz+stegun} gibt ihn als
+und \cite{laguerre:abramowitz+stegun} gibt ihn als
\begin{align}
R_n
& =
diff --git a/buch/papers/laguerre/references.bib b/buch/papers/laguerre/references.bib
index 2371922..d21009b 100644
--- a/buch/papers/laguerre/references.bib
+++ b/buch/papers/laguerre/references.bib
@@ -3,19 +3,17 @@
%
% (c) 2020 Autor, Hochschule Rapperswil
%
-
-@book{hildebrand2013introduction,
+@book{laguerre:hildebrand2013introduction,
title={Introduction to Numerical Analysis: Second Edition},
author={Hildebrand, F.B.},
isbn={9780486318554},
series={Dover Books on Mathematics},
- url={https://books.google.ch/books?id=ic2jAQAAQBAJ},
year={2013},
publisher={Dover Publications},
pages = {389}
}
-@book{abramowitz+stegun,
+@book{laguerre:abramowitz+stegun,
added-at = {2008-06-25T06:25:58.000+0200},
address = {New York},
author = {Abramowitz, Milton and Stegun, Irene A.},
@@ -32,11 +30,21 @@
year = 1972
}
-@article{Cassity1965AbcissasCA,
+@article{laguerre:Cassity1965AbcissasCA,
title={Abcissas, coefficients, and error term for the generalized Gauss-Laguerre quadrature formula using the zero ordinate},
author={C. Ronald Cassity},
journal={Mathematics of Computation},
year={1965},
volume={19},
pages={287-296}
+}
+
+@online{laguerre:lanczos,
+ title = {Lanczos Approximation},
+ author={Eric W. Weisstein},
+ url = {https://mathworld.wolfram.com/LanczosApproximation.html},
+ date = {2022-07-18},
+ year = {2022},
+ month = {7},
+ day = {18}
} \ No newline at end of file
diff --git a/buch/papers/laguerre/scripts/gamma_approx.py b/buch/papers/laguerre/scripts/gamma_approx.py
index 9f9dae7..5b09e59 100644
--- a/buch/papers/laguerre/scripts/gamma_approx.py
+++ b/buch/papers/laguerre/scripts/gamma_approx.py
@@ -7,6 +7,7 @@ EPSILON = 1e-7
root = str(Path(__file__).parent)
img_path = f"{root}/../images"
fontsize = "medium"
+cmap = "plasma"
def _prep_zeros_and_weights(x, w, n):
diff --git a/buch/papers/laguerre/scripts/rel_error_complex.py b/buch/papers/laguerre/scripts/rel_error_complex.py
index 5be79be..4a714fa 100644
--- a/buch/papers/laguerre/scripts/rel_error_complex.py
+++ b/buch/papers/laguerre/scripts/rel_error_complex.py
@@ -24,9 +24,9 @@ if __name__ == "__main__":
lag = ga.eval_laguerre_gamma(input, n=8, func="optimal_shifted").reshape(mesh.shape)
rel_error = np.abs(ga.calc_rel_error(lanczos, lag))
- fig, ax = plt.subplots(clear=True, constrained_layout=True, figsize=(4, 2.4))
+ fig, ax = plt.subplots(clear=True, constrained_layout=True, figsize=(3.5, 2.1))
_c = ax.pcolormesh(
- x, y, rel_error, shading="gouraud", cmap="inferno", norm=mpl.colors.LogNorm()
+ x, y, rel_error, shading="gouraud", cmap=ga.cmap, norm=mpl.colors.LogNorm()
)
cbr = fig.colorbar(_c, ax=ax)
cbr.minorticks_off()
diff --git a/buch/papers/laguerre/scripts/rel_error_range.py b/buch/papers/laguerre/scripts/rel_error_range.py
index 43b5450..ece3b6d 100644
--- a/buch/papers/laguerre/scripts/rel_error_range.py
+++ b/buch/papers/laguerre/scripts/rel_error_range.py
@@ -21,7 +21,7 @@ if __name__ == "__main__":
x = np.linspace(xmin + ga.EPSILON, xmax - ga.EPSILON, N)
gamma = scipy.special.gamma(x)
- fig, ax = plt.subplots(num=1, clear=True, constrained_layout=True, figsize=(5, 2.5))
+ fig, ax = plt.subplots(num=1, clear=True, constrained_layout=True, figsize=(5, 2))
for n in ns:
gamma_lag = ga.eval_laguerre_gamma(x, n=n, func="optimal_shifted")
rel_err = ga.calc_rel_error(gamma, gamma_lag)
diff --git a/buch/papers/laguerre/scripts/rel_error_shifted.py b/buch/papers/laguerre/scripts/rel_error_shifted.py
index dc9d177..f53c89b 100644
--- a/buch/papers/laguerre/scripts/rel_error_shifted.py
+++ b/buch/papers/laguerre/scripts/rel_error_shifted.py
@@ -20,7 +20,7 @@ if __name__ == "__main__":
x = np.linspace(step, 1 - step, N + 1)
targets = np.arange(10, 14)
gamma = scipy.special.gamma(x)
- fig, ax = plt.subplots(num=1, clear=True, constrained_layout=True, figsize=(5, 2.5))
+ fig, ax = plt.subplots(num=1, clear=True, constrained_layout=True, figsize=(5, 2.1))
for target in targets:
gamma_lag = ga.eval_laguerre_gamma(x, target=target, n=n, func="shifted")
rel_error = np.abs(ga.calc_rel_error(gamma, gamma_lag))
diff --git a/buch/papers/laguerre/scripts/targets.py b/buch/papers/laguerre/scripts/targets.py
index 206b3a1..3bc7f52 100644
--- a/buch/papers/laguerre/scripts/targets.py
+++ b/buch/papers/laguerre/scripts/targets.py
@@ -42,8 +42,8 @@ if __name__ == "__main__":
bests = find_best_loc(N, ns=ns)
- fig, ax = plt.subplots(num=1, clear=True, constrained_layout=True, figsize=(4, 2.4))
- v = ax.imshow(bests, cmap="inferno", aspect="auto", interpolation="nearest")
+ fig, ax = plt.subplots(num=1, clear=True, constrained_layout=True, figsize=(3.5, 2.1))
+ v = ax.imshow(bests, cmap=ga.cmap, aspect="auto", interpolation="nearest")
plt.colorbar(v, ax=ax, label=r"$m^*$")
ticks = np.arange(0, N + 1, N // 5)
ax.set_xlim(0, 1)