我想计算wolfram alpha所说的不完全伽马函数(see here)
`gamma[0, 0.1]`wolfram alpha的输出是1.822。scipy给我的唯一类似的东西是scipy.special.gammainc,但它有一个不同的definition,不同于wolfram alpha定义他们不完整的伽马函数。
这并不奇怪
import scipy
scipy.special.gammainc(0, 0.1)给了我nan。scipy支持我要找的东西吗?
发布于 2016-08-02 16:09:28
根据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的说法,这是上不完全伽马函数,而Scipy输出的是WolframAlpha所称的下不完全伽马函数的缩放版本。通过使用等式10中的等式,可以看到在a>0的情况下,您可以使用以下内容:
from scipy.special import gammainc
from scipy.special import gamma
gamma(0.01)*(1 - gammainc(0.01,0.1))它返回与WolframAlpha一致的1.8032413569025461。
简而言之,WolframAlpha中的Gamma[a,x]对应于Scipy中的gamma(a)*(1-gammainc(a,x)),前提是a>0。
发布于 2018-09-05 21:57:35
不幸的是,scipys gammaincc不支持a=0的值。但是你可以定义你自己的inc_gamma
from scipy.special import gamma, gammaincc, exp1
def inc_gamma(a, x):
return exp1(x) if a == 0 else gamma(a)*gammaincc(a, x)然后inc_gamma(0, 0.1)会给你1.8229239584193906。
https://stackoverflow.com/questions/38713199
复制相似问题