Скажите, Барри, можете ли вы злоупотребить функцией «ответить на свой вопрос» на этом сайте, чтобы получить представление об этом часто задаваемые вопросы (в различных формах):
Вы запускаете снаряд вверх со скоростью v0 по безвоздушной сферической планете с радиусом r, периодом вращения p и поверхностным ускорением g.
Составьте дифференциальные уравнения, чтобы найти, на каком расстоянии от точки запуска приземлится снаряд? Вы можете игнорировать вращение планеты вокруг своего главного (если есть) в своих расчетах.
Численно решить эти дифференциальные уравнения в некоторых интересных случаях.
Способы усложнить эту проблему:
Разрешить направленные запуски, а не только прямые запуски. Это, вероятно, самое простое и очевидное улучшение вопроса.
Учитывать эллипсоидные планеты, радиус которых зависит от широты, а нормаль к поверхности (направление «вверх») не совсем противоположна силе притяжения (направление «вниз»).
Без ограничения общности мы можем нарисовать наши оси так, чтобы начальное положение снаряда находилось в плоскости xz.
С учетом широты phi
места пуска начальное положение снаряда:
Место запуска совершает оборот за время p, поэтому его положение в момент времени t равно:
Дифференцируя, мы имеем скорость сайта как:
В частности, скорость в момент времени 0 равна:
Таким образом, начальная скорость снаряда будет равна v0
скорости, сообщаемой с места запуска, как указано выше.
Исключив на мгновение скорость сайта, запуск будет удален от центра планеты и, следовательно, в направлении:
Поскольку это единичный вектор, скорость запуска (исключая скорость стартовой площадки на данный момент) равна:
Добавив начальную скорость места запуска, мы получим начальную скорость снаряда как:
Для упрощения запишем отдельные уравнения для компонентов снаряда x, y и z. Из вышесказанного имеем:
Ускорение действует по направлению к центру планеты, поэтому направление ускорения в момент времени t:
Преобразование этого в единичный вектор:
Ускорение силы тяжести равно g на поверхности, которая находится на расстоянии r от центра планеты, и, таким образом, равно g*(r/d)^2 на расстоянии d от планеты (при условии, что d > r, каковым оно является в нашем случае). проблема). Используя формулу расстояния, величина силы тяжести в момент времени t равна:
Таким образом, вектор ускорения свободного падения равен:
Поскольку мы будем решать эти уравнения численно, нам нужно ограничить значения 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 с).
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 м/с). /с)
В долгосрочной перспективе я хотел бы разработать приближения первого порядка к указанным выше величинам.