gpt4 book ai didi

python - Python 是否有计算多项式系数的函数?

转载 作者:太空狗 更新时间:2023-10-29 20:21:02 25 4
gpt4 key购买 nike

我正在寻找一个计算 multinomial coefficients 的 Python 库函数.

我在任何标准库中都找不到任何此类函数。对于二项式系数(其中多项式系数是一个推广)有 scipy.special.binom还有scipy.misc.comb .另外,numpy.random.multinomial从多项分布中抽取样本,sympy.ntheory.multinomial.multinomial_coefficients返回与多项式系数相关的字典。

但是,我无法找到一个合适的多项式系数函数,给定a,b,...,z 返回(a+b+.. .+z)!/(a!b! ... z!). 我错过了吗?没有可用的原因是否有充分的理由?

我很乐意为 SciPy say 贡献一个有效的实现。 (我必须弄清楚如何做出贡献,因为我从来没有这样做过)。

作为背景,它们确实在展开 (a+b+...+z)^n 时出现。 此外,它们还计算了存放 a+b+...+ 的方式z 个不同的对象放入不同的容器中,这样第一个容器包含 a 个对象,等等。我偶尔需要它们来解决 Project Euler 问题。

顺便说一句,其他语言确实提供此功能:Mathematica , MATLAB , Maple .

最佳答案

为了部分回答我自己的问题,这里是我对多项式函数的简单且相当有效的实现:

def multinomial(lst):
res, i = 1, 1
for a in lst:
for j in range(1,a+1):
res *= i
res //= j
i += 1
return res

从目前的评论来看,似乎在任何标准库中都没有有效的函数实现。

更新(2020 年 1 月)。正如 Don Hatch 在评论中指出的那样,这可以通过寻找最大的参数(尤其是它支配所有其他参数的情况)来进一步改进:

def multinomial(lst):
res, i = 1, sum(lst)
i0 = lst.index(max(lst))
for a in lst[:i0] + lst[i0+1:]:
for j in range(1,a+1):
res *= i
res //= j
i -= 1
return res

关于python - Python 是否有计算多项式系数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46374185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com