Ich bin auf der Suche nach einem generischen Python Weg, um Text in lösbare Gleichungen zu manipulieren.Rearrange Gleichungen für Solver
Zum Beispiel:
kann es einige Konstanten sein
e1,e2=0.58,0.62
ma1,ma2=0.85,1.15
mw=0.8
Cpa,Cpw=1.023,4.193
dba,dbr=0.0,25.0
und ein Satz von Gleichungen zu initialisieren (geschrieben hier zur besseren Lesbarkeit statt der Solver)
Q=e1*ma1*Cpa*(tw1-dba)
Q=ma1*Cpa*(dbs-dba)
Q=mw*Cpw*(tw1-tw2)
Q=e2*ma2*Cpa*(dbr-tw2)
Q=ma2*Cpa*(dbr-dbo)
Dieses 5 Blätter Unbekannte, vermutlich kann das System also gelöst werden.
Q, dbo, dbr, tw1, tw2
Aktuelle Systeme sind nicht linear und viel komplizierter.
Ich habe dieses einfache Beispiel bereits mit scipy, Delphi, Sage gelöst ... also suche ich nicht nach dem Lösungsteil.
Die Gleichungen werden direkt in einen Texteditor geschrieben und ich möchte, dass ein Python-Programm mir ein Array von Unbekannten und ein Array von Fehlerfunktionen gibt.
y = mysolver.fsolve(f, x)
also für das obige Beispiel
x=[Q,dbo,dbr,tw1,tw2]
f=[Q-e1*ma1*Cpa*(tw1-dba), Q-ma1*Cpa*(dbs-dba), Q-mw*Cpw*(tw1-tw2),
Q-e2*ma2*Cpa*(dbr-tw2), Q-ma2*Cpa*(dbr-dbo)]
Ich weiß nur nicht, wie die Unbekannten zu extrahieren und die Fehlerfunktionen erstellen.
Ich habe versucht, die compile.parse() -Funktion und es scheint eine strukturierte Aufteilung geben.
Kann jemand einige Ideen über den besten Ansatz geben.
Müssen Sie diese "Listen" -Syntax zulassen? (a, b = 1,2) Es könnte einfacher sein, wenn Sie nicht ... – Stobor
Nein, ich habe es getan, um die konstante Zuweisung kompakter zu machen. Wie würde es helfen, Werte individuell zu vergeben? –
Vor langer Zeit gab es ein Borland-Programm namens Eureka, das dieses Problem löst. Derselbe Code wurde später vom Autor als Merkur herausgegeben. Viele Jahre später kam ein Windows-Programm namens EES (Engineering Equation Solver) heraus, aber der Solver war nie so gut wie Eureka. Ich fand kürzlich einen Code von Clifford Wolf online http://svn.clifford.at/tools/trunk/electrotools/eqsolver.html aber es ist in JavaScript und ehrlich gesagt, ich folge nicht seiner Logik. Das ist ziemlich genau das, was ich will, aber in Python. –