%   Script ZUSTRAUM.M
%
%   Trajektorie im zweidimensionalen Zustandsraum
%
% J. Lunze
% für 2. Auflage: 6.11.1998
% für 3. Auflage: 3.4.2001
% für 4. Auflage: 18.9.2003
% für 5. Auflage: 18.4.2005
% für 6. Auflage: 4.12.2006
% für 8. Auflage: 15.1.2010
% für 9. Auflage: 10.2.2012
% für 10. Auflage: 5.4.2014
% für 12. Auflage: 23.07.2019
%
%   
clear
close all;

%%   Eigenbewegung eines gedämpften Oszillators im Zustandsraum
%   
figure(1)
subplot(3,2,[1,3]);
BspSchwingkreis;           % liefert A, b, c, d
                           % RLC=ss(A, b, c, d);
                           % x0=[1; 1];
T=linspace(0, 0.1, 400);
[Y, T, X]=initial(RLC, x0, T);
plot(X(:,1), X(:,2), 'b', [0 0], [-17 27], 'k:', [-10 10], [0 0], 'k:');
latexxlabel('$$i_1$$ in A');
latexylabel('$$u_2$$ in V');
rotateY;
axis([-1.5 1.5 -17 27]);
xticks([-1 0 1]);
yticks([-10 0 10 20]);
latextext(1.05, 2, '$$\uparrow$$');
latextitle('Eigenbewegung des Oszillators');


%%   Dasselbe als Zeitfunktionen
%
figure(2)
subplot(6,1,[1,2]);
plot(T, X(:,1), 'b', [0 0.1], [0 0], 'k:');
xleer;
latexylabel('$$i_1$$ in A');
rotateY;
axis([0 0.1 -1 1]);
xticks([-1 0 1]);
latextitle('Zeitverhalten des Oszillators');
%
subplot(6,1,[3,4]);
plot(T, X(:,2), 'b', [0 0.1], [0 0], 'k:');
latexxlabel('$$t$$ in s');
latexylabel('$$u_2$$ in V');
rotateY;
axis([0 0.1 -20 30]);
xticks([0 0.02 0.04 0.06 0.08 0.1]);
yticks([-20 0 20]);


%%  Verhalten des Oszillators im Phasenraum
%   
figure(3)
subplot(2,2,1);
%
%  Transformation in Frobenius-Form
%
Ss=ctrb(A, b);
sR=[0 1]*inv(Ss);
Tinv=[sR;  sR*A];
TR=inv(Tinv);
AR=Tinv*A*TR;
bR=Tinv*b;
cR=c*TR;
x0R=Tinv*x0;
RLCFrobenius=ss(AR, bR, cR, d);
[YR, T, XR]=initial(RLCFrobenius, 1000*x0R, T);
plot(XR(:,1), XR(:,2), 'b', [0 0], [-100 100], 'k:', [-100 100], [0 0], 'k:');
xleer;
latexxlabel('$$x_1$$');
yleer;
latexylabel('$$x_2=\dot{x}_1$$');
rotateY;
latextext(-0.1, 90, '$$\rightarrow$$');
axis([-0.2 0.3 -100 100]);
latextitle('Phasenraumdarstellung');
 

%%  Eigenbewegung eines Systems dritter Ordnung
%   dreidimensionale Darstellung im Zustandsraum
%
figure(4);
A = [-0.5 0 0
     0 -0.3 2;
     0 -2 -0.3];
b = [1;
     1;
     1];
c = [1 1 1];
d=0;
System=ss(A, b, c, d);
x0=[10, 10, 10];
T=0:0.01:10;
[Y, T, X]=initial(System, x0, T);
plot3(X(:, 2), X(:, 3), X(:, 1), 'b');
hold on
plot3([-10 10], [0 0], [0 0], 'k:');
plot3([0 0], [-10 10], [0 0], 'k:');
plot3([0 0], [0 0], [10 0], 'k:');
latexxlabel('$$x_1$$');
latexylabel('$$x_2$$');
rotateY;
latexzlabel('$$x_3$$');
handleOnZLabel=get(gca, 'Zlabel');                    % Handle auf Beschriftung der z-Achse setzen
set(handleOnZLabel,'rotation',0);                     % Beschriftung waagerecht ausrichten
set(handleOnZLabel,'HorizontalAlignment','right');
grid('on');
latextitle('Trajektorie eines Systems dritter Ordnung im Zustandsraum');
%latextext(X(1,2), X(1,3), X(1,1), '  x(0)')
text('Interpreter','latex',...
	'String','$${\bf x}_0$$',...
	'Position',[5, 9, 9],...
    'FontName','times',...
	'FontSize',14);
plot3(X(1, 2), X(1, 3), X(1, 1),'bx');
axis([-13 13 -13 13 0 10]);
xticks([-10 0 10]);
yticks([-10 0 10]);
zticks([-10 0 10]);
hold off



%%   .EPS und .PS Datei
%
Epsbildc15('zustra');
