2016-11-07 81 views
1

我想添加一個函數來解決線性方程組到我的基於python的編輯器。我正在尋找一個能夠解析字符串的模塊,例如下面的模塊:用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 

並求解所有變量的值。

我已經使用sympy實現了一個快速和骯髒的腳本,請參閱here Jupyter筆記本。

我認爲這一定是由某個人以更強大的方式實現的,我想避免在這裏重新發明輪子。

有誰知道更強大的任何替代實現(有測試等)?

此外,根據sympy文檔,應使用sympy.solveset而不是sympy.solve。 我不能像在我的例子中一樣使用方程列表。精通sympy的人能指導我如何使用像這樣的方程系統的solveset。

回答

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)}