我想计算 wolfram alpha 调用的不完全 Gamma 函数 (see here) :
`gamma[0, 0.1]`
wolfram alpha 输出为 1.822
。 scipy
给我的唯一类似的是 scipy.special.gammainc
,但它有一个不同的 definition比 wolfram alpha 如何定义它们的不完整 Gamma 函数。
不足为奇
import scipy
scipy.special.gammainc(0, 0.1)
给我 nan
。 scipy
是否支持我正在寻找的东西?
最佳答案
根据 http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.special.gammainc.html ,第一个参数必须是正数,而你有零;这就是你得到 NaN 的原因。
也就是说,假设我们尝试计算 Gamma[0.01,0.1]
。在这种情况下,WolframAlpha 返回 1.80324
:
根据 http://mathworld.wolfram.com/IncompleteGammaFunction.html ,这是上不完全 Gamma 函数,而 Scipy 输出的是 WolframAlpha 称为下不完全 Gamma 函数的缩放版本。通过使用等式 10 中的恒等式,可以看出在 a>0 的情况下,您可以使用以下内容:
from scipy.special import gammainc
from scipy.special import gamma
gamma(0.01)*(1 - gammainc(0.01,0.1))
返回 1.8032413569025461
与 WolframAlpha 一致。
简而言之,WolframAlpha中的Gamma[a,x]
对应于Scipy中的gamma(a)*(1-gammainc(a,x))
,前提是a>0
.
关于python - scipy 中不完整的 Gamma 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38713199/