В ответе @astrojuanlu упоминается о существовании пакета Python poliastro , и в документации я нашел пример под названием Going to Mars with Python с использованием poliastro среди прочего.
Входные данные, используемые в примере, включают некоторые исторические даты для Марсианской научной лаборатории с марсоходом Curiosity и некоторые ядра специй JPL.
Очевидно, он каким-то образом генерирует приблизительную траекторию миссии.
Вопрос: В общих чертах, как это делается? Какие основные шаги и методы он использует, и какая информация получается? Можно ли построить межпланетную траекторию? Времена, масштабы и направления маневров Delta-V тоже?
Я ищу больше, чем просто спекуляции в кресле или класс ответов «я подозреваю» . Если возможно, проведите тест-драйв примера и включите фрагмент сценария и часть вывода вместе с кратким изложением, которое отвечает на эти вопросы. Идея состоит в том, чтобы дать ответ, который будет информативным для будущих читателей и пользователей полиастро. Спасибо!
Полный отказ от ответственности: я автор и главный разработчик полиастро.
Самый важный шаг перед тем, как что-либо делать, — это каким-то образом получить положения и скорости планет Солнечной системы. Astropy , одна из основных зависимостей полиастро, обеспечивает приближенные модели средней точности, описанные в Simon et al. «Числовые выражения для формул прецессии и средних элементов для Луны и планет» (1994). Однако для приложений с высокой точностью лучше напрямую загружать эфемериды из JPL , основанные на данных наблюдений из множества различных источников и охватывающих широкий временной интервал[1]. Другой пакет Python, jplephem , способен считывать полиномы Чебышева, содержащиеся в этих файлах, и вычислять декартовы элементы доступных тел.
После установки точных дат запуска и прибытия, в данном случае для миссии Mars Science Laboratory, и пренебрегая маневрами коррекции траектории (TCM) и другими отклонениями от кеплеровских траекторий, полиастро может решить граничную задачу двух тел, также известную как проблема Ламберта . который дает траекторию между двумя заданными точками. Существует несколько алгоритмов для решения проблемы Ламберта, и полиастро использует алгоритм Иззо , описанный в Иззо «Пересмотр проблемы Ламберта» (2014), который использует итерационный метод Хаусхолдера (эквивалент метода Ньютона 3-го порядка) для достижения более быстрой сходимости с меньшим количеством функций. оценки.
После этого остается только рисовать[2]. Для кеплеровских траекторий полиастро уже знает, как наилучшим образом выбирать точки, чтобы максимизировать эффективность ( и избежать уродливых эффектов в апоцентре орбит с большим эксцентриситетом ), используя интеллектуальный метод, описанный Берри и Хили «Обобщенное преобразование Сундмана для распространения высоко- эксцентриситет эллиптических орбит» (2002). В случае уже рассчитанных траекторий или некеплеровских орбит полиастро позволяет пользователю просто использовать набор векторов. Чтобы получить более простые 2D-графики, полиастро перепроецирует все орбиты на перифокальную рамку первой орбиты. С другой стороны, 3D-графики не требуют какой-либо предварительной обработки.
[1] Альтернативным источником с совместимым форматом файла является «Institut de Mécanique Céleste et de Calcul des Éphémérides» https://www.imcce.fr/recherche/equipes/asd/inpop/download17a#4 , но это не так . но поддерживается Astropy .
[2] Единственная причина, по которой графики не появлялись, заключалась в досадной ошибке в базовой 3D-библиотеке JavaScript и веб-сайте документации.
Рассел Борогов
ооо
ооо
Астрохуанлу
Астрохуанлу
ооо