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 >= 0
和k > 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.])