% Esercitazione Fondamenti di Automatica
% e 
% Teoria dei Sistemi
% Marzo 1999

% (Ultima modifica: 19/03/99)

% Traiettorie nel piano in corrispondenza
% ad un'evoluzione libera con condizione
% iniziale data dall'utente
% DUE AUTOVALORI REALI DISTINTI



close all
clear all

u1=[1,-5]';
u2=[2,2]';

% Modificando i seguenti autovalori si
% possono generare altri casi

l1=-1;		        % autovalore l1
l2=-0.1;		% autovalore l2
t=0:0.01:5;

V=inv([u1,u2]);

% Matrice dinamica costruita a partire dalla
% forma spettrale

A=l1*u1*V(1,:)+l2*u2*V(2,:);

B=eye(2);
C=B;
clc

echo on

% Matrice dinamica

A

% Autovalori

l1
l2

% Autovettori

u1
u2

echo off

pause
T = 1;
while T==1,
   figure(1)
   hold off
   clf
   plot([-2*u1(1),2*u1(1)],[-2*u1(2),2*u1(2)],':r');
   hold on
   plot([-3*u2(1),3*u2(1)],[-3*u2(2),3*u2(2)],':r');
   plot([0,u1(1)],[0,u1(2)],'g');
   text(u1(1)+0.3,u1(2),'u1');
   plot([0,u2(1)],[0,u2(2)],'g');
   text(u2(1)+0.3,u2(2)-0.2,'u2');
   plot([-10,10],[0,0],'--y');
   plot([0,0],[-10,10],'--y');
   ['Scegliere la condizione iniziale']
   [a,b]=ginput(1);
   [y1,x1,t]=initial(A,B,C,[0,0;0,0],[a,b]',t);
   c1=V(1,:)*[a,b]';
   c2=V(2,:)*[a,b]';
   plot(c1*u1(1),c1*u1(2),'w*'); % proiezione della condizione iniziale su u1
   plot(c2*u2(1),c2*u2(2),'w*'); % proiezione della condizione iniziale su u2
   plot(x1(:,1),x1(:,2),'c');
   pause
   figure(2)
   clf
   subplot(211),plot(t,V(1,:)*x1'),grid
   title('Componente lungo u1')
   subplot(212),plot(t,V(2,:)*x1'),grid
   title('Componente lungo u2')
   pause
   figure(3)
   clf
   subplot(211)
   plot(t,x1(:,1)),grid
   title('Componente lungo asse x1')
   subplot(212)
   plot(t,x1(:,2)),grid
   title('Componente lungo asse x2')
   T = input('Digitare 0 per interrompere 1 per ricominciare:  ');
end;

