Чтобы получить более точную оценку излучения в этом вопросе , я пытаюсь аппроксимировать и/или определить высоту спутника как функцию времени. Спутник имеет апогей 32190 км над землей и перигей 320 км над землей.
Для простоты я предполагаю следующие свойства:
Если вы видите какие-либо ошибки, пожалуйста, дайте мне знать :)
Подходы:
Резюме результатов попытки:
2. Выработано в ответах: Орбитальная динамика, часть 18 - лекция «Формула истинной аномалии» объясняет, как можно найти эксцентрическую аномалию с помощью итеративной попытки. Мне было любопытно, как это связано с дифференциальной природой уравнения.
Это решение выработано в ответах.https://www.thanassis.space/gravity.html
http://en.homasim.com/orbitsimulation.php
https://nl.mathworks.com/matlabcentral/fileexchange/57132-satellite-orbit-transfer-simulation
Первые 2 страницы этих моделей:
http://www.winsite.com/satellite/satellite+simulator+orbit/
https://github.com/pytroll/pyorbital
И очень многообещающе, но не могу скачать:
https://nl.mathworks.com/matlabcentral/fileexchange/57132-satellite-orbit-transfer-simulation
4. Разобрался в ответах: Сработало, правда полночь привела к багу, поэтому перезапустил и ждал половину витка (от апогея до перигея или наоборот), т.к. симметрия дает всю орбиту. Решение выработано в ответах.
Я не уверен, что это уместно, но спасибо всем за критические и поддерживающие отзывы! :)
Подход 4 (Успешный подход)
На данный момент времени я не могу дальше использовать аналитический подход, поэтому я нашел спутник (обломки) через http://stuffin.space/?intldes=2012-008N , который имел орбиту, похожую на ту, которую я я пытаюсь определить, написал небольшой сценарий Excel, который сканирует данные с http://www.satview.org/forec.php?sat_id=43273U каждую минуту, чтобы завтра я мог отсортировать данные и получить приблизительное значение высоты. как функция времени.
Сценарий:
Sub absorb_data_from_vdb()
Application.Wait (Now + TimeValue("0:00:10")) 'H:MM:SS
'source: https://plus.google.com/105053415343007690451/posts/1pjy2PFVwN5
Dim ie As Object
Dim objelement As Object
Dim c As Integer
Dim i
Dim strCaptcha As String
Dim strImageSource As String
Dim img As HTMLhtmlElement 'tools =>reference Microsoft Html Object Library
Set ie = CreateObject("InternetExplorer.Application")
Dim click_changed_additions As Integer
Dim electric_bullet_count As Integer
Dim gas_bullet_count As Integer
With ie
.Visible = True
.navigate "http://www.satview.org/forec.php?sat_id=43273U"
'wait until first page loads
Do Until .readyState = 4
DoEvents
Loop
Application.Wait (Now + TimeValue("0:00:02")) 'H:MM:SS
whole_day = 2
Do While whole_day < 10
.Refresh
Do Until .readyState = 4
DoEvents
Loop
Application.Wait (Now + TimeValue("0:00:02")) 'H:MM:SS
Set elements0e = ie.document.getElementsByClassName("link_mudar") 'Get innertext to get value
If elements0e.Length <> 0 Then
'MsgBox (elements0e.item(2).innerText)
elements0e.item(2).Focus
elements0e.item(2).Click
'MsgBox ("clicked link")
End If
If ThisWorkbook.Worksheets("Sheet1").Range("A1").Value - 2 < 2 Then
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = 2
End If
For Iteration = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value - 2 To ThisWorkbook.Worksheets("Sheet1").Range("A1").Value - 2 + 100
Set elements0e = ie.document.getElementsByClassName("texto_track2") 'Get innertext to get value
If elements0e.Length <> 0 Then
ThisWorkbook.Worksheets("Sheet1").Range("A" & 2 + Iteration).Value = elements0e.item(0).innerHTML
ThisWorkbook.Worksheets("Sheet1").Range("F" & 2 + Iteration).Value = Now()
'MsgBox ("found from")
End If
Next Iteration
For Iteration = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value - 2 To ThisWorkbook.Worksheets("Sheet1").Range("A1").Value - 2 + 100
Set elements0e = ie.document.getElementsByClassName("texto_track2") 'Get innertext to get value
If elements0e.Length <> 0 Then
ThisWorkbook.Worksheets("Sheet1").Range("G" & 2 + Iteration).Value = elements0e.item(1).innerHTML
'MsgBox ("found from")
End If
If ThisWorkbook.Worksheets("Sheet1").Range("A1").Value < Iteration + 2 Then
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Iteration + 2
End If
Next Iteration
proceed_boolean = False
Do While proceed_boolean = False
If Left(Right(Now(), 5), 2) <> Left(Right(ThisWorkbook.Worksheets("Sheet1").Range("F" & 2 + Iteration - 1).Value, 5), 2) Then
'MsgBox ("A minute has passed")
'MsgBox (Left(Right(Now(), 5), 2))
'MsgBox (Left(Right(ThisWorkbook.Worksheets("Sheet1").Range("F" & 2 + Iteration - 1).Value, 5), 2))
proceed_boolean = True
Application.Wait Now + #12:00:02 AM# 'This waits for 5 seconds
End If
Loop
Loop
End With
MsgBox ("Done")
End Sub
После двух прогонов для эквивалентной орбиты строится следующий график:
Визуальный осмотр дает четкую функцию орбиты после удаления выбросов. Выполняются следующие проверки работоспособности:
Все 5 проверок завершены и успешны, что означает, что в этом подходе не было обнаружено ошибок.
Поскольку орбита имеет ось симметрии, требуется только половина профиля скорости. Как видно, были сделаны две записи, правая запись содержит полную полусимметричную орбиту, поэтому после непродолжительной обработки данных она дает полную функцию высоты орбиты. Это данные об орбите, которые будут представлять высоту орбиты как функцию времени для целей оценки излучения.
Затем данные были отфильтрованы вручную (помечая цветом величину различий между точками данных о высоте и удаляя самые большие различия, пока я не был удовлетворен различиями). Получилось:
После фильтрации я использовал следующее программное обеспечение/таблицу Excel, чтобы подогнать метод наименьших квадратов: http://www.jkp-ads.com/articles/leastsquares.asp
Для приближения к функции** использовалась следующая полиномиальная функция:
где x представляет время в минутах, а y вычисляется и сравнивается с . Разница между двумя y была возведена в квадрат и суммирована для всех точек данных (время и высота), считанных первым Excel). Граничные условия (bc) были первоначально определены для эволюционного алгоритма путем выбора максимального значения, для которого наибольшая высота может быть получена только с помощью этого 1 коэффициента, умноженного на его x, а затем умножения этого значения на 10. Это было сделано для обеспечения решение было доступно, но ограничивало пространство вариантов.
Получилась следующая функция**:
вычисляется в
Сценарий Excel можно дополнительно улучшить, добавив обработчик ошибок, закрывающий ie
браузер и перезапускающий сценарий, чтобы обеспечить более высокий уровень автоматизации с риском большего количества ошибок данных.
Обсуждение ошибки: как было указано в комментариях, полиномиальная подгонка 4-й степени ограничит точность подгонки орбиты. (Это видно, если вы посмотрите на начало фактического измерения орбиты, оно изгибается в направлении/около -t при движении вниз, тогда как подгоночный полином имеет только 1 радиус изгиба (в направлении/вокруг +t). Это сделало подгонку немного сложно, поскольку потребовалось несколько итераций, прежде чем была найдена подходящая подгонка.Однако эта степень точности была сочтена достаточной с помощью визуального осмотра.Процедура может быть улучшена путем вычисления фактического квадрата ошибки.
** Я думаю, что лучшим подходом действительно было бы аппроксимировать высоту эллиптической орбиты как функцию времени синусоидой.
Подход 2 (Успешный подход)
Орбита описана на следующем рисунке:
После долгого, утомительного, но замечательного вывода следующие 3 уравнения применимы к эллиптической орбите:
с
= Средняя аномалия (= Угол между зеленой линией, центром эллипса, пунктирной линией между центром эллипса и перигеем)
= Эксцентрическая аномалия (= Угол между красной линией, центром эллипса, линией между центром эллипса и перигеем)
= Истинная аномалия (= Угол между черной линией, центром эллипса, линией между центром эллипса и перигеем)
= большая полуось
= высота спутника
= эксцентриситет
Аномалии визуализируются на следующей анимации орбиты. Обратите внимание, что, как было указано в комментариях, M(t) постоянна и не равна E(t):
Кроме того, необходимо вычислить орбитальный период , большая полуось и эксцентриситет орбиты однажды.
Учитывая, что высота перигея = 320 км, а высота апогея 32190 км, большая полуось находится с помощью :
Теперь эксцентриситет находится с помощью :
Орбитальный период находится с :
Таким образом, чтобы определить орбиту в момент времени t (например, 0,5 ), для каждой точки t, в которой мы хотим узнать высоту спутника, выполняются следующие шаги вычисления:
Вычисляется средняя аномалия M(t).
Затем М заменяется на:
Остается одно неизвестное: эксцентрическая аномалия. . Это поиск с помощью итеративного процесса (просто предположим, что сначала E, а затем посмотрим, что вы вычислите для , проверьте, равно ли оно фактическому вычисляемому (вероятно, нет), поэтому уменьшите или увеличьте свою оценку для , и посмотрите, не отклонитесь ли вы дальше от , или приближайтесь к нему, пока не будете удовлетворены степенью точности , (От чего зависит степень точности ).
Как только E(t) определено с достаточной степенью точности, оно подставляется в:
найти .
Это высота орбиты в момент времени t = 0,5 с. Процедура повторяется еще раз t путем повторного вычисления $M(t).
Помимо высоты, можно также захотеть узнать местоположение спутника относительно Земли, зная истинную аномалию. Чтобы определить истинную аномалию в момент времени t, подставляют найденное итеративно в следующей формуле:
Это документация по процедуре, описанной с 28:55 по 30:16:
.(Я не писал скрипт для этого {итеративного цикла определения/угадывания } (пока), поэтому он не полуавтоматический, в отличие от ответа подхода 4.)
зефир0110
в
пользователь7073
[1]
без ссылки.в
Эрин Энн
в
ооо