【发布时间】:2018-07-31 08:38:11
【问题描述】:
我正在尝试计算upper incomplete gamma function 中定义的this post。如果我使用
from scipy.special import gamma,gammainc
from numpy import linspace
a = 0
z = (2+3j)*np.linspace(0,10)
gamma(a)*(1-gammainc(a,z))
z 是一个复数向量我得到一个错误
TypeError: ufunc 'gammainc' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
是否有替代函数来进行计算?当我尝试使用 WolframAlpha 的 Gamma 函数执行此操作时,似乎没有问题。
【问题讨论】:
-
不完全伽马函数是通过积分定义的,
x(或z)是积分边界。你希望这个积分如何在复平面上进行?复平面中的积分通常取决于积分路径而不仅仅是边界。我不知道 WolframAlpha 是如何处理这种情况的,但这将是首先要弄清楚的事情。另请注意,对于您示例中的特定情况 (a = 0),积分有一个解析解,您可以使用scipy.special.expi函数来计算结果(对于实际值边界)。 -
@a_guest 至少对于具有正实部的参数,它是明确的:那里没有被积函数的极点,而因子
exp(-t)在无穷大处提供了很好的衰减。在左半平面上,解析延拓使用沿负实轴切割的分支。
标签: python scipy gamma-function