Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 3, 2011 17:09:59

vell
От:
Зарегистрирован: 2010-11-15
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

помогите написать код !
нужно смоделировать движение тела котрое описывается системой дифференциальных уравнений

Входные параметры модели:
• m  масса тела;
• v  величина начальной скорости;
• a угол начального наклона вектора скорости к горизонту;
* величины, определяющие коэффициенты сопротивления среды k1 и k2.

БУДУ БЛАГОДАРЕН ЗА ЛЮБУЮ ПОМОЩЬ!!



Офлайн

#2 Янв. 3, 2011 17:34:47

vell
От:
Зарегистрирован: 2010-11-15
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

честно говоря даже идей нет (



Офлайн

#3 Янв. 3, 2011 17:48:36

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

http://docs.scipy.org/doc/scipy/reference/integrate.html
посмотрите Integrators of ODE systems
они предназначены для рашения обыкновенных дифференциальных уравнений. Какой метод использовать - зависит от Коэффициентов системы.



Офлайн

#4 Янв. 5, 2011 09:55:22

LAson
От:
Зарегистрирован: 2011-01-04
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

http://www.toehelp.ru/theory/informat/lecture14.html
Метод Рунге-Кутта четвертого порядка для дифференциальных уравнений второго порядка.



Офлайн

#5 Янв. 7, 2011 20:15:32

udav
От:
Зарегистрирован: 2010-05-30
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

А может сначала “причесать” систему? Похоже vy==vx + C (из первых двух ур-ий), а vy~1/t.



Отредактировано (Янв. 7, 2011 20:16:47)

Офлайн

#6 Янв. 8, 2011 11:56:56

vell
От:
Зарегистрирован: 2010-11-15
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

я учусь в 11 класе из 2 закона Ньютона получилась такая система. пытался вникнуть в в метод рунге-кутта но как-то безуспешно немного не догоняю её . как систему описать в Python я не знаю (( а самое обидное что от этого зависит моё поступление ) помогите плиз)



Офлайн

#7 Янв. 8, 2011 13:05:31

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

Тогда вам по простому надо:
dvx/dt заменяете на (vx(t+dt)-vx(t))/dt
тогда применяя этот подход к каждому уравнению можно получить vx(t+dt) если известно значение vx в предидущий момент.
vx(t+dt)=vx(t)+dt*(-k1+…)
задаете в начальный момент значения vx(0),…
задаете шаг интегрирования dt - достаточно маленький - а то вообще неправильный результат получится,
и находите по формулам значения скорости и координат. Проводите расчеты с разными шагами чтобы убедиться что все правильно, проверяете с какой точностью выполняются законы сохранения, строите графики.
Все у вас получится.



Офлайн

#8 Янв. 9, 2011 01:22:08

vell
От:
Зарегистрирован: 2010-11-15
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

спасибо



Офлайн

#9 Янв. 9, 2011 13:19:14

alexx11
От:
Зарегистрирован: 2010-05-13
Сообщения: 208
Репутация: +  0  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

vell
Надо бы допилить уравнение. Тут подойдёт замена v = v_x + v_y, затем тупо сложить 1 со 2 а 3 с 4. Путём нехитрых вычислений получаем dv/dt = -(k_1 + k_2 \sqrt(v^2_x + v^2_y))v/m.

Затем возведя в квадрат v: v^2 = (v^2_x +2(v_x,v_y)+v^2_y), полагая что в условиях задачи индексы x и y отвечают декартовой системе координат, то скалярное произведение двух перпендикулярных векторов даёт нулевой результат. Таким образом уравнение можно записать в новом виде dv/dt = -(k_1 + k_2 |v|)v/m, или выбрав удобную новую систему координат можно избавится от модуля.

Дифур решается переносом dt вправо а всего выражения влево так что бы -m dv/((k_1 + k_2 |v|)v) = dt.
Проинтегрируем обе части: m(ln(k_1+k_2 v)-ln v)/k_1 = t + C (под руку попался http://integrals.wolfram.com/index.jsp),
из чего, преобразованием получаем: exp(k_1 (t+C)/m) = (k_1 + k_2 v)/v,
или v = k_1/(exp(k_1 (t+C)/m) - k_2). Собственно я не знаю что здесь моделировать, можно так же найти x, просто проинтегрировав правую часть плюс С_2, получим траекторию движения x(t).



Офлайн

#10 Янв. 9, 2011 23:19:03

vell
От:
Зарегистрирован: 2010-11-15
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

моделирование на python!!! нужна помощь

спасибо ) вообще спомощью этой системы надо смоделировать траекторию движения снаряда в графическом интерфейсе)

“Затем возведя в квадрат v: v^2 = (v^2_x +2(v_x,v_y)+v^2_y), полагая что в условиях задачи индексы x и y отвечают декартовой системе координат, то скалярное произведение двух перпендикулярных векторов даёт нулевой результат. Таким образом уравнение можно записать в новом виде dv/dt = -(k_1 + k_2 |v|)v/m”

не совсем понял, как так получилось?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version