2016-11-07 87 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)}