Движение снаряда с перетаскиванием

Общая цель состоит в том, чтобы написать программу Mathematica, которая будет вычислять угол запуска, который даст наибольшую дальность с использованием функции [RandomInt], но у меня были проблемы с физикой.

В 2D-траектории без трения наибольший диапазон достигается под углом. 45 .

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

Ф г р а г "=" к в 2 , к "=" 1 2 С Д р А

где р это плотность воздуха, А - площадь поперечного сечения движущегося объекта (в данном случае круга), а С Д это коэффициент лобового сопротивления.

в 2 "=" в Икс 2 + в у 2

На данный момент я не уверен, как настроить проблему, так как в зависит от обоих в Икс и в у , и не могут быть смоделированы как линейно независимые друг от друга.

Некоторые заданные параметры сферического снаряда: (я предполагаю, что эти значения можно легко подставить в общее уравнение при написании программы)

Начальная скорость = между 30 40 м с Масса = 0,145 к г Радиус = 0,0367 м Плотность воздуха = 1,2 к г / м 3 Коэффициент лобового сопротивления = 0,46


Как бы я включил обе скорости в уравнение? Для простой кинематики это просто:

Т о т а л р а н г е "=" в Икс т
и мы решили для в Икс используя свойства триггера из в 0 . Но правильно ли моделировать эту силу сопротивления с теми же свойствами триггера?

в у "=" в с я н θ , в Икс "=" в с о с θ

Ф "=" м а "=" к в 2 м г "=" ( 1 2 С Д р А ( в с я н θ 2 + в с о с θ 2 ) м г

Двумерное квадратичное сопротивление также рассматривалось в этом посте Phys.SE и ссылках в нем.

Ответы (3)

В двух измерениях второй закон Ньютона можно записать в векторной форме как

Ф н е т "=" м а
В этом случае результирующая сила равна
Ф н е т "=" м г к в 2 в в "=" м г к в в
поэтому уравнение движения
м а "=" м г к в в
В компонентах, если мы выберем положительное у направление должно быть вертикальным, и с помощью в "=" в Икс 2 + в у 2 как вы указываете, мы получаем
м а Икс "=" к в Икс 2 + в у 2 в Икс , м а у "=" м г к в Икс 2 + в у 2 в у
как видите, эти дифференциальные уравнения связаны; в Икс уравнение включает в у и у -уравнение включает в Икс в отличие от случая, когда сопротивления нет. Вы должны быть в состоянии довольно легко численно решить эти одновременные уравнения на Mathematica.

В частности, вы можете решить эти уравнения, задав начальное положение Икс ( 0 ) "=" ( Икс ( 0 ) , у ( 0 ) и начальная скорость в ( 0 ) "=" ( в Икс ( 0 ) , в у ( 0 ) ) "=" ( в ( 0 ) потому что θ , в ( 0 ) грех θ ) где θ - начальный угол, под которым вылетает снаряд.

И если вы хотите найти, под каким углом можно достичь наибольшего расстояния, вы можете использовать поиск по золотому сечению .

Вы знаете, что сопротивление воздуха в заданных контролируемых условиях одинаково во всех направлениях, поэтому вам нужно только вычислить составляющую скорости в направлении, которое перпендикулярно, а другое параллельно базовой оси, а затем вычислить скорость с обеих сторон, а затем вычислить радиус. Если это помогло вам, значит все в порядке, или если хотите, я решу это для вас.

Я предлагаю определить функцию ф ( θ ) это дает вам дальность полета снаряда для заданного угла. Вычислить ф численное решение ОДУ (вы можете использовать метод Рунге-Кутты для этой задачи http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods )

м г 2 Икс г т 2 "=" м г к в в
с начальным условием
Икс ( 0 ) "=" ( 0 , 0 ) в ( 0 ) "=" в Икс потому что ( θ ) + в у грех ( θ )
Затем используйте троичный поиск в этом ф чтобы получить результат: http://en.wikipedia.org/wiki/Ternary_search . Вы должны быть в состоянии реализовать этот алгоритм на предпочитаемом вами языке программирования.