2017-05-01 21 views
0

下午好, 我遇到了我的代碼問題。我將要展示的代碼是實際代碼的簡化版本,但想法是相同的。Sympy在另一個求解器中重用求解的結果

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) 

什麼問題是,例如打印(VAR1)給我回來是-612方程的數值解,但是當涉及到印刷(VAR2)它顯示-Var1 -50代替認識到Var1成爲一個數字。

這是庫我輸入:

from sympy.solvers import solve 
from sympy import Symbol 

不知道如何讓它明白VAR1成了多少? 我確實試圖分配一個新變量,然後在Var2方程中使用它,但它給了我一個錯誤。

回答

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