% Esercitazione Fondamenti di Automatica
% e Teoria dei Sistemi
%
% (Ultima modifica: 19/03/99)
%
% Evoluzione libera caso di:
% COPPIA AUTOVALORI COMPLESSI E CONIUGATI + 
% AUTOVALORE REALE
%
% => 3 modi naturali aperiodici - 2 pseudoperiodici- 1 aperiodico
% 6 CASI:
% 1.a) pseudoperiodici INSTABILI      - aperiodico STABILE AS.
% 1.b) pseudoperiodici STABILI SEMPL. - aperiodico STABILE AS.
% 1.c) pseudoperiodici STABILI AS.    - aperiodico STABILE AS.
% 2.a) pseudoperiodici INSTABILI      - aperiodico INSTABILE
% 2.b) pseudoperiodici STABILI SEMPL. - aperiodico INSTABILE
% 2.c) pseudoperiodici STABILI AS.    - aperiodico INSTABILE


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%   Casi 1.a) 1.b) 1.c)    %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all
close all
alpha=1;
tf=20;                % Tempo di simulazione

% Matrici dinamiche nei tre casi

A1=[0.1, 2, 1;
   -2 0.1, 2;
   0, 0, -0.2*alpha];
A2=[0, 2, 1;
   -2 0, 2;
   0, 0, -0.2*alpha];
A3=[-0.5, 2, 1;
   -2 -0.5, 2;
   0, 0, -0.2*alpha];

B=[1,1,1]';
C=[1 1,1];

% Autovettori ed autovalori

[u1,l1]=eig(A1);
[u2,l2]=eig(A2);
[u3,l3]=eig(A3);

% Autovalori

la11=l1(1,1);
la12=l1(2,2);
la13=l1(3,3);
u13=u1(:,3);

la21=l2(1,1);
la22=l2(2,2);
la23=l2(3,3);
u23=u2(:,3);

la31=l3(1,1);
la32=l3(2,2);
la33=l3(3,3);
u33=u3(:,3);

t=0:0.01:tf;
x0=[1,2,10]';      % condizione iniziale

[y1,x1,t]=initial(A1,B,C,0,x0,t);  % calcolo dell'evoluzione libera caso 1.a)
[y2,x2,t]=initial(A2,B,C,0,x0,t);  % calcolo dell'evoluzione libera caso 1.b)
[y3,x3,t]=initial(A3,B,C,0,x0,t);  % calcolo dell'evoluzione libera caso 1.c)

clc
echo on

% Ev. libera nello spazio di stato: caso 1.a)
% pseudoperiodici INSTABILI - aperiodico STABILE AS.

% Matrice A

A1

% Autovalori

la11
la12
la13

echo off
pause

figure(1)
clf
k1=15;
plot3([0,k1*u13(1)],[0,k1*u13(2)],[0,k1*u13(3)],'b')
axis([-100,100,-100,100,0,15])
hold on
grid
pause
plot3(x1(:,1),x1(:,2),x1(:,3),'y')
hold on
plot3(x0(1),x0(2),x0(3),'g*')
pause
figure(2)
comet3(x1(:,1),x1(:,2),x1(:,3))
pause

clc
echo on

% Ev. libera nello spazio di stato: caso 1.b)
% pseudoperiodici STABILI SEMPL. - aperiodico STABILE AS.

% Matrice A

A2

% Autovalori

la21
la22
la23

echo off
pause

figure(2)
clf
k2=15;
plot3([0,k2*u23(1)],[0,k2*u23(2)],[0,k2*u23(3)],'b')
axis([-20,20,-20,20,0,10])
hold on
grid
pause
plot3(x2(:,1),x2(:,2),x2(:,3),'y')
hold on
plot3(x0(1),x0(2),x0(3),'g*')
pause
figure(3)
comet3(x2(:,1),x2(:,2),x2(:,3))
pause

clc
echo on

% Ev. libera nello spazio di stato: caso 1.c)
% pseudoperiodici STABILI AS. - aperiodico STABILE AS.

% Matrice A

A3

