2013-07-23 50 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