繁体   English   中英

Python 菜鸟问题:多项式乘法问题

[英]Python noob question: Polynomial multiplication question

有人可以帮我解决我的代码吗,我得到的唯一答案是所有输入的 [0,0] -:

def add_poly(a,b,n):
    p=[]
    
    for i in range((n*2)-2):
        p.append(0)
    for i in range(0,n-1):
        for j in range(0,n-1):
            p[i+j]=(a[i]*b[j])

    return p


n=2
a=[1,3]
b=[0,2]

print(add_poly(a,b,n))

您的基本问题是range在上限上是唯一的。 要遍历n元素,请执行range(n) ,而不是range(n - 1) 这会给你一个循环0, 1, 2, ..., n-1

另一个问题是您提供了有关多项式大小的冗余信息。 学位已经编码在它们的长度中。 如果您提供n ,那是多余的信息,并且可能是错误的。 例如,如果您想将二阶多项式 ( n=3 ) 乘以三阶 ( n=4 ) 怎么办?

最后,您尝试实现的操作看起来像是乘法而不是加法。

因此,这里有一个示例,说明如何使用len来获取多项式的顺序,并enumerate以放置元素。 您也可以在一行中预先分配 output 列表:

def mult_poly(a, b):
    p = [0] * (len(a) + len(b) - 1)

    for i, x in enumerate(a):
        for j, y in enumerate(b):
            p[i + j] += x * y

    return p

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM