maxframe.tensor.special.gamma#
- maxframe.tensor.special.gamma(z, out=None)[源代码]#
伽马函数。
伽马函数定义为
\[\Gamma(z) = \int_0^\infty t^{z-1} e^{-t} dt\]对于 \(\Re(z) > 0\),并通过对解析延拓将其扩展到复平面的其余部分。更多细节请参见 [dlmf]。
- 参数:
z (array_like) -- 实数或复数值参数
out (ndarray, optional) -- 可选的函数值输出数组
- 返回:
伽马函数的值
- 返回类型:
scalar or ndarray
备注
伽马函数常被称为广义阶乘,因为对于自然数 \(n\) 有 \(\Gamma(n + 1) = n!\)。更一般地,它满足递推关系 \(\Gamma(z + 1) = z \cdot \Gamma(z)\),其中 \(z\) 是复数,结合 \(\Gamma(1) = 1\) 这一事实,可以推出上述恒等式对 \(z = n\) 成立。
伽马函数在非负整数处有极点,当 z 接近每个极点时无穷大的符号取决于接近极点的方向。因此,一致的做法是 gamma(z) 在负整数处返回 NaN,当 x = -0.0 时返回 -inf,当 x = 0.0 时返回 +inf,使用零的符号位来表示接近原点的方向。例如,这是 Iso C 99 标准 [isoc99] 附录 F 第 9.5.4 条中推荐的伽马函数行为。
在 SciPy 1.15 版本之前,
scipy.special.gamma(z)在每个极点处返回+inf。这个问题在 1.15 版本中被修复了,但带来了以下后果。当伽马函数出现在分母中的表达式,例如gamma(u) * gamma(v) / (gamma(w) * gamma(x))如果分子是良定义的但分母中有极点,则不再计算为 0。相反,这些表达式会计算为 NaN。在这种情况下,我们建议使用 rgamma 函数来表示倒数伽马函数。上述表达式可以写成
gamma(u) * gamma(v) * (rgamma(w) * rgamma(x))引用