Sei sulla pagina 1di 33

MATLAB

Seconda parte
Lezione del 10 dicembre 2011

Ing. Domenico Bufalino


ISTITUTO TECNICO INDUSTRIALE STATALE G.GALILEI

Funzione di trasferimento

Viene definita funzione di trasferimento (abbreviata in F.d.T.) di un sistema il rapporto tra la trasformata di Laplace Y(s) della funzione in uscita del sistema e la trasformata di Laplace X(s) della funzione in ingresso, quando le condizioni iniziali siano poste tutte a zero.

Funzione di trasferimento
La funzione di trasferimento si presenta come un rapporto di due polinomi in s. Le radici del denominatore sono i poli del sistema, in corrispondenza dei quali luscita diventa infinita, e le radici del numeratore sono gli zeri, in corrispondenza dei quali luscita si annulla.

Funzione di trasferimento
La F.d.T. pu essere rappresentata in una dele seguenti forme:
Forma polinomiale

Forma in zeri/poli

Espansione in fratti semplici

Forma polinomiale
In Matlab si pu identificare una F.d.T. con due vettori che rappresentano i polinomi in s del numeratore e del denominatore Nel caso di poli nellorigine basta considerare il polinomio del denominatore risultante dalla moltiplicazione, lordine del polinomio ne sar incrementato.

Forma polinomiale
Una funzione di trasferimento viene costruita a partire dai due vettori num e den con listruzione sys=tf(num,den) Ad esempio se num=1.5 e den=[1 14 40.02] Matlab risponde con: Transfer function: 1.5 -----------------s^2 + 14 s + 40.02

Forma in zeri/poli

dove K una costante reale e z un vettore colonna che rappresenta gli zeri e p rispettivamente un vettore colonna che rappresenta i poli del sistema.

Forma in zeri/poli
Una funzione di trasferimento gi costruita (ad esempio con listruzione tf) pu essere convertita nella forma guadagno-zeri-poli con listruzione sys_zpk=zpk(sys) Matlab risponde Zero/pole/gain: 1.5 ------------------(s+9.997) (s+4.003)

Forma in zeri/poli
La funzione zpk() pu anche essere utilizzata per costruire direttamente la funzione di trasferimento a partire dal guadagno k e dai vettori z e p degli zeri e dei poli >> k=1.5; >> z=[]; >> p=[-9.997 -4.003]; >> sys=zpk(z,p,k) Zero/pole/gain: 1.5 ------------------(s+9.997) (s+4.003)

Forma in zeri/poli
Con la funzione tf() si pu ancora passare dalla forma zeri/poli a quella polinomiale
>> sys Zero/pole/gain: 1.5 ------------------(s+9.997) (s+4.003) >> tf(sys) Transfer function: 1.5 -----------------s^2 + 14 s + 40.02

Espansione in fratti semplici


Assegnata una funzione razionale fratta b(s)/a(s) con sviluppo (o espansione, o scomposizione) in fratti semplici si intende lo sviluppo:
r b( s ) r r = 1 + 2 +L + n + k ( s) a ( s) s p1 s p2 s pn

Si utilizza la funzione residue Sintassi

[r, p, k]= residue(b, a)


Funziona anche in modo inverso, ossia dati i residui e le radici, la funzione residue fornisce i polinomi a(s) e b(s). Sintassi

[a, b]= residue(r, p, k)

Espansione in fratti semplici


Dove p in Matlab un vettore colonna dei poli, R un vettore colonna dei residui e k(s) un eventuale polinomio rappresentato da un vettore riga. Questa ultima forma molto usata per lantitrasformazione nel dominio tempo perch, in assenza del polinomio k(s), molto facile antitrasformare i singoli fratti di ordine uno e sommarne i contributi. In questo caso lespansione in fratti della funzione di trasferimento diventa del tipo:

Espansione in fratti semplici


I residui sono:
reali se i rispettivi poli sono reali complessi coniugati se lo sono i poli,

essi si ricavano mediante la relazione:

per cui lantitrasformata del tipo:

Espansione in fratti semplici Esempio Esempio


Antitrasformare la seguente trasformata di Laplace:

s +1 F (s) = 2 s + 5s + 6
Scomponendo in fratti semplici si ha:

F ( s) =
Da cui:

2 1 s+3 s+2

F (t ) = 2 e 3 t e 2 t

Visualizzazione delle risposte al gradino e allimpulso


step(sys) impulse(sys)

Step Response 0.5 0.4 0.3 0.2 0.1 0 0 2 Time (s ec) 4 6

0.3 0.2 Amplitude

Impulse Res pons e

A mpli tude

0.1 0

-0.1

2 Time (sec)

La funzione feedback
Dati i modelli del sistema in linea diretta e di quello di retroazione, permette di calcolare il sistema ad anello chiuso sys = feedback(sys1,sys2) ad esempio, immettendo il comando: tf(feedback(sys_dc,1)) si ottiene la funzione di trasferimento ad anello chiuso a retroazione unitaria: Transfer function: 1.5 -----------------s^2 + 14 s + 41.52

Esempio di costruzione di un sistema lineare


Ognuno dei componenti pu essere costruito autonomamente nelle varie forme disponibili (tf, zpk, ecc) G = zpk([],[-1,-1],1); C = 1; S = tf(5,[1 4]); F = tf(1,[1 1]);

Esempio di costruzione di un sistema lineare


