% esercizio su movimento libero dello stato di un sistema LTI a tempo % continuo di ordine 3 % % determinazione dei modi di risposta % corso TDSC % a.a. 2009/2010 % G. Fenu %% un po' di pulizia prima di cominciare clc clear all close all %% definizione del sistema A = [-1 2 2;0 -5 -4;0 0 -2]; B = [0;2;0]; C = [1 0 1]; sistema = ss(A, B, C, 0); % a tempo continuo % sistema asintoticamente stabile: PERCHE'?? % vedere l'output del comando % creato un sistema SISO %% polinomio caratteristico ed autovalori disp('polinomio caratteristico della matrice A'); disp(poly(A)); disp('********************'); disp('autovalori della matrice A:'); autovalA = eig(A); disp(autovalA); % % autovalori: -1 , -2, -5 pause clc %% ricerca degli autovettori: 1.o autovalore disp('*********************'); disp('cerco gli autovettori'); autovett1 = null( (A+eye(3)), 'r') %% ricerca degli autovettori: 2.o autovalore autovett2 = null( (A+2*eye(3)), 'r') %% ricerca degli autovettori: 3.o autovalore autovett5 = null( (A+5*eye(3)), 'r') pause clc %% matrice di trasformazione in forma diagonale matriceT = [autovett1 autovett2 autovett5]; disp('matrice di trasformazione'); disp(matriceT); disp('*********************'); disp('matrice di trasformazione inversa'); matriceT_inv = inv(matriceT); disp(matriceT_inv); disp('forma diagonale'); diagA = matriceT_inv * A * matriceT; disp(diagA); pause clc %% modi di risposta % il sistema e' diagonalizzabile % posso calcolare i modi cosi' % % matrice modale associata all'autovalore lambda_i: A_i % autovettore destro associato v_i % autovettore sinistro associato: u_i % in definitiva SE AUTOVALORI TUTTI DISTINTI % A_i = v_i * u_i' %************************************************************************** At = A'; % matrice trasposta % eig(Atrasp) % ovviamente ha gli stessi autovalori %% ricerca degli autovettori-riga: 1.o autovalore disp('*********************'); disp('cerco gli autovettori-riga'); autoriga1 = null( (At+eye(3)), 'r') %% ricerca degli autovettori-riga: 2.o autovalore autoriga2 = null( (At+2*eye(3)), 'r') %% ricerca degli autovettori-riga: 3.o autovalore autoriga5 = null( (At+5*eye(3)), 'r') pause clc %% matrici dei modi di risposta dello stato A_1 = autovett1 * autoriga1'; A_2 = autovett2 * autoriga2'; A_5 = autovett5 * autoriga5'; disp('*************matrici modali di risposta*********'); disp('modo associato a');disp(autovalA(1)); disp(A_1); disp('========='); disp('modo associato a');disp(autovalA(2)); disp(A_5); disp('========='); disp('modo associato a');disp(autovalA(3)); disp(A_2); disp('========='); %************************************************************************** % fine esempio