0

連立方程式を解こうとしていて、結果をプロットまたはさらに計算するために変数変数に保存しています。

%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 は 1 つのエントリにすぎず、h の方程式と t の方程式を単独で取得する方法がわかりません。ただし、結果は正しい

あらゆる助けに感謝します(私はIpythonを使用しています)

4

1 に答える 1

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(θ)
于 2013-07-23T18:19:07.003 に答える