Seite 1 von 1

Sympy umformen / vereinfachen von Gleichungen

Verfasst: Mittwoch 18. März 2015, 14:05
von Sr4l
Ich möchte gerne eine Gleichung (die von einem Solver ausgespuckt wurden) manuell vereinfachen. Ich bekomme eine Gleichung der Form von `func1`. Ich schaffe es sie mit `collect` zu vereinfachen (siehe `func2`).

Mein Wunschformat ist `func3`, das ist trotz Doppelbruch einfacher, weil `a` nur einmal vorkommt.

Mit einem collect schaffe ich es also von func1 -> func2 und mit simplify von func3 -> func2 zukommen, aber nicht umgekehrt.

Kann mir da jemand helfen?

Code: Alles auswählen

from sympy import init_printing, oo, collect
from sympy.abc import a,b,c,d,e
from sympy import simplify
init_printing(use_unicode=True)

func1 = a*(b + c + d + e) / (a*b + a*c + a*d + e)

func2 = collect(func1, a)
# >>> func2
# a*(b + c + d + e) / (a(b + c + d) + e)

#Wunschformat
func3 = (b + c + d + e) / ((b + c + d) + e/a)

#von meinem Wunschziel func3 -> func2 komme ich
simplify(func3) == func2
# True

Re: Sympy umformen / vereinfachen von Gleichungen

Verfasst: Donnerstag 19. März 2015, 16:58
von Sr4l
Nach Stunden des probierens an vielen Fronten habe ich eine Lösung:

Code: Alles auswählen

func1_zaehler, func1_nenner = fraction(func1)

func1_zaehler /= a

func1_nenner /= a
func1_nenner = func1_nenner.simplify()

func1_neu = func1_zaehler / func1_nenner
Das mag jetzt relativ leicht aussehen, aber ist es bei komplizierteren Funktionen gar nicht. Durch das `func1_nenner.simplify()` wird vieles mit einander Verrechnet man muss dann mit collect (z.B `func1_nenner.collect([Sigma*g*dphi**2, F_T, sin(alpha)])`) das wieder auseinander ziehen, und je nachdem welche Variablen man collected kommt die Funktion wieder in ihre Ausgangsposition zurück. Alles in allem eine "sehr spannende" Angelegenheit. Wenn ich mehr Zeit habe werde ich dazu noch einmal mehr schreiben und mit echten Bewegungsgleichungen mein Vorgehen beschreiben.

Alles in allem braucht man eine iPython Konsole und einiges an Zeit.

Re: Sympy umformen / vereinfachen von Gleichungen

Verfasst: Donnerstag 19. März 2015, 17:52
von BlackJack
@Sr4l: Ich denke nicht das `sympy` und auch andere Software dieser Art wirklich geeignet ist das Ergebnis *so* stark zu steuern.