[Перевод] Фильм «Скрытые фигуры»: задачи из фильма и современный подход к расчетам орбиты и возвращения на Землю

a4c06cf0dd524789a0131cf391f03be9.png

Перевод поста Джеффри Брайанта (Jeffrey Bryant), Пако Джейна (Paco Jain) и Майкл Тротта (Michael Trott) «Hidden Figures: Modern Approaches to Orbit and Reentry Calculations».
Код, приведенный в статье, можно скачать здесь.
Выражаю огромную благодарность Полине Сологуб за помощь в переводе и подготовке публикации


Содержание


 — Размещение спутника в определенном месте
 — Константы и первичная обработка
 — Вычисления
 — Построение графика
 — Как рассчитываются орбиты сегодня
Моделирование возвращаемого спутника
Вышедший недавно в кинотеатрах фильм Скрытые фигуры получил хорошие отзывы. Действие разворачивается в важный период истории США; в нем затрагивается также ряд тем вроде гражданских прав и космической гонки. В центре повествования — история Кэтрин Джонсон и ее коллег (Дороти Воган и Мэри Джексон) из NASA в период развертывания программы Меркурий и ранних исследований пилотируемых космических полетов. Внимание также акцентируется на драматической борьбе за гражданские права афро-американских женщин в NASA, происходившей в то время. Компьютеры в то время едва появились, так что способность Джонсон и ее коллег решать сложные навигационные задачи орбитальной механики без использования компьютера обеспечили важную проверку ранних компьютерных результатов.

d867416f77b14b01668cbe99343a66b0.jpg

Я остановлюсь на двух аспектах ее научной работы, упомянутых в фильме: вычислениях орбиты и расчетах, связанных с вхождением в атмосферу. Для орбитальных вычислений я сначала сделал ровно то же, что и Джонсон, а затем применил более современный прямой подход с использованием инструментов Wolfram Language. В фильме упоминается о решении дифференциальных уравнений методом Эйлера; я же буду сравнивать этот метод с более современным и вычислю возвратную траекторию с помощью данных модели атмосферы, полученных непосредственно из Wolfram Language).

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

Размещение спутника в определенном месте


Одна из самых ранних работ, в которой Джонсон была соавтором («Определение азимутального угла в точке выгорания для размещения спутника над выбранной точкой») имеет дело с проблемой проверки, может ли спутник быть размещен над определенной точкой Земли после определенного количества витков вокруг орбиты при определенной стартовой позиции (например, мыс Канаверал, штат Флорида) и траектории вращения. Подход, который команда Джонсон использовала для определения азимутального угла (угол, образованный вектором скорости космического аппарата в момент отключения двигателя, с фиксированным направлением, скажем, на север) для запуска ракеты основывался на других орбитальных параметрах. Это важный шаг для обеспечения правильного местонахождения астронавта для входа в атмосферу на Землю.
b9120f518a0f40715ff057758c121e39.jpg

Константы и первичная обработка


В статье Джонсон определяет ряд констант и входных параметров, необходимых для решения задачи вручную. Отступлю немного, чтобы объяснить термин «выгорание», относящийся к остановке ракетного двигателя. После «выгорания» параметры орбиты как бы «замораживаются», и космический аппарат движется только под действием силы тяжести Земли (в соответствии с законами Ньютона). В этом разделе я следую тем определениям единиц, которые были приняты в статье.

b5fcf85ef2b5022e4dcccf476d643672.png

Некоторые функции для удобства определены, чтобы взаимодействовать с углами в градусах вместо радиан. Это позволяет плавно регулировать время вычисления углов:

f1c644e2b233878fccccd599d3a71847.png

fbdbb581ba610e3c842ee97099797f4a.png

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

Semilatus rectum эллиптической орбиты:

7adee149b93321a66b7032ea3bcc4dbc.png

Угол в плоскости орбиты между перигеем и точкой выгорания:

fdb67e1ac534a5a8ea32ed3b99a5b766.png

Эксцентриситет орбиты:

87c432bf3b3fec7a12897b64e5df5dce.png

Период орбиты:

7ac3fbcf721d3f3c0f528bc07c7d7fb0.png

