如何计算两个多项式的和?

新手上路,请多包涵

例如 3x^4 - 17x^2 - 3x + 5。多项式的每一项都可以表示为一对整数(系数,指数)。多项式本身就是这样的对的列表,例如

[(3,4), (-17,2), (-3,1), (5,0)] 对于如图所示的多项式。

零多项式 0 表示为空列表 [] ,因为它没有非零系数项。

我想编写两个函数来添加和乘以具有相同元组表示(系数、指数)的两个输入多项式:

  1. addpoly(p1, p2)
  2. multpoly(p1, p2)

测试用例:

  • addpoly([(4,3),(3,0)], [(-4,3),(2,1)])

应该给 [(2, 1),(3, 0)]

  • addpoly([(2,1)],[(-2,1)])

应该给 []

  • multpoly([(1,1),(-1,0)], [(1,2),(1,1),(1,0)])

应该给 [(1, 3),(-1, 0)]

这是我开始但完全被打动的东西!

 def addpoly(p1, p2):
    (coeff1, exp1) = p1
    (coeff2, exp2) = p2
    if exp1 == exp2:
        coeff3 = coeff1 + coeff2

原文由 Agarwal Prega 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 816
1 个回答

这个 python 代码对我有用,希望这对你也有用……

加法函数

def addpoly(p1,p2):
i=0
su=0
j=0
c=[]
if len(p1)==0:
    #if p1 empty
    return p2
if len(p2)==0:
    #if p2 is empty
    return p1
while i<len(p1) and j<len(p2):
    if int(p1[i][1])==int(p2[j][1]):
        su=p1[i][0]+p2[j][0]
        if su !=0:
            c.append((su,p1[i][1]))
        i=i+1
        j=j+1
    elif p1[i][1]>p2[j][1]:
        c.append((p1[i]))
        i=i+1
    elif p1[i][1]<p2[j][1]:
        c.append((p2[j]))
        j=j+1
if p1[i:]!=[]:
    for k in p1[i:]:
        c.append(k)
if p2[j:]!=[]:
    for k in p2[j:]:
        c.append(k)
return c

乘法函数

def multipoly(p1,p2):
p=[]
s=0
for i in p1:
    c=[]
    for j in p2:
        s=i[0]*j[0]
        e=i[1]+j[1]
        c.append((s,e))
    p=addpoly(c,p)
return p

原文由 Partha debnath 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题