Как рассчитать линейную скорость орбиты планеты?

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

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

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

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

Я хочу, зная только расстояние и две массы (и направление вектора скорости), иметь возможность вычислить линейный вектор скорости.

У меня действительно нет дополнительной информации, чтобы предоставить, если вам что-то нужно, просто спросите об этом.

Расстояние, две массы и направление вектора скорости просто не определяют величину скорости. Вам нужно нечто большее.
А что мне нужно?
Любой из следующих параметров: угловая скорость, угловой момент, период (время, необходимое для совершения одного оборота), эксцентриситет орбиты, расстояние кратчайшего сближения и множество других возможных параметров.
Что сказал @Joe, вам нужна еще одна информация. Кроме того, я не совсем понимаю, просите ли вы способ получить свои начальные условия (что является хорошим вопросом), или вы запрашиваете уравнения для обновления скорости на каждом временном шаге (в этом случае вы может начаться шатко - расчет скорости по вашим параметрам - еще +1, конечно - может привести к систематической ошибке). Если бы мне пришлось выбрать один дополнительный параметр для назначения, я бы выбрал эксцентриситет (учитывая ваше желание сделать вещи случайными, он кажется наиболее естественно рандомизируемым).
Также любопытно, какой метод интеграции вы используете. Это ( en.wikipedia.org/wiki/Leapfrog_integration ) обычно является моим предпочтительным оружием для быстрого и грязного моделирования, поскольку оно довольно хорошо сохраняет энергию для ~ периодических орбит. Конечно, есть много других хороших вариантов, и тот, который вы выберете, может повлиять на то, как вы хотите рассчитать скорость.
@Kyle Мне нужна «начальная» скорость, я уже могу обновить скорость, используя nbody. Если я должен добавить параметр, я думаю, что это должен быть эксцентриситет, так как это то, с чем я, безусловно, тоже буду играть. Кстати, извините за путаницу в моем вопросе, мне трудно задавать технические вопросы на английском :/. Не стесняйтесь предлагать издание
Полностью согласен с @Kyle. Если вы хотите сделать это с помощью кода из n-тел, см. также этот вопрос sccomp . Если вы не будете осторожны со своей схемой интеграции, ваши планеты вполне могут разлететься со сверхсветовой скоростью после нескольких оборотов. Кроме того, довольно хорошее приближение состоит в том, чтобы пренебречь взаимодействиями между планетами и рассматривать звезду как неподвижную, и в этом случае код с n телами является излишним для этой проблемы.

Ответы (2)

Как упоминалось в комментариях, вам нужна еще одна информация, чтобы определить величину скорости.

Вы сказали, что можете использовать эксцентриситет, поэтому в этом случае вы можете использовать приведенную здесь формулу и вывести квадратное уравнение для скорости, которое дает:

в "=" г М р грех ( α ) ( 1 ± ϵ ) ,

где г гравитационная постоянная, р расстояние между двумя массами, М это большая масса (здесь я предположил, что одна масса намного больше другой), α - угол между вектором скорости и радиусом, а ϵ является эксцентриситет.

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

Это потрясающе ! большое спасибо. Просто чтобы быть уверенным, α всегда PI/2 или -PI/2, нет?
Нет! α может быть любым от 0 до π / 2 . Помните, что это не ограничивается круговой орбитой. я предполагал α положительно, в противном случае просто возьмите его абсолютное значение.

Я предполагаю, что вы хотите иметь стабильные орбиты. Тогда вы знаете, что центробежная сила равна силе тяжести:

GmM/r² = mv²/r

где G = постоянная Ньютона, r - расстояние, m - масса планеты, а M - масса центрального объекта. Поскольку вы знаете расстояние и массу центрального объекта (масса планеты компенсируется), вы можете вычислить v. v² =GM/r

Это только для идеально круговой орбиты, и в ОП такого ограничения не было.
Извините, это было непонятно для меня
это одна из формул, которые я нашел, но когда я ее применил, я получил очень высокий результат (например, для фиксированного вектора земли 29,783 и сгенерирован с помощью вашей формулы: 941690,7474866967)
@eephyne - обратите внимание, что одним из параметров, которые я упомянул в своем комментарии, является эксцентриситет орбиты. Когда вы используете эту формулу, вы ограничиваете себя круговой орбитой, то есть принимаете эксцентриситет равным нулю.
@ Джо, я знаю, но, поскольку я ничего не нашел, я тестировал это.
@eephyne: я понимаю 1,99 × 10 30 × 6.673 × 10 11 / 1,49 × 10 11 = 29847, что является правильным значением.
@JohnRennie Я просто заметил, почему мой результат был неправильным. Я использовал 1.49e8 вместо 1.49e11, потому что я использую все значения в км, но не изменил константу G.
@eephyne - рад видеть, что ты нашел свою ошибку. Я просто хотел добавить, что даже если вы решите использовать круговую орбиту и используете эту формулу, вам также нужно, чтобы направление скорости было перпендикулярно радиусу, и я не знаю, есть ли у вас такая свобода, поскольку вы сказал в своем вопросе, что направление уже определено.
@ Джо, это определено, потому что я решил заставить всю планету вращаться одинаково. Кстати, когда вы говорите об эксцентриситете, если вы знаете формулу, меня это очень интересует.
@eephyne - что ты имеешь в виду под «все планеты вращаются одинаково»? Что касается формулы эксцентриситета, я дал ее в только что добавленном ответе.
@eephyne: чтобы узнать об эллиптической орбите, см. en.wikipedia.org/wiki/Elliptic_orbit и en.wikipedia.org/wiki/Orbit_equation .
Между прочим, @ user20071 Я подумал, что голосование против вашего ответа было резким, поскольку ваш ответ был и правильным, и полезным, хотя и неполным. Я проголосовал за удаление отрицательного голоса.