Эксцентрическая аномалия:

c30ba65abf6c07d85fac06912e21b589.png

Для описания следующего параметра проще будет процитировать оригинальную статью:»требование о том, чтобы спутник с точкой выгорания φ1, λ1 проходил через выбранную позицию φ2, λ2 после завершения n прохождений по орбите эквивалентно требованию, в соответствии с которым в ходе первого оборота спутник проходит через эквивалентное место с широтой φ2 так же, как и при выбранном положении, но с долготой λ2, смещенной в восточном направлении от λ2 на величину, достаточную для компенсации вращения Земли в течение n полных вращений, то есть полярного часового угла nωЕТ. Долгота этой эквивалентной позиции, таким образом, определяется соотношением»:

a1f745b63e65230247bc346c6859220a.png

Время от перигея для угла θ:

2b9b9a6a96b961ee711b277e8c0b9e99.png

Вычисления


Часть окончательного решения заключается в определении значения для промежуточных параметров δλ1–2е и θ2е. Это может быть сделано несколькими способами. Во-первых, я могу использовать ContourPlot для получения графического решения с помощью уравнений 19 и 20 из статьи:

dea21761fc0b3d1b3422c0d756d7bdb7.png

FindRoot можно использовать для нахождения численных решений:

8bc5ef05321437daa502016f8d5b50c7.png

91af4e35327f13131cd882c89fb44a89.png

Конечно, у Джонсон не было доступа к функциям ContourPlot или FindRoot, так что в ее статье описывается итерационный метод. Я перевел методику, описанную в статье, на язык Wolfram, а также раскрыл ряд других параметров с помощью ее итерационного метода. Поскольку базовые выкладки рассчитаны для сферической формы Земли, поправки на сплющенности включены:

9a98c17ed8661e348ae82550c3da681b.png

Графическое изображение значения θ2е для различных итераций демонстрирует быструю сходимость:

d8458cb442f581dc2e4e03c038706488.png

b37df848934362ccd0da6a792b31a22d.png

77008994948c14f77b5272bd21bbf316.png

74fd1364871f44dbc59f38d3a7302021.png

Я могу преобразовать метод в команде FindRoot следующим образом:

e7df62cb62a3dce34bfee68a59830319.png

22725e500d2736f396d7402905157fab.png

ac9363a7d1726716e77d56450b25bb17.png

Интересно, что даже итерационные шаги поиска корня этой более сложной системы сходятся довольно быстро:

1968e347bdc925a3e8d1eb408e792b77.png

b5bc05bff18edc80652671b76bec7c5f.png

Построение графика


Когда орбитальные параметры определены, можно визуализировать решение. Во-первых, из предыдущих решений должны быть извлечены некоторые параметры:

edc3a89a89f81f22ccbb0c5ac6b634ae.png

Далее должны быть получены широта и долгота спутника в зависимости от азимутального угла:

980fcab23e937ad15cc18180c7ddb629.png

8cba85b8ee7d482fb32be6249b62e492.png

φs и λs — широта и долгота как функция θs:

d51d77a363bded21d402e5427b4f483a.png

9d52bddd1bf4460ae0419dbcb2146e85.png

Наземный трек спутника может быть построен путем создания таблицы точек:

adb4ce3b8655f639ce2abcc28759b115.png

В статье Джонсон представлена схема орбитального решения, включая маркеры, отмечающие выгорание, а также выбранные и эквивалентные положения. Подобную схему легко воспроизвести:

e8d58b3452f1b235ab8ced18a27376bf.png

53889811a19abe965ed6755804ed46ae.png

0953c73cdbcaaf8357a62118d0f43f1a.png

Вот ее оригинальная схема для сравнения:

e341db8b46ffbd99fda0779cb3f1dac0.png

Более визуально полезная версия может быть построена с помощью функции GeoGraphics, которая преобразует геоцентрические координаты в геодезические:

cb141261ef7578e1995aebf4ae687559.png

ef9fc3954904b7cc49454e89dd184072.png

7b8f8d325aa2aeb122112670fa836f9f.png

Как рассчитываются орбиты сегодня


