垂直发射条件下,按照飞行程序,完成基于飞行程序的弹道设计; 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 09:47:35 浏览: 66
好的,以下是对代码的详细注释:
```
% 垂直发射条件下,按照飞行程序,完成基于飞行程序的弹道设计
% 定义起飞质量、平均推力、发动机工作时间、秒耗量、引力常数等参数
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)
EXP=exp(0.2*(3-t));
alpha_=10/180*pi;
t1=3;
t2=19;
alpha(t)=4*alpha_*EXP*(EXP-1); % alpha(t) 为 alpha_ * (4*EXP*(EXP-1))
theta=atan(vy/vx); % theta 为 vy/vx 的反正切值
% 绘制弹道曲线及相关参数随时间的变化
% 可以通过 Matlab 的 plot 函数绘制弹道曲线
% 也可以通过 print 函数输出相关参数随时间的变化
```
相关问题
m0=2300;%起飞质量 P=130000;%平均推力Tk1=20; Tk1=20;%发动机工作时间detm=80; detm=80;%秒耗量 g=9.80665;%引力常数 fai=pi/2 0<=t<=t1;%程序角 fai=alpha+theta t1<t<=t2;%程序角 fai=fai(t2) t2<t<=tk;%程序角 alpha(t)=-4*alpha2 垂直发射条件下,按照飞行程序,完成基于飞行程序的弹道设计;添加注释,MATLAB
代码如下:
```matlab
%定义初始参数
m0 = 2300; %起飞质量
P = 130000; %平均推力
Tk1 = 20;
detm = 80; %秒耗量
g = 9.80665; %引力常数
fai = pi/2; %程序角
%定义时间段
t1 = 10; %第一阶段时间
t2 = 20; %第二阶段时间
tk = 30; %总时间
%第一阶段程序角
alpha2 = 0.5; %角度常数
alpha = zeros(1, t1+1); %初始化alpha数组
for i = 1:t1+1
alpha(i) = -4 * alpha2;
end
%第二阶段程序角
theta = pi/6; %角度常数
fai_t2 = pi/4; %第二阶段程序角
alpha_t2 = zeros(1, t2-t1); %初始化alpha_t2数组
for i = 1:t2-t1
alpha_t2(i) = fai_t2 - theta;
end
%第三阶段程序角
alpha_tk = fai_t2; %第三阶段程序角
%计算弹道
v = zeros(1, tk+1); %初始化速度数组
h = zeros(1, tk+1); %初始化高度数组
m = zeros(1, tk+1); %初始化质量数组
m(1) = m0; %初始质量
for i = 1:tk
if i <= t1+1 %第一阶段
f = P - Tk1 * detm * (i-1);
alpha_i = alpha(i);
elseif i <= t2 %第二阶段
f = P - Tk1 * detm * t1;
alpha_i = alpha_t2(i-t1);
else %第三阶段
f = 0;
alpha_i = alpha_tk;
end
m(i+1) = m(i) - detm;
v(i+1) = v(i) + (f/m(i) - g * sin(alpha_i)) * 1;
h(i+1) = h(i) + v(i+1) * 1;
end
%绘制弹道图像
t = 0:tk;
plot(t, h);
xlabel('Time(s)');
ylabel('Altitude(m)');
title('Trajectory Design Based on Flight Program');
```
本程序是基于垂直发射条件下的飞行程序,根据时间段的不同,计算出不同的推力和程序角,从而得出弹道的高度变化。最后使用MATLAB绘制出弹道图像。
垂直发射条件下,按照飞行程序,完成基于飞行程序的弹道设计: 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语言,对代码详细注释
好的,以下是对 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 的具体值,上面的计算仅供参考,具体数值需要根据题目给出的条件进行计算
阅读全文