我正在使用Ipython和sympy来解决方程组

时间:2013-07-23 13:43:57

标签: 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*t))]
ans=solve(equations,[h,t],dict=True)

但是ans只是一个单独的条目,我不知道如何自己得到h的等式和t本身的等式。然而结果是正确的

感谢任何和所有帮助(我正在使用Ipython)

1 个答案:

答案 0 :(得分: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(θ)