% Autovalori

la31
la32
la33

echo off
pause

figure(3)
clf
k3=15;
plot3([0,k3*u33(1)],[0,k3*u33(2)],[0,k3*u33(3)],'b')
axis([-15,15,-15,15,0,10])
hold on
grid
pause
plot3(x3(:,1),x3(:,2),x3(:,3),'y')
hold on
plot3(x0(1),x0(2),x0(3),'g*')
pause
figure(4)
comet3(x3(:,1),x3(:,2),x3(:,3))
pause

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%   Casi 2.a) 2.b) 2.c)    %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

close all
clc 
tf=10;

echo off
% Matrici dinamiche nei tre casi

A1=[0.3, 2, 1;
   -2 0.3, 2;
   0, 0, 0.2*alpha];
A2=[0, 2, 1;
   -2 0, 2;
   0, 0, 0.2*alpha];
A3=[-0.5, 2, 1;
   -2 -0.5, 2;
   0, 0, 0.2*alpha];

B=[1,1,1]';
C=[1 1,1];

% Autovettori ed autovalori

[u1,l1]=eig(A1);
[u2,l2]=eig(A2);
[u3,l3]=eig(A3);

% Autovalori

la11=l1(1,1);
la12=l1(2,2);
la13=l1(3,3);
u13=u1(:,3);

la21=l2(1,1);
la22=l2(2,2);
la23=l2(3,3);
u23=u2(:,3);

la31=l3(1,1);
la32=l3(2,2);
la33=l3(3,3);
u33=u3(:,3);

t=0:0.01:tf;
x0=[1,2,1]';

[y1,x1,t]=initial(A1,B,C,0,x0,t);  % calcolo dell'evoluzione libera caso 2.a)
[y2,x2,t]=initial(A2,B,C,0,x0,t);  % calcolo dell'evoluzione libera caso 2.b)
[y3,x3,t]=initial(A3,B,C,0,x0,t);  % calcolo dell'evoluzione libera caso 2.c)

clc
echo on

% Ev. libera nello spazio di stato: caso 2.a)
% pseudoperiodici INSTABILI - aperiodico INSTABILE

% Matrice A

A1

% Autovalori

la11
la12
la13

echo off
pause

figure(1)
clf
k1=15;
plot3([0,k1*u13(1)],[0,k1*u13(2)],[0,k1*u13(3)],'b')
axis([-50,50,-50,50,0,10])
hold on
grid
pause
plot3(x1(:,1),x1(:,2),x1(:,3),'y')
hold on
plot3(x0(1),x0(2),x0(3),'g*')
pause
figure(2)
comet3(x1(:,1),x1(:,2),x1(:,3))
pause

clc
echo on

% Ev. libera nello spazio di stato: caso 2.b)
% pseudoperiodici STABILI SEMPL. - aperiodico INSTABILE

% Matrice A

A2

% Autovalori

la21
la22
la23

echo off
pause

figure(2)
clf
k2=10;
plot3([0,k2*u23(1)],[0,k2*u23(2)],[0,k2*u23(3)],'b')
axis([-10,10,-10,10,0,8])
hold on
grid
pause
plot3(x2(:,1),x2(:,2),x2(:,3),'y')
hold on
plot3(x0(1),x0(2),x0(3),'g*')
pause
figure(3)
comet3(x2(:,1),x2(:,2),x2(:,3))
pause

clc
echo on

% Ev. libera nello spazio di stato: caso 2.c)
% pseudoperiodici STABILI AS. - aperiodico INSTABILE

A3

% Autovalori

la31
la32
la33

echo off
pause

figure(3)
clf
k3=10;
plot3([0,k3*u33(1)],[0,k3*u33(2)],[0,k3*u33(3)],'b')
axis([-5,5,-5,5,0,8])
hold on
grid
pause
plot3(x3(:,1),x3(:,2),x3(:,3),'y')
hold on
plot3(x0(1),x0(2),x0(3),'g*')
hold off
pause
figure(4)
comet3(x3(:,1),x3(:,2),x3(:,3))

