不完整的伽玛函数算法

问题描述 投票:0回答:2

有一个非常简洁的算法来计算较低的不完全伽玛函数:

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

我们用C ++编写了这个代码。在这个算法中有一点我不明白。在一个地方计算以下表达式:

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

它被替换为:

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

显然这是一样的,但为什么这样做呢?计算lgamma的exp是否比计算tgamma函数更有效(lgammatgamma都可以在C ++中使用)?

c++ gamma-function
2个回答
1
投票

1
投票

lgamma的计算exp是否比计算tgamma函数更有效(lgamma和tgamma在C ++中都可用)?

计算lgamma更有效,因为它基本上是n * log(n)行为。所以通常你有一个很好的近似id,你试图计算lgamma(x)/ x函数。

另外,请记住,lgamma经常被使用,因为它是表达式的一部分,可以计算,而tgamma,其增长速度与阶乘一样快,不是。因此,将整个表达式f(x)计算为exp(log(f(x)))是安全的,并且如果f(x)具有tgamma的乘积,那么log(f(x))将必须求和/减去lgamma

基本上避免溢出的好方法

© www.soinside.com 2019 - 2024. All rights reserved.