首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scipy中的不完全Gamma函数

scipy中的不完全Gamma函数
EN

Stack Overflow用户
提问于 2016-08-02 14:29:44
回答 2查看 4.7K关注 0票数 5

我想计算wolfram alpha所说的不完全伽马函数(see here)

代码语言:javascript
复制
`gamma[0, 0.1]`

wolfram alpha的输出是1.822scipy给我的唯一类似的东西是scipy.special.gammainc,但它有一个不同的definition,不同于wolfram alpha定义他们不完整的伽马函数。

这并不奇怪

代码语言:javascript
复制
import scipy
scipy.special.gammainc(0, 0.1)

给了我nanscipy支持我要找的东西吗?

EN

回答 2

Stack Overflow用户

发布于 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的情况下,您可以使用以下内容:

代码语言:javascript
复制
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

票数 10
EN

Stack Overflow用户

发布于 2018-09-05 21:57:35

不幸的是,scipys gammaincc不支持a=0的值。但是你可以定义你自己的inc_gamma

代码语言:javascript
复制
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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38713199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档