En matemáticas , la aproximación de Lanczos es un método para calcular numéricamente la función gamma , publicado por Cornelius Lanczos en 1964. Es una alternativa práctica a la aproximación más popular de Stirling para calcular la función gamma con precisión fija.
Introducción
La aproximación de Lanczos consiste en la fórmula
para la función gamma, con
Aquí g es una constante que puede elegirse arbitrariamente sujeto a la restricción de que Re ( z )> 1/2. [1] Los coeficientes p , que dependen de g , son un poco más difíciles de calcular (ver más abajo). Aunque la fórmula como se indica aquí solo es válida para argumentos en el semiplano complejo derecho , se puede extender a todo el plano complejo mediante la fórmula de reflexión ,
La serie A es convergente y puede truncarse para obtener una aproximación con la precisión deseada. Al elegir un g apropiado (generalmente un entero pequeño), solo se necesitan entre 5 y 10 términos de la serie para calcular la función gamma con la precisión típica de coma flotante simple o doble . Si se elige una g fija , los coeficientes se pueden calcular de antemano y la suma se refundirá en la siguiente forma:
Por lo tanto, calcular la función gamma se convierte en una cuestión de evaluar solo un pequeño número de funciones elementales y multiplicar por constantes almacenadas. La aproximación de Lanczos fue popularizada por Numerical Recipes , según la cual calcular la función gamma se vuelve "no mucho más difícil que otras funciones integradas que damos por sentado, como sen x o e x ". El método también se implementa en la biblioteca científica GNU , Boost , CPython y musl .
Coeficientes
Los coeficientes están dados por
dónde representa el elemento ( n , m ) ésimo de la matriz de coeficientes de los polinomios de Chebyshev , que se puede calcular de forma recursiva a partir de estas identidades:
Godfrey (2001) describe cómo obtener los coeficientes y también el valor de la serie A truncada como un producto matricial . [2]
Derivación
Lanczos derivó la fórmula de la integral de Leonhard Euler
realizando una secuencia de manipulaciones básicas para obtener
y derivar una serie para la integral.
Implementación simple
La siguiente implementación en el lenguaje de programación Python funciona para argumentos complejos y normalmente proporciona 15 decimales correctos. Tenga en cuenta que omitir los coeficientes más pequeños no da como resultado una implementación más rápida pero un poco menos precisa; los coeficientes se deben volver a calcular desde cero para una expansión con menos términos.
de cmath import sin , sqrt , pi , expp = [ 676.5203681218851 , - 1259.1392167224028 , 771.32342877765313 , - 176.61502916214059 , 12.507343278686905 , - 0.13857109526572012 , 9.9843695780195716e-6 , 1.505632735 ]EPSILON = 1e-07 def drop_imag ( z ): if abs ( z . Imag ) <= EPSILON : z = z . retorno real z def gamma ( z ): z = complejo ( z ) si z . real < 0.5 : y = pi / ( sin ( pi * z ) * gamma ( 1 - z )) # Fórmula de reflexión else : z - = 1 x = 0.99999999999980993 para ( i , pval ) en 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 ) " "" El uso anterior de la reflexión (por lo tanto, la estructura if-else) es necesario, aunque pueda parecer extraño, ya que permite extender la aproximación a valores de z donde Re (z) <0.5, donde el método de Lanczos es no válido. "" "imprimir ( gamma ( 1 )) imprimir ( gamma ( 5 )) imprimir ( gamma ( 0.5 ))
Ver también
Referencias
- ^ Pugh, Glendon (2004). Un análisis de la aproximación Lanczos Gamma (PDF) (Ph.D.).
- ^ Godfrey, Paul (2001). "Implementación de Lanczos de la función gamma" . Numericana .
- Godfrey, Paul (2001). "Implementación Lanczos de la Función Gamma" .
- Lanczos, Cornelius (1964). "Una aproximación de precisión de la función Gamma". Revista de la Sociedad de Matemáticas Industriales y Aplicadas, Serie B: Análisis numérico . 1 : 86–96. Código bibliográfico : 1964SJNA .... 1 ... 86L . doi : 10.1137 / 0701008 . ISSN 0887-459X . JSTOR 2949767 .
- Presione, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007), "Sección 6.1. Función gamma" , Recetas numéricas: El arte de la informática científica (3ª ed.), Nueva York: Cambridge University Press, ISBN 978-0-521-88068-8
- Pugh, Glendon (2004). Un análisis de la aproximación Lanczos Gamma (PDF) (tesis doctoral).
- Toth, Viktor (2005). "Calculadoras programables: la aproximación de Lanczos" .
- Weisstein, Eric W. "Aproximación de Lanczos" . MathWorld .