python中不完整的gamma函数?

时间:2012-05-10 22:01:09

标签: python scipy

scipy.special.gammainc不能为第一个参数取负值。在python中是否还有其他实现?我可以肯定地进行手动集成,但我想知道是否存在已经存在的良好替代方案。

Correct result: 1 - Gamma[-1,1] = 0.85

Use Scipy: scipy.special.gammainc(-1, 1) = 0

感谢。

2 个答案:

答案 0 :(得分:5)

每当我需要特殊功能时,我通常会到达mpmath并且我不太关心性能。 (尽管它在很多情况下的表现都非常好。)

例如:

>>> import mpmath
>>> mpmath.gammainc(-1,1)
mpf('0.14849550677592205')
>>> 1-mpmath.gammainc(-1,1)
mpf('0.85150449322407795')
>>> mpmath.mp.dps = 50 # arbitrary precision!
>>> 1-mpmath.gammainc(-1,1)
mpf('0.85150449322407795208164000529866078158523616237514084')

答案 1 :(得分:2)

我只是遇到了同样的问题,最后在< 0时使用了函数的递归关系。 http://en.wikipedia.org/wiki/Incomplete_gamma_function#Properties

另请注意,scipy函数gammainc和gammaincc给出正则化形式Gamma(a,x)/ Gamma(a)