scipy.special.gammainc
不能为第一个参数取负值。在python中是否还有其他实现?我可以肯定地进行手动集成,但我想知道是否存在已经存在的良好替代方案。
Correct result: 1 - Gamma[-1,1] = 0.85
Use Scipy: scipy.special.gammainc(-1, 1) = 0
感谢。
答案 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)