はscipy.special.gammainc
、最初の引数に負の値を取ることはできません。Pythonでできる他の実装はありますか? 確かに手動で統合することはできますが、既に存在する優れた代替手段があるかどうかを知りたいです。
Correct result: 1 - Gamma[-1,1] = 0.85
Use Scipy: scipy.special.gammainc(-1, 1) = 0
ありがとう。
私は通常、特別な関数が必要なときはいつでも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')
私はちょうど同じ問題を抱えていて、a<0のときに関数の再帰関係を使用することになりました。 http://en.wikipedia.org/wiki/Incomplete_gamma_function#Properties
また、scipy 関数 gammainc および gammaincc は正規化された形式 Gamma(a,x)/Gamma(a) を与えることにも注意してください。