[Matlab] Esercizio con sistema descritto da poli, zeri, guadagno

CosenTheta
Sto tentando di risolvere il seguente esercizio MATLAB



Il primo dubbio che vorrei subito chiedere è il seguente: che cosa intende l'esercizio con guadagno in ALTA frequenza? L'unico che conosco è il guadagno K, noto come guadagno statico o guadagno in BASSA frequenza, che è il valore della funzione di trasferimento nell'origine quando il sistema è di tipo zero (come nel caso in esame, non avendo poli nell'origine). Potrebbe trattarsi di un errore di battitura?

A questo punto, considerando K come guadagno in bassa frequenza, ho scritto il seguente codice MATLAB per il primo punto:

sys = zpk([-3, 4], [-1, -4, 2+1j, -2-1j], -5); 
stepplot(sys);
infos = stepinfo(sys);
disp('Step response infos'), disp(infos); 


Ho innanzitutto creato il sistema tramite la funzione zpk, che prende in ingresso i parametri che mi ha assegnato l'esercizio, dopodiché ho tentato di plottare la risposta al gradino e tramite la funzione stepinfo ne ho estratto le caratteristiche richieste. Tuttavia, eseguendo il codice, ottengo questo



Che cosa ho sbagliato?

Ultimo dubbio: al secondo punto viene richiesto "il tempo di assestamento al 2% della risposta all'impulso". Ma i parametri quali tempo di assestamento, tempo di salita, sovraelongazione ecc... ecc... non sono definiti solamente per la risposta al gradino unitario?

Grazie a chi risponderà.
Qualsiasi suggerimento in più sull'utilizzo del MATLAB è ben accetto, visto che sto studiando questo linguaggio da pochissimo.

Risposte
Flamber
Secondo me c'è un errore di stampa, i poli possono essere complessi coniugati! prova a inserire $2+j$ e $2-j$. Matlab non sa cosa dirti perchè non esiste una funzione di trasferimento con quei parametri.

EDIT: So bene che chi non fa il programmatore di mestiere magari i messaggi di errore li ignora completamente :D, ma se leggi è la prima cosa che ti dice il compilatore nel messaggio in arancione.

Il tempo di assestamento si riferisce alla risposta al gradino, penso che anche qui ci sia un errore di stampa.

CosenTheta
"Flamber":
perchè non esiste una funzione di trasferimento con quei parametri.


Non può esistere una funzione di trasferimento con quei poli perché se un numero complesso è polo di una FdT allora deve sempre esserci il suo coniugato?

"Flamber":

EDIT: So bene che chi non fa il programmatore di mestiere magari i messaggi di errore li ignora completamente :D, ma se leggi è la prima cosa che ti dice il compilatore nel messaggio in arancione.


In realtà conosco molto meno teoria dei sistemi che programmazione, proprio per questo io mi sono fidato ciecamente della traccia, senza pensare che ci potessero essere errori del genere.




Scusami, per quanto riguarda quella domanda sul guadagno?

Flamber
"CosenTheta":

Non può esistere una funzione di trasferimento con quei poli perché se un numero complesso è polo di una FdT allora deve sempre esserci il suo coniugato?


Diciamo che puoi vederla così, ma non è proprio corretto. Se ragioni a livello matematico una FdT del secondo ordine è una funzione del tipo:

$H(s) = (N(s))/(D(s)) = (N(s))/(s^2+a_1s+a_0)$

i poli sono le soluzioni del denominatore:

$s^2+a_1s+a_0=0$

quindi le soluzioni possono essere solo:
$\Delta>0 rArr$ 2 soluzioni reali distinte ( 2 poli semplici )
$\Delta=0 rArr$ 2 soluzioni reali coincidenti ( 1 polo doppio )
$\Delta<0 rArr$ 2 souzioni complesse coniugate ( 2 poli complessi coniugati )

Non è possibile che quell'equazione abbia due numeri complessi non coniugati come soluzioni

"CosenTheta":

