Lab1_Filipe_PEREIRA.rar

  • wetdogface
    了解作者
  • matlab
    开发工具
  • 16KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-01-09 09:38
    上传日期
Logitudinal dynamics and control
Lab1_Filipe_PEREIRA.rar
  • longitudinal_dynamics_trim.asv
    1KB
  • longitudinal_dynamics_Doublet.m
    1.3KB
  • longitudinal_dynamics.m
    1.2KB
  • longitudinal_dynamics_comp.m
    1.4KB
  • longitudinal_aerodynamics.m
    869B
  • longitudinal_simulation_CG.m
    1.1KB
  • longitudinal_linear.asv
    126B
  • longitudinal_dynamics_trim.m
    1.1KB
  • simulation_linear.m
    10.5KB
  • longitudinal_dynamics_trim_CG.asv
    1.3KB
  • simulation_root_locus.asv
    4.8KB
  • longitudinal_dynamics_trim_CG.m
    1.4KB
  • simulation_linear.asv
    10.5KB
  • longitudinal_dynamics_Doublet.asv
    1.4KB
  • longitudinal_linear_degrau.m
    253B
  • longitudinal_simulation_CG.asv
    1.1KB
  • longitudinal_simulation.m
    7.1KB
  • longitudinal_dynamics_comp.asv
    1.4KB
  • longitudinal_linear.m
    136B
  • longitudinal_dynamics_degrau.m
    1.2KB
  • longitudinal_linear_Doublet.m
    361B
  • longitudinal_simulation.asv
    7.1KB
  • simulation_root_locus.m
    4.6KB
  • longitudinal_dynamics.asv
    1.2KB
