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))

引用