2013-07-23 3 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) 

но анс только одна запись, и я не знаю, как получить уравнение для ч само по себе и уравнения для т само по себе. Результаты однако исправить

спасибо за любую помощь и все (я использую IPython)

+0

Какую версию Sympy вы используете? В 0.7.2 он отлично работает. 'ans' - это список, содержащий единственный возможный словарь решений. – Krastanov

+0

Я тоже получаю список, но список имеет длину 1, поэтому я не могу выделить два ответа, когда я делаю len (ans), результат равен 1, и если я и [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

Смежные вопросы