内容介绍
function simulation_linear clc clear all load ('DataA300_A3') %equilíbrio trim_var_ini = [0*pi/180;85000;0]; fsolveoptions = optimset('Display', 'Iter', 'TolFun',1e-15); trim_var = fsolve(@longitudinal_dynamics_trim,trim_var_ini,... fsolveoptions, par_trim, par_gen, par_aero, par_prop); %-------------------------------------------------------------------% %Exercício 1 % Variáveis de estado ini_V = par_trim.TAS; %TAS ini_gamma = par_trim.gamma; % ângulo de trajetória ini_q = 0; %pitch rate ini_alpha = trim_var(1); % ângulo de ataque ini_H = par_trim.H; % Altitude ini_X = [ini_V;ini_gamma; ini_q; ini_alpha; ini_H]; %chute inicial X_eq = ini_X; % guardar o equilíbrio para a condição A3. % Variáveis de controle eq_u = [trim_var(2); trim_var(3)]; U_eq = eq_u; % guardar o equilíbrio para a condição A3. %Linearização incr = 1e-5; % Matriz A pert = 0*ini_X; for i=1:5 pert(i) = incr; X_pert = ini_X + pert; der_plus = longitudinal_dynamics(0,X_pert, eq_u,par_gen, par_aero, par_prop); pert(i) = -incr; X_pert = ini_X + pert; der_minus = longitudinal_dynamics(0,X_pert, eq_u, par_gen, par_aero, par_prop); A(:,i) = (der_plus-der_minus)/(2*incr); pert(i)=0; end %Matriz B pert = 0*eq_u; for i=1:2 pert(i) = incr; U_pert = eq_u + pert; der_plus = longitudinal_dynamics(0,ini_X, U_pert,par_gen, par_aero, par_prop); pert(i) = -incr; U_pert = eq_u + pert; der_minus = longitudinal_dynamics(0,ini_X, U_pert,par_gen, par_aero, par_prop); B(:,i) = (der_plus-der_minus)/(2*incr); pert(i)=0; end %Comparação das respostas não-linear e linearizada dos 5 estados %Exercício 1a(i) optionsode = []; %não-linear ini_X(1)= ini_X(1)+10; [T,X] = ode45(@(t,x)longitudinal_dynamics(t,x,eq_u,par_gen,... par_aero, par_prop),[0 200],ini_X); subplot(5,1,1) hold on plot(T,X(:,1)),xlabel('t(s)'), ylabel('V (m/s)'), TITLE ('Simulação perturbação na velocidade'); subplot(5,1,2); hold on plot(T,X(:,2)*180/pi),xlabel('t(s)'), ylabel('\gamma (graus)'); subplot(5,1,3); hold on plot(T,X(:,3)),xlabel('t(s)'), ylabel('q (rad/s)'); subplot(5,1,4); hold on plot(T,X(:,4)*180/pi),xlabel('t(s)'), ylabel('\alpha (graus)'); subplot(5,1,5); hold on plot(T,X(:,5)),xlabel('t(s)'), ylabel('Altitude (m)'); %linear delta_x = [10;0;0;0;0]; delta_u = [0;0]; ini_X(1) = ini_X(1)-10; [T_lin,X_lin] = ode45(@longitudinal_linear, [0,200],delta_x,[],delta_u,A,B); subplot(5,1,1) plot(T_lin,X_lin(:,1)+ini_X(1), 'r'),xlabel('t(s)'), ylabel('V (m/s)'); subplot(5,1,2); plot(T_lin,X_lin(:,2)*180/pi, 'r'),xlabel('t(s)'), ylabel('\gamma (graus)'); subplot(5,1,3); plot(T_lin,X_lin(:,3), 'r'),xlabel('t(s)'), ylabel('q (rad/s)'); subplot(5,1,4); plot(T_lin,X_lin(:,4)*180/pi, 'r'),xlabel('t(s)'), ylabel('\alpha (graus)'); subplot(5,1,5); plot(T_lin,X_lin(:,5)+ini_X(5), 'r'),xlabel('t(s)'), ylabel('Altitude (m)'); legend ('Não linear','Linear') %------------------------------------------------------------------------% % Exercício 1a(ii) ini_X = X_eq; % Comparação das respostas não-linear e linearizada dos 5 estados optionsode = []; %não-linear ini_X(3)=2*pi/180; [T,X] = ode45(@(t,x)longitudinal_dynamics(t,x,eq_u,par_gen,... par_aero, par_prop),[0 10],ini_X); figure subplot(5,1,1) hold on plot(T,X(:,1)),xlabel('t(s)'), ylabel('V (m/s)'), TITLE ('Simulação perturbação na velocidade de arfagem'); subplot(5,1,2); hold on plot(T,X(:,2)*180/pi),xlabel('t(s)'), ylabel('\gamma (graus)'); subplot(5,1,3); hold on plot(T,X(:,3)),xlabel('t(s)'), ylabel('q (rad/s)'); subplot(5,1,4); hold on plot(T,X(:,4)*180/pi),xlabel('t(s)'), ylabel('\alpha (graus)'); subplot(5,1,5); hold on plot(T,X(:,5)),xlabel('t(s)'), ylabel('Altitude (m)'); %linear delta_x = [0;0;2*pi/180;0;0]; delta_u = [0;0]; ini_X = X_eq; [T_lin,X_lin] = ode45(@longitudinal_linear, [0,10],delta_x,[],delta_u,A,B); subplot(5,1,1) plot(T_lin,X_lin(:,1)+ini_X(1), 'r'),xlabel('t(s)'), ylabel('V (m/s)'); subplot(5,1,2); plot(T_lin,X_lin(:,2)*180/pi+ini_X(2)*180/pi, 'r'),xlabel('t(s)'), ylabel('\gamma (graus)'); subplot(5,1,3); plot(T_lin,X_lin(:,3)+ini_X(3), 'r'),xlabel('t(s)'), ylabel('q (rad/s)'); subplot(5,1,4); plot(T_lin,X_lin(:,4)*180/pi+ini_X(4)*180/pi, 'r'),xlabel('t(s)'), ylabel('\alpha (graus)'); subplot(5,1,5); plot(T_lin,X_lin(:,5)+ini_X(5), 'r'),xlabel('t(s)'), ylabel('Altitude (m)'); legend ('Não linear','Linear') %------------------------------------------------------------------------% % Exercício 1a(iii) % Comparação das respostas não-linear e linearizada dos 5 estados optionsode = []; %não-linear [T,X] = ode45(@(t,x)longitudinal_dynamics_Doublet(t,x,eq_u,par_gen,... par_aero, par_prop),[0 15],ini_X); figure subplot(5,1,1) hold on plot(T,X(:,1)),xlabel('t(s)'), ylabel('V (m/s)'), TITLE ('Doublet de amplitude'); subplot(5,1,2); hold on plot(T,X(:,2)*180/pi),xlabel('t(s)'), ylabel('\gamma (graus)'); subplot(5,1,3); hold on plot(T,X(:,3)),xlabel('t(s)'), ylabel('q (rad/s)'); subplot(5,1,4); hold on plot(T,X(:,4)*180/pi),xlabel('t(s)'), ylabel('\alpha (graus)'); subplot(5,1,5); hold on plot(T,X(:,5)),xlabel('t(s)'), ylabel('Altitude (m)'); %linear delta_x = [0;0;0;0;0]; delta_u = [0;0]; [T_lin,X_lin] = ode45(@longitudinal_linear_Doublet, [0,15],delta_x,[],delta_u,A,B); subplot(5,1,1) plot(T_lin,X_lin(:,1)+ini_X(1), 'r'),xlabel('t(s)'), ylabel('V (m/s)'); subplot(5,1,2); plot(T_lin,X_lin(:,2)*180/pi+ini_X(2)*180/pi, 'r'),xlabel('t(s)'), ylabel('\gamma (graus)'); subplot(5,1,3); plot(T_lin,X_lin(:,3)+ini_X(3), 'r'),xlabel('t(s)'), ylabel('q (rad/s)'); subplot(5,1,4); plot(T_lin,X_lin(:,4)*180/pi+ini_X(4)*180/pi, 'r'),xlabel('t(s)'), ylabel('\alpha (graus)'); subplot(5,1,5); plot(T_lin,X_lin(:,5)+ini_X(5), 'r'),xlabel('t(s)'), ylabel('Altitude (m)'); legend ('Não linear','Linear') %------------------------------------------------------------------------% % Exercício 1a(iv) % Comparação das respostas não-linear e linearizada dos 5 estados ini_X = X_eq; % guardar o equilíbrio para a condição A3. eq_u = U_eq; optionsode = []; %não-linear [T,X] = ode45(@(t,x)longitudinal_dynamics_degrau(t,x,eq_u,par_gen,... par_aero, par_prop),[0 10],ini_X); figure subplot(5,1,1) hold on plot(T,X(:,1)),xlabel('t(s)'), ylabel('V (m/s)'), TITLE ('Entrada degrau no profundor'); subplot(5,1,2); hold on plot(T,X(:,2)*180/pi),xlabel('t(s)'), ylabel('\gamma (graus)'); subplot(5,1,3); hold on plot(T,X(:,3)),xlabel('t(s)'), ylabel('q (rad/s)'); subplot(5,1,4); hold on plot(T,X(:,4)*180/pi),xlabel('t(s)'), ylabel('\alpha (graus)'); subplot(5,1,5); hold on plot(T,X(:,5)),xlabel('t(s)'), ylabel('Altitude (m)'); %linear delta_x = [0;0;0;0;0]; delta_u = [0;0]; [T_lin,X_lin] = ode45(@longitudinal_linear_degrau, [0,10],delta_x,[],delta_u,A,B); subplot(5,1,1) plot(T_lin,X_lin(:,1)+ini_X(1), 'r'),xlabel('t(s)'), ylabel('V (m/s)'); subplot(5,1,2); plot(T_lin,X_lin(:,2)*180/pi+ini_X(2)*180/pi, 'r'),xlabel('t(s)'), ylabel('\gamma (graus)'); subplot(5,1,3); plot(T_lin,X_lin(:,3)+ini_X(3), 'r'),xlabel('t(s)'), ylabel('q (rad/s)'); subplot(5,1,4); plot(T_lin,X_lin(:,4)*180/pi+ini_X(4)*180/pi, 'r'),xlabel('t(s)'), ylabel('\alpha (graus)'); subplot(5,1,5); plot(T_lin,X_lin(:,5)+ini_X(5), 'r'),xlabel('t(s)'), ylabel('Altitude (m)'); legend ('Não linear','Linear') %-------------------------------------------------------------------------% %Exercício 1b ini_X = X_eq; eq_u = U_eq; % Comparação das respostas não-linear e linearizada dos 5 estados optionsode = []; %não-linear ini_X(3)=2*pi/180; %velocidade de arfagem inicial [T,X] = ode45(@(t,x)longitudinal_dynamics(t,x,eq_u,par_gen,... par_aero, par_prop),[0 10],ini_X); figure subplot(2,1,1); hold on plot(T,X(:,3)),xlabel('t(s)'), yl
评论
    相关推荐