%   Script OPTFLUG.M zur Herstellung von Bildern
%
%   Optimalreglerentwurf für die Rollbewegung eines
%   Flugzeugs
%
% verwendet EPSBILD.M
%
% J. Lunze
% 14.3.1996
% für 3. Auflage: 19.4.2004
% für 5. Auflage: 18.10.2007
% für 6. Auflage: 5.1.2010
% für 7. Auflage: 31.3.2012
% für 8. Auflage: 3.4.2014
% für 10. Auflage: 9.9.2019
%
%
clear
close all

%%  Optimalreglerentwurf zur Stabilisierung der Rollbewegung eine Flugzeugs
%
%
figure(1);
A=[0 1;
   0 0];
b=[0;
   1];
c=[2 0];
d=0;
n=2;
x0=[1; 0];
Q=eye(n, n);
R=1;
for q=[0.1, 1, 10, 100, 1000]
  Qn= Q*q;
  k=lqr(A, b, Qn, R);
  Ag=A-b*k;
  subplot(4,1,[1,2]);
  Regelkreis=ss(Ag, b, c, d);
  [Y, T]=initial(Regelkreis, x0);
  plot(T, Y, 'b', [-1 0 0],[0 0 Y(1,1)], 'b');
  hold on;
  subplot(4,1,[3,4]);
  Stellgroesse=ss(Ag, b, -k, d);
  U=initial(Stellgroesse, x0, T);
  plot(T, U, 'b', [-1 0 0],[0 0 U(1,1)], 'b');
  hold on;
end;
subplot(4,1,[1,2]);
plot([0 5],[0 0],'k:');
latextext(2, 1.7, '$$q=0,\!1$$');
%text(1.8, 1, '1');
%text(1.2, 1, '10');
latextext(0.3, 0.8, '1000');
axis([-0.3 3 -1 2.2]);
yticks([-1 0 1 2 3]);
latexylabel('$$y$$');
rotateY;
xleer;
latextitle('Eigenbewegung des geregelten Flugzeugs f\"ur Wichtungen $$Q=qI, q$$=0,1, 1, 10, 100, 1000');
hold off;
subplot(4,1,[3,4]);
axis([-0.3 3 -10 2]);
xticks([0 1 2 3]);
yticks([-10 -5 0]);
latexylabel('$$u$$');
rotateY;
latexxlabel('$$t$$ in s');
hold off;


%%
%
%   Ortskurve der offenen Kette
%
%
figure(2);
subplot(3,3,[1, 2, 4, 5]);
Q=10*eye(n,n);
R=1;
k=lqr(A, b, Q, R);
offeneKette=ss(A-b*k, b, k, d);
[Real, Imag]=nyquist(offeneKette);
plot(Real(:), Imag(:), 'b', Real(:), -Imag(:),'b--', [-10 10],[0 0],'k:', [0 0],[-10 10],'k:');
hold on
%  Wiederholung mit anderer Wichtung
Q=100*eye(n,n);
k=lqr(A, b, Q, R);
offeneKette=ss(A-b*k, b, k, d);
[Real, Imag]=nyquist(offeneKette);
plot(Real(:), Imag(:), 'b', Real(:), -Imag(:),'b--', [-10 10],[0 0],'k:', [0 0],[-10 10],'k:');
%
Q=1*eye(n,n);
k=lqr(A, b, Q, R);
offeneKette=ss(A-b*k, b, k, d);
[Real, Imag]=nyquist(offeneKette);
plot(Real(:), Imag(:), 'b', Real(:), -Imag(:),'b--', [-10 10],[0 0],'k:', [0 0],[-10 10],'k:');
plot(dcgain(offeneKette), 0, 'bo');
axis([-0.3 1.5 -0.9 0.9]);
xticks([0 0.5 1]);
yticks([-0.5 0 0.5]);
axis('square');
latexxlabel('Re');
latexylabel('Im');
rotateY;
latextitle('Ortskurve der offenen Kette');


%
%
Epsbildc15('optflug');