>> openloop=S*C*G Zero/pole/gain: 5 ------------(s+4) (s+1)^2 >> T=feedback(G*C,S) Zero/pole/gain: (s+4) --------------------------------(s+4.426) (s^2 + 1.574s + 2.033)

Esempio di costruzione di un sistema lineare


>> Try=T*F Zero/pole/gain: (s+4) --------------------------------------(s+4.426) (s+1) (s^2 + 1.574s + 2.033) >> step(Try)
0.5 0.4 A mpli tude 0.3 0.2 0.1 0 0 2 Time (se c) 4 6 Step Response

Calcoli simbolici
Oltre alleffettuazione di alcoli numerico come quelli visti finora, Matlab consente anche leffettuazione di calcoli simbolici ((ossia calcoli analoghi a quelli che noi eseguiamo con carta e penna quando sviluppiamo il quadrato di un binomio) >> syms a b >> expand((a+b)^2) ans = a^2+2*a*b+b^2

Calcoli simbolici (equazioni)


Esempio di risoluzione di equazione di secondo grado
>> syms a b x >> solve('a*x^2+b*x+c=0') ans = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))] >> pretty(ans) [ 2 1/2] [ -b + (b - 4 a c) ] [1/2 --------------------] [ a ] [ ] [ 2 1/2] [ -b - (b - 4 a c) ] [1/2 --------------------] [ a ]

Calcoli simbolici (limiti)


Esempio di calcoli di limiti >> syms x >> limit(1/x,x,0,'right') ans = Inf >> limit(sin(x)/x,x,0) ans = 1

Calcoli simbolici (derivate)


Esempio di calcolo di derivate >> diff('3*x^2-2*x+1') ans = 6*x-2 >> diff('3*sin(5*x+2)') ans = 15*cos(5*x+2)

Calcoli simbolici (integrali)


Esempio di calcolo di integrali (indefiniti e definiti) >> int(x^2) ans = 1/3*x^3 >> pretty(ans) 3 1/3 x >> syms a b >> int(x^2,a,b) ans = 1/3*b^3-1/3*a^3

Polinomi in forma simbolica


E possibile passare dalla forma vettoriale di un polinomio a quella simbolica con la funzione poly2sym Loperazione inversa utilizza la funzione sym2poly >> num=[3 2 1] num = 3 2 1 >> num_s=poly2sym(num,s) num_s = 3*s^2+2*s+1 >> sym2poly(num_s) ans = 3 2 1

Trasformata di Laplace
La trasformata di Laplace di una funzione f(t) pu essere ottenuta tramite la funzione matlab laplace. Per esempio si voglia trovare la trasformata di Laplace della funzione f(t) = 5e-2t. Occorre innanzitutto definire la variabile t come simbolo >> syms t Successivamente si inserisce la funzione f(t); >> f=5*exp(-2*t); A questo punto dando il seguente comando >> L=laplace(f) Matlab risponde con: L = 5/(s+2)

Trasformata di Laplace
Per avere espressioni pi leggibili si possono usare i comandi simplify e pretty.
>> syms t s >> f=-1.25+3.5*t*exp(-2*t)+1.25*exp(-2*t); >> F=laplace(f,t,s) F = -5/4/s+7/2/(s+2)^2+5/4/(s+2) >> simplify(F) ans = (s-5)/s/(s+2)^2 >> pretty(ans) s - 5 ---------2 s (s + 2)

Antitrasformata di Laplace
Si voglia ora trovare lantitrasformata della funzione

Basta inserire il comando >> ilaplace(1/s-2/(s+4)+1/(s+5)) Matlab risponde con: ans = 1-2*exp(-4*t)+exp(-5*t)

Antitrasformata - Esempio
>> syms t s >> F=(s-5)/(s*(s+2)^2); >> ilaplace(F) ans = -5/4+(7/2*t+5/4)*exp(-2*t) >> simplify(ans) ans = -5/4+7/2*t*exp(-2*t)+5/4*exp(-2*t) >> pretty(ans) - 5/4 + 7/2 t exp(-2 t) + 5/4 exp(-2 t)

Antitrasformata - Esempio

>> F=10*(s+2)/(s*(s^2+4*s+5)); >> ilaplace(F) ans = -4*exp(-2*t)*cos(t)+2*exp(-2*t)*sin(t)+4

Funzioni di trasferimento in forma simbolica


Le funzioni di trasferimento normalmente utilizzate in Sistemi sono rapporti di polinomi >> num=3, num_s=poly2sym(num,'s') num = 3 num_s = 3 >> den=[1 4], den_s=poly2sym(den,'s') den = 1 4 den_s = s+4

Funzioni di trasferimento in forma simbolica


La funzione di trasferimento, come gi noto si costruisce con la funzione tf
>> tf(num,den) Transfer function: 3 ----s + 4

La forma simbolica della funzione di trasferimento si ottiene semplicemente dividendo i due polinomi in forma simbolica
>> num_s/den_s ans = 3/(s+4) >> pretty(ans) 3 ----s + 4

Funzioni di trasferimento in forma simbolica


Volendo visualizzare la risposta al gradino unitario occorre moltiplicare la f.d.t. per la trasformata del gradino (1/s) >> tf_s=num_s/den_s tf_s = 3/(s+4) >> Funct=tf_s/s Funct = 3/(s+4)/s >> ezplot(Funct)