2013-07-23 44 views
0

我想解決一個方程組的系統,然後將結果存儲在變量變量中進行繪圖或進一步計算。我正在使用Ipython和sympy來解決方程系統

%pylab inline 
from sympy import init_printing;init_printing() 
from sympy import * 
d,vf,a,vi,t,x,h,g,theta,ans=symbols('d vf a vi t x h g theta ans') 
equations=[Eq(sin(theta),(0.5*g*t**2+h)/(vi*t)),Eq(cos(theta),x/(vi*t))] 
ans=solve(equations,[h,t],dict=True) 

但ANS只是一個單一的入口,我不知道如何獲得自身小時,通過自身T的方程等式。然而結果是正確的

感謝任何及所有的幫助(我用的IPython)

+0

你使用什麼版本的sympy?在0.7.2中,它工作得很好。 'ans'是包含單個可能的解決方案字典的列表。 – Krastanov

+0

我也得到一個列表,所以列表只有1的長度,所以當我做len(ans)時,我不能分開這兩個答案,結果是1,如果我ans [0],我得到整個答案 – user2610827

+0

我正在使用canopy sympy ver 0.7.2 – user2610827

回答

0
In [14]: ans 
Out[14]: 
⎡⎧    2       ⎫⎤ 
⎢⎪  0.5⋅g⋅x      x ⎪⎥ 
⎢⎨h: - ─────────── + x⋅tan(θ), t: ─────────⎬⎥ 
⎢⎪  2 2     vi⋅cos(θ)⎪⎥ 
⎣⎩  vi ⋅cos (θ)       ⎭⎦ 

所以,你可以在這裏看到,答案是包含字典的列表。要獲得列表中的第一個(也是唯一的)項目,請使用ans[0]。要獲取字典的元素,請使用[key]和字典鍵,在這種情況下,它是您解決的符號。所以要得到答案,你會這樣做

In [16]: ans[0][h] 
Out[16]: 
      2 
    0.5⋅g⋅x 
- ─────────── + x⋅tan(θ) 
    2 2 
    vi ⋅cos (θ) 

In [17]: ans[0][t] 
Out[17]: 
    x 
───────── 
vi⋅cos(θ) 
+0

謝謝,如果我重新輸入h的公式,我可以繪製它,但如果我使用plotme = ans [0] [h]併爲vi g和theta賦值,那麼我會感到煩惱錯誤消息,說數組不匹配。我正在使用plot(plotme,(x,0,5)) – user2610827

+0

這聽起來像是一個錯誤,或者你做錯了什麼。你能把輸出粘貼到什麼地方嗎?我想你可以在這裏爲它打開一個新的問題。 – asmeurer

+0

我將把它作爲一個新問題輸入 – user2610827