scipy.special.loggamma#
- scipy.special.loggamma(z, out=None) = <ufunc 'loggamma'>#
伽马函数的对数主分支。
定义为 \(\log(\Gamma(x))\),适用于 \(x > 0\),并通过解析延拓扩展到复平面。该函数在负实轴上有一个单支切口。
0.18.0 版本新增。
- 参数:
- zarray_like
计算
loggamma的复平面上的值- outndarray, optional
用于存储计算出的
loggamma值的输出数组
- 返回:
- loggamma标量或 ndarray
在 z 处的
loggamma值。
附注
通常情况下,\(\log\Gamma(z) = \log(\Gamma(z))\) 不成立,尽管函数的实部是相等的。不将
loggamma定义为 \(\log(\Gamma(z))\) 的好处在于,后者具有复杂的支切口结构,而loggamma仅在负实轴上存在解析延拓。以下恒等式成立:
\[\begin{split}\exp(\log\Gamma(z)) &= \Gamma(z) \\ \log\Gamma(z + 1) &= \log(z) + \log\Gamma(z)\end{split}\]这使得
loggamma在复对数空间中工作非常有用。在实数线上,
loggamma与gammaln通过exp(loggamma(x + 0j)) = gammasgn(x)*exp(gammaln(x))关联,误差可忽略不计。这里的实现基于 [hare1997]。
数组 API 标准支持
loggamma对 Python 数组 API 标准兼容的后端具有实验性支持,除了 NumPy 之外。请考虑通过设置环境变量SCIPY_ARRAY_API=1并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。库
CPU
GPU
NumPy
✅
不适用
CuPy
不适用
✅
PyTorch
✅
⛔
JAX
⚠️ 无 JIT
⛔
Dask
✅
不适用
有关更多信息,请参阅 对数组 API 标准的支持。
参考文献
[hare1997]D.E.G. Hare, Computing the Principal Branch of log-Gamma, Journal of Algorithms, 第 25 卷,第 2 期,1997 年 11 月,第 221-236 页。
示例
>>> import numpy as np >>> from scipy.special import loggamma, gamma
>>> z = 1.5 + 2j >>> loggamma(z) np.complex128(-1.4991963725850939+0.7332806816909994j)
验证 \(\exp(\log \Gamma(z)) = \Gamma(z)\)
>>> np.exp(loggamma(z)) np.complex128(0.165915108938991+0.14946347326641998j) >>> gamma(z) np.complex128(0.165915108938991+0.14946347326641998j)
验证递推关系 \(\log \Gamma(z+1) = \log(z) + \log \Gamma(z)\)
>>> loggamma(z + 1) np.complex128(-0.5829056407109388+1.6605758996926108j) >>> np.log(z) + loggamma(z) np.complex128(-0.5829056407109388+1.6605758996926117j)