NumPy. Векторы и матрицы

Движение наноспутника относительно станции определяется в орбитальной системе координат, движущейся вместе с орбитальной станцией по круговой орбите. Начало координат расположено в центре масс станции. Ось \(x_o\) орбитальной подвижной системы координат направлена от Земли вдоль радиус вектора станции. Ось \(y_o\) лежит в плоскости орбиты и направлена в сторону орбитальной скорости станции. Ось \(z_o\) дополняет систему координат до правой.

Image

При отделении от станции с относительной скоростью \(V_0 = [\dot{x}_0, \dot{y}_0, \dot{z}_0]\) закон движения наноспутника в координатной форме имеет вид: \[\begin{aligned} & x(t) = \frac{1}{n} \left[ \dot{x}_0 \sin n t + 2 \dot{y}_0 (1-\cos nt) \right] \\ & y(t) = \frac{1}{n} \left[ 2 \dot{x}_0 ( \cos nt - 1) + \dot{y}_0 (4\sin nt - 3nt) \right] \\ & z(t) = \frac{\dot{z}_0}{n} \sin nt \end{aligned}\]

где \(n = 2\pi/T\) – угловая скорость орбитального движения станции, \(T\) – орбитальный период станции.

Создать функцию определения положения спутника относительно орбитальной подвижной системы координат, связанной со станцией, в моменты времени, заданные массивом t_array:

def rho(t_array):
    ...
    ...
    ...
    return res

Функция rho должна возвращать массив (numpy.array) \(n \times 4\), где n - количество элементов в массиве моментов времени t_array. Первый столбец результата – время (копия массива t_array), второй, третий и четвертый столбцы – значения координат \(x, y, z\) наноспутника относительно станции.

  • Постройте траекторию движения спутника на интервале трёх орбитальных периодов станции, движущейся по круговой орбите высотой 400 км.
  • Постройте график изменения расстояния между спутником и станцией на интервале трёх орбитальных периодов при начальной скорости отделения наноспутника
\[\dot{x}_0 = -0.5 м/с, \quad \dot{y}_0 = 0.05 м/с, \quad \dot{z}_0 = 0.0\]
  • Постройте график изменения расстояния между наноспутником и станцией.
  • Определите расстояние и время минимального сближение наноспутника со станцией после его отделения (локальный экстремум - минимум) на интервале 3 орбитальных периодов. Алгоритм определения минимального расстояния должен работать для любого массива расстояний. В случае отсутствия локального минимума, если функция изменения расстояния монотонно возрастает, алгоритм должен возвращать numpy.Inf (бесконечность). Проверить работу алгоритма для различных начальных условий движения наноспутника. Оформите алгоритм в виде функции
def min_dist(t_d_array):
    # t_d_array - массив n*2
    # время, расстояние 
    ...
    ...
    ...
    return (t_min,d_min) 

© 2023. All rights reserved.

Powered by Hydejack v9.1.6