Scusami, per quanto riguarda quella domanda sul guadagno?


Ti faccio un caso semplice, mettiamo che tu abbia una funzione di trasferimento del tipo:

$H(s) = 3*(s+2)/(s+4)$

Hai un diagramma di bode di questo tipo:



per $srarr+oo$ hai che $H(s) rarr 3$ e questo è il guadagno in alta frequenza.

Può capitare che per un qualsiasi motivo ti interessi riscrivere la FdT in modo da mettere in evidenza il guadagno in bassa frequenza:

$srarr0$ hai che $H(s) rarr 6/4=3/2$

Per mettere in evidenza il guadagno in bassa frequenza puoi riscrivere $H$ come:

$H(s) = 3*(s+2)/(s+4) = 3*(2*(s/2+1))/(4*(s/4+1)) = 3/2 * (s/2+1)/(s/4+1)$

Ovviamente questi sono solo dei semplici passaggi algebrici, la FdT è sempre la stessa, è le due forme sono assolutamente equivalenti. Semplicemente in alcuni casi è comodo esprimere il guadagno in bassa frequenza e in altri casi quello in alta frequenza.

Il mio consiglio, è quello di provare a scrivere con carta e penna la funzione di trasferimento dell'esercizio e di provare a fare il diagramma di bode a mano

P.S. in questo caso ho ragionato nel dominio s, senza passare a $j\omega$ perchè l'esempio era molto semplice ed aveva solo un polo ed uno ero reali

CosenTheta
Scegliendo come polo corretto $2+j$, al quale si fa corrispondere il coniugato $2-j$, la funzione di trasferimento che si costruisce con i dati dell'esercizio è la seguente

\(\displaystyle W(s) = -5\frac{(s+3)(s-4)}{(s+1)(s+4)(s - (2+j))(s - (2-j))} \)

Si può ricostruire il termine trinomio al denominatore moltiplicando i termini binomiali con soluzioni complesse, ottenendo in definitiva

\(\displaystyle W(s) = -5\frac{(s+3)(s-4)}{(s+1)(s+4)(s^2 - 4s + 5)} \)

Per $s->\infty$ la FdT tende a zero, a causa dello scarto poli-zeri pari a $2$, dunque il guadagno in alta frequenza è nullo.

Per $s=0$, invece, si ha che

\(\displaystyle W(0) = \frac{(-5)(3)(-4)}{1(4)(5)} = +3 \)

che corrisponde al guadagno in bassa frequenza.

Ora, che cosa voleva intendere l'esercizio con $k = -5$, visto che ovviamente non si tratta del guadagno in alta frequenza?

"Flamber":

Il mio consiglio, è quello di provare a scrivere con carta e penna la funzione di trasferimento dell'esercizio e di provare a fare il diagramma di bode a mano


Concludo con una domanda riguardo il diagramma di Bode,che mi è sorta mentre calcolavo i parametri necessari al tracciamento.

Riporto anzitutto la funzione nella forma di Bode:

$W(s) = (-5)\frac{(3)(-4)(1+\frac{1}{3}s)(1-\frac{1}{4}s)}{(4)(5)(1+s)(1+\frac{1}{4}s)(1+2\frac{(-2)}{5}s + \frac{s^2}{5})}
=3\frac{(1+\frac{1}{3}s)(1-\frac{1}{4}s)}{(1+s)(1+\frac{1}{4}s)(1+2\frac{(-2)}{5}s + \frac{s^2}{5})}$

I punti di rottura sono, per il numeratore:

$\tau_{1} = \frac{1}{\abs(\frac{1}{3})} = 3;$
$\tau_{2} = 4;$

Mentre per il denominatore:

$\tau_{3} = 1;$
$\tau_{4} = 4;$

e per il termine trinomio:

$\omega_{n} = \sqrt{5} => \zeta = \frac{-2\sqrt{5}}{5} = -0.89 < -\frac{\sqrt{2}}{2}$, quindi non ci sono picchi di risonanza.

