Zum Beispiel 3x^4 - 17x^2 - 3x + 5. Jeder Term des Polynoms kann als ein Integer-Paar (Koeffizient, Exponent) dargestellt werden. Das Polynom selbst ist dann eine Liste solcher Paare wie
[(3,4), (-17,2), (-3,1), (5,0)]
für das Polynom wie gezeigt.Wie berechnet man die Summe zweier Polynome?
Nullpolynom, 0, wird als leere Liste []
dargestellt, da es keine Terme mit Koeffizienten ungleich Null hat.
Ich möchte zwei Funktionen schreiben zwei Eingangs Polynome mit der gleichen Darstellung Tupel (Koeffizient, Exponent) zu addieren und zu multiplizieren:
addpoly(p1, p2)
multpoly(p1, p2)
Testfälle:
addpoly([(4,3),(3,0)], [(-4,3),(2,1)])
sollte[]
multpoly([(1,1),(-1,0)], [(1,2),(1,1),(1,0)])
geben sollte geben sollte[(1, 3),(-1, 0)]
Hier [(2, 1),(3, 0)]
addpoly([(2,1)],[(-2,1)])
geben, ist etwas, das ich mit angefangen hat, aber völlig geschlagen!
def addpoly(p1, p2):
(coeff1, exp1) = p1
(coeff2, exp2) = p2
if exp1 == exp2:
coeff3 = coeff1 + coeff2
Sie müssen zuerst den Algorithmus (Mathematik oder natürliche Sprache) für die Arithmetik auf spärliche Darstellungen von Polynomen mit einer unbestimmten finden oder trainieren. Bis dahin ist dies keine Programmierfrage. –
Sie müssen ein bisschen mehr Aufwand in diese setzen, wenn Sie Hilfe benötigen. Lass deine Funktion wenigstens etwas zurückgeben. – user1269942
Es könnte besser sein, jedes Polynom zu einem Lexikon zu machen, das aus einer Exponentenschlüsselzuordnung zum zugehörigen Koeffizienten besteht. Die Probe in Ihrer Frage würde also lauten: {4: 3, 2: 17, 1: 3, 0: 5}. Mit einer solchen Datenstruktur würde es relativ einfach werden, in jedem Polynom, das an die Funktionen übergeben wird, auf die Terme zuzugreifen (oder deren Existenz zu überprüfen). Darüber hinaus ist es nur eine Frage der Umsetzung, was Sie tun würden, wenn Sie es mit einem Bleistift und etwas Papier von Hand machen würden. – martineau