sympy linsolve没有找到方程组的解

时间:2018-04-02 02:47:27

标签: python sympy

有人可以告诉同情者如何表达O作为(全部)O_g,O_s,O_r,O_m的函数 其中O = O_g + O_s,O_g = O_r + O_m ? sympy.solve()最接近,但我无法访问解决方案表达式! sympy。版本 - > '1.1.2.dev'

import numpy as np;import sympy;sympy.init_printing();#help(sympy.init_printing)

O=sympy.Symbol("O")
O_g=sympy.Symbol("O_g")
O_s=sympy.Symbol("O_s")
Oe=sympy.Eq(O,O_g+O_s)
#then...
O_r=sympy.Symbol("O_r")
O_m=sympy.Symbol("O_m")
Og=sympy.Eq(O_g,O_r+O_m)

sympy.linsolve([Oe,Og],O)#empty set result

sympy.solve([Oe,Og],O)#ignores Og, as per documentation for solve

sympy.solve([Oe,Og])#give me what I want, in a dictionary along with every other possible solution...

list(_)#gives only the variables, not the solutions!

1 个答案:

答案 0 :(得分:0)

  

我无法访问解决方案表达式

访问字典中的值有什么问题?

sol = sympy.solve([Oe, Og])
print(sol[O])

对于sympy.linsolve([Oe,Og],O),问题是方程之一没有你要解决的任何变量,因此无法表达解决方案。像

这样的东西
sympy.linsolve([Oe,Og], [O, O_g]) 

sympy.linsolve([Oe,Og], [O, O_r]) 

工作正常。