Sympy在另一个求解器中重用Solve的结果

时间:2017-05-01 11:07:32

标签: python python-3.x sympy solver

下午好, 我的代码有问题。我将要展示的代码是实际代码的简化版本,但这个想法是一样的。

Var1 = Symbol('Var1')
Var2 = Symbol('Var2')
A = 20
B = 30
Var1 = solve(12+A*B+Var1, Var1)
Var2 = solve(Var1+A+B+Var2, Var2)
print(Var1,Var2)

问题是,例如print(Var1)给我回到了方程的数值解-612,但是当涉及到打印(Var2)时它显示-Var1 -50而不是认识到Var1变成了一个数字。

这是我导入的库:

from sympy.solvers import solve
from sympy import Symbol

任何想法如何让它理解Var1成为一个数字? 我确实尝试分配一个新变量然后在Var2方程中使用它,但它给了我一个错误。

1 个答案:

答案 0 :(得分:1)

solve返回(可能是多个)解决方案的列表。 sol[0]将为您提供第一个(仅在您的情况下)解决方案。然后你可以subs在你的第二个等式中使用这个解决方案:

from sympy.solvers import solve
from sympy import Symbol

Var1 = Symbol('Var1')
Var2 = Symbol('Var2')
A = 20
B = 30
sol1 = solve(12+A*B+Var1, Var1)                 # [-612]
eqn2 = (Var1+A+B+Var2).subs({'Var1': sol1[0]})  # Var2 - 562
sol2 = solve(eqn2, Var2)                        # [562]
print(sol1,sol2)                                # [-612] [562]
print(sol1[0],sol2[0])                          # -612 562