Professional Documents
Culture Documents
Suceava, 1996
Capitolul I
1.1 Introducere
Matlab este un mediu interativ, de înaltă performanţă, utilizat pentru calcule ştiinţifice şi inginereşti.
MATLAB înglobează diverse posibilitaţi de lucru, cum ar fi analiza numerică, calculul matricial, procesare
de semnale şi trasarea grafică, într-un mediu uşor de utilizat, enunţurile şi soluţiile fiind exprimate exact
cum sunt scrise matematic, nefiind necesară o programare tradiţională.
Numele acestui mediu provine de la matrix laboratory. A fost dezvoltat pornind de la doua pachete de
programe, LINPACK şi EISPACK, reprezentând bazele soft-ului pentru calculul matricial.
Elementele de baza ale MATLAB-ului sunt matriciale, nefiind necesară o dimensionare a acestora.
Acest mediu de programare este util în rezolvarea problemelor numerice.
Pentru lansare se deschide, în mediul de programare Windows, grupul Matlab for Windows şi se da
un click pe icon-ul Matlab. La iniîializare, se afişează prompterul mediului, constând în simbolul >>. La
prompter se pot scrie liniile de comandă.
Pentru scrierea liniilor de comandă se utilizează tastatura calculatorului. Tastele săgeţi pot fi utilizate
pentru editarea liniilor sau pentru rechemarea unei comenzi anterioare (tasta săgeată sus).
O linie de comandă arată în modul următor:
log(sqrt(atan2(3,4)))
Tastele săgeţi acţionează asupra unor copii al liniilor de comandă anterioare, aceste copii
fiind salvate într-un buffer.
Funcţiile tastelor sunt prezentate în continuare:
Cea mai simlpă metodă de a introduce o matrice este scrierea explicită. De exemplu, introduând
linia de comandă:
A=[1 2 3 ;4 5 6;7 8 9]
Se obţine rezultatul:
A=
1 2 3
4 5 6
7 8 9
Matricea A este salvată în vederea unor prelucrări ulterioare. Matriciile de dimensiuni mari pot fi
introduse pe mai multe linii, utilizand RETURN în locul “,”. Pentru exemplificare, o matrice poate fi
introdusă astfel:
A= [ 1 2 3
4 5 6
7 8 9]
conduce la rezultatul:
x=
-1.3000 1.7321 4.8000
Elementele matricilor pot fi referite şi individual, cu indicele cuprins între paranteze rotunde. De
exemplu,
x(5)=abs(x(1))
va produce
x=
-1.3000 1.7321 4.8000 0 1.3000
Matricile de dimensiuni mari pot fi construite utilizând ca elemente matrici de dimensiuni mai mici.
De exemplu, se poate ataşa un nou rând matricii A prin comenzile:
r=[10 11 12]
A=[A;r]
rezultatul fiind:
A=
1 2 3
4 5 6
7 8 9
10 11 12
O matrice poate fi extrasă dintr-o matrice de dimensiune mai mare. De exemplu, comanda:
A=A(1:3,:)
va avea ca efect extragerea din matricea A a unei matrici formată din primele trei rânduri şi toate
coloanele matricii curente.
Expresiile introduse de utilizator sunt interpretate şi evaluate. În MATLAB declaraţiile sunt, de cele
mai multe ori de tipul:
varabilă = expresie.
sau simplu:
expresie.
Evaluarea unei expresii produce o matrice afişată pe ecran şi alocată unei variabile, în vederea
utilizării ulterioare. Dacă numele variabilei şi semnul “=” sunt omise, este creată automat o variabilă cu
numele ans (de la answer).
Dacă o linie de comandă se termină cu caracterul “,” afişarea rezultatului este inhibată. Dacă linia de
comandă este mai lungă decât o linie de ecran, se poate utiliza secvenţa “…” pentru indicarea continuării
scrierii liniei de comandă pe următoarea linie de ecran.
Numele variabilelor sunt formate din o literă, urmată de litere şi cifre. Sunt memorate doar primele
19 caractere ale numelor variabilelor.
MATLAB este sensibil la tipul de caractere utilizate, mici sau mari. Toate numele funcţiilor se scriu
cu litere mici.
who
Pentru numere este utilizată reprezentarea cu punct zecimal, cu semnul “_” în cazul numerelor
negative, sau în modul bază exponent. Exemplu de numere declarate corect sunt:
3
3.83745683
-77
1.896E-10
0.002
7.231E21
-308
Intervalul în care pot fi introduse numere este de 10 la 10308.
MATLAB are implementate multe funcţii in fişiere de tip m. De exemplu,
De asemenea există funcţii ce returnează valori speciale, cum ar fi pi, ce returnează valoarea lui π, sau
Inf, ce returnează valoarea ∞.
1.3.5. Numere complexe
Numere complexe sunt introduse in MATLAB utilzându-se funcţiile speciale I sau j. Exemple:
A=[1 2 ; 3 4]+I*[5 6 ; 7 8]
sau
A=[1+5*i 2+6*i ; 3+7*I 4+8*i]
Rezultatul declaraţiilor şi evaluărilor executate sunt afişate pe ecran. Pentru a explicita formatele
posibile, se consideră următorul exemplu: dându-se
x=[4/3 1.2345E-6]
help
help eig
Comanda anterioară va vea ca efect afişarea informaţiilor referitoare la valorile proprii ale unei matrici
(eig=eigenvalues), iar comanda:
help [
Pentru părăsirea mediului se va tasta quit sau exit. Terminarea sesiunii de lucru are ca efect
pierderea valorilor variabilelor din spaţiul de lucru. Înainte de terminare, se poate salva conţinutul spaţiului
de lucru utilizând comanda:
save
Ca urmare a acestei comenzi, se vor salva toate variabilele din spaţiul de lucru într-un fişier numit
matlab.mat. La următoarea sesiune de lucru, se poate restaura spaţiul de lucru cu comanda:
load
Comenzile anterioare pot fi folosite în joncţiune cu nume de fişiere sau numai pentru variabile
sectate.
save temp X
save temp x z y
1.3.9.1. Funcţii
MATLAB pune la dispoziţia utilizatorului o multitudine de funcţii. Unele dintre acestea sunt intrinsece,
iar altele sunt construite. De asemenea, există funcţii specifice domeniilor de lucru ale MATLAB-uli,
disponibile în modulele de istalare (MATLAB TOOLBOX). O caracteristică importantă a acestui mediu
este că utilizatorul îşi poate construi propriile funcţii, ele putând fi apelate exact ca funcţiile intrisece ale
mediului.
A=[1 2 3 ; 4 5 6 ; 7 8 0],
B=A’
conduc la:
B=
1 4 7
2 5 8
3 6 0
iar:
x=[-1 0 2]’
produce:
x=
-1
0
2
În principal, utiliându-se apostrof, are loc o transpunere formală a matricii. Dacă matricea este
complexă, atunci A’ este conjugata complexă transpusă. Acest lucru poate conduce uneori la rezultate
eronate, mai ales în cazul lucrului cu numere complexe. Pentru transpusa neconjugată se va utiliza A.’
sau conj(A’).
Operaţiile de adunare şi scădere a matricilor sunt simboloizate prin + şi -. Operatorii sunt definiţi
numai dacă matricile au aceaşi dimensiune. Operaţia de adunare şi scădere mai este definită şi atunci
când unul din operanţi este scalar (matrice cu o linie şi o coloană). De exemplu:
y=x-1
va produce:
y=
-2
-1
1
1.4.3. Înmulţirea matricilor
Operaţia este simbolizată prin *. Operaţia este validă numai în ipoteza concordanţei dintre
dimensiunile matricilor (indicele de interior). De asemenea se poate vorbi de produsul scalar a doi vectori,
definit ca:
x’*y sau y’*x
rezultatul fiind acelaşi. Sunt posibile şi produsele:
x*y’ sau y*x’
Alte operaţii de înmulţire pot fi executate în cazul operanzilor de tip matrice şi vector, şi scalar şi
vector, scalar şi matrice.
În MATLAB sunt doua tipuri de împărţiri, simbolizate prin \ şi /. Dacă A este o matrice nesingulară,
atunci A\B şi B/A corespund formal înmulţirii la stânga şi la dreapta a matricii B cu inversa lui A, adică
inv(A)*B şi B*inv(A), rezultatul fiind obţinut direct, fară calculul inversei matricii A. În general,
Expresia A^p denotă matricea A ridicată la puterea p. Operaţia este validă dacă A este matrice
pătratică si p este scalar.
Pentru aceste operaţii, situaţia este identică cu cea din cazul matricilor. Se utilizează aceleaşi
simboluri, + şi - .
Înmulţirea element cu element este simbolizată prin .*. Dacă A şi B au aceeaşi dimensiune, atunci
A.*B denotă produsul element cu element al celor două matrici. De exemplu, dacă:
z=x.^2
z=[1 4 9]
z=2.^[x y]
z=[2 4 8 16 32 64]
Important: ultimul exemplu ilustrează una din subtilităţile MATLAB-ului. Este dificil de văzut că exista
un spaţiu între 2 şi punct. Dacă acest spaţiu nu ar fi existat, punctul ar fi fost interpretat ca punct zecimal
asociat cu 2. MATLAB ar fi sesizat numai ^ şi ar fi înceracat să calculeze puterea unei matrici, lucru care
ar fi condus la o eroare, deoarece exponentul nu este pătratic. O alternativă pentru această operaţie ar fi
utilizarea parantezelor.
Comparaţia este făcută între elemente corespondente. Rezultatul este o matrice formată din
elemente 0 şi 1, reprezentând FALSE şi TRUE. De exemplu,
2+2=4
va fi 0.
Operatorii relaţionali pot fi utilizaţi pentru localizarea elementelor unei matrici, elemente ce satisfac
2
anumite condiţii. De exemplu, se consideră o matrice magică (matrice având elemente cuprinse între 1 şi n ,
având sumele pe linii şi coloane identice).
A=magic(6)
A=
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
Se poate observa că elementele divizibile cu 3 sunt dispuse la fiecare a treia diagonală a matricii. Pentru
a vedea acest lucru, se tastează:
P=(rem(A,3)==0)
ceea ce semnifică un test al egalitaţii cu 0 al resturilor împărţirii elementelor matricii A la 3.P va deveni o
matrice cu elemente 0 şi 1.
P=
0 0 1 0 0 1
1 0 0 1 0 0
0 1 0 0 1 0
0 0 1 0 0 1
1 0 0 1 0 0
0 1 0 0 1 0
Funcţia find este utilă în lucrul cu operatori relaţionali, servind la găsirea elementelor neutre într-o matrice
cu elemente 1 şi 0, si chiar a elementelor care satisfac o anumităm condiţie. De exemplu, dacă Y este un
vector, find(Y 3.0) va returna un vector conţinând indicii elemnetelor lui Y care sunt mai mici decât 3.
Declaraţiile:
i=find(y>3.0)
Y(I)=10*ones(i)
vor conduce la înlocuirea cu 10.0 a elementelor mai mari decât 3. Aceste operaţii sunt valide şi la lucrul cu
matrici, deoarece o matrice poate fi referită ca un vector coloană cu un singur indice.
If all(A<.5)
execută secvenţă de operaţii
end
Unele din funcţiie logice disponibile în MATLAB sunt prezentate în tabelul următor:
any condiţie logică
all condiţie logică
find găseşte indicii valorilor logice
exit caută dacă variabilele există
isnan detectează elemente care nu sunt numere
finite detectează valoarea infinit
isempty detectează o matrice fară elemente
isstr detectează şiruri de caractere
strcmp compară variabile de tipul şirurilor de caractere
k=linspace(-pi,pi,4)
conduce la:
k=
-3.1416 -1.0472 1.0472 3.1416
Elementele unei matrici pot fi accesate prin utilizarea indicilor lor, plasaţi între parenteze. O expresie
utilizată ca indice este rotunjită către cel mai întreg.
Exemplu:
A=(3,3)=A(1,3)+A(3,1)
În l9oc de indice se poate folosi şi un vector. Dacă, de exemplu, X şi V sunt vectori, atunci X(V) este
[X(V(1)), X(V(2))……….., X(V(n))]. Pentru matrici, indicii se pot utiliza pentru a referi submatrici. Dacă A este
matrice 10x10, atunci :
A(1:5,3)
va referi o submatrice cu 5 linii şi o coloană, constând din primele 5 elemente ale coloanei 3 a matricii A. În
mod identic,
A(1:5,7:410)
este submatricea formată din elementele primelor 5 rânduri ale ultimelor 4 coloane.
Dacă se utilizează doar cele două puncte, fară indici, atunci acestea se vor referi la toate elementele
liniilor sau coloanelor. De exemplu,
A(:,3) A(1:5,:)
va conduce la înlocuirea coloanelor 3,5 şi 10 ale matricii A cu primele 3 coloane ale matricii B.
Funcţiei de plasamentul celor două puncte, se pot întâlni situaţiile:
a) A=[1 2; 3 4; 5 6]
b=A(:)
va conduce la obţinerea unui vector coloană cu toate elementele nmatricii A.
b) dacă acestea sunt plasate în partea dreaptă, ele pot fi utilizate pentru redimensionarea unei matrici.
Pentru aceasta, matricea A trebuie să existe. În aceste condiţii, A(:) denotă o matrice de aceeaşi
dimensiune cu A, dar cu conţinut schimbat în partea dreaptă. Dacă A are 3 rânduri şi 2 coloane, atunci:
A(:)=11:16
Aranjează un vector de 6 elemente într-o matrice 3x2.
Vectorii de acest gen, creaţi,de obicei, prin operaţii relaţionale, pot fi utulizaţi pentru a referi
submatrici. Dacă, de exemplu, A este o matrice m x n şi L este un vector de lungime m, format din
elemente 0 şi 1, atunci:
A(L,:)
specifică rândurile matricii A unde elemntele lui L sunt nenule.
Pentru eliminarea unor elemente ale unui vector, se pot utiliza secvenţe de tipul:
x=x(x<=3*std(x))
sau
L=X(:,3)>100;
X=X(L,:);
ultima conducând la înlocuirea lui x cu acele rânduri ale lui X ale căror a treia coloană este mai mică
decât 100.
Declaraţia
x=[ ]
determină generarea unei matrici de dimensiune 0 x 0. Utilizarea acestei comenzi nu va conduce la o
eroare. Matricile vide există în spaţiul de lucru (deci declaraţia anterioară este diferită de declaraţia clear
x, care şterge pe x din lista variabilelor curente) dar au dimensiunea 0. Funcţia exit poate fi utilizată
pentru verificarea existenţei unei matrici, iar isempty indică dacă o matrice este vidă.
O posibilitate de a şterge rânduri sau coloane ale unei matrici este de a le declara vide. Astfel,
A(:,[2 4])=[ ]
va şterge coloanele 2 şi 4 ale matricii A.
Dacă A este o matrice de dimensiune n x n, cele n numere ce satisfac relaţia Av=λv poartă
denumirea de valori proprii ale matricii A. Ele sunt calculate utilizând funcţia eig(A) ce returnează valorile
proprii într-un vector coloană. Valorile şi vectorii proprii se pot obţine utilizând comanda [V,D]=eig(A). V
este matricea vectorilor proprii.
Exemplu:
V=
-0.7071 0.2182 -0.0921
0.0000 0.4364 -0.5523
-0.7071 0.8729 -0.8285
D=
-1.0000 0 0
0 -2.0000 0
0 0 -3.0000
MATLAB posedă o versiune mai veche a buclelor DO şi FOR. Acestea presupun executarea unei
instrucţiuni (sau secvenţă de instrucţiuni) de un număr determinat de ori.
Structura generală a unei bucle FOR este:
for v=expresie
secvenţă de instrucţiuni
end
Exemple de bucle For:
for i=1 : m
for j=1 : n
A(i,j)=1/(i+j-1);
end
end
A
n=max(size(t));
for j=1 : n
for i=1 : n
A(i,j)=t(i)^(n-j);
end
end
A(:,n)=onese(n,1)
for j=n-1:-1:1
A(:,j)=t.*A(:j+1)
end
Această buclă este utilizată atunci când se doreşte executarea unei instrucţiuni(sau secvenţă de
instrucţiuni) de un număr indefinit de ori, sub controlul unei condiţii logice. Forma generală este
următoarea:
while expresie
secvenţă de instrucţiuni
end
Exemple de bucle While:
n=1
while prod(1:n)<1.e100, n=n+1; end
n
E=zeros(A);
F=eye(A);
k=1;
while norm(E+F-E,1)>0
E=E+F;
F=A*F/k;
k=k+1;
end
Pentru a ilustra modul de folosire a acestor comenzi, se consideră două exemple. În primul este
efectuat un calcul dependent de semnul şi paritatea lui n, iar în cel de-al doilea este prezentată o
problemă din teoria numerelor.
Exemplul 1.
If n<0
A=negative(n)
elseif rem(n,2)==0
A=event(n) %par
else
A=odd(n) %impar
End
Exemplu 2. Se consideră un întreg pozitiv, oarecare. Dacă este par, se va divide cu 2, iar dacă este
impar, se va multiplica cu 3 şi se va aduna 1 la produs. Se va repeta acest algoritm pâna când se va ajunge
la valoarea 1. În teoria numerelor se pune problema dacă există un întreg pentru care programul rulează la
infinit. Programul ilustrează modul de folosire a comenzilor while şi if. De asemenea, sunt utilizate funcţiile
input (acceptă introducerea unei secvenţe de la tastaură) şi break.
while 1
n=input(‘Introduceţi un intreg pozitiv: ‘);
if n<=0, break, end
while n>1
if rem(n,2)==0
n=n/2
else
n=3*n+1
end;
end
end
MATLAB poate crea diverse tipuri de grafice, cum ar fi: 2D, 3D, liniare, logaritmice, semilogaritmice,
reprezentări în coordonate polare, etc. Câteva dintre modalitaţile de reprezentare a graficelor 2D sunt:
plot, loglog, semilogx, semilogy, polar şi bar. Comanda grid adaugă linii ajutătoare graficelor, iar
comenzile title(‘ text’), xlabel (‘text’), ylabel(‘text’) şi text (x,y,’text’) pot fi utilizate pentru plasarea de
etichete sau texte pe grafice. Sintaxa comenzii pentru trasarea graficelor include şi o serie de simboluri
opţionale ( . , +, * , o, x) precum şi câteva litere asignate culorilor (r,b,g,w) cu care lucrează mediul de
programare. De exemplu, comanda:
plot(t, y1, ‘r’, t, y2, ‘+b’)
va determina trasarea unor curbe de culoare roşie (y1) şi respectiv albastră (y2).
Scalarea graficelor este efectuată automat. Comana:
axis([xmin xmax ymin ymax])
forţează o scalare manuală a graficului. De exemplu, comanda:
axis([-10 40 –60 60])
va produce o reprezentare cuprinsă intre -10 şi 40 pe axa x şi respectiv –60 şi 60 pe axa y.
ăn continuare se vor prezenta câteva exemple ce ilustrează posibilitaţile MATLAB-ului de a
reprezenta diverse funcţii.
Exemplu 1.
Să se traseze în coordonate x-y evoluţia:
t 0 1 2 3 4 5 6 7 8 9 10 11 12
y 0 0,55 1 2 4 7,2 11 14 15,1 16 16 16 16
Pentru un numar mic de date, acestea pot fi introduse în MATLAB utilizând paranteze pătrate:
t=[0 1 2 3 4 5 6 7 8 9 10 11 12];
y=[0 0.55 1 2 4 7.2 11 14 15.1 16 16 16 16];
plot(t,y)
grid
Rezultatul execuţiei secvenţei de comenzi anterioare este afişarea următorului grafic:
Pentru un numâr mare de date, se poate utiliza un editor de texte pentru a crea un fişier cu extensia
.m. Tastarea comenzii nume_fişier va produce aducerea acelor date din fişier în spaţiul de lucru.
Exemplul 2.
Să se reprezinte grafic funcţia y=sin(x) pentru -4π x 4π.
x=-4*pi: 0.05:4*pi;
y=sin(x)/x;
plot(x,y), title(‘Exemplul 2- Funcţiasin(x)/x’)
xlabel(‘Radian’)
ylabel(‘sin(x)/x)
grid
Fig. 1.2. Evoluţia semnalului din exemplu 2.
subplot va împărţi spaţiul pentru trasarea graficelor în mai multe subspaţii, această posibilitate de lucru
fiind utilă atunci când se doreşte trasarea mai multor grafice în acelaşi timp. Comanda subplot(mnp)
împarte spaţiul în m x n subspaţii, utilizându-l pe cel cu numărul de ordine p pentru reprezentarea grafică.
Acest lucru este demonstrat în exemplul următor.
Exemplul 3.
a) să se traseze grafic funcţia v=120sinωt şi i=100sin(ωt-π/4) în raport cu ωt (în colţul din stânga sus).
b) să se traseze p=vi (dreapta sus)
c) dacă Fm=3.0 , să se traseze fa=Fmsinωt, fh=Fmsin(ωt-2π/3) şi fc=Fmsin(ωt-4π/3) în funcţie de ωt
(stânga jos).
d) dacă fR=3Fm să se construiască o reprezentare în coordonate polare (dreapta jos).
Fm=3.0
fa=Fm*sin(ωt);
fb=Fm*sin(ωt-2*pi/3);
fc= Fm*sin(ωt-4*pi/3);
subplot(223),plot(wt,fa,wt,fb,wt,fc)
title(‘Faze’)
xlabel(‘wt-radieni’);
fR=3/2*Fm(wt+1)/(wt+1);
subplot(224),polar(wt,fR)
title(‘Coord polare’)
Rezultatul execuţiei comenzilor de mai sus este prezentat în figura următoare:
J0 x2 + y2
in domeniul –12<x<12, -12<y<12.
Următoarele comenzi:
clg
[x,y]=meshdom(-12:.6:12, -12:.6:12);
r=sqrt(x.^2+y.^2); z=bessel(0,r);
m=[-45,60];
mesh(z,m)
Când este apelat un astfel de fişier, MATLAB execută comenzile pe care le găseşte în aceasta, fără a
aştepta introducerea lor de la tastaură. Aceste fişiere sunt utile în rezolvarea unor probleme ce implică un
număr mare de instruncţiuni. Aceste instrucţiuni operează asupra variabilelor din spaţiul de lucru. După
terminarea execuţiei, variabilele utilizate ramân în sapţiul de lucru.
De exemplu, secvenţa de instrucţiuni următoare poate fi scrisă într-un fişier f.m
%Fisier m pentru calcularea numerelor lui Fibonacci
f=[1 1]; i=1;
while f(i)+f(i+1)<100
f(i+2)=f(i)+f(i+1);
i=i+1;
end
plot(f)
Dacă la promterul mediului se tastează f, atunci se va executa secvenţa anterioară ce calculează o
secventă a numerelor Fibonacci.
Dacă prima linie a unui fişier conţine cuvântul function, atunci fişierul este de tip funcţie. O funcţie
diferită de un fişier text prin aceea că argumentele pot fi transmise, varibilele definite şi manipulate în
interiorului fişierului fiind locale. De exemplu, o funcţie pentru calcularea valorii medii este următoare:
Function y=medie(x)
%Calculeaza media.
%Pentru vectori returneaza media elemnetelor.
%Pentru matrici returneaza un vector linie ce contine
%media elementelor fiecarei coloane a matricii.
[m,n]=size(x);
if m==1
m=n
end
y=sum(x)/m;
Existenţa acestui fişier defineşte o nouă funcţie MATLAB. Presupunând că numele fişierului este
medie.m, atunci această funcţie poate fi utilizată ca orice alta.
Elementele ce apar la un fişier funcţie sunt:
• prima linie conţine numele funcţiei, argumenetele ei precum şi argumentele ce vor fi returnateş
• simbolul % indică faptul că restul liniei este un comentariu;
• liniile de comentariu de la începutul fişierului vor fi afişate ca informaţii ajutătoare, la tastarea
comenzii help medie;
• variabilele m, y şi n sunt variabile locale;
• o funcţie poate returna şi un număr mai mare de argumente sau poate primi un număr mai mare de
argumente, prima linie punând în evidenţă acest lucru. De exemplu, function[x, y] = nume functie(z)
sau function x = nume functie(z, y, m). Se poate observa că numărul de argumente de intrare şi ieşire
sunt elemente importante în construcţia funcţiilor. MATLAB este prevăzut cu două funcţii pentru
aflarea acestor numere, şi anume nargin şi narg.
Capitolul II
2.1. Introducere
MATLAB lucreaza cu un singur tip de obiecte, si anume matrici numerice, eventual avand ca
elemente numere complexe. Modulul Control System Toolbox poate fi utilizat pentru sisteme liniare,
invariante in timp.
Un sistem liniar, invariant in timp, poate fi reprezentat cu ajutorul unui set de ecuatii diferentiale de
ordinul I. In spatiul starilor, aceste ecuatii pot fi scrise dupa cum urmeaza:
.
x(t ) = Ax(t ) + Bu (t )
y (t ) = Cx(t ) + Du (t )
unde u este vectorul marimilor de intrare, x este vectorul variabilelor de stare si y este vectorul variabilelor de
iesire.
Sistemele astfel reprezentate pot fi usor manipulate in MATLAB. De exemplu daca un sistem de
intirziere de ordinul II, are polii caracterizati de pulsatia naturala ω n = 1.5 , iar factorul de amortizare este
ξ = 0.2 , ecuatiile de stare corespunzatoare sistemului pot fi reprezentate in MATLAB astfel:
wn= 1.5;
z=0.2;
a=[0 1; -wn^2 –2*z*wn];
b=[0;wn^2];
c=[1 0];
d=0;
O reprezentare echivalenta a sistemelor este functia de transfer. Aceasta este defenita ca fiind:
Y (s ) = G (s )U (s )
unde
G (s ) = C (sI − A) B + D
−1
G (s ) =
M (s )
=k
(s − z1 )(s − z 2 )K (s − z m )
N (s ) (s − p1 )(s − p2 )K (s − pn )
unde N (s ) si M (s ) sunt polinoame in s , avind gradele n respectiv m. Conditia de realizabilitate fizica a
sistemului se poate exprima prin n ≥ m . Radacinile celor doua polinoame pot fi calculate utilizand functia
roots. Functia poly returneaza coeficientii polinomului ale carui radacini sunt elementele unui vector.
Exemplu:
r=roots(p)
r=
-1.2267 +1.4677i
-1.2267 -1.4677I
-0.5466
pp=poly(r)
pp=
1.0 3.0000 5.0000 2.0000
O functie de transfer poate fi descompusa in fractii simple. Pentru un sistem cu o singura intrare si o
singura iesire:
M (s ) rn
G (s ) =
r1 r2
= + + ... + + k ( s)
N (s ) (s − p1 ) (s − p 2 ) (s − p n )
Un vector p contine polii functiei de transfer, un vector r va contine reziduurile corespondente polilor
din p. Functia de transfer poate fi convertita la aceasta reprezentare utilizand functia residue.
2s 3 + 9s + 1
G (s ) =
s 3 + s 2 + 4s + 4
b=[2 0 9 1];
a=[1 1 4 4];
[r, p, k]=residue(b,a)
r=
0.0000-0.2500i
0.0000+0.2500i
-2.0000
p=
0.0000+2.0000i
0.0000-2.0000i
-1.0000
k=
2
−2 j 0.25 − j 0.25 −2 1
G (s ) = 2 + + + = 2+ + 2
s + 1 s + j2 s − j 2 s +1 s + 4
Pentru a ilustra modul de selectie a unui set de variabile de stare, consideram un model al unui
sistem liniar de ordin n descris de urmatoarea ecuatie diferentiala:
dny d n−1 y
+ a0 y = u (t )
dy
n
+ a n −1 n −1
+ .... + a1
dt dt dt
unde y (t ) este iesirea sistemului si u (t ) este intrarea sa. Un model de stare pentru acest sistem nu este
unic, fiind dependent de alegerea unui set de variabile de stare. O modalitate de alegere a unui set de
variabile de stare, este urmatoarea:
x1 = y
.
x2 = y
........
x n = y n−1
.
Vom exprima : x k = x k +1 pentru k = 1,2,....., n − 1
dny
Apoi vom rezolva pentru si vom inlocui y si derivatele sale prin variabilele de stare corespunzatoare,
dt n
rezultand:
.
x1 = x2
.
x 2 = x3
........
.
x n−1 = x n
.
x n = − a 0 x1 − a1 x 21 − .... − − a n −1 x n1 + u (t )
sau in forma matriciala:
. 0 1 0 ... 0 x1 0
x. 1
x2 0 0 1 ... 0 x 2 0
= : : : ... : ⋅ : + : u (t )
. :
x n−1 0 0 0 ... 1 x n−1 0
.
−a − a1 − a2 ... − a n−1 x n 1
x n 0
ecuatia iesirii fiind:
y = [1 0 0 ... 0]x
Exemplul 1.
Functia ode2phv.m converteste o ecuatie diferentiala ce caracterizeaza un sistem in ecuatiile de stare ale
sistemului. Pentru sistemul descris de:
d3y d2y
+ 6 + 8 y = 10u (t )
dy
2 3
+ 4 2
dt dt dt
aceasta functie va returna matricile A,B,C. Apelarea ei se poate face in urmatorul mod:
ai=[2 4 6 8];
k=10:
[A,B,C]=ode2phv(ai,k)
rezultatul fiind:
0 1 0 0
A= 0 0 1 B = 0 C = [1 0 0]
− 4 − 3 − 2 5
Exsemplul 2.
In cazul sistemelor electrice, variabilele de stare vor fi legate de elementele ce inmagazineaza energie.
Pentru exemplificare, se considera sistemul din figura urmatoare:
4Ω 2H
+ +
iR iL 1Ω
+
- 0.25 F 0.5 F
V1 iS
dv c1
0.25 + iL − iR = 0
dt
v − v c1
iR = i
4
dv v
0.5 c 2 − i L + c 2 − i S = 0
dt l
di L
2 + v c 2 − v c1 = 0
dt
Aceste ecuatii pot fi scrise sub forma intrare-stare-iesire, dupa cum urmeaza:
⋅
v⋅ c1 − 1 0 − 4 vc1 1 0
v
v c 2 = 0 − 2 2 ⋅ vc 2 + 0 2 ⋅ i
⋅
iS
i L − 0.5 0.5 0 iL 0 0
2.3.2. Conversia: functie de transfer-spatiul starilor
converteste sistemul dat sub forma functiei de transfer in reprezentare in spatiul starilor.
conduc la:
sau:
Y (s )
G (s ) = = C (sI − S ) ⋅ B + D
−1
U (s )
[num,den]=ss2tf(A, B, C, D, i) converteste ecuatia de stare pentru functia de transfer pentru intrarea i.
Exemplu:
[z,p]=ss2zp(A,B,C,D,1)
z=
-1
-2
p=
-0.3376 + 0.5623i
-0.3376 - 0.5623i
-2.3247
Unul din motivele diagonalizarii matricii A, presupunand ca avem valori proprii distincte, este ca
acestea sunt toate localizate pe diagonala principala. Rezulta deci ca matricea de tranzitie a starilor este de
λ1t
asemenea diagonala,cu elementele de pe diagonala x , x λ2t , K , x λn t .
.
Dandu-se sistemul liniar x = Ax + Bu (t ) , unde A are valori proprii distincte, este de dorit a se gasi
matricea nesingulara P astfel incat aplicand transformarea:
x& (t ) = Px(t )
~
sa transforme ecuatia de stare de mai sus in forma canonica
~ ~
x& (t ) = A x(t ) + Bu (t )
~
cu a dat de matricea diagonala:
~ ~
A = P −1 AP si B = P −1 B
In general, sunt cateva metode de a gasi matricea P. Astfel, matricea P poate fi formata prin utilizarea
valorilor proprii ale matricii A.
.
x.1 0 1 0 x1 10
x = 0 1 1 ⋅ x + 0 ⋅ u
.2 2
x3 1 − 2 3 x3 0
y = [1 0 0]x
[P,L]=eig(A);L este matricea valorilor proprii
P este matricea corespunzatoare vectorilor proprii
a=inv(P)*A*P;
b=inv(P)*B;
P=
-0.7071 0.2182 -0.0921
0.0000 0.4364 -0.5523
-0.7071 0.8729 -0.8285
a=
-1.0000 0.0000 0.0000
0.0000 -2.0000 0.0000
0.0000 0.0000 -3.0000
b=
2.8284
13.7477
10.8628
x& = Ax + Bu
daca matricea
S= B[ AB A 2 B ... A n−1 B ]
este nesingulara, atunci exista o transformare nesingulara:
~ ~
x& (t ) = A x(t ) + B u (t )
~
unde:
0 1 0 K 0 0
0 0 1 K 0 0
~ ~
A= M M M M M si B = M
0 0 0 K 1 0
− a1 − a2 − a3 K − a n 1
~ ~
A = PAP −1 si B = PB
Matricea P este data de:
P1
PA
P=
1
M
n −1
P1 A
unde:
P1 = [0 0 K 1] B [ AB AB 2 K A n−1 B ]
−1
Exemplu.
Fisierul ss2phv.m este dezvoltat pentru a indeplini transformarea de ami sus [a,b]=ss2phv(A,B) va returna a
si b, reprezentand matricile ecuatiei de stare, dupa transformarea nesingulara a starii.
x& (t ) = Ax(t ) + Bu (t )
φ (t ) = L−1 [Φ (s )]
este cunoscuta ca matricea de tranzitie a starilor. Astfel, solutia ecuatiei de stare este:
τ
x(t ) = φ (t ) ⋅ x (0 ) + ∫ φ (τ ) ⋅ Bu (t − τ )dτ
0
Daca a este nesingulara, atunci ecuatia de mai sus poate fi simpliicata pentru a da raspunsurile la impuls,
treapta si rampa.
Pentru intrare de tip impuls, raspunsul este:
x(t ) = φ (t ) ⋅ x (0 ) + A −1[φ (t ) − I ] ⋅ B ⋅ K
( ) [φ (t ) − I − At ]B ⋅ K
x(t ) = φ (t ) ⋅ x (0 ) + A 2
−1
2.3.6. Transformata Laplace a matricii de tranzitie a starii, Φ(s )
s n−1 ⋅ E n−1 + s n− 2 ⋅ E n −2 + K + E0
Φ (s ) = (sI − A)
−1
=
a n s n + a n −1 s n−1 + K + a1 s + a 0
Fisierul Itstm este dezvoltat pentru a calcula Φ(s ) in concordanta cu algoritmul de mai sus.
Exemplu:
E=
1 0
0 1
E=
5 -1
2 2
a=
1 7 12
Deci:
1 0 5 − 1 s + 5 − 1
0 1 s + 2 2 2 s + 2
Φ (s ) = =
s 2 + 7 s + 12 (s + 3)(s + 4)
2.3.7. Evaluarea lui Φ(s ) din valorile caracteristice ale lui A. Metode Cayley-Hamilton.
Teorema Cayley-Hamilton stabileste ca daca ecuatia caracteristica a unei matrici patratice A este:
λn − a1λ n−1 − K − a n = 0
A n − α 1 A n −1 − K − α n I = 0
1 λ1 λ12 K λ1 n−1
1 λ12 λ2 2 K λ 2 n−1
e −λt = 1 λ3 λ3 2 K λ3 n−1 K
M M M M M
1 λ λn 2 K λ n
n −1
n
unde valorile λ sunt valori proprii distincte ale matricii A. Cand soua valori proprii sunt egale, de exemplu
cand λ2 = λ3 , atunci al treilea rand al matricii de mai sus este inlocuit de:
de λt
dλ
=
d
dt
(
k1 + λk1 + ... + λn−1 k n )
Fisierul strm.m este dezvoltat bazandu-se pe metoda Cayley-Hamilton. Aceasta functie evalueaza matricea
de tranzitie a starii in forma inchisa, Valorile proprii multiple sunt de multiplicitate 2. exemplul urmator
demonstreaza aceste functii.
E=
1 0
0 1
E=
5 -1
2 2
a=
1 7 12
Deci,
1 0 5 − 1 s + 5 − 1
0 1 s + 2 2 2 s + 2
Φ (s ) = =
s 2 + 7 s + 12 (s + 3)(s + 4)
Rezultatul este urmatorul:
Procedura practica pentru gasirea raspunsului in timp al unui sistem este utilizarea simularii digitale.
Reprezentarea in spatial starilor ne perminte sa simulam un sistem pe calculator.
O prima posibilitate de aflare a solutiilor este utilizarea functiilor ode23 si ode45.
Pentru sistemele liniare continue in timp, documentatia aferenta pentru MATLAB, Control system
toolbox, furnizeaza functiile [y,x]=impulse(A, B, C, D, iu, t) si [y,x]=step(A, B. C, D, iu, t) care obtine
raspunsul la impuls si raspunsul la treapta utilizand ecuatia de stare. Functia [y,x]=lsim[A, B, C, u, t]
simuleaza ecuatia de stare cu intrare arbitrara.
x&1 0 1 0 x1 1
x& = 0 0 1 ⋅ x 2 + 1 ⋅ u
2
x& 3 − 6 − 11 − 6 x3 1
y = [1 1 0]x
se da:
1
x(0 ) = 0.5
− 0.5
Se cere sa sedetermine x(t) si y(t), r(t) fiind intrare de tip treapta.
Exeplu.
Pentru sistemul anterior sa se traseze y(t) si x(t), intrarea semnalului fiind r(t)=sin(2 π t).
Fisierul blkbuild (MATLAB Control system toolbox) si functia connect convertesc diagrame bloc la
modele in spatial starilor. Blocurile functiei de transfer sunt numerotate secvential de la 1 la nr. De blocuri.
Functia nblocks defineste numarul total de blocuri si blbblock converteste fiecare bloc la o reprezentare in
spatial starilor nelegata (neconectata).
Expresia [A,B,C,D]=connect(a,b,c,d,q,iu,iy) conecteaza blocurile in concordanta cu o matrice
predefinita q care specifica interconectarile. Primul element al fiecarui rand al matricei q este numarul
blocului. Restul elementelor indica sursa blocurilor ce intra in sumator. Cand intrarea in sumator este
negative numarul blocului este introdus cu semnul minus. Elementele in si iy sunt doi vectori linie, memorand
blocurile de intrare si iesire. In final, pentru a obtine functia de transfer globala, [num,den]=ss2tf(A,B,C,D,iu)
calculeaza functia de transfer de la intrarea iu.
R(s) + + 4 1 1 C(s)
1 - 0.5
1 - - 2 s+4 s+2 s+3
3 4 5
2
6
5
7
1
8
Fig. 2.4. Schema bloc functionala a sistemului
2
G (s ) =
s + 13s + 56s + 80
3 2
Control system toolbox contine 4 functii care sunt utilizate in constructia unui model. append
combina functionalitatea a doua sisteme in spatial starilor formand un model mai complex. Functiile parallel
si series conecteaza doua sisteme in spatiul starilor inparalel, respectiv in serie. In final, functia ode
genereaza matricile A,B,C,D pentru un sistem de ordin doi.
Capitolul III
ω 2n
G( s) =
s 2 + 2ξω n s + ω n
2
unde ωn este pulsaţia naturală. Pulsaţia naturală este pulsaţia de excitaţie, dacă toate amortizările sunt
şterse. Valoarea sa ne dă o indicaţie asupra vitezei răspunsului. ξ
este factorul de amortizare. Acesta oferă informaţii despre natura răspunsului tranzitoriu.
Răspunsul în timp al unui sistem de întârziere de ordinul 2 este dat de:
e −ξω n nt
y (t ) = 1 − sin(ω n 1 − ξ 2 t + ϕ )
1−ξ 2
Timpul de suprareglare este obţinut prin anularea derivatei expresiei lui y(t).
π
ts =
ωn 1 − ξ 2
πξ
−
1−ξ 2
y (t s ) = 1 + e
πξ
−
1−ξ 2
σ =e 100(%)
Timpul de răspuns este considerat ca fiind de ordinul a 4 constante de timp, ceea ce înseamnă că:
ts=4/ξωn
Funcţia timespec ( num, den ) returnează performanţele în domeniul timp al sistemelor automate:
suprareglajul (overshoot), timpul de suprareglare (peak time), timpul de creştere (rise time) şi timpul de
răspuns (settling time).
Zerourile unei funcţii de transfer afectează amplitudinea răspunsului, dar nu şi natura acestuia. Dacă
zeroul este apropiat de polii dominanţi ai sistemului, acesta va avea influenţe asupra răspunsului
tranzitoriu al sistemului. Timpul de creştere şi timpul suprareglare vor avea valori mai mici în timp ce
suprareglajul va creşte. Dacă poziţia zeroului este depărtată de polii dominanţi, atunci răspunsul este
aproximativ identic cu cel al unui sistem de ordinul 2.
Deoarece polii funcţiei de transfer în buclă închisă sunt rădăcinile ecuaţiei caracteristice, ei
controlează direct răspunsul tranzitoriu al sistemului . Timpul de creştere şi timpul de suprareglare vor avea
valori mărite, suprareglajul va fi mai mic, acestea ducând la obţinerea unui răspuns mai greoi al sistemului.
Pe măsură ce polul introdus se deplasează la stânga polilor dominanţi, efectul acestuia scade, deoarece
termenul exponenţial introdus de el se anulează cu atât mai repede cu cât este mai depărtat de polii
dominanţi . Dacă este suficient de depărtat , atunci sistemul poate fi aproximat cu un sistem de întârziere de
ordinul 2.
Răspunsul unui sistem de ordinul 3 cu un zerou suplimentar poate fi exprimat prin:
ω n 2 (1 + a + s ) K
Y ( s) =
(1 + Ts )( s + 2ξω n s + 1) s
2
1 − 2ξaω n + a 2ω n Kω n T (a − T )
2 2 1
K −
y (t ) = K + e ξω nt sin(ω n 1 − ξ 2 t + ϕ ) + e T
1 − 2ξTω n + T 2ω n 1 − 2ξTω n + T 2ω n
2 2
1−ξ 2
unde:
a 1 − ξ 2 ωn 1 − ξ 2 ω nT 1− ξ 2
ϕ = arctg − arctg − arctg
1 − aξω n 1 − Tξω n −ξ
Funcţia y=stepzwn ( z , ωn , R , a , T , t ) determină răspunsul pentru sistemul de ordinul 3 descris
anterior, unde z este factorul de amortizare, ωn pulsaţia naturală, R este amplitudinea treptei de intrare .
Pentru un sistem de ordinul 2, a şi T sunt setate la 0. Control System Toolbox oferă utilizatorului funcţiile
y=impuls ( num , den , t ), y=step ( num , den , u , t ) şi y=Isim ( num , den , u , t ) pentru determinarea
răspunsului în timp al sistemului.
num = [ 10 , 25] ;
den = [ 0.16 1.96 10 25 ] ;
t = 0 : 0.02 : 2 ;
y = step(num, den, t);
plot(t, y);
xlabel(‘t-sec’)
ylabel(‘y(t)’), grid, pause
timespec(num, den)
Exemplul 2. Să se determine răspunsul indicial, precum şi performanţele în domeniul timp ale sistemului
descris de funcţia de transfer:
Y ( s) 25(1 + 0.4 s)
G( s) = =
U ( s) (1 + 0.16 s)( s 2 + 6 s + 25)
G1(s)
- s(s + 1)
1 + es
G2(s)
z = 0.2800
wn = 4.0906
Peak time = 0.803239
Percent overshoot = 39.9965
Rise time = 0.314311
Settling time = 3.37011
Din schema bloc rezultă funcţia de transfer a sistemului:
2
G(s) = d/ [s + (de + 1)s + d]
Răspunsul în frecvenţă al sistemului este definit ca răspunsul sistemului atunci când la intrarea
acestuia se aplică un semnal de tip sinusoidal. Să considerăm un sistem cu funcţia de transfer G(s) şi o
intrare sinusoidală u(t)=Asinωn.
Utilizând transformata lui r(t), transformata Y(s) a ieşirii sistemului este:
AωG ( s )
Y ( s) =
s2 + ω 2
Dezvoltarea în fracţii simple este:
K1 K '
Y ( s) = + 1 + ∑ termeni generati de polii lui G(s)
s− j s+ j
Polii lui G(s), pentru situaţia în care sistemul este stabil, au valori reale negative sau, dacă sunt
complecşi conjugaţi au partea reală negativă. Ca urmare ei nu au aport la răspunsul sistemului, y(t).Deci,
răspunsul în spaţiul sistemului este dat de transformata Laplace inversă a primilor doi termeni ai lui Y(s).
y(t) = A/G(jω)/sin(ωt + θ )
Din această ecuaţie se poate vedea că ieşirea sistemului are aceeaşi frecvenţă ca şi intrarea, şi poate fi
obţinută prin multiplicarea mărimii de intrare cu / G(jω) / şi modificarea fazei cu argumentul lui G(jω) şi
unghiul θ pentru toate ω, constituie răspunsul în frecvenţă al sistemului. Corelarea între răspunsul în
frecvenţă şi răspunsul tranzitoriu este indirectă, exceptând cazul sistemelor de ordin doi. În practică
caracteristica răspunsului în frecvenţă este pusă la punct prin utilizarea unor criterii diferite de proiectare,
care vor avea ca rezultat obţinerea unui răspuns tranzitoriu acceptabil.
Să considerăm răspunsul în frecvenţă al unui sistem de ordin întâi cu următoarea funcţie de transfer:
1
G( s) =
τs + 1
Pentru s = jω se poate scrie:
1
G ( jω ) = e jΦ (ω )
1+τ ω 2 2
unde
-1
Φ(ω) = -tan τω.
Caracteristicile Bode pentru sistemul de mai sus ( τ=10 ) sunt date în figura următoare:
Lăţimea de bandă a sistemului este definită ca valoarea pulsaţiei la care mărimea răspunsului în
frecvenţă este redus la 1/√2 din cea mai mică valoare a frecvenţei . Această pulsaţie este notată cu ωB.
Pentru sistemul de ordinul întâi, lăţimea de bandă este dată de ωB = 1/τ.
Acum se consideră funcţia de transfer standard a unui sistem de ordin doi
ωn 2
G( s) =
s2 + 2ξω n s + ω n
2
Reprezentarea răspunsurilor în frecvenţă pentru ξ =0.5 şi ωn = 2 daţi este dată în figura următoare:
Pentru ξ constant, creşterea lui ωn determină creşterea lăţimii de bandă cu acelaşi factor. Acesta
corespunde la o descreştere a timpului de suprareglare şi a timpului de creştere a răspunsului tranzitoriu.
Deci pentru creşterea vitezei răspunsului unui sistem este necesară creşterea lăţimii de bandă a sistemului.
Pentru un sistem particular o legătură aproximativă este dată de :
ωBtc ≈ constant
ωn 2
G( s) =
s 2 + 2ξω n s + ω n
2
ω r = ω n 1 − 2ξ 2
1
M pω =
2ξ 1 − ξ 2
Răspunsul în frecvenţă este obţinut utilizând funcţia MATLAB g=freqs( num, den, w). Această funcţie
evaluează g pentru domeniul specificat al frecvenţei ω. num şi den sunt vectori linie conţinând coeficienţii
numărătorului şi numitorului funcţiei de transfer. Ultima versiune de MATLAB pune la dispoziţia utilizatorului
funcţia bode(num, den) care permite trasarea caracteristicilor Bode.
Funcţia frqspec(w, mag) este dezvoltată pentru returnarea lui ωr, Mpω şi ωB bazată pe argumentele
w, mag.
750
G( s) =
s + 36 s + 205s + 750
3 2
Comenzile:
a = [1 36 205 750]
r = roots(a)
vor determina polii funcţiei de transfer, care sunt: s1= -3 + j4, s2= -3 –j4, s3= -30. Deci funcţia de
transfer poate fi scrisă ca:
2
G(s) = 750[(s - 30)(s2 + 6s + 25)] = 25/[(1 + 0.333s)(s + 6s + 25)]
Deoarece polul s3 este destul de depărtat de polii dominanţi s1 şi s2, efectul lui poate fi neglijat. Deci
un sistem echivalent pentru sistemul iniţial este cel descris de funcţia de transfer:
2
G(s) = 25/(s + 6s + 25)
num1 = 25;
den1 = [1 6 25]; %sistemul de ordinul 2
t = 0:.02:2;
y1 =step(num1, den1, t)
timespec(num1, den1)
w = 0: .02:8;
g = freqs(num1, den1, w)
mag1 = abs(g)
frqspec(w, mag1)
num2 = 750;
den2 = [1 36 205 750]; % sistemul iniţial
y2 = step(num2, den2, t);
timespec(num2, den2);
g =freqs(num2, den2, w);
mag2 = abs(g); frqspec(w,mag2)
Răspunsurile indiciale şi modulele funcţiilor de transfer ale celor 2 sisteme sunt reprezentate în
fig.3.5.
Comparând cele rezultate se poate concluziona că aproximarea făcută duce la schimbări
neesenţiale în evoluţia celor 2 sisteme.
Specificaţiile pentru performanţele celor 2 sisteme sunt următoarele:
După cum se poate observa din figura următoare, aproximările făcute sunt suficient de bune.
Capitolul IV
Obiectivul unui sistem de control este de a controla ieşirea y in funcţie de intrarea u prin elemente ale
sistemului automat. Câteva din caracteristicile esenţiale ale sistemelor de reglare sunt descrise in
următoarele subcapitole.
4.1. Stabilitatea
Pentru ca un sistem sa poată fi utilizat, trebuie sa fie stabil. Un sistem liniar invariant in timp este
stabil daca fiecare variaţie a intrării produce o variaţie a ieşirii. Aceasta caracteristică se numeşte
stabilitate. Stabilitatea unui sistem poate fi privită din doua puncte de vedere: stabilitate IMEM şi
stabilitate internă. Toate abordările din acest capitol vor fi considerate numai din punctul de vedere al
stabilităţii IMEM.
Un sistem este stabil IMEM dacă si numai dacă polii sistemului in buclă închisă sunt plasaţi în semiplanul
complex stâng. De aceea, o condiţie necesară si suficientă ca un sistem de reglare să fie stabil IMEM
este ca toţi polii funcţiei de transfer a sistemului să aibă partea reala negativă.
Stabilitatea unui sistem liniar invariant în timp poate fi verificată prin utilizarea funcţiei impulse (Control
System Toolbox) pentru a obţine răspunsul la impuls al sistemului. Sistemul este stabil daca răspunsul său
la impuls tinde la zero când timpul tinde la infinit. O altă modalitate de a determina stabilitatea unui sistem
este prin simulare.
Funcţia Isim poate fi utilizată pentru a observa ieşirea pentru intrări tipice. Aceasta este utilizată în
particular pentru sisteme neliniare.
Funcţia MATLAB roots poate fi utilizată pentru a obţine rădăcinile ecuaţiei caracteristice. În teoria
clasică a controlului, câteva tehnici au fost dezvoltate pentru analiza stabilităţii. Una din aceste tehnici este
criteriul Routh-Hurwitz. În acest capitol se va prezenta utilizarea unui program simplu bazat pe criteriul
Routh-Hurwitz. Se va considera că gradul de stabilitate al unui sistem oferă informaţii despre comportarea
lui. Se pune întrebarea când un sistem este stabil si când este relativ stabil. Uzual, stabilitatea relativă este
corelata cu viteza răspunsului si cu suprareglajul. Alte metode des utilizate pentru studiul stabilităţii sunt:
diagramele Bode, locul rădăcinilor, criteriul Nyquist si criteriul Liapunov.
Criteriul Routh-Hurwitz furnizează o metodă rapidă pentru determinarea stabilităţii absolute care poate fi
aplicată unei ecuaţii caracteristice de ordin n, de forma:
n n-1
ans +an-1s + ... +a1s+a0 =0
Criteriul este aplicat prin utilizarea schemei Routh definită ca:
n
s an an-2 an-4 ……..
n-1
s an-1 an-3 an-5 ……..
n-2
s b1 b2 b3 ……..
sn-3 c1 c2 c3 ……..
… … … … ……..
a=[1 10 35 50 24];
routh(a)
Routh-Hurwitz Array
1 35 24
10 50 0
30 24 0
42 0 0
24 0 0
System is stable
Exemplu. Să se aplice criteriul lui Routh pentru următoarea ecuaţie caracteristică şi să se determine câte
rădăcini sunt plasate în semiplanul complex drept.
4 3 2
s +4s -7s -22s+24=0
Routh/Hurwitz Array
Cazul 1: Daca primul element dintr-un rând este 0, atunci este înlocuit printr-un număr pozitiv foarte mic ε
si calculul tabloului este complet.
Exemplu. Să se utilizeze criteriul Routh-Hurwitz pentru a determina numărul rădăcinilor ecuaţiei
caracteristice:
4 2
s -5s +20s+24 =0
a=[1 0 -5 20 24];
routh(a)
Zero in the first column is replaced by 0.00001
Routh-Hurwitz Array
1.0000e+000 -5.0000e+000 2.4000e+001
1.0000e-005 2.0000e+001 0
-2.0000e+006 2.4000e+001 0
2.000e+001 0 0
2.400e+001 0 0
There are 2 roots in the right half s-plane
Cazul 2: Dacă toate elementele unui rând sunt zero, sistemul are poli pe axa imaginară ( perechi de rădăcini
complex conjugate simetrice faţă de originea planului complex ), sau perechi de rădăcini reale cu
semne opuse. În acest caz, o ecuaţie auxiliară este formată din rândul precedent. Tot rândul zero
este apoi înlocuit cu coeficienţii obţinuţi prin diferenţierea ecuaţiei auxiliare.
Exemplu. Să se construiască schema lui Routh pentru sistemul automat a cărui ecuaţie caracteristică este
dată de:
a=[1 10 36 60 59 50 24];
routh(a)
Elements of row 6 are all zero.
They are replaced by the auxiliary Eq. coefficients.
Routh-Hurwitz Array
1 36 59 24
10 60 50 0
30 54 24 0
42 42 0 0
4 24 0 0
48 0 0 0
24 0 0 0
Characteristic Equation include roots on jw-axis or
pairs of real or complex roots symmetrical about jw-axis
4.3. Sensibilitatea
Unul din obiectivele utilizării reacţiei într-un sistem de control este de a reduce sensibilitatea
sistemului la variaţiile parametrilor si la zgomot. Un sistem de control bun trebuie să fie insensibil la
modificările parametrilor sau la perturbaţiile externe. Sensibilitatea unui sistem poate fi măsurată ca raportul
între procentul schimbării funcţiei de transfer si procentul schimbării valorii unui parametru. De exemplu,
sensibilitatea funcţiei de transfer T(s) la variaţia parametrului b este definită ca:
T ∆T ( s ) / T ( s ) ∆T (s ) b
Sb = = .
∆b / b ∆b T (s)
T ∂T ( s ) b
Sb = .
∂b T (s)
Sensibilitatea statică este valoarea lui S pentru s→0. Sensibilitatea dinamică este calculată uzual prin
înlocuirea lui s prin jω si reprezentând S ca funcţie de frecvenţa ω. Mărimea lui S(jω) măsoară erorile
sistemului. Deci, se impune minimizarea lui. Aceasta este relativ uşor de făcut la o frecvenţă scăzuta datorită
lărgimii de bandă scăzute a echipamentului fizic. Orice sistem fizic are o lăţime de bandă finită. De aceea
funcţia de transfer a unui sistem de control real tinde totdeauna la 0, şi sensibilitatea sa tinde la unitate o
dată cu creşterea lui ω(S(jω)→1 dacă ω→∞). Aceasta condiţie conduce la erori mari şi nu pot fi rejectate
perturbaţiile
Exemplu. Se consideră sistemul reprezentat prin schema bloc funcţională din figura 4.1.
unde b = 4 si h = 0.5.
1. Să se determine sensibilitatea lui G(s) în raport cu b. Să se traseze modulul "funcţiei de sensibilitate" în
funcţie de pulsaţie pentru K=1 si K=0.5.
2. Să se determine sensibilitatea lui G(s) în raport cu h. Să se traseze modulul "funcţiei de sensibilitate" în
funcţie de pulsate pentru K = 2 si K = 0.5.
R(s) Y(s)
K b/(s+1)
+
-
h
Fig. 4.1. Schema bloc funcţionala a sistemului.
K s +1 s +1
Sb = =
s + 1 + Kbh s + 1 + 2 K
K − Kbh −2
Sh = =
s + 1 + Kbh s + 1 + 2 K
Următorul program calculează si afişează modulele funcţiilor calculate anterior:
clg
k1=2;
k2=0.5;
num=[1 1];
den1=[1 1+2*k1];
den2=[1 1+2*k2];
w=0:.02:15;
SGb1 = abs(freqs(num,den1,w));
SGb2 = abs(freqs(num,den2,w));
y1=0:.02:.721;wB1=5;
x1 =wB1 *ones(1 ,length(y1));
y2=0:.02:.7905;wB1=2;
x2=wB1 *ones(1 ,length(y2));
subplot(211),plot(w,SGb1, w, SGb2, x1, y1, x2,y2)
text(2.1 ,.06;’wB=2'),text(5.1, .06,'wB=5'),text(11 ,-.2,'w-Radian/s')
text(3,.77,'K=0.5'),text(3,.44,'K=2')
title('Sensibilitatea lui G in raport cu b')
num=-2;
SGb1 = abs(freqs(num,den1,w));
SGb2 = abs(freqs(num,den2,w));
subplot(212),plot(w,SGb1, w, SGb2),
text(11 ,-.2,w-Radian/s'),text(2.7,.20,’K=0.5'),text(2.7,.6,'K=2’)
title(' Sensibilitatea lui G in raport cu h')
subplot(111)
Sensibilitatea in raport cu b
După cum se poate observa din figură, sensibilitatea sistemului in raport cu b descreşte odată cu
creşterea factorului de amplificare al buclei deschise, în timp ce sensibilitatea în raport cu h creşte odată cu
creşterea lui K.
Υ (s) G (s )
=
U ( s) 1 + G( s) * H ( s)
U(s)+ Y(s)
G(s)
-
H(s)
Fig. 4.3. Schema unui sistem cu reacţie neunitară.
Eroarea sistemului în buclă închisă este:
1
E(s)=U(s)-H(s)*Y(s)= *U ( s)
1 + G (s ) * H (s)
s * U ( s)
ess= lim
s →0 1 + G (s ) * H (s )
Pentru intrări polinomiale, ca treaptă, rampă şi de tip parabolă eroarea staţionară din ecuaţia de mai sus
va fi :
Intrare treaptă :
1 1
ess= =
1 + lim G ( s ) * H ( s ) i + K p
s →0
Intrarea rampă :
1 1
ess= =
lim s * G ( s) * H ( s) K v
s →0
Intrare parabolică :
1 1
ess= 2
=
lim s * G ( s ) * H (s ) K a
s →0
În scopul definirii tipului sistemului funcţiei de transfer generală în buclă deschisă sub forma
următoare:
K (1 + T1 * s )(1 + T2 * s ) * K * (1 + Tm * s)
G(s)*H(s)=
s j * (1 + Ta * s)(1 + Tb * s) * K * (1 + Tn * s)
Funcţie de numărul de integratoare j pe care le conţine sistemul în buclă deschisă se pot face
aprecieri asupra erorilor staţionare ale sistemului în buclă deschisă.
Erorile staţionare pentru sisteme de tip cu j = 0, 1 si 2 sunt prezentate in tabelul următor:
2
j/U(s) 1/s 1/s 1/s3
0 l/(l+Kp) inf inf Kp=lim G(s)H(s)
1 0 1/Kv inf Kv= lim sG(s)H(s)
2
2 0 0 1/Ka Ka= lim s G(s)H(s)
10( s − 4)
G(s)=
s(s + 1)( s + 2)( s + 5)
k=10;
z=[-4; inf; inf; inf];
p=[0; -1;-2; -5];
errorzp(z,p,k)
System type is 1
Error Constants:
Kp Kv Ka
Inf 4 0
Steady-state Errors:
Step Ramp Parabolic
0 0.2500 inf
Exemplu : Să se determine erorile staţionare de poziţie, de viteză şi de acceleraţie, pentru sistemul având
funcţia de transfer de forma:
10
G(s)=
s + 14s + 50
2
num=10;
den=[1 14 50];
errortf(num, den)
System type is 0
Error Constants:
Kp Kv Ka
0.2000 0 0
Steady-state Errors:
Step Ramp Parabolic
0.8333 Inf Inf
Capitolul V
U(s) Y(s)
- K G(s)
H(s)
K ( s + z1 )(s + z 2 ) K ( s + zm ) (5.2)
K ⋅ G (s) ⋅ H ( s) =
( s + p1 )(s + p2 ) K ( s + pn )
unde m este numărul zerourilor finite şi n este numărul polilor finiţi ai funcţiei de transfer a buclei.
Dacă n > m sunt (n-m) zerouri la infinit.
Ecuaţia caracteristică a funcţiei de transfer a buclei închise este:
Atunci: ( s + p1 )(s + p 2 ) K ( s + p n )
= −K
( s + z1 )(s + z 2 ) K ( s + z m ) (5.4)
Din (5.4) se poate vedea că pentru ca un punct din planul s să aparţină locului rădăcinilor, când
0<K<∞, trebuie să fie satisfăcute următoarele două condiţii:
n
∏A β p
(5.5)
i =1
m
=K
∏Aα
j =1
z
şi (5.6)
∑ θ β − ∑ θ α = r (180
p z
0
)
r ⋅ 180 0
θ= r = ±1,±3,±5,K (5.7)
n−m
Astfel, se poate construi următorul tabel:
Asimptotele pornesc dintr-un punct a! axei reale având abscisa dată de:
σa =
∑ poliiG( s) H (s) − ∑ zerouriG(s) H ( s) (5.8)
n−m
6. Unghiuri de plecare şi de sosire
Considerând un punct arbitrar s0 în apropierea polilor (pentru plecare) sau a zerourilor (pentru
sosire) şi aplicând relaţia fundamentală pentru unghiuri se obţine:
θ d = ∑ θ zi − ∑ θ pi + r (180 0 )
i i
(5.9+5.10)
θ a = ∑ θ pi − ∑ θ zi + r (180 ) 0
i i
unde r= ±1, ±3....
7. Puncte de ramificare
Acestea sunt puncte pe axa reală unde două sau mai multe ramuri ale locului rădăcinilor pleacă
sau sosesc pe axa reală. Aceste puncte pot fi determinate exprimând pe K funcţie de s
1 (5.11)
K=
G(s) ⋅ H (s)
şi rezolvând:
dK ( s )
=0
ds S =SB
Rădăcinile reale ale acestei ecuaţii care satisfac regula 3 reprezintă abscisele punctelor de separare sau
de reintrare.
Exempiu 1. Să se traseze locul rădăcinilor pentru sistemul reprezentând un servomotor din figura 52.
U(s) Y(s)
K 1/|s(s+1)|
-
k k
G ( s) H ( s) = = 2
s ( s + 4) s + 4 s
Pentru trasarea locului rădăcinilor este utilizată funcţia rlocus(num, den). Se pot pune în evidenţă
regulile de trasare a locului rădăcinilor, astfel:
−4−2
σa = = −2
2
• punctele de ramificare de pe axa reală sunt date de :
dk d adică s = −2
= − (s 2 + 4s) = 0
ds ds
Locul rădăcinilor este trasat în figura 5.3.
8
6
4
2
0
Imag Axis
-2
-4
-6
-8
-8 -6 -4 -2 0 2 4 6 8
Real Axis
Exemplul 2. Să se traseze locul rădăcinilor pentru sistemul având funcţia de transfer în circuit deschis de
forma:
k k
G (s) H (s) = = 3
( s + 1)( s + 3 − j 2)( s + 3 + j 2) s + 7 s + 19 s + 13
2
− 3 − 3 −1
σa = = − 2.33
3
• punctele de ramificare de pe axa reală sunt date de:
dk d
= − ( s 3 + 7 s 2 + 19s + 13) = 0 rădăcinile acestei ecuaţii fiind
ds ds
s = −2.33 + j 0.94
s = −2.33 − j 0.94
Acestea fiind complexe, rezultă că nu există puncte de ramificare pe axa reală. Unghiurile de plecare din
polii complecşi conjugaţi sunt de -45° si +45°. Intersecţia locului rădăcinilor cu axa imaginară poate fi
determinată cu ajutorul schemei lui Routh. Aceasta este:
1 19
7 13 + k
120 − k
0
7
Impunând condiţia ca al treilea element al primei coloane să fie pozitiv, rezultă k = 120 fi
respecliv s = ± j4.36. Prin urmare, pentru valori ale lui k mai mari decât 120, sistemul devine instabil IMEM.
Locul rădăcinilor este trasat in figura 5.3.
6
0
Imag Axis
-2
-4
-6
-6 -4 -2 0 2 4 6
Real Axis
Kl
G c ( s) = K p + + Kd s (5.12)
s
Controlerele de tip integral şi diferenţial necesită utilizarea amplificatoarelor operaţionale. Alte controlere
care pot fi utilizate, realizate doar cu elemente pasive, sunt controlerele cu avans, cu intârziere şi cu
avans-intârziere de fază.
Un controler de ordinul I având un zero şi un pol în funcţia lui de transfer este :
K c ( s + z0 )
Gc ( s ) =
s + p0
Pentru proiectarea locului rădăcinilor au fost dezvoltate mai multe funcţii:
Functia Regulator
[numopen, denopen,denclsd]=pcomp(num,den,ξ) Proporţional
[numopen. denopen, denclsd]=phlead(num,den,sl) Phase-Lead
[numopen, denopen. denclsd]=phlag(num,den,ξ) Phase-Lag
[numopen. denopen, denclsd]=pdcomp(num,den,sl) PD
[numopen, denopen, denclsd]=picomp(num,den,sl) PI
[numopen, denopen, denclsd]=pidcomp(num,den,sl) PID
Alternativ, funcţia [numopen, denopen, denclsd] = rldesign(num, den, s1) permite utilizatorului să selecteze
unul din tipurile de controlere de mai sus. s1 =σ + Jω reprezintă polul dorit pentru funcţia de transfer în buclă
închisă, exceptând pcomp şi phlag unde ξ; factorul de amortizare al polilor dominanţi este substituit cu s1.
num şi den sunt vectorii linie ai coeficienţilor polinoamelor funcţiei de transfer a sistemului în buclă
deschisă (necompensată).
Funcţia phlead(num, den, s1) poate fi utilizată pentru proiectarea controlerelor cu întârziere. Pentru
a face asta, poziţia lui s1 trebuie aleasă la dreapta polilor din sistemul necompensat.
Proiectarea regulatorului de tip P constă în alegerea valorii lui K0 astfel încât să se obţină o
comportare satisfăcătoare a sistemului ( a răspunsului său indicial ). Funcţia [numopen, denopen,
denclsd]=rldesign(num,den,ξ) afişază şase opăţiuni referitoare la proiectarea cu ajutorul locului rădăcinilor.
Dacă se alege opţiunea 1 este apelată funcţia [numopen, denopen, denclsd]=pcomp(num,den,ξ) care va
calcula valoarea K0, în concordanţă cu factorul de amortizare dorit al polilor dominanţi.
num=1;
den=[1 5 4 0];zeta=0,6;
[numopen, denopen, denclsd]=rldesign(num,den,zeta); %Returnează
%numărătorul fdt pentru sistemul
% deschis şi numitorii pentru sistemele închis şi deschis
k=0:.02:2;
r=rlocus(numopen, denopen, k);
% Locul răd. se trasează pentru sistemul în buclă deschisă
t=0:.01:10;
c=step(numopen, denclsd, t);
timespec(numopen, denclsd); % Performanţele în timp în buclă închisă subplot(221), plot(r,'.');
title('Locul rădăcinilor'), grid
subplot(222), plot(t, c); title('Răspunsul indicial'), grid
subplot(111)
-4.1563
-0.4219 + 0.5615i
-0.4219-0.5615i
După cum se poate observa K0=2.05. Pentru această valoare, coeficientul Kv=2.05/ 4=05125.
Eroarea staţionară de viteză este ess=1/Kv=1.95. Funcţia de transfer a sistemului în circuit închis este:
2.05
G0 ( s ) =
s + 5 s + 4 s + 2.05
3 2
În relaţia (5.13) controlerul are o comportare de filtru trece sus dacă p0>zo. Reţeaua care
îndeplineşte o asemenea condiţie contribuie cu un unghi pozitiv la criteriul (5.6) al locului rădăcinilor şi are
tendinţa de a deplasa locul rădăcinilor spre partea stângă a planului s. Efectele acesteia se manifestă
asupra comportării dinamice a sistemului, ducând la o mărire a vitezei de răspuns. Ca urmare, o reţea cu
avans de fază aproximează un termen derivativ. Dacă p0< z0, controlerul are o comportare de tip trece jos (
phase-lag ). Acesta contribuie cu unghi negativ la criteriui (5.6) al locului rădăcinilor având tendinţa de a-l
deplasa spre partea dreaptă a planuiui s. Unghiul introdus trebuie să fie destul de mic pentru a menţine
stabilitatea sistemului. Acest tip de controler este un controler de tip integrator.
Pentru controler se poate determina factorul lui de ampiificare care este:
a 0 = Gc ( 0 ) = K c z 0 p 0
Pentru o poziţie dorită a polului sistemului în buclă deschisă si, determinarea funcţiei de transfer a
controlerului se poate face în următorul mod: se selectează o valoare corespunzătoare a lui z0 şi se
utilizează criteriul (5.6) pentru determinarea lui p0. După aceasta, se determină Kc aplicând criteriul (5.5).
Dacă factorul de ampiificare al controlerului a0 este specificat, atunci, pentru o poziţie dorită a polului
sistemului în circuit închis
s = s exp( jβ ) (5.15) Z0 si p0 sunt obţinuţi astfel încât ecuaţia:
1 1
relaţiilor:
z 0 = a0 a1 p0 = 1 b1 şi
K c = a 0 p0 z 0 (5.17)
unde:
sin β + a0 M sin( β −ψ )
a1 =
s1 ⋅ M sin ψ (5.18)
sin( β + ψ ) + a0 M sin ψ
b1 =
s1 ⋅ sin ψ
M şi Ψ fiind amplitudinea şi faza funcţiei de transfer în circuit deschis evaluate în s1, astfel încât:
Gd ( s1 ) = M exp( jψ ) (5.19)
b1 ⋅ s1 1
a1 s1 ⋅ cos β ± cos β ± + a0 = 0 (520)
M M
unde semnul + este aplicat pentru valoarea 0 iar - pentru valoarea 180. În această situaţie, zeroul
controlerului trebuie de asemenea specificat. Bazată pe aceste relaţii, funcţia:
returnează funcţia de transfer a sistemului în circuit închis şi rădăcinile ecuaţiei caracteristice. Utilizatorul
trebuie să introducă factorul de amplificare al controlerului. De asemenea, funcţia returnează numărătorii
sistemelor închis şi deschis şi numitorul funcţiei de transfer în circuit închis. mum şi den reprezintă
numărătorul şi numitorul funcţiei de transfer a sistemului în circuit deschis, iar s1 polul dorit al sistemului în
circuit închis.
Exemplu. Sistemul din exemplul anterior este nacesar ca să aibă o viteză mai mare de răspuns şi o
eroare.staţionară de viteză mai mică. Controlerul cu avans de fază va fi proiectat astfel încât să
îndeplinească următoarele condiţii:
1. Constanta de timp τ=1/ξωn=0.6667 sec
2. Factorul de amortizare ξ=0.6
3 Eroarea stationara de viteza ess=0.5.
K c ( s + z0 ) K z 1
K v = lim s = c 0⋅
( s + p0 ) s ( s + 1)( s + 4) p0 4
Din relaţia anterioară se poate deduce a0=4, Kv=8. Deci factorul de amplificare al controlerului este
8.
num=1;den=[1 5 4 0];j=sqrt(-1);s1=-1.5+j*2;
[numopen, denopen, denc!sd]=rldesign(num,den,s1);
k=0:.02:2;
r=rlocus(numopen, denopen, k);
t=0:.01:3;
c=step(numopen, denclsd, t);
timespec(numopen, dendsd);
subplot(121), plot(r,'.'); tit!e('Locul rădăcinilor'), grid
subplot(122), plot(t, c); title('Răspunsul indicial'), grid
subplot(111)
Compensator type Enter
Gain compensation 1
Phase-lead (or phase-lag ) 2
Phase-lag (Approximate K ÷ KO/Kc) 3
PD Controller 4
PI, Controller 5
PID Controller 6
To quit. 0
-12.2623
-1.5000+2.0000i
-1.5000-2.0000i
-1.1961
Locul radacinilor 4,
Răspunsul indicial
În această situaţie, polii şi zerourile controlerului sunt foarte apropiaţi, iar combinaţia lor este relativ
apropiată de originea planului s. Deci, locul rădăcinilor este mişcat relativ puţin faţă de poziţia lui iniţială.
Acest tip de controler este utilizat atunci când răspunsul tranzitoriu este satisfăcător dar se doreşte o
reducere a erorii staţionare. Funcţia [numopen, denopen, denclsd]=phlead(num, den, s1) poate fi folosită
pentru acest tip de proiectare cu specificaţia că polul s1 trebuie plasat uşor la dreapta polului sistemului în
circuit deschis. O altă modalitate de a aborda această proiectare este una care se bazează pe nişte
aproximaţii, prezentate în cele ce urmează:
Se consideră factorul de amplificare al controlerului ca fiind 1.
a0 = G c ( 0) = K 0 z 0 p 0 = 1 (5.21)
Deci, K c = p 0 z 0 şi acum p 0 < z 0 K c < 1 (5.22)
Dacă K0 este factorul de amplificare pentru polu sistemului închis s1, atunci din (5.3)
K 0 = − 1 G d ( s1 ) (5 23)
Daca se plaseaza polul si zeroul controlerului foarte apropiati unul de celalalt, cu amplitudinea mai mica
decat a lui S1, atunci:
K c ( s + s0 ) (5.24)
Gc ( s ) = ≈ Kc
s + p0
Pentru a plasa polul sistemului în circuit închis aproximativ în s1 factorul de amplificare K necesar este dat
de:
1 1 K
K= ≈ ≈ 0 (5.25)
Gc ( s1 )Gd ( s1 ) K c Gd ( s1 ) K c
Deoarece Kc<l, atunci K>K0. Următorul pas este alegerea zeroului z0, foarte mic. Din relatia (5.21)
polul controlerului este:
(5.26)
p0 = K 0 z 0
Funcţia de transfer a sistemului cu controler este:
s + z0 (5.27)
KGd Gc = KK c Gc
s + p0
Functia [numopen, denopen, denclsdi] = phlag(dum, den, si) permite obţinerea unui controler
"phase-lag" pe baza metodei aproximative. num şi den sunt numărătorul şi numitorul funcţiei de transfer a
sistemului în buclă deschisă, iar ξ este factorul de amortizare dorit pentru polii funcţiei de transfer în circuit
închis. Utilizatorul trebuie să introducă valoarea factorului de amplificare K pentru a realiza eroarea
staţionară dorită şi zeroul z0 al controlerului.
Exemplu. Pentru sistemul de la exemplul anterior este necesar să se obţină aproximativ aceeaşi poli
dominanţi, acelaşi factor de amortizare, dar să se utilizeze un controler de tip phase-lag iar eroarea
staţionară de viteză să fie ess = 0.125 Să se traseze locul rădăcinilor, răspunsul la impuls şi să se
determine performanţele în domeniul timp ale sistemului în circuit închis.
Locul radacinilor
Raspunsul indicial
1 K
Kv = = 8 = lim s
ess s → ∞ s ( s + 1)( s + 4)
De aici rezultă K=32. Apelând funcţia Irdesign cu opţiunea 3, factorul de amplificare al
controlerului fiind 32 şi o poziţie a zeroului z0= -0.1 se obţin următoarele rezultate:
Rezultatele sunt prezentate în figura 5.7. După cum se poate observa, polii complex conjugaţi sunt
plasaţi aproximativ în aceeaşi poziţie ca şi la exemplul anterior. Eroarea staţionară de viteză este sensibil
redusă dar suprareglajul sistemului creşte.
Indicaţii de lucru
În mod asemănător proiectării regulatoarelor de mai sus, se pot sintetiza regulatoare de tipul P, PI,
PD, PID. Să se utilizeze funcţiile menţionate pentru acestea astfel încât sistemele obţinute să fie stabile
IMEM.
Capitolul VI
Răspunsul în frecvenţă al unui sistem este răspunsul acestuia la un semnal de intrare sinusoidal.
Metoda răspunsului în frecvenţă şi metoda locului rădăcinilor reprezintă două căi simple, diferite, de
aplicare a câtorva principii de baza ale analizei. Aceste metode se completează una pe cealaltă şi, în
multe probleme practice de proiectare, sunt utilizate ambele tehnici. Un avantaj al metodei răspunsului în
frecvenţă este ca funcţia de transfer a sistemului poate fi determinată experimental prin teste asupra
răspunsului în frecvenţă. Mai mult, proiectarea unui sistem în domeniu frecvenţei permite proiectantului
un control asupra lărgimii de banda a sistemului, asupra efectului zgomotului şi perturbaţiilor în răspunsul
sistemului
In acest capitol diagrama Bode a funcţiei de transfer în buclă deschisă, specificaţiile marginii de
câştig şi marginii de fază sunt obţinute utilizând funcţii din MATLAB Control System Toolbox. Este
examinată de asemenea şi stabilitatea relativă a sistemului în buclă deschisă, utilizând criteriul Nyquist.
In plus, sunt obţinute răspunsul în frecvenţă în buclă deschisă, amplitudinea maximă şi lărgimea de
bandă. De asemenea, se va demonstra modul de utilizare a câtorva funcţii pentru proiectarea unui
sistem de reglare în domeniul frecvenţei.
unde funcţia de transfer G ( jω ) este obţinută înlocuind s cu . j ω în expresia lui G(s). Funcţia de transfer
rezultată poate fi scrisă astfel:
G ( jω ) =| G ( jω ) | ∗e jϕ (ω ) (6.2)
Dar, funcţia de transfer poate fi reprezentată în planul complex sub următoarea expresie:
G ( jω ) = Re G ( jω ) + Im G ( jω ) = R( jω ) + jX ( jω ) (6.3)
Cea mai utilizată reprezentare grafică a răspunsului în frecvenţă este diagrama Bode. Alte reprezentări
ale funcţiei de transfer sinusoidale sunt contururile Nyquist.
Diagrama Bode constă în două grafice trasate cu axa verticală liniară şi cea pe orizontală
logaritmică. Primul grafic este o reprezentare a modulului răspunsului G ( jω ) în decibeli dB funcţie de lg ω .
Al doilea grafic al diagonalei Bode prezintă funcţia de fază ϕ (ω ) în funcţie de lg ω . Reprezentarea
logaritmică este folositoare deoarece arată ambele caracteristici în frecvenţă, low şi high, ale funcţiei de
transfer, pe aceeaşi diagramă. Mai mult, răspunsul în frecvenţă al sistemului poate fi aproximat printr-o serie
de segmente de dreaptă.
Funcţia din MATLAB Control System Toolbox utilizată pentru trasarea diagramelor Bode este:
(mag, phase) = bode(num,den, ω ))
unde mum şi den reprezintă vectorii linie corespunzători polinoamelor de la numărătorul şi numitorul
funcţiei de transfer a sistemului.
K K
GH ( s) = = 3
s( s + 2)(s + 50) s + 52s 2 + 100s
să se traseye diagramele Bode.
Amplificare-pulsaţie
50
-50
-100
−1 0 1 2
10 10 10 10
Locul de transfer, numit şi diagrama Nyquist, este o reprezentare a lui ImG(j ω ) funcţie de ReG(j ω ) cu
ω variind de la − ∞ la + ∞
Funcţia din MATLAB Control System Toolbox
Funcţia de transfer în buclă închisă a unui sistem automat este dată de:
Y ( s) KG ( s)
G0 ( s) =
= (6.4)
U ( s) 1 + KGH (s)
Pentru ca sistemul să fie stabil IMEM polii lui G0 (s) trebuie să fie situaţi în jumătatea stângă a
planului complex. Deoarece zerourile lui 1+KGH(s) sunt poli pentru G0 (s), sistemul este stabil IMEM dacă
rădăcinile ecuaţiei caracteristice 1+KGH(s)=0 se găsesc în jumătatea stângă a planului s. Locul rădăcinilor,
care reprezintă poziţia rădăcinilor ecuaţiei caracteristice pentru K variind de la zero la infinit, a tost dezbătut
în capitolul anterior. Toate punctele de pe locul rădăcinilor satisfac următoarele condiţii:
Cu creşterea lui K, sistemul devine asimptotic stabil când părţile reale ale rădăcinilor complexe
dominante sunt zero. Aceasta corespunde unei intersecţii a locului rădăcinilor cu axa imaginară, când s=j ω .
Pentru acest sistem, valoarea lui K pentru care sistemul este la iimita de stabilitate este K c = 5200
Intersecţia locului de transfer cu axa reală negativă are unghiul de fază de -180°. Frecvenţa ω pc
corespunzând acestui punct este cunoscută ca frecvenţă de tăiere. În plus, cu cât câştigul buclei este
crescut, locul de transfer trecând prin punctul (-1,0) are proprietatea descrisă de:
| K c GH ( jω pc ) |= 1 şi arg GH ( jω pc ) = −180 0 (6.6)
Răspunsul în buclă închisă devine asimptotic stabil când amplitudinea răspunsului în frecvenţă este 1
0
si unghiul de fază este -180 . Frecvenţa la care locul de transfer intersectează punctul (-1,0) este aceeaşi
frecvenţă la care locul rădăcinilor intersectează axa j ω . Pentru o valoare mai mare a lui K, locul de transfer
va înconjura punctul (-1,0) şi sistemul este instabil.
Deci, sistemul este stabil dacă:
Aprecierea reprezentării lui KGH(J ω ) în coordonate polare faţă de punctul (-1,0) dă o indicaţie
asupra stabilităţii sistemului în buclă închisă.
Marginea de amplificare şi marginea de fază sunt două criterii obişnuite de proiectare, relative la
răspunsul în frecvenţă în buclă deschisă. Marginea de amplificare este valoarea cu care trebuie crescut
factorul de amplificare unui sistem stabil pentru ca locul de transfer să treacă prin punctul (-1,0). Marginea
de amplificare este definită ca:
Kc
marginea _ de _ amplificare( ma) = (6.8)
K
unde K c este câştigul critic al buclei pentru limita de stabilitate şi K este câştigul actual. Raportul anterior
poate fi scris astfel:
K c | GH ( jω pc ) | 1 1
ma = = = (6.9)
K | GH ( jω pc ) | K | GH (ω pc ) | d
Răspunsul în frecventă al unui sistem poate fumiza informaţii despre răspunsul staţionar al sistemului,
despre marginea de stabilitate şi lărgimea de bandă, Răspunsul tranzitoriu al sistemului poate fi estimat
indirect în concordanţă cu marginea de fază, marginea de amplificare şi amplificarea maximă a sistemului.
Suprareglajul este redus odată cu creşterea marginii de fază, iar viteza de răspuns creşte odată cu creşterea
lărgimii de bandă. Deci pulsaţia la care se obţine amplificare 0, pulsaţia de rezonanţă şi lărgimea de bandă
oferă informaţii despre viteza răspunsului tranzitoriu.
La fel ca şi la proiectarea prin metoda locului rădăcinilor, o posibilitate de proiectare în domeniul
frecvenţei constă în modificarea factorului de amplificare al sistemului în circuit deschis, astfel încât să se
obţină performanţele dorite. Acesta este în esenţă un regulator de tip P. Dacă nu sunt îndeplinite condiţiile
impuse asupra marginilor de amplificare şi fază, atunci este necesară introducerea unui regulator (controler)
având funcţia de transfer G(s). Aceasta funcţie de transfer poate fi aleasă astfel încât sistemul să
îndeplinească condiţiile impuse. Ca şi la proiectarea prin metoda locului rădăcinilor, elementul având funcţia
de transfer G c (s) poate fi realizat cu componente active,
K1
Gs ( s ) = K p + + KDs (6.17)
s
sau cu componente pasive:
K c (s + z0 )
Gc ( s) = (6.18)
s + p0
Funcţiile dezvoltate pentru proiectarea în domeniul frecvenţei sunt apelate opţional la apelul funcţiei
[numopen, denopen, denclsd]=frdesign(num, den) unde mum si den au semnificaţia cunoscută. Opţiunile
sunt: frqp ( regulator proporţional ), frqlead ( regulator cu avans de fază ), frqlag (regulator cu întârziere de
fază ), frqpd, frqpi, frqpid.
Proiectarea unui astfel de regulator constă în alegerea valorii K p pentru sistemul fără regulator
astfel încât să fie îndeplinite condiţiile de eroare staţionară. Atunci când K p variază, faza nu va fi afectată
Caracteristica amplificare-pulsaţie va fi ridicată sau coborâtă dacă valoarea lui K p creşte sau scade.
La apelul funcţiei frdesign cu opţiunea corespunzătoare, utilizatorul trebuie să introducă
valoarea dorită a lui K p .
Din valoarea erorii staţionare se determină valoarea lui K p ess = 1 / K v = 0.25 deci K v = 4 . Dar:
8K p
K v = lim s = 2K p
s(s + 1)(s + 4)
de unde K p = 2 . Apelul funcţiei frdesign cu opţiunea 1 şi introducerea valorii lui K p va duce la obţinerea
următoarelor rezultate:
Enter your choice -> 1
-50
−1 0 1
10 10 10
Fază-pulsaţie (grade)
0
-100
-200
-300
−1 0 1
10 10 10
Acest tip de regulator este obţinut dacă. p0 > z 0 . El contribuie cu un unghi pozitiv la faza sistemului
şi are tendinţa de a mări marginea de fază şi de a îmbunătăţi stabilitatea sistemului. De asemenea este
nevoie să se mărească pulsaţia de tăiere. Această mărire va duce la mărirea lărgimii de bandă rezultând un
răspuns tranzitoriu mai rapid.
Dacă ω0 şi ωp sunt pulsaţiile marginale ale regulatorului cu avans de fază, atunci valoarea maximă
a fazei regulatorului se obţine pentru pulsaţia ω m dată de media geometrică a celor două frecvenţe. Este
necesar ca să se selecteze polul şi zeroul controlerului astfel încât avansul de fază să apară la noua
frecvenţă de tăiere fără o deformare a caracteristicii amplitudine pulsaţie în apropierea acestei frecvenţe
Metodologia de proiectare include specificaţii asupra marginii de fază şi erorii staţionare necesare.
Se poate scrie:
K c z0
a0 = Gc (0) = (6.20)
p0
K ( s + z0 ) a1s + a0
Gc ( s) = c = (6.21)
( s + p0 ) b1s + b0
unde
a1 = K c / p0 ; b1 = 1 / p 0 ; b0 = 1 ;
a 0 poate fi determinat din condiţia de eroare staţionară. Pentru o eroare staţionară de viteză e ss , se poate
scrie:
1
Kv = = lim sGc ( s)GH ( s) = a0 lim sGH (s) (6.22)
ess
Din relaţia de mai sus se determină a 0 . Ecuaţia caracteristică a sistemului în circuit închis este:
1 + Gc ( s)GH ( s) = 0 (6.23)
Dacă Φ m este marginea de fază la noua frecvenţă de tăiere ω gc , atunci din (6.23) se poate scrie:
Gc ( jω gc )GH ( jω gc ) = 1exp[ j (−180 + Φ m )] (6.24)
Înlocuind Gc ( jω gc ) şi egalând părţile reale şi imaginare ale ecuaţiei de mai sus se obţin parametrii
regulatorului astfel:
1 − M cosθ
a1 = (6.25)
ω cg M sinθ
cosθ − a0 M
b1 = (6.26)
ω cg sin θ
unde θ este argumentul funcţiei de transfer a controlerului evaluat în ω gc .
unde M şi Ψ sunt modulul şi argumentul funcţiei de transfer a sistemului în circuit deschis evaluate în j ω gc
adică:
GH ( jω gc ) = M exp( jΨ ) (6.28)
Pentru un controler cu avans de fază argumentul controlerului trebuie să fie pozitiv, deci din (6.27)
rezulta:
Ψ = 180 − Φ m (6.29)
De asemenea, pentru un astfel de controler a0 < Gc ( jω gc ) , şi din (6,24) rezultă:
a0 M < 1 (6.30)
-50
−1 0 1
10 10 10
Caracteristica fază-pulsaţie (grade)
0
-100
-200
-300
−1 0 1
10 10 10
Tehnicile clasice de proiectare descrise în capitolele anterioare sunt bazate pe locul rădăcinilor în
frecvenţă , care utilizează doar ieşirea părţii fixate cuprinsă intr-o configuraţie tip reacţie cu regulator. În
acest capitol vor fi folosite tehnici moderne de proiectare a regulatoarelor, care necesită utilizarea tuturor
variabilelor de stare pentru a determina un regulator. Proiectarea modernă a regulatoarelor este utilă in
special în cazul sistemelor multivariabile; totuşi , in acest capitol, tehnicile de proiectare în spaţiul stărilor
sunt ilustrate utilizând sisteme cu o singură intrare, o singură ieşire .
O metodă de abordare în controlul modern al sistemelor, însoţit de utilizarea reacţiei , este
cunoscută ca proiectarea prin alocarea polilor . Această metoda de proiectare permite ca toate rădăcinile
ecuaţiei caracteristice a sistemului să fie plasate în locaţiile dorite . Astfel rezultă un regulator cu constanta
câştig vectorul k .
Conceptul de variabilă de stare în reacţie cere ca toate stările sa fie accesibile într-un sistem fizic ,
dar la majoritatea sistemelor nu este îndeplinită această cerinţă , de exemplu câteva stări fiind inaccesibile .
Pentru sistemele în care toate stările nu sunt “disponibile” pentru reacţie , poate fi proiectat un estimator de
stare(observer) .
O altă modalitate de proiectare a sistemelor automate este problema controlului optimal , în care
este minimizat un criteriu de performanţă specificat matematic .
.
x(t ) = Ax(t ) + Bu (t )
y (t ) = Cx(t ) ( 7.1 )
u(t)=-Kx(t) ( 7.2 )
unde K este un vector de dimensiune l x n format din coeficienţi plasaţi pe buclele de reacţie . Intrarea
sistemului , r(t) , este presupusă a fi zero . Obiectivul acestui sistem este de a aduce toate variabilele de
stare la valoarea zero când starea a fost perturbată .
Înlocuind ( 7.2 ) în ( 7.1 ) , rezultă reprezentarea sistemului in buclă închisă în planul stărilor :
.
x(t ) = ( A − BK )x(t ) = A f x(t )
Ecuaţia caracteristică a sistemului în bucla închisă este :
| sI - A + BK | = 0 ( 7.4 )
k2
k1
. 0 1 0 .... 0 x1 0
x1 x 0
. 0 0 1 . ... 0 2
x2 . .. ..
. = . ⋅ . + . ⋅ u (t ) (7.5)
. . . .
. . x 0
x n −1 0 0 0 .... 1 n−1
. − a − a1 − a 2 .... − a n −1 x n 1
x n 0
Pentru poziţii specificate ale polilor in buclă închisa –λ1 . . . . –λn ecuaţia caracteristică dorită este :
n n-1
αc(s) = (s+λ1) . . . (s+λn) = s + αn-1 s + . . . + α1s + α0 = 0 ( 7.7)
Obiectivul proiectării este găsirea matricii K astfel încât ecuaţia caracteristică pentru sistem să fie
identică cu ecuaţia caracteristică dorită . Astfel , vectorul K este obţinut egalând coeficienţii ecuaţiilor (7.6) si
(7.7) :
Daca modelul de stare nu este in forma canonică, vor putea fi utilizate tehnicile de transformare
prezentate în capitolul 2, pentru a transforma modelul de stare în forma canonică . Factorul de câştig este
obţinut pentru model şi apoi va fi transformat înapoi pentru a corespunde cu modelul original . Acest
procedeu este descris de formula următoare , cunoscută ca formula Ackermann :
-1
k = [ 0 0 . . . 0 1 ] S αc(A) (7.9)
2 n-1
S = [ B AB A B . . . A B] (7.10)
si αc(A) dat de :
n n-1
αc(A)=A + αn-1A + . . . + α1A + α0I (7.11)
Funcţia [K,Af]=placepol(A,B,C,p) este utilizată pentru proiectarea prin alocarea polilor . A,B,C sunt
matricile sistemului si p este vector linie continuând polii doriţi in buclă închisă . Această funcţie returnează
vectorul K si matricea sistemului în buclă închisa Af . De asemenea MATLAB Control System Toolbox
conţine două funcţii pentru proiectarea prin plasarea polilor . Funcţia K = acker(A,B,p) este pentru sisteme
cu o singură intrare , şi K = place(A,B,p) , care utilizează un algoritm mai sigur , este pentru sisteme cu mai
multe intrări .
Condiţia care trebuie să existe pentru a plasa polii în buclă închisă în locurile dorite este de a putea
transforma modelul de stare în formă canonică . Aceasta înseamnă că matricea de controlabilitate S , dată în
(7.10) trebuie sa aibă un determinant nenul . Această caracteristică este cunoscută drept controlabilitate .
7.2 Controlabilitate
Se spune că un sistem este controlabil când intrarea părţii fixate u poate fi utilizată pentru a
transfera partea fixată din orice stare iniţială într-o stare arbitrară în timp finit. Partea fixată descrisă de ( 7.1 )
cu matricea sistem având dimensiunea n x n este de stare complet controlabilă dacă şi numai dacă
matricea de controlabilitate S din (7.10) are rangul n . Funcţia S = cntrable(A,B) este dezvoltată pentru a
returna matricea de controlabilitate S si determină dacă sistemul este sau nu controlabil .
y (t ) = Cx(t ) (7.13)
^
Se presupune că starea x(t) este aproximata de starea x(t ) a modelului dinamic :
*
^ ^
^
x(t ) = A x(t ) + Bu (t ) + G y (t ) − x (t ) (7.14)
^ ^
y (t ) = C x(t ) (7.15)
Regulator Observer
*
. ^
^
^
( x(t ) − x(t )) = A x (t ) − x(t ) − G y (t ) − y (t ) (7.16)
( ) ^ ( ) ^
y t − y t = C x(t ) − x (t ) (7.17)
^ ^
unde x(t ) − x(t ) este eroarea dintre vectorul de stare actual şi vectorul estimat şi y (t ) − y (t ) este
eroarea dintre ieşirea actuală si ieşirea estimată . Înlocuind ecuaţia ieşirii în ecuaţia de stare , se obţine
ecuaţia erorii dintre vectorul de stare estimat şi vectorul de stare actual .
.
e(t ) = ( A − GC )e(t ) = Ae e(t ) (7.18)
unde :
^
e(t ) = x(t ) − x(t ) (7.19)
Daca G este ales astfel încât valorile proprii ale matricii A – GC sa aibă toate partea reală
negativă, atunci valoarea staţionară a vectorului eroare a stării estimate e(t) pentru orice condiţii
^
iniţiale va tinde la zero . Deci, x(t ) converge la x(t) . Proiectarea observatorului este
asemănătoare cu proiectarea controlerului . Totuşi , valorile proprii pentru A-GC trebuie sa fie
selectate la stânga valorilor proprii ale lui A . Aceasta asigură că observerul este mai rapid decât controlerul
pentru asigurarea unei rapide actualizări a vectorului de stare estimat .
Ecuaţia caracteristică a estimatorului este dată de :
| sI – A + GC | = 0 ( 7.20)
Pentru o viteză specifică a răspunsului, ecuaţia caracteristică dorită pentru estimator este :
n n-1
αe(s) = s + αn-1s + K + α 1 s + α 0 = 0 ( 7.21)
Astfel , caştigul estimatorului G este obţinut prin egalarea coeficienţilor din ( 7.20) si (7.21) . Această
metoda este identică cu cea de la alocarea polilor si G este găsit aplicând formula Ackermann :
−1 0
C 0
G = α e ( A)CA (7.22)
M
CA n−1
1
si notaţia αe(A) este data de :
Funcţia [ G,Ae] = observer (A , B, C,pe) este dezvoltată pentru determinarea estimatorului ; pe conţine
valorile proprii ale estimatorului dorit . Această funcţie returnează vectorul G şi matricea sistemului în buclă
închisă Af .
Condiţia necesară pentru proiectarea unui observer este ca toate stările să poată fi observate din
măsurarea ieşirii. Această caracteristică este cunoscută ca observabilitate.
.
x 1 = 0 1 x1 + 0 n
. 16 0 x 2 1
x2
y = [1 0]
să se proiecteze un observer de stare complet ştiind că observerul este amortizat critic cu valorile proprii la –
8 şi –8.
7.4 Observabilitate
Se spune că un sistem este observabil dacă vectorul iniţial x(t) poate fi găsit prin măsurarea lui u(t)
si y(t) . Partea fixată descrisă de (7.12) este complet observabilă de stare dacă există inversa matricii în
(7.22) .
Funcţia O = obsvable(A,C) returnează matricea de obsevabilitate C şi determină dacă sistemul este
sau nu observabil.
7.5 Proiectarea combinata controler – observer
Se considera sistemul reprezentat de ecuaţiile de stare si ieşire (7.12) si (7.13) cu controlul reacţiei
^
după stare bazat pe stare observată x(t ) data de :
^
u (t ) = − K x (t ) (7.24)
.
x(t ) = ( A − BK )x(t ) + BKe(t ) (7.25)
.
x(t ) = A − BK BK x (t )
⋅ (7.26)
. 0 A - GC e(t )
e(t )
Funcţia [K,G,Ac] = placeobs (A,B,C,p,pe) este utilizată pentru proiectarea combinată controler +
observer . A este matricea sistemului , B este vectorul intrării si C este vector linie al ieşirii , p este vectorul
linie conţinând polii în buclă închisă doriţi şi pe conţine valorile proprii ale observerului dorit .Funcţia afişează
vectorii K şi G, funcţia de transfer a părţii fixate în buclă deschisă şi funcţia de transfer în buclă închisă a
sistemului automat. De asemenea, funcţia returnează vectorul K şi matricea sistem combinată în (7.26).
.
x(t ) = Ax(t ) − Bu (t ) (7.27)
u (t ) = − K (t )x(t ) (7.28)
t1
supus ecuaţiei dinamice a părţii fixate în (7.27). În (7.29) Q este o matrice pozitiv semidefinită şi R este o
matrice simetrică reală. Q este pozitiv semidefinită dacă toţi minorii săi principali sunt nenegativi. Alegerea
elementelor pentru Q şi R permite orientarea relativă a variabilelor de stare individuale şi a intrărilor
separate.
Pentru a obţine o soluţie formală, se poate utiliza metoda multiplicatorilor lui Lagrange. Problema
este rezolvată prin adăugarea lui (7.27) la (7.29) utilizând un vector cu dimensiunea n, vectorul
multiplicatorilor Lagrange. Problema se reduce la minimizarea următoarei funcţii:
α ( x, λ , u, t ) = [x' Qx + u ' Ru ] + λ ' Ax + Bu − x
.
(7.30)
Valorile optimale (notate cu steluţă *) se găsesc egalând derivatele parţiale cu zero.
∂α
= Ax * + Bu * − x * = 0 ⇒ x * = Ax * + Bu * (7.31)
∂x
∂α 1
= 2 Ru * + λ ' B = 0 ⇒ u * = − R −1λ ' B (7.32)
∂u 2
∂α . .
= 2 x *Q + λ + λ ' A = 0 ⇒ λ = −2Qx * − A' λ (7.33)
∂x
Se presupune că există o matrice p(t) simetrică pozitiv definită, variantă în timp, care satisface:
λ = 2 p (t )x * (7.34)
u * (t ) = − R −1 B' p (t )x * (7.35)
. . .
λ = 2 p x * + p x * (7.36)
În final, egalând (7.33), se obţine:
.
p(t ) = − p (t )A − A' p(t ) − Q + p(t )BR −1 B' p (t ) (7.37)
Ecuaţia anterioară este cunoscută ca ecuaţia matricială Riccati. Condiţia limită pentru (7.37) este p(tg) = 0.
Deci, (7.37) trebuie să fie integrată.
Funcţia [τ,p,k,t,x] = riccati este dezvoltată pentru soluţia în domeniul timp a ecuaţiei Riccati. Funcţia
returnează soluţia ecuaţiei matriciale Riccati p(τ), vectorul câştig al reacţiei optimale k(τ) şi răspunsul stării
iniţiale x(t) . Pentru a utiliza această funcţie, utilizatorul trebuie să declare funcţia:
[A,B,Q,R,t0,tf,x0] = system(A,B,Q,R,t0,tf,x0)
conţinând matricile sistem şi matricile indicelui de performanţă într-un fişier de tip m, numit system.m. Pentru
sisteme liniare invariante în timp, p = 0 când procesul are o durată infinită, deci ty = ∞, rezultând reducerea la
ecuaţia algebrică Riccati:
-1
pA + A’p + Q - pBR B’p = 0 (7.38)
Funcţia din MATLAB Control System Toolbox [k,p] = lgr2 (A,B,Q,R) poate fi utilizată pentru
soluţionarea ecuaţiei algebrice Riccati.
Bibliografie