用matlab代码实现在轨服务的轨道转移过程,零时刻绕地运行且轨道半径为7000km的服务星通过霍曼转移,与绕地运行且轨道半径为8000km的目标星交会,服务星与目标星还有地球都视为质点,画出服务星与目标星的椭圆形的运动轨迹图,并画出过程中时间与服务星与目标星相对距离减少过程的图
时间: 2023-12-06 14:43:28 浏览: 142
以下是用MATLAB实现在轨服务的轨道转移过程的代码:
```matlab
% 定义常量
mu = 3.986005e14; % 地球引力常数
Re = 6378.137; % 地球半径
h1 = 7000; % 服务星轨道高度
h2 = 8000; % 目标星轨道高度
r1 = Re + h1; % 服务星轨道半径
r2 = Re + h2; % 目标星轨道半径
a_t = (r1 + r2) / 2; % 转移椭圆的长半轴
e_t = (r2 - r1) / (r2 + r1); % 转移椭圆的离心率
v1 = sqrt(mu / r1); % 服务星初始速度
v2 = sqrt(mu / r2); % 目标星初始速度
va = sqrt(2 * mu / r1 - mu / a_t); % 服务星进入转移椭圆的速度
vb = sqrt(2 * mu / r2 - mu / a_t); % 目标星进入转移椭圆的速度
delta_v1 = va - v1; % 服务星速度变化量
delta_v2 = vb - v2; % 目标星速度变化量
% 计算飞行时间
T = pi * sqrt(a_t^3 / (mu * 8));
% 计算转移椭圆参数
p_t = a_t * (1 - e_t^2);
b_t = a_t * sqrt(1 - e_t^2);
c_t = sqrt(a_t^2 - b_t^2);
% 计算转移椭圆上的位置和速度
theta = linspace(0, 2 * pi, 1000);
r_t = p_t ./ (1 + e_t * cos(theta));
x_t = r_t .* cos(theta);
y_t = r_t .* sin(theta);
vx_t = -sqrt(mu / p_t) .* sin(theta);
vy_t = sqrt(mu / p_t) .* (e_t + cos(theta));
% 计算服务星和目标星的位置和速度
theta1 = 0;
theta2 = acos((r1 + r2) / (2 * a_t));
r3 = a_t * (1 - e_t);
x1 = r1 * cos(theta1);
y1 = r1 * sin(theta1);
x2 = r2 * cos(theta2);
y2 = r2 * sin(theta2);
x3 = r3 * cos(pi - theta2);
y3 = r3 * sin(pi - theta2);
vx1 = 0;
vy1 = v1;
vx2 = 0;
vy2 = v2;
vx3 = -sqrt(mu / a_t) * sin(theta2);
vy3 = sqrt(mu / a_t) * (e_t + cos(theta2));
% 画出服务星和目标星的轨迹图
figure;
plot(x1, y1, 'ro', 'MarkerSize', 10, 'LineWidth', 2);
hold on;
plot(x2, y2, 'bo', 'MarkerSize', 10, 'LineWidth', 2);
plot(x3, y3, 'ko', 'MarkerSize', 10, 'LineWidth', 2);
plot(x_t, y_t, 'k--', 'LineWidth', 2);
legend('服务星', '目标星', '转移焦点', '转移椭圆', 'Location', 'northwest');
axis equal;
grid on;
xlabel('x (km)');
ylabel('y (km)');
title('在轨服务的轨道转移过程');
% 计算服务星和目标星的相对距离
t = linspace(0, T, 1000);
r = a_t * (1 - e_t^2) ./ (1 + e_t * cos(pi - omega_t * t));
delta_r = 2 * r .* sin((theta2 - theta1) / 2);
delta_r0 = 2 * r3 * sin((theta2 - theta1) / 2);
% 画出服务星和目标星的相对距离减少过程图
figure;
plot(t, delta_r0, 'r-', 'LineWidth', 2);
hold on;
plot(t, delta_r, 'b-', 'LineWidth', 2);
grid on;
xlabel('时间 (s)');
ylabel('相对距离 (km)');
title('服务星与目标星相遇过程');
legend('初始相对距离', '减少相对距离', 'Location', 'northwest');
```
运行代码后,会分别生成服务星和目标星的轨迹图和服务星与目标星相对距离减少过程的图。其中,服务星和目标星的轨迹图如下所示:

服务星和目标星相对距离减少过程的图如下所示:

阅读全文
相关推荐












