Python 3.x Python中多项式的加法和乘法

Python 3.x Python中多项式的加法和乘法,python-3.x,add,multiplication,polynomials,Python 3.x,Add,Multiplication,Polynomials,我想把两个多项式相加和相乘。函数有两个参数,如add([(4,3)、(3,0)],[(-4,3)、(2,1)]) 4x^3+3和-4x^3+2x 我想在不使用任何库的情况下对这两个多项式进行加法和乘法。对于加法,我编写了一个方法 def poly_add( x, y): r = [] min_len = min( len(x), len(y)) for i in range(min_len): if x[i][1] == y[i][1]: m = x[i][0]

我想把两个多项式相加和相乘。函数有两个参数,如
add([(4,3)、(3,0)],[(-4,3)、(2,1)])

  • 4x^3+3和-4x^3+2x

  • 我想在不使用任何库的情况下对这两个多项式进行加法和乘法。

    对于加法,我编写了一个方法

    def poly_add( x, y):
      r = []
      min_len = min( len(x), len(y))
      for i in range(min_len):
        if x[i][1] == y[i][1]:
          m = x[i][0] + y[i][0]
          if m != 0:
            r.append((m, x[i][1])) 
        if x[i][1] != y[i][1]:
          r.append((y[i]))
          r.append((x[i]))
      return r
    

    我创建了一个简化的加法和乘法版本,创建了一个空白列表,可以存储从常数项到最高指数的系数。逻辑只是更新系数并创建一个包含格式元组对(coeff,exponent)的列表

    请注意,此代码仅适用于非负指数

    您在问题中提到的多项式的加法和乘法产生以下结果

    添加([(4,3),(3,0)],[(-4,3),(2,1)]=[(2,1),(3,0)]


    mul([(4,3),(3,0)],[(-4,3),(2,1)]=[(-16,6),(8,4),(-12,3),(6,1)]

    到目前为止你都尝试了什么?“不使用任何库”你的导师对答案提出了任何其他要求吗?主要是我试图找出可以解决这两个问题的算法。
    [(-4,3)、(2,1)]
    如何翻译成
    -4x^3+3
    ?它将是4x^3+3和-4x^3+2x我能得到任何解决方案吗?
    def add(p1,p2):
        x = [0]*(max(p1[0][1],p2[0][1])+1)
        for i in p1+p2:
            x[i[1]]+=i[0]
        res =  [(x[i],i) for i in range(len(x)) if x[i]!=0]
        res.sort(key = lambda r: r[1], reverse= True)
        return res
    
    def mul(p1,p2):
        x = [0]*(p1[0][1]*p2[0][1]+1)
        for i in p1:
            for j in p2:
                x[i[1]+j[1]]+=i[0]*j[0]
        res = [(x[i],i) for i in range(len(x)) if x[i]!=0]
        res.sort(key = lambda r: r[1], reverse= True)
        return res