Lanczos Annäherung – Wikipedia
In der Mathematik ist die Lanczos-Annäherung ist eine Methode zur numerischen Berechnung der Gammafunktion, die 1964 von Cornelius Lanczos veröffentlicht wurde. Sie ist eine praktische Alternative zur populäreren Stirlingschen Näherung zur Berechnung der Gammafunktion mit fester Genauigkeit.
Einführung[edit]
Die Lanczos-Näherung besteht aus der Formel
für die Gammafunktion mit
Hier G ist eine Konstante, die willkürlich gewählt werden kann, vorbehaltlich der Einschränkung, dass Re (z)> 1/.2.[1] Die Koeffizienten p, die davon abhängen Gsind etwas schwieriger zu berechnen (siehe unten). Obwohl die hier angegebene Formel nur für Argumente in der rechten komplexen Halbebene gilt, kann sie durch die Reflexionsformel auf die gesamte komplexe Ebene erweitert werden.
Die Serie EIN ist konvergent und kann abgeschnitten werden, um eine Annäherung mit der gewünschten Genauigkeit zu erhalten. Durch Auswahl eines geeigneten G (normalerweise eine kleine Ganzzahl), es werden nur etwa 5 bis 10 Terme der Reihe benötigt, um die Gammafunktion mit typischer Einzel- oder Doppel-Gleitkomma-Genauigkeit zu berechnen. Wenn ein fester G gewählt wird, können die Koeffizienten im Voraus berechnet werden und die Summe wird in die folgende Form umformuliert:
Die Berechnung der Gammafunktion wird somit zu einer Frage der Auswertung nur einer kleinen Anzahl von Elementarfunktionen und der Multiplikation mit gespeicherten Konstanten. Die Lanczos-Näherung wurde von populär gemacht Numerische Rezepte, nach welcher Berechnung die Gammafunktion wird “nicht viel schwieriger als andere eingebaute Funktionen, die wir für selbstverständlich halten, wie zum Beispiel Sünde x oder ex“. Die Methode ist auch in der GNU Scientific Library implementiert.
Koeffizienten[edit]
Die Koeffizienten sind gegeben durch
wo
repräsentiert die (n, m) Das Element der Koeffizientenmatrix für die Chebyshev-Polynome, das rekursiv aus diesen Identitäten berechnet werden kann:
Ableitung[edit]
Lanczos leitete die Formel aus dem Integral von Leonhard Euler ab
Durchführen einer Folge grundlegender Manipulationen, um zu erhalten
und Ableiten einer Reihe für das Integral.
Einfache Implementierung[edit]
Die folgende Implementierung in der Programmiersprache Python funktioniert für komplexe Argumente und gibt normalerweise 15 korrekte Dezimalstellen an. Beachten Sie, dass das Weglassen der kleinsten Koeffizienten nicht zu einer schnelleren, aber etwas weniger genauen Implementierung führt. Die Koeffizienten müssen für eine Erweiterung mit weniger Termen von Grund auf neu berechnet werden.
from cmath import sin, sqrt, pi, exp p = [676.5203681218851 ,-1259.1392167224028 ,771.32342877765313 ,-176.61502916214059 ,12.507343278686905 ,-0.13857109526572012 ,9.9843695780195716e-6 ,1.5056327351493116e-7 ] EPSILON = 1e-07 def drop_imag(z): if abs(z.imag) <= EPSILON: z = z.real return z def gamma(z): z = complex(z) if z.real < 0.5: y = pi / (sin(pi * z) * gamma(1 - z)) # Reflection formula else: z -= 1 x = 0.99999999999980993 for (i, pval) in enumerate(p): x += pval / (z + i + 1) t = z + len(p) - 0.5 y = sqrt(2 * pi) * t ** (z + 0.5) * exp(-t) * x return drop_imag(y) """ The above use of the reflection (thus the if-else structure) is necessary, even though it may look strange, as it allows to extend the approximation to values of z where Re(z) < 0.5, where the Lanczos method is not valid. """ print(gamma(1)) print(gamma(5)) print(gamma(0.5))
Siehe auch[edit]
Verweise[edit]
- Godfrey, Paul (2001). “Lanczos Implementierung der Gamma-Funktion”.
- Lanczos, Cornelius (1964). “Eine präzise Approximation der Gammafunktion”. Zeitschrift der Gesellschaft für industrielle und angewandte Mathematik, Reihe B: Numerische Analyse. 1: 86–96. Bibcode:1964SJNA …. 1 … 86L. doi:10.1137 / 0701008. ISSN 0887-459X. JSTOR 2949767.
- Drücken Sie, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007), “Abschnitt 6.1. Gammafunktion”, Numerische Rezepte: Die Kunst des wissenschaftlichen Rechnens (3. Aufl.), New York: Cambridge University Press, ISBN 978-0-521-88068-8
- Pugh, Glendon (2004). Eine Analyse der Lanczos-Gamma-Näherung (PDF) (Doktorarbeit).
- Toth, Viktor (2005). “Programmierbare Taschenrechner: Die Lanczos-Näherung”.
- Weisstein, Eric W. “Lanczos-Annäherung”. MathWorld.
Recent Comments