2016-08-02 33 views
1

我想計算什麼Wolfram Alpha的不完全γ函數調用完全伽瑪功能(see here)在SciPy的

`gamma[0, 0.1]` 

的Wolfram Alpha的輸出是1.822。唯一scipy給了我類似於scipy.special.gammainc,但它有不同的definition比wolfram alpha如何定義它們的不完整伽馬函數。

不足爲奇

import scipy 
scipy.special.gammainc(0, 0.1) 

給我nanscipy支持我在找什麼?

+0

Sympy版本的(上部)不完整gamma'sympy.functions.special.gamma_functions.uppergamma'與mathematica具有相同的定義。 – Stelios

回答

3

根據http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.special.gammainc.html,第一個參數必須是正數,而您有零;這就是你得到NaN的原因。

也就是說,假設我們試圖計算Gamma[0.01,0.1]。在這種情況下,WolframAlpha的返回1.80324

enter image description here

根據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

+3

可以使用'gammaincc(0.01,0.1)'來代替'1 - gammainc(0.01,0.1)'。 –