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

Messaggioda CosenTheta » 22/05/2020, 19:04

Sto tentando di risolvere il seguente esercizio MATLAB

Immagine

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:

Codice:
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

Immagine

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.
"È la somma che fa il totale!"
(Antonio Griffo Focas Flavio Angelo Ducas Comneno Porfirogenito Gagliardi de Curtis di Bisanzio)
Avatar utente
CosenTheta
Average Member
Average Member
 
Messaggio: 91 di 601
Iscritto il: 02/09/2019, 22:18

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

Messaggioda Flamber » 22/05/2020, 20:00

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.
Avatar utente
Flamber
Advanced Member
Advanced Member
 
Messaggio: 1056 di 2188
Iscritto il: 27/03/2012, 07:49

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

Messaggioda CosenTheta » 22/05/2020, 21:16

Flamber ha scritto: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 ha scritto: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?
"È la somma che fa il totale!"
(Antonio Griffo Focas Flavio Angelo Ducas Comneno Porfirogenito Gagliardi de Curtis di Bisanzio)
Avatar utente
CosenTheta
Average Member
Average Member
 
Messaggio: 92 di 601
Iscritto il: 02/09/2019, 22:18

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

Messaggioda Flamber » 23/05/2020, 11:06

CosenTheta ha scritto: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 ha scritto: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:

Immagine

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
Avatar utente
Flamber
Advanced Member
Advanced Member
 
Messaggio: 1057 di 2188
Iscritto il: 27/03/2012, 07:49

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

Messaggioda CosenTheta » 23/05/2020, 12:18

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 ha scritto: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}$?
"È la somma che fa il totale!"
(Antonio Griffo Focas Flavio Angelo Ducas Comneno Porfirogenito Gagliardi de Curtis di Bisanzio)
Avatar utente
CosenTheta
Average Member
Average Member
 
Messaggio: 93 di 601
Iscritto il: 02/09/2019, 22:18

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

Messaggioda Flamber » 23/05/2020, 12:49

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
Avatar utente
Flamber
Advanced Member
Advanced Member
 
Messaggio: 1058 di 2188
Iscritto il: 27/03/2012, 07:49

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

Messaggioda RenzoDF » 23/05/2020, 14:21

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.
"Il circuito ha sempre ragione" (Luigi Malesani)
RenzoDF
Cannot live without
Cannot live without
 
Messaggio: 6237 di 15474
Iscritto il: 06/08/2014, 09:08

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

Messaggioda CosenTheta » 23/05/2020, 15:30

RenzoDF ha scritto: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 ha scritto: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

Codice:
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?
"È la somma che fa il totale!"
(Antonio Griffo Focas Flavio Angelo Ducas Comneno Porfirogenito Gagliardi de Curtis di Bisanzio)
Avatar utente
CosenTheta
Average Member
Average Member
 
Messaggio: 94 di 601
Iscritto il: 02/09/2019, 22:18

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

Messaggioda RenzoDF » 23/05/2020, 17:29

Calcolata la risposta con

Codice:
[y,t] = impulse(sys);


sarà possibile usare

Codice:
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

Codice:
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.
"Il circuito ha sempre ragione" (Luigi Malesani)
RenzoDF
Cannot live without
Cannot live without
 
Messaggio: 6239 di 15474
Iscritto il: 06/08/2014, 09:08

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

Messaggioda CosenTheta » 24/05/2020, 11:34

RenzoDF ha scritto:sarà possibile usare
Codice:
S = lsiminfo(y,t,'SettlingTimeThreshold',0.05);
tempo_ass = S.SettlingTime



Grazie per l'accurata risposta.

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


Scusami, per quanto riguarda questo?
"È la somma che fa il totale!"
(Antonio Griffo Focas Flavio Angelo Ducas Comneno Porfirogenito Gagliardi de Curtis di Bisanzio)
Avatar utente
CosenTheta
Average Member
Average Member
 
Messaggio: 95 di 601
Iscritto il: 02/09/2019, 22:18

Prossimo

Torna a Ingegneria

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite