2017-09-14 1 views
0

Il y a un algorithme très concis pour calculer la fonction gamma incomplète:incomplet algorithme de fonction gamma

https://people.sc.fsu.edu/~jburkardt/f_src/asa147/asa147.html

Nous avons codé cela en C++. Il y a une chose que je ne comprends pas dans cet algorithme. Dans un endroit pour calculer l'expression suivante:

\frac{\gamma(p,x)}{\Gamma(p)}

il est remplacé par:

x^p e^{-x}\sum^\infty_{k=0}\frac{x^k}{\Gamma(k+p+1)},

Évidemment, cela est la même chose, mais pourquoi il est fait comme ça? Est-ce que le calcul de exp de lgamma est plus efficace que le calcul de la fonction tgamma (les deux lgamma et tgamma sont disponibles en C++)?

Répondre

0

Est-ce que calcul de exp lgamma est plus efficace que le calcul du tgamma fonction (à la fois lgamma et tgamma sont disponibles en C++)?

Le calcul de lgamma est plus efficace car il s'agit essentiellement d'un comportement n * log (n). Donc généralement vous avez une bonne approximation que vous essayez de calculer lgamma (x)/x fonction. Il faut aussi garder à l'esprit que lgamma est souvent utilisé car il fait partie de l'expression qui peut être calculée alors que tgamma, qui croît aussi vite que factorielle, ne l'est pas. Donc, il est sûr de calculer l'expression entière f(x) comme exp (log (f (x))), et si f (x) a un produit de tgamma, alors log (f (x)) devra totaliser/soustraire lgamma.

Bon moyen d'éviter les débordements, essentiellement