2016-08-23 12 views
0

Ich möchte Polynome mit Python hinzufügen und multiplizieren. Wenn zum Beispiel die Frage:Addition und Multiplikation von Python mit einzelnen Koeffizienten

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

mein Code:

def addpoly(x, y): 
min_len = min(len(x), len(y)) 
return x[: -min_len] + y[: -min_len] + [ x[i] + y[i] for i in range(-min_len,0) 

meine Ausgabe

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

Erforderliche Leistung:

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

Ich möchte empfangen irgendwelche suggesti wenn möglich. Danke.

+0

Willkommen bei SO. Diese Seite ist für * spezifische * Fragen gedacht, nicht vage Vorschläge. Bitte bearbeiten Sie Ihre Frage, um eine klare Frage zu stellen, oder Sie erhalten keine Antwort. – Julien

Antwort

0

Der einfachste Weg ist Ihr Polynom in ein dict mit power -> coefficient Artikel zu konvertieren:

In [1]: p1 = [(4,3),(3,0)] 

In [2]: p2 = [(-4,3),(2,1)] 

In [3]: from collections import Counter 

In [4]: p1_c = Counter(dict((degree, coef) for (coef, degree) in p1)) 

In [5]: p2_c = Counter(dict((degree, coef) for (coef, degree) in p2)) 

In [6]: p1_c, p2_c 
Out[6]: (Counter({0: 3, 3: 4}), Counter({1: 2, 3: -4})) 

Dann Sie diese Wörterbücher hinzufügen könnte:

In [7]: p1_c + p2_c 
Out[7]: Counter({0: 3, 1: 2}) 

Und sie konvertieren zurück in eine Liste:

In [8]: [(c, d) for (d, c) in (p1_c + p2_c).items()] 
Out[8]: [(3, 0), (2, 1)] 

Sie können sie auch nach de sortieren Gree (passen Ihre erwartete Ausgabe)

In [9]: from operator import itemgetter 

In [10]: sorted(((c, d) for (d, c) in (p1_c + p2_c).items()), key=itemgetter(1), reverse=True) 
Out[10]: [(2, 1), (3, 0)] 

Sie auch nützliche sympy Bibliothek finden kann, ermöglicht es Ihnen mit symbolischen Ausdrücken zu arbeiten (d mit Polynomen auch) in einer sehr ordentlichen Art und Weise.

Verwandte Themen