Траектория снаряда, запущенного с поверхности планеты

Скажите, Барри, можете ли вы злоупотребить функцией «ответить на свой вопрос» на этом сайте, чтобы получить представление об этом часто задаваемые вопросы (в различных формах):

Вы запускаете снаряд вверх со скоростью v0 по безвоздушной сферической планете с радиусом r, периодом вращения p и поверхностным ускорением g.

  1. Составьте дифференциальные уравнения, чтобы найти, на каком расстоянии от точки запуска приземлится снаряд? Вы можете игнорировать вращение планеты вокруг своего главного (если есть) в своих расчетах.

  2. Численно решить эти дифференциальные уравнения в некоторых интересных случаях.

Способы усложнить эту проблему:

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

  • Учитывать эллипсоидные планеты, радиус которых зависит от широты, а нормаль к поверхности (направление «вверх») не совсем противоположна силе притяжения (направление «вниз»).

Ответы (1)

Без ограничения общности мы можем нарисовать наши оси так, чтобы начальное положение снаряда находилось в плоскости xz.

С учетом широты phiместа пуска начальное положение снаряда:

{ р потому что ( ф ) , 0 , р грех ( ф ) }

Место запуска совершает оборот за время p, поэтому его положение в момент времени t равно:

{ р потому что ( ф ) потому что ( 2 π т п ) , р потому что ( ф ) грех ( 2 π т п ) , р грех ( ф ) }

Дифференцируя, мы имеем скорость сайта как:

{ 2 π р потому что ( ф ) грех ( 2 π т п ) п , 2 π р потому что ( ф ) потому что ( 2 π т п ) п , 0 }

В частности, скорость в момент времени 0 равна:

{ 0 , 2 π р потому что ( ф ) п , 0 }

Таким образом, начальная скорость снаряда будет равна v0скорости, сообщаемой с места запуска, как указано выше.

Исключив на мгновение скорость сайта, запуск будет удален от центра планеты и, следовательно, в направлении:

{ потому что ( ф ) , 0 , грех ( ф ) }

Поскольку это единичный вектор, скорость запуска (исключая скорость стартовой площадки на данный момент) равна:

{ v0 потому что ( ф ) , 0 , v0 грех ( ф ) }

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

{ v0 потому что ( ф ) , 2 π р потому что ( ф ) п , v0 грех ( ф ) }

Для упрощения запишем отдельные уравнения для компонентов снаряда x, y и z. Из вышесказанного имеем:

Икс ( 0 ) знак равно р потому что ( ф )

у ( 0 ) знак равно 0

г ( 0 ) знак равно р грех ( ф )

Икс ( 0 ) знак равно v0 потому что ( ф )

у ( 0 ) знак равно потому что ( ф )

г ( 0 ) знак равно v0 грех ( ф )

Ускорение действует по направлению к центру планеты, поэтому направление ускорения в момент времени t:

{ Икс ( т ) , у ( т ) , г ( т ) }

Преобразование этого в единичный вектор:

{ Икс ( т ) Икс ( т ) 2 + у ( т ) 2 + г ( т ) 2 , у ( т ) Икс ( т ) 2 + у ( т ) 2 + г ( т ) 2 , г ( т ) Икс ( т ) 2 + у ( т ) 2 + г ( т ) 2 }

Ускорение силы тяжести равно g на поверхности, которая находится на расстоянии r от центра планеты, и, таким образом, равно g*(r/d)^2 на расстоянии d от планеты (при условии, что d > r, каковым оно является в нашем случае). проблема). Используя формулу расстояния, величина силы тяжести в момент времени t равна:

грамм р 2 Икс 2 + у 2 + г 2

Таким образом, вектор ускорения свободного падения равен:

{ грамм р 2 Икс ( т ) ( Икс ( т ) 2 + у ( т ) 2 + г ( т ) 2 ) 3 / 2 , грамм р 2 у ( т ) ( Икс ( т ) 2 + у ( т ) 2 + г ( т ) 2 ) 3 / 2 , грамм р 2 г ( т ) ( Икс ( т ) 2 + у ( т ) 2 + г ( т ) 2 ) 3 / 2 }

Поскольку мы будем решать эти уравнения численно, нам нужно ограничить значения t. Мы, очевидно, хотим начать с t=0, но где закончить?

Грубо говоря, если объект имеет начальную скорость v0 и ускоряется в g (в отрицательном направлении), он достигнет скорости 0 в момент времени v0/g и вернется в исходное положение в момент времени 2*v0/g. Следовательно, вычислений до t=4*v0/g должно быть достаточно.

(разумеется, вся эта проблема в уточнении "грубо говоря" абзаца выше)

Обратите внимание, что простое нахождение приблизительной функции для положения снаряда — это только шаг 1. Затем нам нужно найти, когда снаряд приземлится обратно на планету: другими словами, когда его расстояние от центра снова равно r.

Далее следует код Mathematica.

(* TODO: I am not returning functions properly here *)

(* 

This module returns (in this order):

s[t]: the xyz position of the projectile at time t, 0 < t < root

site[t]: the position of the launch site at time t, just as a reminder
that the planet is rotating.

root: The time at which the projectile lands

dlat: The projectile's change in latitude (radians)

dlon: The projectile's change in longitude (radians)

nsdist: north/south distance traveled by projectile

ewdist: east/west distance traveled by projectile

tdist: total distance traveled by projectile (on surface of sphere)

Some helper functions used below are found in:

https://github.com/barrycarter/bcapps/blob/master/bclib.m

*)

