Lanczosova aproximace - Lanczos approximation - Wikipedia
v matematika, Lanczosova aproximace je metoda výpočtu funkce gama číselně, publikováno Cornelius Lanczos v roce 1964. Jedná se o praktickou alternativu k populárnějším Stirlingova aproximace pro výpočet funkce gama s pevnou přesností.
Úvod
Lanczosova aproximace se skládá ze vzorce
pro funkci gama, s
Tady G je konstantní které lze libovolně zvolit s výhradou omezení, které Re (z) > 1/2.[1] Koeficienty p, na kterých závisí G, jsou o něco obtížnější vypočítat (viz níže). I když zde uvedený vzorec platí pouze pro argumenty ve správném komplexu polorovina, lze ji rozšířit na celý složité letadlo podle reflexní vzorec,
Série A je konvergentní, a mohou být zkráceny pro získání aproximace s požadovanou přesností. Výběrem vhodného G (obvykle malé celé číslo), k výpočtu funkce gama s typickými je zapotřebí pouze 5–10 členů řady singl nebo dvojnásobek plovoucí bod přesnost. Pokud je opraveno G je možné zvolit koeficienty předem a součet je přepracován do následující podoby:
Výpočet funkce gama se tedy stává věcí vyhodnocení pouze malého počtu základní funkce a vynásobením uloženými konstantami. Lanczosovu aproximaci popularizoval Numerické recepty, podle kterého se výpočet funkce gama stává „ne mnohem obtížnějším než jiné vestavěné funkce, které považujeme za samozřejmost, například sinX nebo EX". Metoda je také implementována v Vědecká knihovna GNU.
Koeficienty
Koeficienty jsou dány vztahem
kde představuje (n, m) th prvek prvku matice koeficientů pro Čebyševovy polynomy, které lze vypočítat rekurzivně z těchto identit:
Godfrey (2001) popisuje, jak získat koeficienty a také hodnotu zkrácené řady A jako maticový produkt.[2]
Derivace
Lanczos odvodil vzorec Leonhard Euler je integrální
provedení sledu základních manipulací k získání
a odvození řady pro integrál.
Jednoduchá implementace
Následující implementace v Programovací jazyk Python pracuje pro složité argumenty a obvykle dává 15 správných desetinných míst. Upozorňujeme, že vynechání nejmenších koeficientů nevede k rychlejší, ale o něco méně přesné implementaci; koeficienty musí být přepočítány od nuly pro expanzi s méně výrazy.
z cmath import hřích, čtv, pi, expp = [676.5203681218851 ,-1259.1392167224028 ,771.32342877765313 ,-176.61502916214059 ,12.507343278686905 ,-0.13857109526572012 ,9.9843695780195716e-6 ,1.5056327351493116e-7 ]EPSILON = 1e-07def drop_imag(z): -li břišní svaly(z.imag) <= EPSILON: z = z.nemovitý vrátit se zdef gama(z): z = komplex(z) -li z.nemovitý < 0.5: y = pi / (hřích(pi * z) * gama(1 - z)) # Reflexní vzorec jiný: z -= 1 X = 0.99999999999980993 pro (i, pval) v vyjmenovat(p): X += pval / (z + i + 1) t = z + len(p) - 0.5 y = čtv(2 * pi) * t ** (z + 0.5) * exp(-t) * X vrátit se drop_imag(y)"""Výše uvedené použití odrazu (tedy struktury if-else) je nutné, i když může to vypadat divně, protože umožňuje rozšířit aproximaci na hodnoty z kde Re (z) <0,5, kde Lanczosova metoda není platná."""tisk(gama(1))tisk(gama(5)) tisk(gama(0.5))
Viz také
Reference
- ^ Pugh, Glendon (2004). Analýza aproximace gama Lanczos (PDF) (Ph.D.).
- ^ Godfrey, Paul (2001). „Lanczosova implementace funkce gama“. Numericana.
- Godfrey, Paul (2001). „Lanczosova implementace funkce gama“.
- Lanczos, Cornelius (1964). "Přesná aproximace funkce gama". Journal of the Society for Industrial and Applied Mathematics, Series B: Numerical Analysis. 1: 86–96. Bibcode:1964SJNA .... 1 ... 86L. doi:10.1137/0701008. ISSN 0887-459X. JSTOR 2949767.
- Press, W. H .; Teukolsky, S. A .; Vetterling, W. T .; Flannery, B. P. (2007), „Část 6.1. Funkce gama“, Numerické recepty: Umění vědecké práce na počítači (3. vyd.), New York: Cambridge University Press, ISBN 978-0-521-88068-8
- Pugh, Glendon (2004). Analýza aproximace gama Lanczos (PDF) (Disertační práce).
- Toth, Viktor (2005). „Programovatelné kalkulačky: The Lanczos Aproximation“.
- Weisstein, Eric W. „Lanczosova aproximace“. MathWorld.