2016-11-26 10 views
0

Wie können Sie Python veranlassen, ein Polynom als Eingabe zu nehmen, während die Fähigkeit beibehalten wird, x durch einen reellen Wert zu ersetzen?Polynome als Eingabe in Python

Hier ist, was ich versuchte:

fx=input("Enter a Polynomial: ") 
x=float(input("At wich position should the polynomial be evaluated: ")) 

while True: 
    print(eval("fx")) 

    continue 

Das Problem, das dass Python nur auswertet fx als x entsteht und nicht als der Wert, den ich über meinen zweiten Eingang x gab.

+1

Versuchen Sie 'eval (fx)'. –

+0

Das hat auch funktioniert. Danke :-) –

Antwort

1

sollte dies helfen: im Auge

def eval_polynomial(poly, val): 
    xs = [ x.strip().replace('^','**') for x in poly.split('+') ] 
    return sum([eval(n.replace('x', str(val))) for n in xs]) 

Bitte halten, die Sie vornehmen müssen, um früher sicher val eine Zahl aus Sicherheitsgründen ist.

0

Da die bestimmte Variable, wie x, keine Rolle spielt, muss der Benutzer nur eine Folge von Zahlen eingeben, die die Koeffizienten des Polynoms sein werden. Lassen Sie den Benutzer den konstanten Koeffizienten eingeben, dann den linearen Koeffizienten, dann den quadratischen Koeffizienten und so weiter. Wenn diese als separate Eingänge ausgeführt werden, benötigen Sie ein Stoppsignal, das keine Nummer ist. Wenn Sie alles als eine Eingabe wünschen, könnte der Benutzer Leerzeichen oder Kommas oder Ähnliches zwischen den Koeffizienten einfügen, und es wird kein Stoppsignal benötigt.

Dann fügen Sie die Koeffizienten in eine Liste ein: Wenn die Eingabe eine Zeile war, verwenden Sie einfach die split() Methode. Alle Operationen an Polynomen, wie zum Beispiel die Ersetzung in die Variable, können mit dieser Liste durchgeführt werden. Die Substitution kann zum Beispiel einfach und effizient mit Horner's method durchgeführt werden. Es gibt einfache Algorithmen für Addition, Subtraktion, Multiplikation, Division, Differenzierung und so weiter. Lassen Sie es mich wissen, wenn Sie weitere Informationen zur Implementierung eines dieser Algorithmen in Python benötigen.

Pythons eval() Funktion ist sehr gefährlich, so dass ich sehr empfehlen, dass Sie das trotz seiner Einfachheit nicht verwenden.

+0

Vielen Dank für den Vorschlag, die Verwendung einer Koeffizientenmatrix anstelle des ganzen Polynoms scheint auch eine vielversprechende Idee zu sein, die ich für zukünftige Projekte im Auge behalten werde. –

Verwandte Themen