Вычислительное решение задачи двух тел для аппроксимации заплатанных коник

Я пытался создать орбитальную симуляцию, используя аппроксимацию исправленных коник, например космическую программу Kerbal. Сначала я пытался решить уравнение Кеплера, используя метод Ньютона, однако это оставляло желать лучшего, поскольку для этого требуется много начальных переменных, таких как большая полуось и эксцентриситет, которые должны быть предоставлены заранее, тогда как у меня есть только радиус-вектор и вектор скорости. Также этот подход, по-видимому, не работает с орбитами, которые являются параболическими или гиперболическими (или прямолинейными), не говоря уже о том, что он требует значительных вычислительных ресурсов. Это привело меня к методу Goodyear из ответа Ламонта на этот вопрос.

Определение орбитальной позиции в будущем моменте времени

Однако мне не удалось заставить его давать достоверные результаты. Все радиус-векторы, которые я получаю от него, образуют прямые линии. Насколько я понимаю, все, что требуется, это начальный радиус-вектор, вектор скорости, гравитационный параметр и временной интервал. Я давал эти значения в единицах СИ, то есть в метрах и секундах. Ожидаются ли другие юниты?

Если все вышеперечисленное не работает, существуют ли какие-либо другие общие решения проблемы двух тел, которые требуют только начального радиус-вектора и вектора скорости и могут вернуть радиус-вектор и вектор скорости в некоторый момент времени «t» в будущем? И какой из них лучше всего подходит для аппроксимации с заплатками?

Просто предположение: вы говорите о гравитационном параметре, а потом о килограммах. Гравитационный параметр ( г М ) не содержит массы в своей размерности, ее размерность л 3 Т 2 . Если бы код ожидал гравитационный параметр в м3/с2, а вы указали массу в кг, это было бы ошибкой на много порядков.
Это моя ошибка. Я отредактировал вопрос, чтобы удалить килограммы. Я никогда не использовал килограммы в расчетах. Я использовал гравитационный параметр Земли в м ^ 3 / с ^ 2, что было примерно 3,986E14 м ^ 3 / с ^ 2. Правильные единицы, должно быть, упустили из виду, когда писал вопрос.
если у вас есть гравитационный параметр, вектор радиального расстояния и вектор скорости, у вас есть большая полуось в виде удельной орбитальной энергии и эксцентриситета орбиты в виде вектора эксцентриситета . Гиперболические версии уравнений Кеплера меняют знаки и заменяют гиперболические триггерные функции, а параболические могут обрабатываться собственным специальным набором уравнений или вежливо игнорироваться.
Я бы рекомендовал метод Шепперда по этой ссылке в моем ответе на этот другой вопрос. Вы также можете реализовать метод Дэнби ​​для решения уравнения Кеплера из реализации Matlab Дэвида Игла: mathworks.com/matlabcentral/fileexchange/… Этот ответ должен помочь вам в тестировании этих алгоритмов: space.stackexchange.com/questions/20669/… — вы можете сгенерируйте кучу решений Kepler и используйте их для тестирования всех трех типов решателей.
В репозитории Дэвида Игла также есть функции eci2orb1 и orb2eci, которые преобразуют в/из векторов состояния и кеплеровские элементы, например, в этом репозитории: mathworks.com/matlabcentral/fileexchange/… и у него есть файл glambert.m, который является решателем Гудинга Ламберта как хорошо. Его eci2orb1, orb2eci, glambert, kepler1 (Дэнби) и twobody2 (Шепперд) образуют хороший набор инструментов для кеплеровского решателя. ИМО, реализуйте их все.

Ответы (1)

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

Использование орбитальных элементов - "правильный способ" сделать это. Их 6, описанных в этой статье Википедии :

  • эксцентриситет е
  • большая полуось а
  • склонность я
  • долгота восходящего узла Ом
  • аргумент перицентра ю
  • настоящая аномалия θ (что зависит от времени)

Первые пять из них полностью описывают геометрию орбиты в 3D. Истинная аномалия — это угол, относящийся к положению тела/космического корабля на этой орбите. Все эти параметры можно рассчитать по векторам начального состояния (положения и скорости), зная стандартный гравитационный параметр тела-аттрактора. Математика описана в этом PDF-файле Рене Шварцем о том, как преобразовать декартовы орбитальные векторы состояния в орбитальные элементы.

Когда у вас есть элементы орбиты, вы можете использовать их для вычисления векторов состояния (вектор положения/радиуса и вектор скорости) в любой момент времени, следуя этому другому PDF-файлу о том, как преобразовать элементы орбиты в декартовы векторы состояния. Однако некоторые формулы, описанные в документе, работают только для эллиптических орбит. Для гиперболических орбит (когда е > 1 ) вам придется использовать другие формулы для эксцентрической и истинной аномалии (см. эту статью в Википедии и второй ответ на этот пост ), а также адаптировать формулу для вектора скорости из документа (см. этот пост ).

«Сложно выглядящие» матрицы вращения, которые задают положение и скорость космического корабля/тела в трехмерном пространстве, могут быть разработаны за следующие шаги:

  • Выберите опорные векторы для «вправо» и «вверх», например, направление x (1, 0, 0) и направление y (0, 1, 0), я называю их ты Икс и ты у .
  • Вычислить вектор восходящего узла ты а с с : это ты Икс вращается вокруг ты у под углом Ом ;
  • Установить положение р "=" о и скорость в "=" о ˙ как описано в документе (с измененной формулой в случае е > 1 );
  • Повернуть р и в вокруг ты у угла Ом + ю ;
  • Повернуть снова р и в вокруг ты а с с угла я .

(Обратите внимание, что в документах Рене Шварца он считает ось Z осью «вверх», а не осью Y)

Случай параболической орбиты ( е "=" 1 ) можно, как сказал нотовны в комментарии, вежливо проигнорировать (применить алгоритм страуса ).

Обратите внимание, однако, что вам может потребоваться принять во внимание крайние случаи. т.е. когда вы имеете дело с орбитами, которые действительно близки к круговым орбитам или имеют нулевое наклонение. В этих случаях формулы для углов, такие как истинная аномалия в первом документе, не будут работать (они будут давать значения NaN из-за точности с плавающей запятой и округлений). Таким образом, для этих конкретных случаев вам придется установить векторы по умолчанию, например, эксцентрический вектор, и вычислить углы на его основе.

Что касается единиц, формулы действительно предполагают единицы СИ. (Однако вы можете использовать любое число, кратное этим единицам, если вы учитываете это в уравнениях).