2016-11-07 30 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を使用してクイックで汚いスクリプトを実装しました.Jupyterノートブックの場合はhereを参照してください。

これはもっと堅牢な方法で実装されているに違いないと思いますが、私はここでホイールを再発明しないようにしたいと思います。

誰かが、より堅牢な(テストなどを含む)代替実装を知っていますか?

さらに、sympyの文書によれば、sympy.solveの代わりにsympy.solvesetを使用する必要があります。 この例は、私の例のように方程式のリストでは動作しません。誰かが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)} 
関連する問題