Ich arbeite mit einigen langen Gleichungen, aber nicht wirklich komplex, und ich wollte sympy verwenden, um sie zu vereinfachen und zu "faktorisieren". Aber ich habe ein paar Probleme festgestellt. Hier ist eine Liste einiger minimal Beispiele:Sympy Subs Einschränkungen
Problem 1: Symmetrie
from sympy import *
from __future__ import division
a = symbols('a')
b = symbols('b')
expr = 1/12*b + 1
expr.subs(1/12*b, a)
expr.subs(b*1/12, a)
Die erste Zeile gibt das erwartete Ergebnis (dh a+1
.), Während in der zweiten gibt es keine Substitution.
Problem 2: faktorisierter Ausdrücke
Einige Teile des Ausdrucks sind faktorisierter und wenn ich den Ausdruck erweitern sie bekommen vereinfacht, wodurch die Substitution unmöglich. Zum Beispiel
(((x+1)**2-x).expand()).subs(x**2+2*x, y+1)
geben x^2+x+1
und was ich suche ist y+2-x
.
Frage
Gibt es eine Möglichkeit, diese Probleme zu lösen? Oder sollte ich ein anderes symbolisches mathematisches Werkzeug benutzen? Irgendwelche Vorschläge sind willkommen.
Für das erste Problem denke ich, es gibt eine 'von __future__ Importabteilung ', mit diesem Zusatz habe ich versucht und es funktioniert. Allerdings verstehe ich nicht warum. Für das zweite Problem löst das mein Problem wirklich nicht. Was ich hier gegeben habe, sind minimale Beispiele, aber in Wirklichkeit sind die Gleichungen wirklich lang. Ich kann die Ergebnisse nicht wirklich "betrügen". Und ich kann definitiv den Wert nicht ändern, der ersetzt werden soll ... Danke für das Antworten! – lasofivec
Für die zweite Frage vielleicht ist meine Frage "Ist es möglich zu erweitern, ohne zu vereinfachen"? – lasofivec