没有 numpy,我无法在 Python 中执行不确定数量的多项式乘法

问题描述

我想计算一个在列表中的点上消失的多项式的系数,例如下面的代码有三个根,1、2和3。不知道这些分量有多少根,所以我需要得到它们的最终系数。

from collections import defaultdict

mult = defaultdict(int)
a=[1,2,3]
def loop_rec(a,n,item1,item2):
    if n > 0:
        for i1,c1 in zip([1,0],[1,-a[n]]):
            for i2,c2 in zip(item1,item2):
                mult[i1 + i2] += c1 * c2
                mult_sorted = tuple(sorted(mult.items(),reverse=True))
                item1 = [item[0] for item in mult_sorted]
                item2 = [item[1] for item in mult_sorted]
                a=a[:n]
        loop_rec(a,n - 1,item2)
    else:
       return (item1,item2)
(a,b)=loop_rec(a,len(a)-1,[0],[1])
[out]: cannot unpack non-iterable NoneType object

解决方法

我找到了解决方案。

from collections import defaultdict
mult = defaultdict(int)
a=[1,2,3]
def loop_rec(a,n,item1,item2):
    if n >= 0:
        mult = defaultdict(int)
        for i1,c1 in zip([1,0],[1,a[n]]):
            for i2,c2 in zip(item1,item2):
                mult[i1 + i2] += c1 * c2
        mult_sorted = tuple(sorted(mult.items(),reverse=True))
        item1 = [item[0] for item in mult_sorted]
        item2 = [item[1] for item in mult_sorted]
        a=a[:n]
        return loop_rec(a,n - 1,item2)
    else:
       return (item1,item2)
(a,b)=loop_rec(a,len(a)-1,[0],[1])
print(a)
print(b)

您可以计算在没有 NumPy 的情况下从列表的根上消失的乘法多项式,它在密码学领域非常有用,只要我们有字段元素并且需要一个列表作为结果,而不是在 NumPy 的类中。

>
[out]: 
[3,1,0]
[1,6,11,6]

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...