2016-11-07 13 views
1

Ich möchte eine Funktionalität hinzufügen, um Systeme linearer Gleichungen zu meinem Python-basierten Editor zu lösen. Ich suche ein Modul, das eine Zeichenfolge wie die unten zu analysieren wäre in der Lage:Lösen von linearen Gleichungen im Klartext mit Hilfe von sympy

sample_volume=20 
final_concentration=0.55 
ethanol_concentration=0.96 

final_volume = ethanol_vol+sample_volume 
final_concentration*final_volume=ethanol_vol*ethanol_concentration 

Und für die Werte aller Variablen lösen.

Ich habe ein schnelles und schmutziges Skript mit sympy implementiert, das dies tut, siehe here für ein Jupyter-Notebook.

Ich denke, dass dies von jemand auf eine robustere Art und Weise implementiert worden sein muss, möchte ich vermeiden, das Rad hier neu zu erfinden.

Kennt jemand alternative Implementierungen, die robuster sind (haben Tests usw.)?

Zusätzlich sollte gemäß der Beschreibung sympy.solveset statt sympy.solve verwendet werden. Ich kann das nicht mit einer Liste von Gleichungen wie in meinem Beispiel arbeiten. Kann mir jemand helfen, SolveSet mit einem solchen Gleichungssystem zu benutzen?

Antwort

2
In [2]: sample_volume=20 
    ...: final_concentration=0.55 
    ...: ethanol_concentration=0.96 
    ...: 

In [4]: fv,ev = symbols('fv,ev') 

In [5]: expr1 = fv - ev+sample_volume 

In [6]: expr2 = final_concentration*fv - ev*ethanol_concentration 

In [7]: solve([expr1,expr2], [fv,ev]) 
Out[7]: {ev: -26.8292682926829, fv: -46.8292682926829} 

# I will recommend to use solveset's linear system solver (linsolve) 
In [8]: linsolve([expr1,expr2], [fv,ev]) 
Out[8]: {(-46.8292682926829, -26.8292682926829)} 
Verwandte Themen