我用Ipython和Symphy来解一个方程组

我用Ipython和Symphy来解一个方程组,ipython,sympy,equations,Ipython,Sympy,Equations,我试图求解一个方程组,然后将结果存储在变量中,用于绘图或进一步计算 %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

我试图求解一个方程组,然后将结果存储在变量中,用于绘图或进一步计算

%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只是一个条目,我不知道如何得到h的方程和t的方程。然而,结果是正确的

感谢您的帮助(我正在使用Ipython)

你可以在这里看到,答案是一个包含字典的列表。要获取列表的第一项(也是唯一一项),请使用
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(θ)

您使用的是什么版本的sympy?在0.7.2中,它工作得非常好
ans
是一个包含单个可能的解决方案字典的列表。我也得到了一个列表,但该列表的长度只有1,所以当我做len(ans)时,我无法将两个答案分开。结果是1,如果我回答[0],我得到了整个答案。顺便说一句,我使用的是canopy Symphy版本0.7.2,Symphy 0.7.3现在已经过时了。你应该用它来代替。相比之下,0.7.2已经很旧了。谢谢你的帮助,我会升级谢谢,如果我重新键入h的方程式,我可以绘制它,但是如果我使用plotme=ans[0][h]并为vi g和θ赋值,那么我会收到一条恼人的错误消息,说数组不匹配。我使用的plot(plotme,(x,0,5))听起来像是一个bug,或者你做错了什么。你能把输出粘贴到某个地方吗?我想你可以在这里为它打开一个新问题。我将作为一个新问题输入
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(θ)