Сегодня практически у каждого из нас есть доступ к вычислительным ресурсам гораздо более мощным, чем те, что были у НАСА в 1960-е годы. Сейчас, используя только настольный компьютер и Wolfram Language, вы можете легко найти прямые численные решения задач орбитальной механики вроде тех, которыми занимались Кэтрин Джонсон и ее команда.

Чтобы вычислить азимутальный угол ψ с помощью более современных методов, давайте установим параметры для простой круговой орбиты, берущей свое начало после выгорания над Флоридой; предположим также, что Земля сферически симметрична (я не буду пытаться искать точное соответствие с данными из статьи Джонсон и переопределю некоторые величины, используя современную систему единиц СИ). Начиная с той же высоты околоземной орбиты, используемой Джонсон, и с помощью сферической тригонометрии несложно вывести начальные условия для нашей орбиты:

45bc6aa3a7565d86d1fa153f414cb282.png

b79e3230d84bc368acd014ab9ffddc6c.png

186b295c47fedb40e21053bab3e95a9c.png

Соответствующие физические параметры могут быть получены непосредственно с помощью Wolfram Language:

cca87b1e2c8cbc4fa4f23cb41fa3a6c3.png

Далее я получил дифференциальное уравнение движения нашего космического корабля с учетом гравитационного поля Земли. Есть несколько способов моделирования гравитационного потенциала вблизи Земли. Предположим, что планета сферически симметрична и используем декартову систему координат:

780f263bb27456923c080b0d160584c7.png

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

b45226a9f44b303fdf43a3b3bf65398b.png

Для общего однородного трехосного эллипсоида потенциал содержит кусочные функции:

d9a94371c838ff0d3b372a912312200a.png

a4a0b37139459ddcc02f5cbd4c3aec9d.png

Здесь κ является наибольшим корнем выражения х2/(a2 + κ) + у2/(b2 + k) + z2/(c2 + κ) = 1. В случае, если мы имеем дело со сплющенным эллипсоидом, предыдущая формула может быть упрощена до элементарных функций…

58a71e682a1baee8320b4b7d739616dc.png

5035ca65808d50e10a0d1ab4bcc3fb7e.png

… где κ=((2 z2 (a2-c2+x2+y2)+(-a2+c2+x2+y2)2+z4)½-a2-c2+x2+y2+z2)/2.

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

b060df5a3ea4e308ff9559555fa42ff5.png

Я мог бы легко использовать даже еще более точные значения для силы тяжести с помощью функции GeogravityModelData. В исходном положении потенциал IGF только на 0,06% отклоняется от приближения высокого порядка:

ff73f7b5c019312168357aa065282954.png

71ec280a93767e11e76607e4fd40bc96.png

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

4169d7c1726200f1586ba071c7a59fb0.png

aca75ac662d4c46a33e7f26a22092927.png

Теперь я готов использовать силу NDSolve для вычисления орбитальных траекторий. Однако перед тем, как сделать это, будет неплохо отобразить орбитальный путь в виде кривой в трехмерном пространстве. Чтобы встроить эти кривые в контекст, я построил их по текстурной карте поверхности Земли и спроецировал на сферу. Здесь я построил нужные графические объекты:

1d258696f1b5e135134c4c665f13f5a3.png

16ef766d2859570eefc8c2213b8f3c4b.png

f04e240f8ad7ac322e623c1e34de85d4.png

9135e34de77c947017f885a3b9438a85.png

В то время, как орбитальный путь, вычисляемый в инерциальной системе отсчета, образует периодическую замкнутую кривую, получается, что космический корабль будет проходить через различные точки на поверхности Земли во время каждого последующего оборота. Я могу визуализировать этот эффект, добавив дополнительное время вращения к решениям, которые я получаю от функции NDSolve. Примем, что число орбитальных периодов будет три (по аналогии с полетом Джона Гленна), я использовал функцию Manipulate чтобы увидеть, как орбитальный путь зависит от азимутального угла ψ, подобно исследованию в статье Джонсон. Я построю один график для сферической Земли (белый цвет) и другой, зеленый, чтобы продемонстрировать эффект сплюснутости (обратите внимание, что расхождение увеличивается с каждым витком):

