% Prova intermedia di autovalutazione
% Giuseppe Oriolo, dicembre 2002
% Esercizio 1, soluzione con il luogo delle radici

clear all;clg;echo on

% eq stato processo

A=-10;B=11;C=-1;D=1;

% determiniamo la funzione di trasferimento del processo

[numP,denP]=ss2tf(A,B,C,D)

% costruiamo il processo modificato aggiungendo un
% polo nell'origine (astatismo d1) e poli in +j,-j (astatismo d2)
% il polinomio da aggiungere a denominatore e' dunque s(s^2+1)=s^3+s

numPhat=numP;
denPhat=conv(denP,[1 0 1 0]);

% basta un guadagno? vediamo il luogo positivo

rlocus(numPhat,denPhat)
pause

% ecco uno zoom 

rlocus(numPhat,denPhat);
axis([-10 10 -5 5])
pause

% luogo negativo

rlocus(-numPhat,denPhat)
pause

% ecco uno zoom 

rlocus(-numPhat,denPhat);
axis([-10 10 -5 5])
pause

% niente da fare; si puo' pero' aggiungere uno zero a parte reale 
% positiva e sufficientemente piccola (vedi l'analisi derivante dal 
% criterio di Routh nella soluzione)

% verifichiamo: con uno zero in 0.1, la funzione di trasferimento
% del ramo diretto diviene

numF=conv(numPhat,[1 -0.1]);
denF=denPhat;

% e il luogo positivo diventa 

rlocus(numF,denF);
pause

% ecco uno zoom 

rlocus(numF,denF);
axis([-10 10 -5 5])
pause

% dovremmo avere stabilita' per 0<K<8.27; vediamo per K=8 dove sono i poli

hold on
rlocus(numF,denF,8);
pause

% numericamente
hold off
[numW,denW]=cloop(4*numF,denF,-1);
roots(denW)
