неполная Гамма-функция в python?

на scipy.special.gammainc не может принимать отрицательные значения первого аргумента. Есть ли другие реализации, которые могут быть в python? Я могу сделать ручную интеграцию наверняка, но я хотел бы знать, есть ли хорошие альтернативы, которые уже существуют.

Correct result: 1 - Gamma[-1,1] = 0.85

Use Scipy: scipy.special.gammainc(-1, 1) = 0

спасибо.

2 ответов


обычно я тянусь к 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')

У меня была та же проблема, и в итоге я использовал рекуррентные отношения для функции, когдаhttp://en.wikipedia.org/wiki/Incomplete_gamma_function#Properties

Обратите также внимание, что функции scipy gammainc и gammaincc дают регуляризованные формы Gamma(a,x)/Gamma (a)