launch[r_, p_, g_, phi_, v0_] := launch[r,p,g,phi,v0] = Module[
 {s, site, root, dlat, dlon, garb, nsdist, ewdist, tdist, maxtime, maxheight},

s[t_] = {x[t], y[t], z[t]} /. NDSolve[{
 x[0] == r*Cos[phi], y[0] == 0, z[0] == r*Sin[phi],
 x'[0] == v0*Cos[phi], y'[0] == 2*Pi*r*Cos[phi]/p, z'[0] == v0*Sin[phi],
 x''[t] == -g*((r^2*x[t])/(x[t]^2 + y[t]^2 + z[t]^2)^(3/2)),
 y''[t] == -g*((r^2*y[t])/(x[t]^2 + y[t]^2 + z[t]^2)^(3/2)),
 z''[t] == -g*((r^2*z[t])/(x[t]^2 + y[t]^2 + z[t]^2)^(3/2))
}, {x[t],y[t],z[t]}, {t,0,4*v0/g}][[1]];

maxtime = FindMaximum[Norm[s[t]]-r,{t,v0/g}];
maxheight = maxtime[[2,1,2]];
maxtime = maxtime[[1]];

site[t_] = r*{Cos[2*Pi*t/p]*Cos[phi], Sin[2*Pi*t/p]*Cos[phi], Sin[phi]};
root = t /. FindRoot[Norm[s[t]]-Norm[s[0]], {t, 2*v0/g}];
{dlon,dlat,garb} = xyz2sph[s[root]]-xyz2sph[site[root]];
{nsdist, ewdist} = {dlat*r, Cos[phi+dlat]*dlon*r};
tdist = 2*r*ArcSin[Norm[s[root]-site[root]]/2/r];
Return[{s[t], site[t], root, dlat, dlon, nsdist, ewdist, tdist, maxtime,
 maxheight}];
];

Теперь давайте воспользуемся этим кодом, чтобы ответить на некоторые существующие вопросы:

Чтобы прыгнуть за 1 секунду, мне нужна начальная скорость 4,9 м/с, поэтому мы вычисляем

launch[6371000, 86400, 9.8, 0*Degree, 4.9]

Прыжок занимает 1,003 секунды (на 3 миллисекунды дольше, чем ожидалось), и я приземляюсь на 116 микрометров к западу от моего исходного положения (без изменений в моем северном/южном положении, так как я начал с экватора).

Чтобы проверить ответ @NowIGetToLearnWhatAHe: для прыжка на 1 м на Земле требуется начальная скорость 4,43 м/с, поэтому мы бежим

launch[6371000, 86400, 9.8, 45*Degree, 4.43]

Прыжок длится 0,9053 секунды, и я приземляюсь на 6,9 мм к югу и на 62,5 микрометра к западу от того места, где я начал, проверяя ответы @NowIGetToLearnWhatAHe с точностью до ошибок округления.

Это эффективно также отвечает https://physics.stackexchange.com/questions/80090/ , если мы предположим, что прыжок на 1 м и зависание на 1 секунду достаточно близко к случаям, описанным выше.

К сожалению, он не отвечает https://physics.stackexchange.com/questions/89276 Несмотря на то, что потолок поезда, вероятно, не более чем на 1 м выше, чем рука метателя, скорости поезда 600 миль в час может быть достаточно, чтобы повлиять на уравнение.

Давайте решим задачу на 45 градусе северной широты, где движение пули наибольшее:

launch[6371000, 86400, 9.8, 45*Degree, 1200]

Пуля приземлится через 249,148 секунды, в 507 м к западу и 1260 м к югу от своего первоначального положения, достигнув максимальной высоты 74455 м на полпути своего пути (124,574 с).

  • https://physics.stackexchange.com/questions/226882 на самом деле спрашивает о сопротивлении воздуха, поэтому мой ответ явно не применим, но давайте все равно проверим цифры. Я сделал

launch[3389500, 88643, 3.711, 0*Degree, v0]

с различными v0, чтобы увидеть, как быстро монета должна быть подброшена, чтобы не попасть в руку флиппера (при радиусе руки 12 см).

На марсианском экваторе вам придется подбрасывать монету со скоростью 25,9 м/с, чтобы она не попала в вашу руку на пути вниз. Это эквивалентно подбрасыванию монеты со скоростью 9,8 м/с (около 22 миль в час) на Земле, так что, да, вы могли бы подбросить монету достаточно быстро, чтобы она не попала в вашу руку на пути вниз.

На 45 градусах широты на Марсе имеем:

launch[3389500, 88643, 3.711, 45*Degree, v0]

и оказывается, что начальной скорости 10 м/с (что эквивалентно 3,76 м/с или 8,5 миль в час на Земле) было бы достаточно, чтобы монета не попала вам в руку.

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

Для приведенного ниже я использую:

launch[6371000, 86400, 10, 45*Degree, v0]

оценка силы тяжести на поверхности Земли в 10 м / с ^ 2 для удобства.

  • Время посадки (в секундах):

введите описание изображения здесь

Красная линия представляет t/5, время приземления, которое мы ожидали бы, если бы Земля не вращалась и гравитация не уменьшалась с расстоянием.

Синяя линия представляет фактическое время посадки.

  • Место посадки, как далеко к западу от стартовой площадки (в метрах):

введите описание изображения здесь

  • Место посадки, как далеко к югу от стартовой площадки (в метрах):

введите описание изображения здесь

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

  • Кажущаяся поверхностная скорость снаряда: т. е. расстояние, пройденное по поверхности, деленное на время приземления (в метрах в секунду):

введите описание изображения здесь

Ноты:

  • Mathematica не может решить дифференциальное уравнение, когда начальная скорость превышает 7000 м/с, возможно, потому, что это довольно близко к скорости, необходимой для выхода на околоземную орбиту (хотя и недостаточно, чтобы полностью избежать гравитационного притяжения Земли, что потребовало бы скорости 11186 м/с). /с)

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