Costruire il diagramma di Nyquist con Matlab

Di Antonio Parziale.

Come costruire il diagramma di Nyquist con matlab. il codice da scrivere ed un esempio esplicativo

La rappresentazione esatta del diagramma di Nyquist richiede l'utilizzo di un programma di calcolo come Matlab. Per la rappresentazione esatta del diagramma infatti bisogna conoscere modulo e fase della f.d.T. per tutte le pulsazioni nel range di interesse (in generale dall'infinito positivo all'infinito negativo).

Affinchè il programma realizzi il diagramma di Nyquist è sufficiente scrivere

num = [a1 a2 a3 ... aN];
den = [b1 b2 b3 ... bN];
tf(num,den);
nyquist(num, den);

Le prime due righe di codice definiscono i vettori num e den. I termini a1... aN e b1... bN sono rispettivamente i coefficienti del polinomio a numeratore e di quello a denominatore.
es: 5s^3 + 4s^2 + 10 si scrive come [5 4 0 10]
Qual'ora la f.d.T. fosse espessa nella forma di Bode (ovvero come prodotto di polinomi) è più conveniente definire i vettori num e den per mezzo della funzione conv.
es: (s+5)(s+3) si scrive come conv([1 5], [1 3])

La funzione tf(num,den) mi permette di visualizzare la f.d.T. inserita, in questo modo posso controllare che non ci siano stati errori nell'inserimento. Qual'ora la f.d.T. fosse espressa nella forma di Bode conviene sostituire la funzione precedente con zpk(tf(num,den))

La funzione nyquist(num,den) grafica il diagramma di Nyquist della f.d.t. inserita

Nota: la funzione nyquist() presente in tutte le versioni di Matlab non rappresenta adeguatamente le f.d.t. con poli a parte reale nulla. Funzioni quindi con poli sull'asse immaginario e/o nell'origine non sono graficate correttamente. Per questo motivo sono state implementate due nuove versioni di questa funzione nyquist1 e lnyquist1 che vanno salvate come file .m e caricate nella cartella works di Matlab

Esempio

Vogliamo disegnare il diagramma di Bode della f.d.T.

Scriviamo:

>> num=conv(10,[1 100]);
>> den=conv([1 0],[1 10]);
>> zpk(tf(num,den))

Zero/pole/gain:
10 (s+100)
----------
s (s+10)

>> nyquist(num,den);

Otterremo questo diagramma


Come possiamo notare il polo nell'origine non viene proprio preso in considerazione. Di seguito i diagrammi forniti dalle funzioni nyquist1 e lnyquist1. Quest'ultima utilizza per il modulo una scala logaritmica espandendo il diagramma nell'intorno della singolarità a parte reale nulla.