% ANALISI DEI SISTEMI % ESERCITAZIONE 2 - 17 Ottobre 2002 % % SVOLGIMENTO CON MATLAB % % PUNTO 1: Si determini il polinomio caratteristico e le sue radici % % definisco un vettore riga che ha per elementi i coefficienti del polinomio caratteristico P=[1 4 5]; % valuto le radici radici=roots(P) pause % essendo una coppia di radici complesse e coniugate determino % parte reale e parte immaginaria alpha=real(radici(1)) omega=imag(radici(1)) pause % PUNTO 2: Si determinino i modi del sistema. % % parametri caratteristici disp('pulsazione naturale') omega_n=sqrt(alpha^2+omega^2) pause disp('coefficiente di smorzamento') zeta=-alpha/omega_n pause disp('costante di tempo') tau=-1/alpha pause % % definisco l'asse dei tempi t=0:0.01:4; % inviluppo y=exp(alpha*t); % modo: il punto è necessario poichè non si sta facendo un prodotto righe % per colonne ma un prodotto elemento per elemento yl=exp(alpha*t).*cos(omega*t); plot(t,y,':',t,-y,':',t,yl) grid title('Evoluzione del modo pseudoperiodico') pause % PUNTO 3: Si determini l'evoluzione libera % % andamento evoluzione libera: yL e' l'evoluzione libera determinata analiticamente yL=7.62*exp(-2*t).*cos(t-1.17); plot(t,yL) grid xlabel('t') title('Evoluzione libera') pause % PUNTO 4 - Si determini la risposta impulsiva % num=[1 5]; den=[1 4 5]; % il comando TF crea la funzione di trasferimento sys=tf(num,den); % il comando IMPULSE genera la risposta impulsiva del modello creato con la f.d.t.(TF) % t è il vettore riga dei tempi w=impulse(sys,t); plot(t,w) grid xlabel('t') title('Risposta impulsiva') pause % verifica risultati: w1 e' la risposta impulsiva determinata analiticamente w1=3.16*exp(-2*t).*cos(t-1.25); plot(t,w,t,w1) grid xlabel('t') title('Risposta impulsiva (calcolata da MATLAB e analiticamente)') pause % PUNTO 5 - Si determini la risposta forzata che consegue all'applicazione % del segnale in ingresso u(t)=0 per t < 1 e u(t)=0.5 per t >= 1 t1=[0:0.01:0.99]; t2=[1:0.01:4]; % definisco l'ingresso nullo per t<1 e pari a 0.5 per t>=1 u1=[zeros(size(t1))]; u2=[0.5*ones(size(t2))]; u=[u1 u2]; % il comando LSIM genera la risposta forzata conseguente all'applicazione % di un ingresso u, t è il vettore riga dei tempi yf=lsim(sys,u,t); plot(t,yf) grid xlabel('t') title('Risposta forzata') pause % verifica risultati ottenuti analiticamente % la risposta forzata è nulla per t<1 yf_1=zeros(size(t1)); % espressione della risposta forzata per t>=1 yf1=0.5+0.71*exp(-2*(t2-1)).*cos(t2-4.93); % risposta completa yf_=[yf_1 yf1]; plot(t,yf,t,yf_) grid xlabel('t') title('Risposta forzata (calcolata da MATLAB e analiticamente)') pause % PUNTO 6 - Si determini la risposta indiciale % % il comando STEP genera la risposta indiciale del modello creato % con la f.d.t. (TF), t è il vettore riga dei tempi w_1=step(sys,t); plot(t,w_1) grid xlabel('t') title('Risposta indiciale') pause % verifica risultati ottenuti analiticamente w_1_=1+1.41*exp(-2*t).*cos(t+2.36); plot(t,w_1,t,w_1_) grid xlabel('t') title('Risposta indiciale (calcolata da MATLAB e analiticamente)') pause % PUNTO 8 - Confronto fra risposta indiciale e la risposta forzata data y1=1*ones(size(t)); y2=1/2*ones(size(t)); plot(t,y1,'k',t,y2,'k',t,yf,t,w_1) grid xlabel('t') title('Confronto fra la risposta yf(t) e la risposta indiciale')