La domanda è questa: è possibile che un polo e uno zero condividano lo stesso punto di rottura? Nel nostro caso $\tau_{4}$ e $\tau_{2}$?

Flamber
Non so cosa intendi per punto di rottura, ma è assolutamente possibile che poli e zeri si cancellino. in questo caso passando dal dominio $s$ a $j\omega$ ottieni:

$H(j\omega) = -5 ((j\omega-4)(j\omega-3))/((j\omega+1)(j\omega+4)(5-4j\omega-\omega^2))$

Usando le proprietà dei numeri complessi, il modulo di questa FdT è:

$|H(j\omega)| = 5( ((\omega^2+16)(\omega^2+9))/((\omega^2+1)(\omega^2+16)((5-\omega^2)^2+16\omega^2)))^(1/2)$

I termini $(\omega^2+16)$ che corrispondo al polo in $-4$ e allo zero in $4$ si cancellano e l'effetto totale sul modulo è nullo. Sulla fase c'è da fare un discorso un pò diverso

RenzoDF
Per i dati, direi che necessariamente, i due poli complessi coniugati dovrebbero essere

$-2+j \ \ \ $ e $\ \ \-2-j$

Il k fornito è semplicemente il k della forma fattorizzata della TF, che non corrisponde, se non nel caso particolare di numeratore e denominatore di pari grado, a quello in alta frequenza.

Per la seconda richiesta del problema, direi che anche per la risposta impulsiva si possa parlare di un
"tempo di assestamento", relativamente alla condizione specificata.

CosenTheta
"RenzoDF":
Per i dati, direi che necessariamente, i due poli complessi coniugati dovrebbero essere
$ -2+j \ \ \ $ e $ \ \ \-2-j $


Hai considerato corretto il numero complesso con parte reale negativa per garantire l'asintotica stabilità del sistema?


"RenzoDF":

direi che anche per la risposta impulsiva si possa parlare di un "tempo di assestamento"


Volendo impostare la percentuale relativa al tempo di assestamento, per esempio portandolo al 5%, con il gradino basta l'istruzione

stepinfo(sys,'SettlingTimeThreshold',0.05);


Volendolo modificare anche per l'impulso, siccome non esiste una funzione impulseinfo che mi permetta di fare la stessa cosa, cosa dovrei utilizzare?

RenzoDF
Calcolata la risposta con

[y,t] = impulse(sys);


sarà possibile usare

S = lsiminfo(y,t,'SettlingTimeThreshold',0.05);
tempo_ass = S.SettlingTime


Come riportato dalla pagina dell'Help

https://it.mathworks.com/help/control/ref/lsiminfo.html

di default, ovvero con un semplice

s = lsiminfo(y,t,0)


l'ST viene assunto pari a 0.02 (2%), proprio come richiesto in questo caso dal problema e vengono visualizzati anche Massimo Minimo e relativi valori temporali.

CosenTheta
"RenzoDF":

sarà possibile usare
S = lsiminfo(y,t,'SettlingTimeThreshold',0.05);
tempo_ass = S.SettlingTime



Grazie per l'accurata risposta.

"CosenTheta":

Hai considerato corretto il numero complesso con parte reale negativa per garantire l'asintotica stabilità del sistema?


Scusami, per quanto riguarda questo?

RenzoDF
Certo, usando Matlab, prova a plottare la risposta impulsiva e a ottenere il tempo di assestamento nel caso la coppia di poli complessi coniugati abbia parte reale +2. :wink:

CosenTheta
Questa è la risposta con autovalori a parte reale negativa



Si vede sia dal grafico che dai valori in basso che la risposta potrebbe rappresentare certamente una grandezza fisica.

Per quanto riguarda, invece, la risposta con autovalori a parte reale positiva, la risposta esplode all'infinito



da come si può denotare dalle caratteristiche in basso del grafico.

RenzoDF
Postiamo anche quella all'impulso con parte reale -2. :)


Rispondi
Per rispondere a questa discussione devi prima effettuare il login.