% Esempio di luogo delle radici con punti singolari complessi
% cfr prova scritta Controlli Automatici 15/4/1999
% Giuseppe Oriolo, Aprile 1999

clear all, hold off

% F(s) = K(s+1)^2/s(s^2+2)(s-2)

numF=[1 2 1];
denF=conv([1,0],conv([1 0 2],[1 -2]));

figure(1)
rlocus(numF,denF)
pause

% come si vede, MATLAB ha difficolta' a tracciare luoghi 
% accurati nell'intorno di punti singolari complessi
% se la rlocus viene chiamata senza specificare i valori di K

% allora generiamo un vettore di valori di K...

K=0:0.01:10;

% e usiamo rlocus cosi'

figure(1)
rlocus(numF,denF,K)
pause

% si noti come i rami ora non raggiungono ne' lo zero doppio
% ne' gli asintoti perche' il max valore di K e' 10

% ecco il luogo negativo

figure(2)
rlocus(numF,denF,-K)
pause

% anche qui non raggiungono ne' lo zero doppio
% ne' gli asintoti perche' il max valore di K e' -10

close all

% eccoli insieme

figure(3)
rlocus(numF,denF,K)
hold
rlocus(numF,denF,-K)
pause
hold off

close all

% va sottolineato tuttavia che la presenza di punti
% singolari complessi non e' strutturale
% ecco cosa succede se spostiamo in 3 il polo che era in 2

denFmod=conv([1,0],conv([1 0 2],[1 -3]));

figure(1)
rlocus(numF,denFmod,K)
pause

% i punti singolari complessi scompaiono
% ecco il luogo positivo completo

figure(2)
rlocus(numF,denFmod)
pause