36a1041208bd2ebc2c2066bd6d1c48b7.png

f87328f611eee374127e571dafce3578.png

В документе, который прилагается к этой записи, вы сможете увидеть функцию Manipulate в действии; обратите внимание на скорость, с которой находится каждое новое решение. Хочется надеяться, что Кэтрин Джонсон и ее коллеги в НАСА были бы впечатлены!

Теперь, изменяя угол ψ в точке выгорания, легко вычислить положение космического аппарата после, скажем, трех оборотов:

a397a2c224e2db1e920be87a102ddc86.png

05a7cfa481256f182fb893c1b05f6ce5.png

ac4ee5c839c4269579231eb9b6dd64d5.png

Моделирование возвращаемого спутника
В фильме также в связи с фазой возвращения упоминается метод Эйлера. После решения исходной задачи нахождения азимутального угла, как это было сделано в предыдущих разделах, пришло время вернуться на Землю. Для замедления вращения происходит запуск ракет, и затем, при переходе из безвоздушной среды космоса в атмосферу, происходит сложный комплекс событий. Для благополучного возвращения космонавта на Землю долны быть приняты во внимание такие факторы, как изменение плотности атмосферы, быстрое торможение и фрикционный нагрев. Необходимо решить проблемы высоты, скорости и ускорения как функции времени. Этот набор проблем может быть решен с помощью метода Эйлера, как это было сделано Кэтрин Джонсон, или с помощью функциональных возможностей решения дифференциальных уравнений в Wolfram Language.

Для простых дифференциальных уравнений можно получить подробное пошаговое решение с помощью указанного метода квадратур. Эквивалентом известной формулы Ньютона F = для зависящей от времени массы m(t) является так называемое уравнение для идеальной ракеты (в одном измерении)…

ca2cce7b8c3bea0d4fa1d38d660bde2a.png

… где m(t) — масса ракеты, vе скорость выхлопа ракетного двигателя, и m’p(t) — производная массы топлива от времени. При постоянной m’p(t) структура уравнения оказывается относительно простой и легко разрешимой в замкнутой форме:

e569bfa5948fd73a068d7e6c5ccf9cab.png

44df3ba1f91012457b2d5f58c855374e.png

Имея начальные и конечные условия для массы, я получаю знаменитое уравнение движения ракеты (К.Э. Циолковский, 1903):

fd2f8b32f5d08488a121819f2c9c37af.png

2720ef5bb8e097023d0b59960756f6cf.png

dd395bdce9dd08c1da7415bd36e8df8e.png

b7ae1eb3804423f25ff356ad7067a893.png

bff2181dc86ead34f0d8f0c65641162d.png

fa1daa27c4c3d93f192a0aeed2b581c3.png

be9ba184b9e3c89dba96565b6d45c931.png

db1ff571b6be1d1b66037a13f2fd5c50.png

Детали решения этого уравнения с конкретными значениями параметров я могу взять из Wolfram|Alpha. Вот эти детали вместе со сравнением с точным решением, а также с другими методами численного интегрирования:

70f5ea9298c972a4ee4c7d4d6bb0afb6.png

6154bc9a03298c2501c2da01be0d3fbc.png

Следуя сюжету фильма, я реализую теперь минималистическую модель процесса повторного входа. Начнем с определения параметров, которые имитируют полет Гленна:

3a17fee4bc485db9f549972714f487d2.png

b5fd3407cd6328b71829ae47426198e2.png

Я полагаю, что в процессе торможения используется 1% от тяги двигателя первой ступени, и длится он, скажем, 60 секунд. Уравнение движения:

4b83cf44ceea205c6454d4125cf5fef8.png

Здесь Fgrav — сила тяжести, Fexhaust (t) — зависящая от времени сила двигателя, и сила трения Ffriction (x(t), v(t)). Последняя зависит как от плотности воздуха в положении x(t), так и от закона трения для v(t).

Для плотности воздуха, которая зависит от высоты, я могу использовать функцию StandardAtmosphereData. Я учитываю ее также из-за парашюта, который открывается на высоте около 8,5 км над землей:

