scipy.special.

阶乘k#

scipy.special.factorialk(n, k, exact=None)[源代码][源代码]#

n 的 k 阶多因子,n(!!…!).

这是跳过 k 值的 n 的多因子。例如,

factorialk(17, 4) = 17!!!! = 17 * 13 * 9 * 5 * 1

特别是,对于任何整数 n,我们有

factorialk(n, 1) = factorial(n)

factorialk(n, 2) = factorial2(n)

参数:
n整数或类数组

计算多重阶乘。如果 n < 0 ,返回值为 0。

k整数

多因素的顺序。

精确bool, 可选

如果 exact 设置为 True,则使用整数算术精确计算答案,否则使用近似值(更快,但结果为浮点数而不是整数)

警告

在 SciPy 1.15.0 中,exact 的默认值将更改为 False

返回:
val整数

n 的多因子。

注释

虽然不如双阶乘那样直接,但通过研究给定余数 r < kn``(因此 ``n = m * k + r,相应地 r = n % k),可以计算出 n!(k) 的一般近似公式,这可以组合成对所有整数值 n >= 0k > 0 有效的公式:

n!(k) = k ** ((n - r)/k) * gamma(n/k + 1) / gamma(r/k + 1) * max(r, 1)

这是当 exact=False 时的近似基础。另请参见 [1]。

参考文献

示例

>>> from scipy.special import factorialk
>>> factorialk(5, k=1, exact=True)
120
>>> factorialk(5, k=3, exact=True)
10
>>> factorialk([5, 7, 9], k=3, exact=True)
array([ 10,  28, 162])
>>> factorialk([5, 7, 9], k=3, exact=False)
array([ 10.,  28., 162.])