垂直发射条件下,按照飞行程序,完成基于飞行程序的弹道设计: m0=2300;%起飞质量 P=130000;%平均推力 Tk1=20;%发动机工作时间 detm=80;%秒耗量 g=9.80665;%引力常数 程序角 fai(t)=pi/2 ,0<=t<=t1时;fai(t)=alpha(t)+theta, t1<t<=t2时;fai(t)=fai(t2), t1<t<=t2时; EXP=exp(0.2*(3-t)); alpha(t)=4*alpha_*EXP*(EXP-1); theta=atan(vy/vx); alpha_=10/180*pi,t1=3,t2=19; 绘制弹道曲线及相关参数随时间的变化; matlab语言,对代码详细注释
时间: 2024-03-14 12:47:36 浏览: 130
垂直发射弹道仿真程序(采用四元数法)
好的,以下是对 Matlab 代码的详细注释:
```matlab
% 垂直发射条件下,按照飞行程序,完成基于飞行程序的弹道设计
% 定义起飞质量、平均推力、发动机工作时间、秒耗量、引力常数等参数
m0=2300;
P=130000;
Tk1=20;
detm=80;
g=9.80665;
% 定义程序角 fai(t) 的三个阶段及相关参数
% 当 0 <= t <= t1 时,fai(t) 固定为 pi/2
% 当 t1 < t <= t2 时,fai(t) 为 alpha(t) + theta
% 当 t2 < t 时,fai(t) 固定为 fai(t2)
alpha_=10/180*pi;
t1=3;
t2=19;
syms t; % 定义符号变量 t,用于后面的函数计算
EXP=exp(0.2*(3-t));
alpha(t)=4*alpha_*EXP*(EXP-1); % alpha(t) 为 alpha_ * (4*EXP*(EXP-1))
theta=atan(vy/vx); % theta 为 vy/vx 的反正切值
% 绘制弹道曲线及相关参数随时间的变化
% 定义时间范围 t 的取值
t_min = 0;
t_max = 25;
t_step = 0.1;
t_vec = t_min:t_step:t_max;
% 定义弹道曲线的计算函数,其中 x(t) 为水平位移,y(t) 为高度
% 根据题意,垂直发射条件下,水平速度恒为 0
x = @(t) 0;
y = @(t) (P*Tk1/g)*log(m0/(m0-detm*t)) - 0.5*g*t.^2;
% 计算弹道曲线
x_vec = x(t_vec);
y_vec = y(t_vec);
% 绘制弹道曲线
plot(x_vec, y_vec);
xlabel('x');
ylabel('y');
title('弹道曲线');
% 输出相关参数随时间的变化,包括程序角 fai(t)、水平速度 vx、竖直速度 vy、高度 y、质量 m
fai_vec = zeros(size(t_vec)); % 初始化程序角 fai(t) 的取值为 0
vx_vec = zeros(size(t_vec)); % 初始化水平速度 vx 的取值为 0
vy_vec = zeros(size(t_vec)); % 初始化竖直速度 vy 的取值为 0
y_height_vec = y_vec; % 高度 y 的取值已经计算过了
m_vec = m0 - detm*t_vec; % 质量 m 的取值可以根据题意计算得到
for i = 1:length(t_vec)
% 计算程序角 fai(t) 的取值
if t_vec(i) <= t1
fai_vec(i) = pi/2;
elseif t_vec(i) > t1 && t_vec(i) <= t2
fai_vec(i) = double(subs(alpha, t, t_vec(i))) + theta;
else
fai_vec(i) = fai_vec(end);
end
% 计算水平速度 vx 的取值,恒为 0
vx_vec(i) = 0;
% 计算竖直速度 vy 的取值,根据题意可以得到
vy_vec(i) = -P*Tk1/g*(1/(m0-detm*t_vec(i)));
end
% 输出相关参数随时间的变化
figure; % 新建一个图形窗口
subplot(2,2,1);
plot(t_vec, fai_vec);
xlabel('时间 t');
ylabel('程序角 fai(t)');
title('程序角 fai(t) 随时间的变化');
subplot(2,2,2);
plot(t_vec, vx_vec);
xlabel('时间 t');
ylabel('水平速度 vx');
title('水平速度 vx 随时间的变化');
subplot(2,2,3);
plot(t_vec, vy_vec);
xlabel('时间 t');
ylabel('竖直速度 vy');
title('竖直速度 vy 随时间的变化');
subplot(2,2,4);
plot(t_vec, y_height_vec);
xlabel('时间 t');
ylabel('高度 y');
title('高度 y 随时间的变化');
figure; % 新建一个图形窗口
plot(t_vec, m_vec);
xlabel('时间 t');
ylabel('质量 m');
title('质量 m 随时间的变化');
% 注意:由于题目未给出 vy 和 vx 的具体值,上面的计算仅供参考,具体数值需要根据题目给出的条件进行计算
阅读全文