004c534f42e503f95207ce3a126df59f.png

Это дает следующий набор связанных нелинейных дифференциальных уравнений, которые необходимо решить. Функция WhenEvent[…] указывает на конец построения решения ДУ, когда капсула достигает поверхности Земли. Я использую векторные значения положения и скорости переменных X и V:

5cae8b045306035bc4fc3804b7879d7e.png

С учетом этих определений для веса, выхлопных газов и силы трения воздуха точки зрения…

e26beca5dd8e29ad41a68df8e8ffbba8.png

… результирующая сила может быть найдена с помощью:

a9df004398d767a6ebca5645b8226d84.png

fbbe441951aec356e6f82161cfc43eca.png

В этой модели я пренебрег вращением Земли, внутренними углами вращения капсулы, активными изменениями угла полета, сверхзвуковыми эффектами силы трения и многим другим. Уравнения, решаемые Кэтрин Джонсон:

6f50f23ec50560d15e374b1b33a839db.png

9c9bd76ba85adbcca58d77a8e0d85040.png

Эту систему уравнений просто решить численно, если дополнить ее начальным положением и скоростью. Для этого нужно всего лишь обратиться к функции NDSolve. Мне не придется беспокоиться об используемом методе, управлении размером шага, контроле ошибок и так далее, потому что Wolfram Language автоматически выбирает те значения, которые гарантируют значимые результаты:

6f9bbce731f9d0e90ebb38f7b8993e3c.png

b921582382f6086eeea5bf0fe0012e17.png

Здесь представлен график высоты, скорости и ускорения в зависимости от времени:

9e46364a89dc85aef9eec96909409e7b.png

d654edc42428c59892d82e829e5ec83a.png

63b9334b46937bbdfb6e01fb4a592a27.png

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

8b286d379e5a8cdd2b51255527ade5bf.png

1181fe0d1816ab6aee50f7cbc757f906.png

А вот график вертикальной и тангенциальной скоростей капсулы в процессе повторного входа:

8cb55adb5310a09ac7f15ffe25212bba.png

ec09afa4831c6e64a235b5f774b73011.png

Теперь я повторю численное решение методом Эйлера с фиксированным шагом:

5a706ec98a04ef88adb1d01e9270f323.png

b17275f331e6ca71adf4928e626fba18.png

Качественно это решение выглядит так же, как и предыдущее:

fbc797868f34dc79db35d445c05070f5.png

29c03397dccfb626ee1ea8b5e6d36ac3.png

Для используемого размера шага интегрирования по времени накопленная ошибка составляет порядка нескольких процентов. Меньшие размеры шага будут уменьшать ошибку:

a0e1feaea80e93b2c71da81461c4255e.png

19b865b6e661c0942b091e1eb9c4600e.png

Обратите внимание, что время посадки, предсказываемое методом Эйлера, отклоняется всего на 0,11% по сравнению с предыдущим временем (для сравнения: если бы я решал уравнение двумя современными методами, — скажем, «BDF» или «Adams», то ошибка была бы меньше на несколько порядков).

В процессе повторного входа генерируется большое количество тепла. Здесь нужен теплозащитный экран. На какой высоте производится наибольшее количество тепла на единицу площади Q? Не вдаваясь в подробности, я могу, чисто из соображений размерности, применить гипотезу 0b90f4c0a7bdc010226db04b5cdc89c6.png:

e8267f231d2f2120926e4e100d47f66b.png

4983260fb5ca2123ee1663958ebe7937.png

18c98f62a788be5d2465ecd88c5dc2e7.png

047b7ff0d58a88e5817593c31b13f5b3.png

Много чего интересного можно было бы вычислить (Hicks 2009), но точно так же, как фильм должен был закончиться, так и я теперь должен завершить мою статью. Надеюсь, вы простите меня за мои слова: с Wolfram Language вы можете сделать все, что захотите.

Комментарии (1)

  • 18 апреля 2017 в 14:20

    0

    Вот это я понимаю статья для Хабра!
    Большое спасибо вам за ваш труд!

© Habrahabr.ru