在Python中添加和乘法多项式

时间:2016-08-23 06:34:04

标签: python-3.x add multiplication polynomials

我想添加和乘以两个多项式。函数接受两个参数,如add([(4,3),(3,0)],[(-4,3),(2,1)])。因此,多项式看起来像

  1. 4x ^ 3 + 3和-4x ^ 3 + 2x
  2. 我想在不使用任何库的情况下添加和乘以这两个多项式。

2 个答案:

答案 0 :(得分:2)

我创建了一个空白列表,可以存储从常数项到最高指数的系数的空白列表,从而为加法和乘法创建了简化版本。逻辑很简单,就是更新系数并创建一个列表,其中包含格式(co-eff,指数)的元组对

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

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

您在问题中引用的多项式的加法和乘法得出以下结果

add([(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)]

答案 1 :(得分:0)

另外,我写了一个方法

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