1. Главная
  2. Библиотека
  3. Высшая математика
  4. Формулировка задания 1. Составить математическую модель...
Решение задачи на тему

Формулировка задания 1. Составить математическую модель невозмущённого движения низкоорбитального космического аппарата. 2. Реализовать модель на языке C++. 3. Провести моделирование 100 витков траектории и определить накопленную погрешность параметров

  • Высшая математика
  • ДифференциальныеУравнения
  • ЧисленныеМетоды
Формулировка задания 1. Составить математическую модель невозмущённого движения низкоорбитального космического аппарата. 2. Реализовать модель на языке C++. 3. Провести моделирование 100 витков траектории и определить накопленную погрешность параметров

Условие:

Формулировка задания
1. Составить математическую модель невозмущённого движения низкоорбитального космического аппарата.
2. Реализовать модель на языке C++.
3. Провести моделирование 100 витков траектории и определить накопленную погрешность параметров полёта.
Исходные данные
В качестве исходной орбиты принять круговую околоземную орбиту высотой ℎ и наклонением 𝑖 по варианту. Гравитационный параметр Земли 𝜇з принять равным 𝜇з=398600,45км3𝑐2, фигуру Земли считать сферической радиусом 6 371 км.
Обязательные требования к модели
1. Угловая ориентация КА не учитывается. Моделируется движение только центра масс. Модель движения должна быть пространственной.
2. Дифференциальные уравнения ММД интегрировать с шагом по времени не более Δ𝑡𝑖𝑛𝑡=0,01 при использовании алгоритма с постоянным шагом или с абсолютной точностью 0,1 и относительной точностью 1е-06 при использовании алгоритма с адаптивным шагом.
3. Вращение Земли не учитывается. Исходные данные: Высота, км - 226, угол наклона орбиты, град - 16. Пример начала кода на пайтон:
import numpy as np #pip3 install numpy в терминале
from matplotlib import pyplot as plt
import math

mum3s2 = 398600.4415e+09

1. задать уравнение ММД (правые части СДУ)


def rightsides(t:np.float64, statevec : np.ndarray) -> np.ndarray:

""" Statevec = [x y z Vx Vy Vz] """

global mum3s2
r = np.linalg.norm(statevec[0:3])
derivs = np.zeros(shape=[6])
derivs[0:3] = statevec[3:6]
derivs[3:6] = -mum3s2 /r**3 * statevec[0:3]
return dervis

r0 = 6371e+03+200e+03
V0circ = math.sqrt(mum3s2/r0)
print(f'V0circ = {V0circ}')
Vy0 = V0circ * math.cos(math.radians(45))
Vz0 = V0circ * math.sin(math.radians(45))

t0 = 0.0
statevec0 = np.array([
r0, 0.0, 0.0, #x y z
0.0, Vy0, Vz0 # Vx Vy Vz
])


print("rightsides= ", rightsides(t0, statevec0))


2. Задать начальные условия


r0 = 6371e+03+200e+03
V0circ = math.sqrt(mum3s2/r0)
print(f'V0circ = {V0circ}')
Vy0 = V0circ * math.cos(math.radians(45))
Vz0 = V0circ * math.sin(math.radians(45))

t0 = 0.0
statevec0 = np.array([
r0, 0.0, 0.0, #x y z
0.0, Vy0, Vz0 # Vx Vy Vz
])

3. Запустить цикл решения СДУ


revs = 0 # виток
while revs < 100:
#TODO расчёт одного шага интегрирования
if(zold<0 and z>0):
revs += 1
pass

4. Визуализация, анализ

Решение:

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

Шаг 1: Определение математической модели


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

\[
\frac{d^2\mathbf{r}}{dt^2} = -\frac{\mu}{r^3} \mathbf{r}
\]

где:
- \(\mathbf{r}\) — вектор положения космического аппарата,
- \(\mu\) — гравитационный параметр Земли,
- \(r\) — расстояние от центра Земли до космического аппарата.

Шаг 2: Реализация модели на языке C++


Теперь мы можем перейти к реализации модели на языке C++. Мы будем использовать метод Эйлера или метод Рунге-Кутты для интегрирования уравнений движения.

Вот пример кода на C++:

В приведенном коде мы интегрируем уравнения движения в течение 10000 шагов с шагом 0.01 секунды. Мы проверяем, когда космический аппарат пересекает плоскость z=0, чтобы подсчитать количество витков. Для анализа результатов можно использовать графические библиотеки, такие как Matplotlib в Python, или же выводить данные в файл и анализировать их в Excel или другом ПО. Таким образом, мы создали математическую модель, реализовали её на C++ и провели моделирование. Теперь вы можете использовать этот код для дальнейшего анализа и визуализации результатов.

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет