我正在尝试解决方程组,然后将结果存储在变量变量中,以便进行绘图或进一步计算。
%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)
答案 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(θ)