Проблема с задачей Гаусса для решения межпланетных траекторий

Синий — это Земля, красный — это Марс, оранжевый — это Юпитер, а все белые — это траектории от Земли к Марсу.

Синий — это Земля, красный — это Марс, оранжевый — это Юпитер, а все белые — это траектории от Земли к Марсу. Странные линии траектории в середине — проблема, которую я пытаюсь решить.

Как вы можете видеть на изображении, у меня есть хороший решатель Kepler (на самом деле я реализовал 3 при отладке этой проблемы с траекторией, чтобы убедиться, что проблема не в нем). Но при использовании задачи/метода Гаусса для расчета траекторий с учетом положения Земли во время запуска, положения Марса во время прибытия и продолжительности путешествия бывают случаи, когда решение приводит к большой полуоси с отрицательным значением .

Моим основным ресурсом по алгоритму Гаусса был этот сайт: http://www.braeunig.us/space/interpl.htm .

Читая http://www.braeunig.us/space/orbmech.htm , кажется, что большая полуось отрицательна для гипербол и что гиперболы используются, когда скорость корабля достаточно велика, чтобы избежать гравитации его главной оси. Так что, возможно, моя проблема не в том, что мой гауссовский решатель и кеплер в декартовом алгоритме неверны, а в том, что траектория, которую я пытаюсь решить, требует решения другого типа?

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

рекомендую закрыть, так как это вопрос кодирования и не связан с проблемами пространства
Среда может быть кодом, но проблема очень сильно связана с космосом/физикой. Большинство людей в StackOverflow посмотрят на это и скажут: «Вы ошиблись местом».
Если вы уберете подробности об орбитах и ​​ограничитесь проблемой несоответствия коническим сечениям (т.е. получением недопустимой большой полуоси), вы обнаружите, что это в точности проблема чисто кодирования.
Не могли бы вы предоставить некоторую информацию о том, что вы подразумеваете под «несоответствием коническим сечениям»? Я смутно понимаю, что эти траектории основаны на математике путем разрезания конуса плоскостью, но я не мог вывести из этого никаких уравнений. Возможно, я мог бы решить свою проблему, если бы лучше понял эту часть.
Здесь один или два вопроса «пожалуйста, отладьте мой код для исследования космоса» здесь в год, и их проблемы здесь почти никогда не решаются.
Я думаю, что сайт должен быть более снисходителен к вопросам программирования, если суть проблемы в астрономии, а не в программировании, и я чувствую сильную мотивацию проголосовать за это. Однако ваша проблема выглядит как проблема «отладить мой код для меня». Это нигде не приветствуется, ни на StackOverflow, ни здесь. Сейчас я нажимаю «Пропустить» (это голосование модерации, что делать с вашим вопросом), но, пожалуйста, улучшите свой пост как можно скорее .
Это не было моей целью, спасибо за отзыв. Я думаю, что достаточно упростил проблему, надеюсь, я не удалил какую-либо соответствующую информацию.
@lancew Это отличный вопрос, потому что 1) он имеет основополагающее значение для исследования космоса. «Базз» Олдрин получил свое прозвище за непрекращающиеся разговоры об орбитальной механике. Он защитил докторскую диссертацию по методам орбитального сближения в Массачусетском технологическом институте. 2) Это указывает на смену парадигмы в технике и науке, вызванную цифровыми компьютерами. Предполагать решения дифференциальных уравнений в замкнутой форме больше не требуется.
@lancew Если у вас здесь слишком много хлопот, вы можете обнаружить, что Quora дает вам лучшее соотношение (ответы) / (придирки о том, почему я не хочу отвечать).
Я бы сказал: «Да, уравнения для перехода от средней аномалии к эксцентричной аномалии и истинной аномалии действительно отличаются для гиперболических орбит, чем для эллиптических, если это часть вашего процесса». Самые большие различия заключаются в изменении знака некоторых терминов и использовании гиперболических тригонометрических функций, а не круговых тригонометрических функций.

Ответы (1)

Существует ли другой набор уравнений для получения орбитальной механики?

Общая формулировка представляет собой набор связанных ОДУ, обыкновенных дифференциальных уравнений. Эти уравнения прекрасно работают. Приведенный вами алгоритм Гаусса — это лишь один из способов приблизиться к их решению.

Я рекомендую изучить методы численного решения для интегрирования ОДУ. В одном измерении это выглядит примерно так: инициализировать скорость v0 и положение x0 вашей массы m, просуммировать все гравитационные силы, действующие F, вычислить ускорение a = F/m, увеличить время на dt, увеличить скорость на v = v0 + a dt, увеличить позицию на x = x0 + v dt. Повторяйте, пока не доберетесь туда, куда идете. ВНИМАНИЕ, это не эффективный численный метод, а самый простой. Для получения точных решений требуется очень малое значение dt.

Вы найдете надежные и точные интеграторы ODE, встроенные в языки высокого уровня, такие как MATLAB, и даже в MathCAD.

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

Методы, основанные на допущении точных решений в замкнутой форме, такие как гиперболы, всегда основываются на предположениях. Веб-сайт, который вы предоставили, иллюстрирует сложность обоснования применимости предположений, лежащих в основе их метода. Они требуют, чтобы вы оценили, «насколько высоко», т. е. где находится точка, за которой вы можете игнорировать Землю, Марс или Луну.

Похоже, вы говорите о симуляции N тел, что невозможно с тем количеством космических объектов, которые я хочу поддерживать в браузерном приложении. Я знаком с дифференциальными уравнениями, но что вы подразумеваете под «связанными»?
@lancew В этом ответе обсуждается орбитальная механика, если вы не хотите придерживаться Гаусса. space.stackexchange.com/questions/41755/…
@lancew DE второго порядка, поскольку ускорение является второй производной от положения по времени. ДУ переписывается как пара уравнений первого порядка, одно для v как dx/dt, а другое для a как dv/dt.