scipy.special.

factorialk#

scipy.special.factorialk(n, k, exact=None)[source]#

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)

参数:
nint 或 array_like

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

kint

多阶乘阶数。

exactbool,可选

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

警告

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

返回值:
valint

n 的多阶乘。

备注

虽然没有双阶乘那么直接,但是通过研究给定的余数 r < k (因此 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.])