簡體   English   中英

如何使用python 3.x執行多項式加法和乘法?

[英]How to perform polynomial addition and multiplication using python 3.x?

例如3x^4 - 17x^2 - 3x + 5 多項式的每個項可以表示為一對整數(系數,指數)。 [(3,4),(-17,2), (-3,1), (5,0)]

我們具有以下約束條件,以確保每個多項式都有唯一的表示形式:

  • 術語按指數的降序排列
  • 沒有一項的系數為零
  • 沒有兩個術語具有相同的指數
  • 指數總是非負的

為以下操作編寫Python函數:

addpoly(p1,p2)
multpoly(p1,p2)

一些例子:

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

說明: (4x^3 + 3) + (-4x^3 + 2x) = 2x + 3

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

說明: 2x + (-2x) = 0

>>> multpoly( [(1,1),(-1,0)], [(1,2),(1,1),(1,0)] )
[(1, 3),(-1, 0)]

說明: (x - 1) * (x^2 + x + 1) = x^3 - 1

您想定義一個函數,該函數接受任意數量的形式的參數

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

addpoly可以通過collections.defaultdict輕松完成:

from collections import defaultdict

def addpoly(*polynoms):
    result = defaultdict(int)
    for polynom in polynoms:
        for factor, exponent in polynom:
            result[exponent] += factor
    return [(coeff, exponent) for exponent, coeff in result.items() if coeff]
In [68]: addpoly([(4,3),(3,0)],[(-4,3),(2,1)])
Out[68]: [(3, 0), (2, 1)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM