Ich möchte String-Gleichungen (die gleich 0 sind) analysieren und dann lösen, indem ich ein Wörterbuch von Variablen verwende, auf die ich Zugriff habe.Verwenden von SymPy zum generischen Parsen und Lösen von Gleichungen
Zum Beispiel:
s = '(x/z)-y'
eq = parse(s)
eq.solve({'x': 10, 'y': 5})
print(eq)
>>> {'z': 2}
Nun hatte ich geschrieben Code, der vor einem Monat so etwas wie dies tat, aber ich kann einfach nicht finden. Ich erinnere mich jedoch, dass ich SymPy und seine sympify-Funktion zusammen mit seiner Solve-Funktion verwendet habe. Ich habe die Dokumentation zu diesen Funktionen überprüft, aber ich konnte mir nicht vorstellen, wie ich sie dazu bringe, so zu arbeiten, wie ich es möchte.
Und eine zusätzliche Frage: Wäre es möglich, die Variablen irgendwie zu wickeln, so dass ich etwas mehr als nur einen Buchstaben für sie verwenden könnte? Beispiel: Anstatt nur 'x' ich haben könnte '{myvar-42}'
EDIT:
Okay, ich schließlich gelang es, einige Code schreiben, der tat, was ich wollte:
eq = sympify('(x/y)-z', locals={'x': 10, 'z': 5})
solution = solve(eq, dict=True)
print(solution)
>>> [{'z': 2}]
Aber meine "Extra" -Frage bleibt bestehen.
' 'myvar-42'' - nur parse die Zeichenfolge. – aIKid
@alKid Wie? Wenn ich sympify für eine Zeichenfolge verwende, die Klammern enthält, gibt es mir Fehler (weil es denkt, dass es ein Wörterbuch oder etwas ist). Ich habe jedoch eine Lösung gefunden: Ich könnte eine Regex-Ersetzung von allen {*} vornehmen und sie durch Buchstaben ersetzen. Nachdem die Lösung abgeschlossen ist, kann ich sie einfach mit einem von mir erstellten Wörterbuch zurückstellen. – fgblomqvist