Sunteți pe pagina 1din 148

Cuprins

Lucrarea 1 - Introducere în mediul MATLAB ................................................... 3


1.1. Obiectivele lucrării .............................................................................. 3
1.2. Breviar teoretic ........................................................................................ 3
1.2.1. Elemente de bază în MATLAB ........................................................ 3
1.2.2. Operații cu matrice ........................................................................... 5
1.2.3. Operatorii folosiți în calculele numerice .......................................... 6
1.2.4. Instrucțiuni iterative ......................................................................... 8
1.2.5. Instrucțiuni condiționale ................................................................. 10
1.2.6. Reprezentarea grafică a funcțiilor monovariabile .......................... 14
1.2.7. Reprezentarea grafică a funcțiilor obiectiv multivariabile ............. 16
1.3. Întrebări și exerciții ............................................................................... 20
Lucrarea 2 - Mediul de programare SIMULINK ............................................. 22
2.1. Obiectivele lucrării ................................................................................ 22
2.2. Breviar teoretic ...................................................................................... 22
2.2.1. Lansarea în execuție a mediului SIMULINK................................. 22
2.2.2. Prezentarea componentelor din biblioteca Simulink ...................... 24
2.3. Partea aplicativă .................................................................................... 27
2.4. Întrebări și exerciții ............................................................................... 34
Lucrarea 3 - Modelarea analitică ...................................................................... 36
3.1. Obiectivele lucrării ................................................................................ 36
3.2. Breviar teoretic ...................................................................................... 36
3.3. Partea aplicativă .................................................................................... 37
3.4. Întrebări și exerciții ............................................................................... 47
Lucrarea 4 - Modelarea experimentală ............................................................. 50
4.1. Obiectivele lucrării ................................................................................ 50
4.2. Breviar teoretic ...................................................................................... 50
4.3. Partea aplicativă .................................................................................... 55
4.4. Întrebări și exerciții ............................................................................... 69
Lucrarea 5 - Regresia polinomială și regresia multiplă liniară ........................ 73
5.1. Obiectivele lucrării ................................................................................ 73
5.2. Aspecte teoretice ................................................................................... 73
5.3. Regresia polinomială ............................................................................. 74
5.4. Regresia multiplă liniară ....................................................................... 85

1
5.5. Exerciții și probleme propuse ................................................................ 93
Lucrarea 6 - Sisteme de ecuații liniare ............................................................. 98
6.1. Obiectivele lucrării ................................................................................ 98
6.2. Aspecte teoretice legate de sistemele de ecuații liniare ........................ 98
6.3. Utilizarea MATLAB pentru rezolvarea sistemelor de ecuații liniare ... 99
6.4. Exemplu de rezolvare a sistemelor de ecuații liniare folosind MATLAB
.................................................................................................................................. 104
6.5. Exerciții și probleme propuse .............................................................. 109
Lucrarea 7 - Ecuații și sisteme de ecuații neliniare ........................................ 110
7.1. Obiectivele lucrării .............................................................................. 110
7.2. Aspecte teoretice legate de ecuațiile neliniare .................................... 110
7.3. Algoritmi pentru izolarea soluțiilor ..................................................... 110
7.4. Algoritmi pentru determinarea unei soluții ......................................... 112
7.5. Algoritmi pentru determinarea tuturor soluțiilor reale ale unei ecuații
polinomiale ............................................................................................................... 116
7.6. Utilizarea mediului MATLAB pentru rezolvarea ecuațiilor neliniare 117
7.7. Exemplu de rezolvare a ecuațiilor neliniare utilizând MATLAB ....... 118
7.8. Aspecte teoretice legate de sistemele de ecuații neliniare ................... 121
7.9. Utilizarea MATLAB pentru rezolvarea sistemelor de ecuații neliniare
.................................................................................................................................. 124
7.10. Exemple de utilizare a rutinelor MATLAB pentru rezolvarea
sistemelor de ecuații neliniare .................................................................................. 124
7.11. Exerciții și probleme propuse ............................................................ 126
Lucrarea 8 - Utilizarea Rețelelor Neuronale Artificiale cu Scop Estimativ ... 128
8.1. Obiectivele lucrării .............................................................................. 128
8.2. Aspecte teoretice legate de rețelele neuronale artificiale .................... 128
8.3. Utilizarea mediului MATLAB pentru crearea și antrenarea unei rețele
neuronale artificiale cu scop estimativ ..................................................................... 131
8.4. Exemplu de creare, antrenare și utilizare a unei rețele neuronale
artificiale cu scop estimativ ...................................................................................... 133
8.5. Exerciții și probleme propuse .............................................................. 147

2
Lucrarea 1 - Introducere în mediul MATLAB

1.1. Obiectivele lucrării

 Însușirea modului de operare a mediului MATLAB;


 Lucrul cu fișiere, modul de generare a vectorilor și a matricelor uzuale;
 Însușirea modului de reprezentare grafică a funcțiilor monovariabile și
multivariabile;

1.2. Breviar teoretic

MATLAB (MATrix LABoratory) este un pachet de programe de înaltă


performanță, destinat calculului numeric și reprezentărilor grafice în domeniul științei și
ingineriei. Performanțele deosebite și timpul de instruire redus fac din acest mediu de
programare unul din cele mai agreate medii de lucru pentru o mare diversitate de
utilizatori.

1.2.1. Elemente de bază în MATLAB

MATLAB-ul lucrează fie în modul linie de comandă, fie cu programe


conținute în fișiere.
Linia de comandă se folosește de regulă pentru lansarea în execuție a
programelor sau pentru diverse comenzi MATLAB. Un program MATLAB se apelează
tastând în linia de comandă numele fișierului. O condiție necesară rulării programului
este setarea căii în care acesta se găsește (din meniul principal, opțiunea File, submeniul
Set Path). În modul line de comandă, fiecare linie este prelucrată imediat și rezultatele
sunt afișate. Comenzile date în acest fel sunt considerate a fi independente una de
cealaltă, motiv pentru care linia de comandă nu poate fi folosită pentru scrierea
fișierelor MATLAB.
Programul MATLAB constă dintr-o succesiune de instrucțiuni MATLAB, cu
posibilitatea apelării altor fișiere, și este caracterizat de extensia *.m. El presupune mai
multe linii de cod, care se pot scrie apelând editorul MATLAB implicit. Acesta se
lansează prin comanda “Edit”.

3
Un program MATLAB poate fi scris sub forma fișierelor „script“ sau a fișierelor
de tip funcție. Un fișier „script” conține o secvență de comenzi. Dacă prima linie a
fișierului conține cuvântul „function”, fișierul respectiv este declarat fișier funcție. O
funcție diferă de un script prin faptul că funcția poate lucra cu argumente și prin faptul
că funcția nu poate fi apelată de sine stătător, la fel cum se face cu un script.
Fișierele funcție sunt utilizate pentru crearea unor noi funcții MATLAB. Forma
generală a primei linii a unui fișier funcție este:

functionparamieșirenumefuncție(param_intrare)

Semnificația parametrilor din sintaxa de mai sus este:


 function - cuvânt cheie care declară fișierul ca fișier funcție;
 nume funcție - numele funcției;
 paramieșire - parametri de ieșire sunt separați cu virgulă și cuprinși
între paranteze drepte;
 param_intrare - parametri de intrare sunt separați cu virgulă și cuprinși
între paranteze rotunde.
Aceste fișiere pot fi adăugate ca funcții noi în structura MATLAB. Comenzile
și funcțiile care sunt utilizate de noua funcție sunt înregistrate într-un fișier cu extensia
.m.
Exemplul 1. Scrieți o funcție denumită „medie”, care să calculeze media
aritmetică a două numere.
Pentru a putea scrie acest script, se apelează editorul care este livrat odată cu
limbajul. Acest lucru se face prin comanda edit, sau File/New/Script. În urma acestei
comenzi se poate introduce programul aferent funcției „medie”, ale cărui instrucțiuni
sunt prezentate în lista 1. După salvarea fișierului („File”, „Save as”, Medie.m) se poate
apela în linia de comandă noua funcție definită, lista 2.

Lista 1.
Transcrierea în MATLAB a exemplului 1.
function m= medie(a,b)
m=(a+b)/2;

4
Lista 2.
Lista comenzilor pentru executarea fișierului medie.m, cu parametrii (10,4).
medie (10,4)

1.2.2. Operații cu matrice

Programul MATLAB este conceput pentru a lucra cu matrice. Acest lucru nu


înseamnă că nu poate lucra cu valori numerice simple, deoarece MATLAB le tratează
ca fiind matrice de o linie și o coloană.
În MATLAB se pot defini trei tipuri de valori numerice: constante, vectori și
matrice. Modul de definire al lor este acesta:
 O constantă se definește într-un mod simplu și intuitiv. De exemplu:

x=3

 Un vector se definește scriind componentele acestuia între paranteze


drepte. De exemplu:

x = [1]

 O matrice se definește similar cu un vector, diferența fiind că la finalul


fiecărui rând se pune caracterul ;. De exemplu:

A =[2 4 5 ; 4 6 3]

Un alt mod de definire a unei matrice constă în apelarea numelui unui fișier de
date aflat pe disc, cu ajutorul funcției dlmread. Sintaxa de apelare a acestei funcții este
bine documentată în [2].
Operațiile uzuale de algebră liniară cu matrice sunt simbolizate cu semnele
grafice: *, \ , / , ^ , ' , și se efectuează după regulile cunoscute din calculul matriceal. În
Tabelul 1 sunt prezentați mai detaliat acești operatori.

5
1 2 5 6
Exemplul 2. Fie A    , B , p=2. Să se calculeze: A+B, A-B,
3 4 7 8 
A*B, A', Bp.
Cu secvența MATLAB, prezentată în lista 3 se vor obține rezultatele dorite.

Lista 3
Lista de comenzi pentru rezolvarea exemplului 2.
A=[1 2; 3 4];
B=[5 6; 7 8];
p=2;
c1=A+B
c2=A-B;
c3=A*B;
c4=A´;
c5=B. ^p

MATLAB mai pune la dispoziția programatorului diferite funcții pentru


generarea unor matrice uzuale. Câteva dintre ele sunt [2]:
 ones (M, N) – generează matricea unitate, de dimensiuni MxN.
 zeros(M, N) – generează matricea nulă de dimensiuni MxN.
 eye (M, N) – generează o matrice de forma MxN în care diagonala
matricei are elementele egale cu 1, iar restul elementelor matricei sunt
0.

1.2.3. Operatorii folosiți în calculele numerice

Operatorii folosiți în calculele aritmetice cu tablouri și matrice sunt prezentați


în Tabelul 1.

Tabelul 1. Operatorii aritmetici MATLAB

Operația Scalari Matrice Tablouri


Adunarea + + +
Scăderea - - -
Înmulțirea * * .*
Împărțirea la stânga \ \ .\

6
Împărțirea la dreapta / / ./
Ridicarea la putere ^ ^ .^
Transpunerea ' ' .'

Operațiile aritmetice între doi scalari sunt prezentate în Tabelul 2. Ordinea


operațiilor în MATLAB este aceeași cu cea a operațiilor aritmetice standard, cunoscută
în matematica elementară.

Tabelul 2. Forma MATLAB a operațiilor cu scalar

Operația Forma algebrică Forma MATLAB


Adunare a+b a+b
Scădere a-b a-b
Înmulțire Axb a*b
Împărțire la dreapta a:b a/b
Împărțire la stânga b:a a\b
Ridicare la putere ab a^b

În Tabelul 3 sunt prezentați operatorii relaționali folosiți în MATLAB.


Operatorii relaționali compară două matrice sau două expresii matriceale, element cu
element. Aceștia returnează o matrice de aceeași dimensiune cu a matricelor care se
compară, cu elementele 1 atunci când relația este adevărată și cu elementele zero atunci
când relația este falsă.

Tabelul 3. Operatorii relaționali

Operatorii relaționali Semnificația


< mai mic
<= mai mic sau egal
> mai mare
>= mai mare sau egal
== identic
~= diferit

Pentru combinarea a două sau mai multe expresii logice se utilizează operatorii
logici din Tabelul 4.

Tabelul 4. Operatorii logici.

Operatorii logici Simbol MATLAB


NU ~
ŞI &

7
SAU |

Operatorii & și | compară doi scalari sau două matrice de dimensiuni egale. În
cazul matricelor, operatorii logici operează asupra fiecărui element în parte. Operatorii
logici returnează valoarea 1 dacă expresia care îi conține este adevărată. Altfel, ei întorc
valoarea 0. Este necesar ca fiecare expresie logică să fie încadrată de paranteze.
Operatorul logic NU (sau complementul logic) este operator unar. Expresia ~A
returnează 0 dacă A este diferit de zero și 1 dacă A este zero.

1.2.4. Instrucțiuni iterative

Instrucțiunile iterative ale mediului MATLAB sunt instrucțiunile for și while.


Instrucțiunea for se utilizează atunci când apare necesitatea repetării unei
secvențe de program de un anumit număr de ori, cunoscut în prealabil. Sintaxa
instrucțiunii este următoarea:

for index = expresie


grupul_de_instrucţiuni
end

În sintaxa de mai sus, index este variabila de ciclare, expresie este o matrice, un
vector sau un scalar iar grup_de_instrucţiuni este orice expresie MATLAB.
În aplicații, “expresie“ este de cele mai multe ori de forma:

iniţial:pas:final

În sintaxa de mai sus, inițial reprezintă prima valoare a lui k, pas reprezintă
pasul de creștere a valorii lui k (dacă este omis, atunci este considerat 1), iar final - cea
mai mare valoare pe care o poate lua k.
Dacă se utilizează operatorul două puncte (“:“) pentru a defini expresia, ca în
exemplul:

for k = iniţial:pas:final

8
 final  initial 
bucla se execută de: n     1 ori, dacă n este pozitiv, și nu se
 pas 
execută dacă n este negativ.
Exemplul 3. Să se calculeze funcția:

2 ∗ 𝑥 + 3, 𝑥𝜖[−10,2]
𝑓(𝑥) = { (1)
2 ∗ 𝑥 2 − 1, 𝑥𝜖(2,20]

pentru toate valorile întregi pentru care este definită și să se reprezinte grafic
această funcție.
Cu secvența MATLAB, prezentată în lista 4 se vor obține rezultatele dorite.

Lista 4.
Transcrierea în MATLAB a exemplului 3.
x = -10 : 20;
for k = 1 : length(x)
if x(k) < = 2
f(k) = 2*x(k)+3
else
f(k) = 2*x(k)^2-1
end
end
plot(x,f)

Instrucțiunea while este o structură care se utilizează pentru repetarea unui set
de instrucțiuni, atât timp cât o condiție specificată este adevărată. Forma generală a
acestei instrucțiuni este:

while expresie
grup_de_instrucţiuni
end

Grupul de instrucțiuni se execută cât timp “expresie“ are toate elementele


nenule. Expresia logică notată cu “expresie“ este de obicei sub forma:

9
expresie_1 condiție expresie_2

unde “condiție“ este unul dintre operatorii relaționali: = =, <, >, < =, > =, ~ =.
Exemplul 4. Să se scrie un program, utilizând o buclă while, care calculează
suma elementelor vectorului x = [5 2 -9 10 -1 9 -1] până când întâlnește un
număr mai mare ca 8.
Secvența MATLAB este prezentată în lista 5.

Lista 5.
Transcrierea în MATLAB a exemplului 4.

x = [5 2 -9 10 -1 9 -1];
sum = 0;
k = 1;
while (x(k) <=8) & (k<=length(x))
sum = sum+x(k)
k = k+1
end

Se obține rezultatul:
sum = -2

În lista 5, ieșirea din buclă se realizează după ce au fost însumate primele trei
elemente, al patrulea element neîndeplinind condiția impusă.
Instrucțiunea break se utilizează pentru a ieși dintr-o buclă înainte ca aceasta să
se fi terminat. Se recomandă a fi utilizată dacă o condiție de eroare este detectată în
interiorul unei bucle. Instrucțiunea break încetează execuția ciclurilor for și while. Se
apelează cu sintaxa: break.
Instrucțiunea return comandă o ieșire normală din fișierul-M către funcția care
l-a apelat sau către tastatură. Se apelează cu sintaxa: return.

1.2.5. Instrucțiuni condiționale

Instrucțiunile condiționale sunt instrucțiunea if și instrucțiunea switch.

10
Instrucțiunea if se utilizează atunci când apare necesitatea de executare
condiționată a instrucțiunilor. Aceasta poate fi implementată ca instrucțiune “if“ simplă
sau poate include clauzele else sau elseif. Forma generală a unei instrucțiuni “if“
simplă, este următoarea:

if expresie_logică
grup_de_instrucţiuni
end

Dacă expresia logică este adevărată, atunci se execută grupul de instrucțiuni


dintre instrucțiunea if și instrucțiunea end. Dacă expresia logică este falsă, se trece la
prima instrucțiune care urmează după instrucțiunea end.
Clauza else este utilizată pentru a executa un set de instrucțiuni, dacă expresia
logică este adevărată și un alt set de instrucțiuni, dacă expresia logică este falsă.
Forma generală a instrucțiunii if-else este:

if expresie_logică
grupul_de_instrucţiuni_A
else
grupul_de_instrucţiuni_B
end

Exemplul 5. Pentru următoarea funcție:

2 ∗ 𝑥 + 8, 𝑥 ≤ 2
𝑓(𝑥) = { (2)
3 ∗ 𝑥2, 𝑥 > 2

secvența MATLAB este prezentată în lista 6.

Lista 6.
Lista de comenzi pentru rezolvarea exemplului 5.
if x<=2
f = 2*x+8
else
f = 3*x^2

11
end

Dacă funcția de calculat are mai multe nivele de instrucțiuni if-else, este
dificilă determinarea expresiei logice adevărate, care selectează grupul de instrucțiuni ce
urmează a fi executat. În acest caz, se utilizează clauza elseif. Sintaxa acestei clauze este
următoarea:

12
if expresia_logică_1
grupul_de_instrucţiuni_A
elseif expresia_logică_2
grupul_de_instrucţiuni_B
elseif expresia_logică_3
grupul_de_instrucţiuni_C
end

Exemplul 6. Să se genereze o matrice A, cu n linii și n+1 coloane, ale cărei


elemente sunt:

2, 𝑖 = 𝑗
𝐴={−1, |𝑖 − 𝑗| = 1 (3)
0, 𝑎𝑙𝑡𝑓𝑒𝑙

Secvența MATLAB pentru exemplul 6 este prezentată în lista 7.

Lista 7.
Lista de comenzi pentru rezolvarea exemplului 6.
n = 4;
for i =1:n
for j = 1:n+1
if i = = j
A(i,j) = 2
elseif abs(i-j) = = 1
A(i,j) = -1
else
A(i,j) = 0
end
end
end

Se obține rezultatul din lista 8.

13
Lista 8.
Rezultatele obținute la rezolvarea exemplului 6.
A=
2 -1 0 0 0
-1 2 -1 0 0
-1 2 -1 0
0 0 -1 2 -1

1.2.6. Reprezentarea grafică a funcțiilor monovariabile

Dacă se notează cu z valoarea unei funcții de o variabilă

𝑧 = 𝑓(𝑥) (4)

între z și x există corespondență biunivocă care poate fi reprezentată geometric


printr-o curba în planul x  z , precum în Figura 1.
O posibilă reprezentare grafică a unei funcții obiectiv în orice limbaj de
programare, constă în următoarele două etape :
 etapa discretizării funcției continue 𝑧 = 𝑓(𝑥) într-un număr de puncte
suficient de mare, pentru a obţine o reprezentare cvasicontinuă a
funcției;
 etapa trasării graficului asociat corelației discrete obținute anterior.

Figura 1. Reprezentarea grafică a unei funcţii monovariabile [1]

Etapa discretizării funcției continue presupune tabelarea unei funcții continue


între valorile x min și x max obținându-se o funcție discretă, definită printr-un tabel de

14
valori xi , yi , i  1,, n , în care n reprezintă numărul de perechi de puncte ale

tabelului. Pentru cele n puncte se obțin n  1 intervale egale, de lungime


xmax  xmin
 . Într-o structură iterativă sunt calculate coordonatele argumentelor x i și
n 1
valorile corespunzătoare ale funcției în aceste puncte, yi  f xi  . O reprezentare
sugestivă a operației de tabelare este prezentată în Tabelul 5 [1].

Tabelul 5. Tabelarea funcţiei f(x)

Nr. crt. Valori corespondente Valoarea argumentului Valoarea funcției


1 x min x1 f1
2 xmin  x x2 f2
..... .... .... ....
n-1 xmin  n  2x xn-1 fn-1
n x max xn fn

În cadrul mediului MATLAB, reprezentarea grafică a unei funcții


monovariabile se realizează prin intermediul funcțiilor fplot și plot. Funcția fplot are
următoarele date de intrare:
a) numele funcției, corespunzător unui fișier de tip .m;
b) limitele intervalului de reprezentare care se introduc sub forma unui
vector de forma xmin, xmax  .
Sintaxa instrucțiunii este:

fplot(‘nume fișier funcție’,[xmin,xmax]);

Exemplul 7. Se consideră funcția monovariabilă reală, de argument real

𝑓(𝑥) = 1⁄4 ∗ 𝑥 4 − 5⁄3 ∗ 𝑥 3 + 7⁄2 ∗ 𝑥 2 − 3 ∗ 𝑥 + 3 (5)

Să se reprezinte grafic funcția în intervalul  1 4.


Funcția (5) este programată sub mediul MATLAB, textul sursă fiind prezentat
în fișierul f.m, lista 9.

15
Lista 9.
Transcrierea în MATLAB a funcției (5)
Function y=f(x)
Y=1/4*x.^4-5/3*x.^3+7/2*x.^2-3*x+3;

În lista 10 sunt prezentate instrucțiunile din meniul de comenzi MATLAB,


pentru reprezentarea grafică a funcției (5) iar în Figura 2 este prezentat graficul obținut.
Lista 10.
Lista comenzilor pentru reprezentarea grafică a funcției (5)
fplot('f',[-1,4]);

Figura 2. Reprezentarea grafică în MATLAB a funcţiei (5)

1.2.7. Reprezentarea grafică a funcțiilor obiectiv multivariabile

Reprezentarea grafică a funcțiilor multivariabile reprezintă o provocare în


cadrul studiului problemelor de optimizare. Deoarece această problemă este deseori
extrem de complexă, datorită dificultăților de percepție vizuală a spațiilor n-
dimensionale, se apelează la studiul unei funcții particulare, având două variabile
independente. Astfel, se consideră funcția [1]:

𝑧 = 𝑓(𝑥1 , 𝑥2 ) (6)

16
În cadrul funcțiilor de tip (6), reprezentarea geometrică necesită un sistem de 3
axe de coordonate (z, x1, x2).
Elementele constitutive din cadrul reprezentării grafice 3D sunt :
1. Crearea rețelei de puncte x  y utilizată pentru discretizarea funcției;
2. Reprezentarea 3D a suprafețelor de contur.
Crearea rețelei de puncte x  y este utilizată atât în studiul valorilor funcției
cât și pentru a obține o reprezentare cvasicontinuă a funcției. În mediul MATLAB este
utilizată funcția meshgrid pentru construirea rețelei de puncte pentru o funcție de două
variabile. Funcția meshgrid transformă domeniul specificat prin vectorii x și y în
tablourile X și Y, tablouri care pot fi folosite atât pentru evaluarea funcțiilor de două
variabile, cât și pentru reprezentări 3D de tipul mesh sau surface, precum în Figura 3.
Funcția meshgrid se apelează cu sintaxa:

[X,Y]= meshgrid(xinf:pas_x:xsup,yinf:pas_y:ysup);

Notațiile din sintaxa de mai sus sunt:


 X - vectorul ce conține valorile discretizate asociate variabilei x;
 Y - vectorul ce conține valorile discretizate asociate variabilei y;
 xinf - reprezintă limita inferioară de tabelare, asociată variabilei x;
 xsup - limita superioară de tabelare, asociată variabilei x;
 pas_x – pasul de tabelare pentru variabila x;
 yinf - limita inferioară de tabelare, asociată variabilei y;
 ysup - limita superioară de tabelare, asociată variabilei y;
 pas_y – pasul de tabelare pentru variabila y.

17
Figura 3. Structura reţelei generate de funcţia meshgrid [1]

Exemplul 8. Fie funcția:

𝑧 = 𝑥2 + 4 ∗ 𝑦2 − 4 (7)

Să se genereze rețeaua de puncte definită prin  4  x  4 și  5  y  5 .


Rezolvare. Pentru simplitate se consideră x  1 , respectiv y  1 . Comanda
MATLAB va fi:

[x,y]= meshgrid(-4:1:4,-5:1:5);

Lista 11 a Lista 11 b

Rezultatele obținute pentru vectorul x Rezultatele obținute pentru vectorul y

-4 -3 -2 -1 0 1 2 3 4 -5 -5 -5 -5 -5 -5 -5 -5 -5
-4 -3 -2 -1 0 1 2 3 4 -4 -4 -4 -4 -4 -4 -4 -4 -4
-3 -3 -3 -3 -3 -3 -3 -3 -3
-4 -3 -2 -1 0 1 2 3 4
-2 -2 -2 -2 -2 -2 -2 -2 -2
-4 -3 -2 -1 0 1 2 3 4
-1 -1 -1 -1 -1 -1 -1 -1 -1
-4 -3 -2 -1 0 1 2 3 4 0 0 0 0 0 0 0 0 0
-4 -3 -2 -1 0 1 2 3 4 1 1 1 1 1 1 1 1 1
-4 -3 -2 -1 0 1 2 3 4 2 2 2 2 2 2 2 2 2
-4 -3 -2 -1 0 1 2 3 4 3 3 3 3 3 3 3 3 3
-4 -3 -2 -1 0 1 2 3 4 4 4 4 4 4 4 4 4 4
-4 -3 -2 -1 0 1 2 3 4 5 5 5 5 5 5 5 5 5
-4 -3 -2 -1 0 1 2 3 4

rezultatul obținut fiind prezentat în listele 11a și b.

18
Reprezentarea 3D a suprafețelor de contur. O suprafață este parametrizată prin
două variabile independente, i și j, care variază continuu în interiorul unui dreptunghi,
1  i  m și 1  j  n . În aceste condiții, fiecare punct este specificat prin trei funcții:
X i, j  , Y i, j  și Z i, j  . Deoarece i și j sunt numere întregi, suprafața de răspuns a
funcției este definită de nodurile unei rețele rectangulare (grid), fiecare matrice având
dimensiunea m  n  . Dacă se dorește și precizarea culorii suprafeței, este necesară încă

o matrice, C m  n  .
Culoarea suprafeței poate fi specificată prin două metode diferite:
 Prin specificarea colțurilor rețelei;
 Prin specificarea centrelor acesteia.
Dacă funcția shading, care configurează nuanțele, este inițializată la interp,
matricea C trebuie să aibă aceeași dimensiune ca matricele X, Y și Z; ea specifică
culorile colțurilor, în interiorul zonei realizându-se o interpolare liniară. Dacă shading
este inițializată faceted (implicit) sau flat, atunci C i, j  specifică o culoare constantă în
dreptunghiul respectiv. În acest caz, matricea C poate avea aceeași dimensiune cu X, Y
și Z, însă ultima linie și coloană sunt ignorate, sau poate fi dimensionată cu o linie și o
coloană mai puțin decât acestea.
Reprezentarea grafică 3D a suprafețelor se poate face fie sub forma unei rețele
(mesh), fie sub forma suprafețelor netede. Sintaxa instrucțiunii mesh este:

mesh (x, y, z);

în care semnificația parametrilor este următoarea:


x – vector asociat axei x, obținut prin crearea rețelei x  y de către funcția
meshgrid;
y – vector asociat axei y, obținut prin crearea rețelei x  y de către funcția
meshgrid;
z – matrice conținând valorile funcției z  f x, y  .

Exemplul 9. Fie funcția z  f x, y  , definită prin relația (7). Se cere să se


reprezinte grafic în 3D, în domeniul  4  x  4 și  4  y  4 . Rețeaua de puncte va fi
creată utilizând pasul x  y  0,1 .

19
Rezolvare. Se crează o funcție MATLAB în cadrul unui fișier de tip m, funcție
care conține instrucțiunile necesare reprezentării suprafeței de răspuns a funcției (7).
Numele fișierului de tip m este contur3.
Lista 12
Conținutul fișierului contur3
function curbe = contur3
[x,y]=meshgrid(-4:.1:4,-4:.1:4);
z=x.^2+2*y.^2-4;
mesh (x, y, z);

Prin apelarea funcției contur3 se obține imaginea grafică prezentată în Figura


4.

Figura 4. Reprezentarea suprafețelor în 3D

1.3. Întrebări și exerciții

1. Să se evalueze funcția:
x 3  2 x 2  x  6.3
f x   pentru x = 2 și x = 4.
x 2  0.5 x  1
2. Fie A = [3 2 5] , B = [1 3 2] și p = 2. Să se calculeze: C = A.*B, D = B.*p,
E = A.^B și F = A.\ B.

20
2 3 4 5
3. Fie: A    , B și p = 3. Să se calculeze: A+B, A*B, A' ,
1 2 6 8 
B^p.
4. Să se genereze matricele unitate, zero și identitate de dimensiunile 2x2 și
2x3.
1 9 3 
5 .Fie matricea A    . Să se genereze o matrice unitate, o matrice zero
5 2 7 
și o matrice identitate de dimensiunea matricei A.
6. Să se reprezinte grafic funcția T (n) , funcție ce reprezintă temperatura de
topire a parafinelor normale superioare în funcție de numărul de atomi de carbon din
catenă.
T n  30  0,56n  15,84 n  19,7 , pe intervalul n  26,70 .
7.Să se reprezinte grafic funcția

Z ( x, y)  xe  x  y2
, x   2, 2 , y   2, 2
2

8. Să se calculeze funcția:
2 x  3, daca x   10,2
f ( x)   2
2 x  1, daca x  2,20
pentru toate valorile întregi pentru care este definită și să se reprezinte grafic.

21
Lucrarea 2 - Mediul de programare SIMULINK

2.1. Obiectivele lucrării

 Însușirea modului de lucru cu mediul de programare SIMULINK;


 Familiarizarea cu obiectele din biblioteca SIMULINK;
 Construirea diagramelor destinate simulării unor elemente simple de simulare,
în cadrul mediului de programare SIMULINK.

2.2. Breviar teoretic

Una dintre aplicațiile specifice mediului MATLAB este SIMULINK. Acest


pachet de programe este utilizat pentru simularea matematică a sistemelor dinamice cu
ajutorul elementelor dinamice fundamentale.

2.2.1. Lansarea în execuție a mediului SIMULINK

Mediul SIMULINK poate fi activat prin intermediul mediului MATLAB, în


doua moduri:
1. Se face click pe pictograma Simulink , din bara de
instrumente a mediului MATLAB;
2. Din mediul MATLAB, în linia de comanda se editează comanda simulink și
se execută, Figura 5.

Figura 5. Lansarea în execuție a mediului SIMULINK, utilizând comanda simulink

22
În urma acțiunii uneia din comenzile specificate anterior, este lansat în execuție
mediul SIMULINK. Pe ecran se deschide o fereastră ce conține componentele aflate în
biblioteca SIMULINK, precum în Figura 6.

Figura 6. Biblioteca mediului Simulink.

Pentru construirea unei diagrame se vor selecta comenzile New, Model din mediul
de comenzi File al mediului Simulink, după cum este reprezentat în Figura 7. În urma
execuției acestei acțiuni pe ecran se va deschide o fereastră destinată construirii
diagramelor, Figura 8.

23
Figura 7. Lansarea în execuție a ferestrei de construire a unei diagrame

Figura 8. Imaginea ferestrei destinată construirii și simulării diagramelor

2.2.2. Prezentarea componentelor din biblioteca Simulink

Biblioteca mediului SIMULINK (Simulink Library) conține un set de


componente destinate realizării unor operații elementare, având semnificație matematică
sau de natură a genera și prelucra semnale, după cum este reprezentat în Figura 8.
Semnificația celor mai utilizate componente din bibliotecă este prezentată în Tabelul 6.

24
Tabelul 6. Semnificaţia celor mai utilizate componente din biblioteca SIMULINK

Nr. crt. Denumire Semnificație


1 Source Generarea semnalelor sursă
2 Sinks Reprezentarea grafică a dinamicii sistemelor
3 Discrete Simularea sistemelor discrete în timp
4 Continuous Simularea sistemelor liniare și sistemelor neliniare
5 Math Operation Realizare operațiilor matematice
6 Signal Routing Realizarea conexiunilor

La rândul ei, fiecare componentă conține un set de instrumente. Dacă se va


executa dublu-click pe oricare dintre componentele din bibliotecă, în partea dreaptă a
ferestrei din Figura 6 vor apare instrumentele componentei respective, după cum se
poate observa în Figura 9. În cele ce urmează se vor detalia câteva din cele mai utilizate
componente ale bibliotecii Simulink.

Figura 9. Instrumentele componentei Sinks

25
A1. Componenta semnalelor sursă (Signal Sources Library)
Componenta semnalelor sursă conține instrumente generatoare de semnale de
intrare aplicate sistemului studiat. Aceste instrumente sunt obținute prin activarea
componentei Sources. Principalele instrumente asociate componentei semnalelor sursă
sunt prezentate în Tabelul 7. Semnalele sursă cele mai utilizate în cadrul aplicațiilor
sunt: semnalul de ceas, semnalul constant, semnalul sinusoidal și semnalul treaptă.

Tabelul 7. Componenta Sources

Nr. crt. Denumire instrument Semnificație


1 Constant Semnal de intrare constant
2 Clock Semnal de ceas
3 Sine Wave Semnal sinusoidal
4 Step Semnal treaptă
5 Ramp Semnal rampă

A2. Componenta semnalelor de ieșire (Signal Sinks Library)


Instrumentele componentei Sinks sunt obținute prin activarea pictogramei
Sinks. Semnificația principalelor instrumente ale acestei componente este afișată în
Tabelul 8.

Tabelul 8. Componenta Sinks

Nr.crt. Denumire Semnificație


1 Scope Vizualizare mărimi de ieșire pe osciloscop
2 To Workspace Mediul de lucru
3 Stop Simulation Sfârșitul simulării

A3. Componenta sistemelor continue (Continuous Library)


Instrumentele componentei sistemelor liniare și neliniare sunt obținute prin
activarea pictogramei Continuous. Principalele instrumente asociate componentei
sistemelor liniare sunt prezentate în Tabelul 9. Componenta sistemelor liniare și
neliniare conține instrumente dedicate funcțiilor matematice algebrice: sumator,
amplificator, etc.

26
Tabelul 9. Componenta sistemelor liniare

Nr.crt. Denumire Semnificație


1 Integrator Integrator
2 Derivative Derivator
3 Transfer Fcn Funcția de transfer

A4. Componenta funcțiilor matematice


Prin activarea pictogramei Math Operation, sunt obținute instrumentele
componentei funcțiilor matematice. Semnificația componentelor din blocul funcțiilor
matematice sunt prezentate în Tabelul 10. Meniul funcțiilor matematice conține
obiectele pentru funcții matematice algebrice, funcția histerezis, funcția de întârziere și
saturare.

Tabelul 10. Componenta sistemelor neliniare

Nr.crt. Denumire Semnificație


1 Sin Funcția trigonometrică sinus
2 Min Funcția minim
3 Gain Amplificator
4 Sum Sumator
5 Product Produs

2.3. Partea aplicativă

Pentru a realiza simularea dinamică a unui sistem, utilizând mediul Simulink,


sunt necesare parcurgerea următoarelor etape:

1. Determinarea modelului matematic.


2. Identificarea blocurilor corespunzătoare elementelor dinamice care
modelează sistemul.
3. Realizarea diagramei sistemului, formată din blocuri standard (aflate în
biblioteca Simulink) sau a blocurilor proprii (create de utilizator).
4. Configurarea fiecărui bloc, în funcție de modelul matematic și parametrii
asociați sistemului.
5. Lansarea în execuție, etapă realizată prin comanda Start din meniul
Simulation.
6. Selectarea opțiunilor necesare vizualizării rezultatelor simulării.

27
Exemplul 10. Fie ecuația:

𝑦 =3∗𝑢 (8)

Să se construiască diagrama care va implementa ecuația (8) în mediul


Simulink, pentru u=5;
Rezolvare:
A1. Identificarea blocurilor. Ecuația (8) poate fi implementată prin intermediul
următoarelor blocuri:
 pentru generarea semnalului de intrare u se va utiliza blocul Constant
din componenta Source Library.
 Blocul Gain din componenta Math Operations, pentru amplificare
intrări u cu factorul de amplificare 3,
 Blocul Display pentru vizualizarea rezultatului din componenta Sinks.

A2. Construirea diagramei. Modalitatea de realizare a diagramei este


prezentată în cele ce urmează.
Toate blocurile necesare (Constant, Gain, Display) vor fi copiate din biblioteca
SIMULINK în fereastra de construire a diagramei. Pentru realizarea acestei etape se
execută succesiv operațiile:
1. Se activează fereastra Sources - Library.
1. Se execută click pe blocul Constant cu butonul din dreapta mouse-ului.
Cât timp este apăsat butonul, se realizează o copie a blocului și se
plasează în diagrama bloc.
2. Similar sunt copiate blocurile: Gain din fereastra Math Operations și
respectiv Display Block din fereastra Sinks - Library.
Operații uzuale pentru copierea, mutarea și ștergerea blocurilor:
 copiere: se va utiliza butonul drept al mouse-ului;
 mutarea blocurilor: se va utiliza butonul stâng al mouse-ului;
 ștergerea blocurilor: se va utiliza butonul delete.
Blocurile se vor conecta conform diagramei din Figura 10. Acestea pot fi
conectate prin apăsarea butonului drept al mouse-ului și tragerea unei săgeți de la ieșirea

28
unui bloc la intrarea altui bloc. În diagrama astfel obținută, blocurile pot fi deplasate și
aranjate cu ajutorul butonului stâng al mouse-ului.

Figura 10. Diagrama asociată ecuaţiei (8)

A3. Configurarea blocurilor. Prin configurare se înțelege stabilirea anumitor


parametri numerici asociați blocurilor. În cadrul diagramei din Figura 10, este necesară
configurarea blocurilor Constant și Gain. Etapa de configurare decurge astfel:
Blocul Constant:
 Se execută click pe blocul Constant;
 În urma activării blocului Constant se va deschide căsuța de dialog
specifică blocului, precum în Figura 11. În câmpul specific introducerii
parametrului se setează constanta: Constant value=5;
 Validarea valorilor introduse se face prin apăsarea butonului Apply, după
cum este prezentat în Figura 11;
 Pentru închiderea căsuței de dialog se utilizează butonul Close.
Blocul Gain:
 În urma activării blocului Gain, se va deschide căsuța de dialog specifică
blocului, după cum este prezentat în Figura 12;
 În câmpul specific parametrilor se setează conform datelor din Figura
12, parametrul: Gain: 3;

29
Figura 11. Configurarea blocului Constant

Figura 12. Configurarea blocului Gain

Diagrama se va salva sub numele de prob11, alegând comanda File/Save As, cu


extensia “.mdl”.
A4. Lansarea în execuție. Aceasta este realizată prin comanda Start din meniul
Simulation (Figura 13). În cadrul blocului Display se va obține rezultatul ecuației.

30
Figura 13. Diagrama din exemplul 10

Exemplul 11. Fie ecuația de ordinul 1

𝑇 ∗ 𝑦̇ + 𝑦 + 𝐾 ∗ 𝑢(𝑡) (9)

În ecuația (9), T=0.9 reprezintă constanta de timp a ecuației, K=3 este factorul
de amplificare asociat variabilei de intrare u, u  1t  .

Condiția inițială a sistemului este y0  1 . Sistemul va fi simulat pe intervalul

de timp 0, 10 s.


Rezolvarea 1. Modelul matematic (9) se aduce la forma standard (10) :

𝑑𝑦 1
= ∗ (−𝑦(𝑡) + 𝐾 ∗ 𝑢(𝑡)) (10)
𝑑𝑡 𝑇

Ecuația (10) se integrează, ajungând la expresia (11):

1
𝑦(𝑡) = 𝑦(0) + ∫ (−𝑦(𝑡) + 𝐾 ∗ 𝑢(𝑡))𝑑𝑡 (11)
𝑇

Ultima relație este implementată prin intermediul diagramei bloc prezentată în


Figura 14.

31
Figura 14. Diagrama ecuației de ordinul 1

Crearea diagramei. Pentru realizarea diagramei, se vor avea în vedere


următoarele etape:
A. Toate blocurile necesare vor fi copiate din biblioteca SIMULINK în schema
bloc;
B. Conectarea blocurilor conform diagramei bloc din Figura 14 ;
C. Configurarea și parametrizarea fiecărui bloc, introducând valorile numerice
pentru parametrii blocurilor prin intermediul căsuței de dialog a fiecărui
bloc.
Rezolvare 2. Modelul matematic (9) se aduce la forma funcției de transfer:

𝐾
𝐻(𝑠) = (12)
𝑇∗𝑠+1

Ultima relație este implementată prin intermediul diagramei bloc din Figura
15.

Figura 15. Diagrama ecuației de ordinul 1.

Creare diagramă. Pentru realizarea diagramei se vor avea în vedere


următoarele etape:
32
A. Toate blocurile necesare vor fi copiate din biblioteca SIMULINK în schema
bloc;
B. Conectarea blocurilor se va face conform diagramei bloc din Figura 15;
C. Configurarea și parametrizarea fiecărui bloc se va face introducând valorile
numerice pentru parametrii blocurilor prin intermediul căsuțelor de dialog a
fiecărui bloc.
Vizualizarea rezultatelor simulării este accesibilă prin intermediul blocului
Scope. Blocul Scope prezintă câteva trăsături, după cum se poate observa în Figura 16:
 cel mai din stânga buton din fereastra Scope este butonul de Zoom care
permite modificarea dimensiunilor graficului în ambele direcții, x și y (aria
de modificare se alege cu mouse-ul);
 următoarele două butoane sunt de asemenea butoane Zoom. Acestea permit
mărirea graficul pe abscisă, respectiv ordonată.
 butonul care are drept pictogramă un binoclu este butonul Auto-scale care
arată întreg răspunsul în timp al sistemului, anulând orice modificare.
 următorul buton este butonul Save- axes care salvează sau îngheață axele .
 cel mai din dreapta buton este butonul Properties care permite în meniul
Axes configurarea blocului Scope. În câmpurile Ymax și Ymin se introduc
valorile pentru determinarea limitelor de reprezentare pe axa y, după cum
este prezentat în Figura 17.

Figura 16. Bara de obiecte a blocului Scope

33
Figura 17. Căsuța de dialog a butonului Properties

În Figura 18 este redată dinamica ecuației de ordinul 1 (12) obținută în


condițiile impuse.

Figura 18. Rezultatul obținut prin simularea sistemului de ordinul 1

2.4. Întrebări și exerciții

1. Care sunt avantajele mediului de simulare Simulink?


2. Să se construiască diagramele de simulare pentru următoarele ecuații:
a) y=2u, unde u=4;
b) y  3  u  e u , u=5;
c) 3  y  y  2  u , y(0)=0, u(0)=1,5;
3. Să se construiască diagrama ce realizează conversia gradelor Celsius în
grade Fahrenheit.
9
TF  TC  32 ;
5

34
35
Lucrarea 3 - Modelarea analitică

3.1. Obiectivele lucrării

 Însușirea metodei de modelare analitică;


 Aplicarea metodei analitice la modelare unor procese de acumulare;

3.2. Breviar teoretic

Elaborarea modelelor matematice utilizând metoda analitică presupune


utilizarea de legi generale și/sau specifice fenomenelor fizice și chimice caracteristice
evoluției sistemului modelat respectiv cum ar fi:
 legi de conservare (masă, energie, impuls);
 legi de echilibru (mecanic, chimic, etc.);
 legi de stare a gazelor;
 legea asociate cineticii reacțiilor chimice etc.
În ceea ce privește legile de conservare, expresia matematică a acestora este
cuprinsă în așa numita ecuație de transport generalizată, care pentru o mărime
conservabilă oarecare Ψ are forma:

𝐴=𝐼−𝐸−𝐶 (13)

Semnificația notațiilor din ecuația (13) este:

 A reprezintă acumularea din Ψ în elementul de volum al sistemului în


unitatea de timp;
 I – debitul1 din Ψ care intră în elementul de volum al sistemului;
 E – debitul din Ψ care părăsește elementul de volum al sistemului;
 C – consumul în unitatea de timp în elementul de volum.

1
Debitul reprezintă cantitatea de Ψ care traversează o secțiune în unitatea de timp

36
3.3. Partea aplicativă

Exemplul 12. Se consideră procesul de acumulare prezentat în Figura 19.


Fluxul Qi reprezintă debitul de intrare în vas, în l/h iar fluxul Qe debitul de evacuare,
exprimat în aceleași unități. Fluxul de ieșire este caracterizat prin curgere liberă a
lichidului din vas. Mărimea de intrare a sistemului Qi are o variație treaptă, ca în Figura
20. Se cere să se determine modelul matematic al procesului și să se simuleze acesta.

Figura 19. Procesul de acumulare a unui lichid într-un vas

Semnificația notațiilor din Figura 19 este următoarea:


 Qi, Qe – debitele de intrare și de ieșire;
 R – rezistență hidraulică;
 H – nivelul curent;

Figura 20. Dinamica mărimi de intrare Qi

Ca ipoteză simplificatoare se presupune că debitul de lichid care părăsește


vasul este proporțional cu nivelul lichidului din vas, respectiv:

𝑄𝑒 = 𝑘 ∗ 𝐻 (14)

37
În ecuația (14), k este un coeficient de proporționalitate.
Atâta timp cât debitele Qi și Qe coincid, nivelul de lichid H este constant. Dacă
egalitatea nu se mai respectă, volumul de lichid din vas se va modifica cu V respectiv:

∆𝑉 = 𝐴 ∗ ∆𝐻 (15)

În ecuația (15), H reprezintă variația de nivel din vas iar A este aria secțiunii
transversale a vasului.
Pe de altă parte, variația de volum ( V ) se poate exprima funcție de debite:

∆𝑉 = 𝑄𝑖 ∗ ∆𝑡 − 𝑄𝑒 ∗ ∆𝑡 (16)

În ecuația (16), t este intervalul de timp în care volumul de lichid din vas se
modifică cu V .
Din relațiile (15) și (16) rezultă:

𝐴 ∗ ∆𝐻 = 𝑄𝑖 ∗ ∆𝑡 − 𝑄𝑒 ∗ ∆𝑡 (17)

Împărțind prin t relația (17), rezultă:

∆𝐻
𝐴∗ = 𝑄𝑖 − 𝑄𝑒 (18)
∆𝑡

Considerând intervalul Δt foarte mic rezultă:

∆𝐻 𝑑𝐻
lim = (19)
∆𝑡→0 ∆𝑡 𝑑𝑡

Înlocuind în relația (19) se obține:

𝑑𝐻
𝐴∗ = 𝑄𝑖 − 𝑘 ∗ 𝐻 (20)
𝑑𝑡

Sau:

𝐴 𝑑𝐻 1
∗ + 𝐻 = ∗ 𝑄𝑖 (21)
𝑘 𝑑𝑡 𝑘

𝐴 1
Notând 𝑘 = 𝑎 și 𝑘 = 𝑏 se obține:

38
𝑑𝐻
𝑎∗ + 𝐻 = 𝑏 ∗ 𝑄𝑖 (22)
𝑑𝑡

Modelul matematic dinamic obținut în relația (22) este reprezentat de o ecuație


diferențială ordinară, liniară, neomogenă, cu coeficienți constanți. Coeficientul a al
derivatei (exprimat în unități de timp) se numește constantă de timp, iar coeficientul b al
termenului liber se numește coeficient de transfer.
Implementarea relației (22) în mediul de Simulink presupune o prelucrare a
relației de forma:

1
𝐻 = 𝐻(0) + ∫(𝑏 ∗ 𝑄𝑖 − 𝐻)𝑑𝑡 (23)
𝑎

Figura 21 prezintă digrama de simulare a relației (23), considerând b=3.15, a=


11 și H(0)=74.

Figura 21. Diagrama de simulare a relației (23)

O altă formă echivalentă de reprezentare a modelului matematic (22) este


modelul de tip funcție de transfer care este mult mai ușor de implementat în mediile de
simulare.

𝑏
𝐻(𝑠) = (24)
𝑎∗𝑠+1

39
Diagrama relației (24) în mediul Simulink este prezentată în Figura 22.
Evoluția în timp a nivelului la o modificare de tip treaptă a debitului de intrare este
prezentată în Figura 23.

Figura 22. Diagrama de simulare a relației (24)

Figura 23. Evoluția în timp a nivelului la o modificare de tip treaptă a debitului de


intrare de la 50 l/h la 60 l/h

Exemplul 13. Se consideră procesul acumulare a unui lichid pentru două vase
aflate în cascadă, ilustrat în Figura 24, în cadrul căruia debitul de ieșire Qe1 din primul
vas reprezintă debitul de intrare Qi2 pentru cel de-al doilea vas. În cazul de față:

40
𝑄𝑒1 = 𝑄𝑖2 = 𝑘1 ∗ 𝐻1 (25)

Figura 24. Procesul de acumulare pentru două vase în cascadă

Se cere să se determine modelul matematic al procesului și să se simuleze


pentru o variație treaptă a mărimii de intrare a sistemului Qi, conform Figura 24.
În mod similar cu exemplul anterior, ecuațiile bilanțurilor materiale pentru cele
două vase sunt:

𝑑𝐻1
𝐴1 ∗ = 𝑄𝑖1 − 𝑘1 ∗ 𝐻1 (26)
𝑑𝑡
𝑑𝐻2
𝐴2 ∗ = 𝑘1 ∗ 𝐻1 − 𝑘2 ∗ 𝐻2 (27)
𝑑𝑡

Realizarea diagramei acestui exemplu, ilustrată în Figura 25, impune utilizarea


uneia dintre facilitățile Simulink – ului de a grupa mai multe blocuri într-un singur bloc,
utilizând blocul Subsystem din componenta Ports&Subsystem.

41
Figura 25. Diagrama de simulare a procesul de acumulare pentru două vase în
cascadă

În acest caz, s-au utilizat două blocuri Subsystem, unul pentru modelarea
primului vas, denumit Vas 1 în Figura 25 și unul pentru modelarea celui de-al doilea
vas denumit Vas 2. Un dublu click pe subsistemul Vas1 deschide diagrama asociată
modelului primului vas, Figura 26. Conexiunea cu modelul celui de-al doilea vas,
model ilustrat în Figura 27 este realizată prin intermediul blocurilor Out și In din
componenta Ports&Subsystem, denumite Qe1 respectiv Qi2. Evoluția în timp a
nivelurilor în cele două vase sunt ilustrate în Figura 28 și Figura 29.
Pentru acest exemplu s-au luat în considerare aceleași valori ale constantelor a
și b din exemplul 12.

Figura 26. Simulatorul primului vas


42
Figura 27. Simulatorul celui de-al doilea vas

Figura 28. Evoluția în timp a nivelului din primul vas la o modificare treaptă a
debitului de intrare de la 50 l/h la 60 l/h

Figura 29. Evoluția în timp a nivelului în cel de/al doilea vas la o modificare
treaptă a debitului de intrare de la 50 l/h la 60 l/h
43
Exemplul 14. Se consideră procesul acumulare a unui lichid pentru două vase
aflate în serie, proces ilustrat în Figura 30. Se cere să se determine modelul matematic
al procesului și să se simuleze pentru o variație treaptă a mărimea de intrare a sistemului
Qi, conform celor prezentate în Figura 30.

Figura 30. Procesul de acumulare pentru două vase în serie

Bilanțul material pentru primul vas este:

𝑑𝐻1
𝐴1 ∗ = 𝑄𝑖1 − 𝑄𝑒1 (28)
𝑑𝑡

În acest caz debitul de ieșire din primul vas este funcție de diferența de nivel
dintre cele două vase:

𝑄𝑒1 = 𝑘1 ∗ (𝐻1 − 𝐻2 ) (29)

În aceste condiții bilanțul material al primului vas este:

𝑑𝐻1
𝐴1 ∗ = 𝑄𝑖1 − 𝑘1 ∗ (𝐻1 − 𝐻2 ) (30)
𝑑𝑡

Bilanțul material pentru cel de-al doilea vas este:

𝑑𝐻2
𝐴2 ∗ = 𝑘1 ∗ (𝐻1 − 𝐻2 ) − 𝑘2 ∗ 𝐻2 (31)
𝑑𝑡

44
Diagramele de simulare pentru acest exemplu sunt prezentate în Figura 31
(pentru întreg modelul), Figura 32 (pentru primul vas), Figura 33 (pentru cel de-al
doilea). Evoluția în timp a nivelurilor în cele două vase sunt ilustrate în Figura 34 și
Figura 35.

Figura 31. Simulatorul exemplului 13

Figura 32. Simulatorul primului vas

45
Figura 33. Simulatorul celui de-al doilea vas

Figura 34. Evoluția în timp a nivelului din primul vas la o modificare treaptă a
debitului de intrare

46
Figura 35. Evoluția în timp a nivelului în cel de/al doilea vas la o modificare
treaptă a debitului de intrare Q1

3.4. Întrebări și exerciții

1. Fie vasul prevăzut cu o manta de încălzire cu abur, ilustrat în Figura 36. În


cadrul acestuia, debitul de intrare se notează cu Q1, iar debitul de ieșire cu Q2
[volum/timp]. Conținutul vasului variază conform relației:

𝑑𝑉
= 𝑄1 − 𝑄2 (32)
𝑑𝑡

Termeni bilanțului energetic corespunzători relației (32) sunt următorii:


 cantitatea de căldură intrată în sistem este Q1cρ T1 ;

 cantitatea de căldură ieșită din sistem este Q1cρ T2

 viteza de variație a cantității de căldură din sistem este


d
VCρ T2 
dt
 viteza de variație a căldurii transferată de manta q  λA(T2  Tm )
În termenii, de mai sus, T1 reprezintă temperatura debitului de intrare, T2 –
temperatura lichidului din vas, λ - coeficientul general de transmisie a căldurii prin

47
peretele mantalei, A – suprafața peretelui mantalei, T – temperatura aburului în manta, c
– căldura specifică fluidelor, ρ – densitate.

Figura 36. Vas prevăzut cu manta cu abur [3]

Introducând toți termenii în ecuația (32) în ecuația bilanțului energetic se


obține următoare ecuație:

𝑑
(𝑉 ∗ 𝑐 ∗ 𝜌 ∗ 𝑇2 ) = 𝑄1 ∗ 𝑐 ∗ 𝜌 ∗ 𝑇1 − 𝑞 − 𝑄2 ∗ 𝑐 ∗ 𝜌 ∗ 𝑇2 (33)
𝑑𝑡

Ca și ipoteză simplificatoare se consideră că temperatura T2 este aceeași în


toate punctele din interiorul vasului, de aceea este egală cu temperatura fluxului de
ieșire din sistem.
Să se întocmească programul în MATLAB sau Simulink pentru simularea
vasului prevăzut cu manta.
2. Se consideră vasul prevăzut cu o manta de încălzire cu abur prezentat în
Figura 37 [3]. Acest vas are două fluxuri de alimentare, notate în figură cu FA și FB.
Aceste fluxuri au căldurile specifice cA și cB. Se consideră că suprafața de transfer de
căldură dintre mantaua de abur și conținutul vasului, A, variază pe măsura variației
nivelului din vas. Se admite că variațiile de densitate sunt neglijabile.
Bilanțul material în acest caz este:
𝑑𝑉
= 𝐹𝐴 + 𝐹𝐵 − 𝐹2 (34)
𝑑𝑡

Conținutul de căldură al fluidelor din vas este:

48
𝐶𝐴 𝐶𝐵
𝐶2 = 𝐶𝐴 ∗ + 𝑐𝐵 ∗ (35)
𝜌𝐴 𝜌𝐵

În ecuația (35), semnificația termenilor este:

 C — concentrația (lbmol/ft3);
 Ρ — densitatea (lbmol/ft3);

Pentru determinarea concentrațiilor CA și CB, mai sunt necesare două ecuații de


debit. Acestea au forma: debit de acumulare = intrare – ieșire:
𝑑
(𝐶 𝑉) = 𝐹𝐴 − 𝐹2 𝐶𝐴 (36)
𝑑𝑡 𝐴
𝑑
(𝐶 𝑉) = 𝐹𝐵 − 𝐹2 𝐶𝐵 (37)
𝑑𝑡 𝐵

Variația volumului din vas va produce o variație a suprafeței de transfer de


căldură A, conform ecuației:

𝐷2 𝜋 4𝑉
𝐴= + (38)
4 𝐷

În ecuația de mai sus, D semnifică diametrul vasului.

Se cere să se întocmească programul Matlab sau Simulink pentru simularea


vasului descris.

Figura 37 Vas prevăzut cu manta cu abur

49
Lucrarea 4 - Modelarea experimentală

4.1. Obiectivele lucrării

 Însușirea metodei de modelare experimentală;


 Metode grafico- analitice de identificarea a parametrilor unui model
matematic;
 Utilizarea System Identification Toolbox a mediului MATLAB pentru
identificarea parametrilor unui model.

4.2. Breviar teoretic

Elaborarea modelelor matematice utilizând metoda experimentală presupune


parcurgerea etapelor prezentate în Figura 38.

50
Figura 38. Etapele modelării experimentale

Metoda grafico-analitică de identificare al unui model de ordinul I.


Dacă răspunsul în timp al unui proces y(t) la o modificare treaptă a intrării are
forma din Figura 39, atunci putem considera modelul matematic al procesului de
ordinul 1 și are forma:

𝐾 ∗ 𝑦̇ + 𝑦 = 𝑇 ∗ 𝑢 (39)

În ecuația (39), K este reprezintă constanta de timp, dimensional fiind


exprimată în unități de timp, T - coeficientul de amplificare, y - ieșirea sistemului, u -
intrarea sistemului.

51
Figura 39. Răspunsul în timp al elementului aperiodic de ordinul 1 la un semnal
treaptă

Problema care se pune este determinarea constantelor K și T.


În regim staționar, valoarea derivatei y din ecuația (34) devine nulă. În această
situație, ecuația (34) devine:

𝑦 = 𝑇∗𝑢 (40)

Această relație permite determinarea coeficientului de amplificare ca fiind


raportul dintre variația mărimii de ieșire y(t) și variația mărimii de intrare u(t) [4].

𝑦𝑓 − 𝑦𝑖
𝑇≈ (41)
𝑢𝑓 − 𝑢𝑖

Determinarea constantei de timp se poate realiza prin metoda tangentei ce


constă în trasarea tangentei la grafic în origine la răspunsul în timp al elementului
aperiodic de ordinul 1 la un semnal treaptă, precum în Figura 40. Din punct de vedere
matematic tangenta la grafic în origine este:

𝑑𝑦 𝑇
| = (42)
𝑑𝑡 𝑡=0 𝐾

Valoarea constantei K este egală cu distanța dintre punctul de trasare a tangatei


și punctul de intersecție a tangentei cu valoarea finală a lui y(t). Se recomandă trasarea a
minim trei tangente pentru a determina o medie a acestora.

52
Figura 40. Răspunsul în timp al elementului aperiodic de ordinul 1 la un semnal
treaptă

Soluția modelului matematic (39) este:

𝑡
𝑦(𝑡) = 𝑦𝑖 + 𝑇 ∗ (1 − 𝑒 −𝐾 ) (43)

Metoda grafico-analitică de identificare al unui model de ordinul II. Dacă


răspunsul în timp al unui proces y(t) la o modificare treaptă a intrării are forma din
Figura 41, atunci putem considera că modelul matematic al procesului este de ordinul 2
și are forma:
𝐾1 ∗ 𝑦̈ + 𝐾2 ∗ 𝑦̇ + 𝑦 = 𝑡 ∗ 𝑢(𝑡) (44)

În modelul (44), K1, K2 sunt constante de timp iar T are semnificația prezentată
la elementul aperiodic de ordinul întâi.

53
Figura 41. Răspunsul în timp al unui model matematic de ordinul 2.

Coeficientul de amplificare T se determină conform relației (41).


Determinarea constantelor K1 și K2 este destul de greoaie fapt pentru care se
preferă aducerea ecuației (44) la forma:

𝑇
𝐻(𝑠) = (45)
(𝐾1 ∗ 𝑠 + 1) ∗ (𝐾2 ∗ 𝑠 + 1)

În ecuația (45), 𝑎1 = 𝐾1 ∗ 𝐾2 iar 𝑎2 = 𝐾1 + 𝐾2 .


Determinarea constantelor de timp K1 și K2 se poate realiza prin intermediul
următoarelor metode.
B1. Metoda timpilor t30 și t70. Cunoscându-se valorile ieșirii y la 30% și 70 %
din răspuns, vezi Figura 41, constantele T1 și T2 se determină pe baza următorului
sistem de relații [5, 6]:

𝑡70%
𝐾1 + 𝐾2 =
1.2
𝑡30% + 𝑡70% 𝑡30% (46)
𝐾1 − 𝐾2 = ∗ (0.45 − )
{ 0.6 𝑡70%

B2. Metoda Smith. Această metodă se bazează pe valoarea răspunsului la timpii


t20 și t60. Considerând modelul de forma:

𝑇 ∗ 𝑒 𝜏𝑠
𝐻(𝑠) = (47)
𝐾2 ∗ 𝑠2 + 𝐾 ∗ 𝜉 ∗ 𝑠 + 1

54
Etapele de identificare a metodei Smith sunt [7]:
1. Determinarea t20 și t60 din răspunsul în timp al elementului de ordinul II.
2. Găsirea valorilor lui ξ și t60 /K din Figura 42.
3. Calcularea lui K cunoscând t60 /K.

Figura 42. Graficul metodei Smith [7].

4.3. Partea aplicativă

Exemplul 15. Se consideră date experimentale din Tabelul 11, asociate unui
proces a cărei dinamică a intrării este prezentată în Figura 43. Să se determine modelul
matematic asociat acestora.

Figura 43. Dinamica procesului studiat

55
Tabelul 11. Date experimentale

t[min] y(t)
0 80
3 84.35
6 87.60
9 89.60
12 90.95
15 92.30
18 92.70
21 93.5
24 93.88
27 94.5
30 94.6
33 95

Rezolvare. Pe baza datelor din Tabelul 11, se va realiza graficul din Figura 44,
pe baza căruia se vor identifica parametrii modelului matematic de ordinul I, asociat
datelor experimentale.

Figura 44. Graficul pe baza datelor din tabelul (11)

Constanta de timp asociat modelului matematic este K=10 min, iar factorul de
amplificare este:

Δ𝑌 95 − 80 15
𝑇= = = =5 (48)
Δ𝑈 23 − 20 3

56
În aceste condiții modelul matematic asociat datelor din Tabelul 11 este:

10 ∗ 𝑦̇ + 𝑦 = 5 ∗ 𝑢 (49)

Soluția analitică a ecuației (44) este:

𝑡
𝑦(𝑡) = 80 + 15 ∗ (1 − 𝑒 −10 ) (50)

O comparație între datele calculate și datele experimentale sunt prezentate în


Tabelul 12 și Figura 45. Programul în MATLAB pentru a realiza graficul comparativ
este prezentat in lista 13.

Tabelul 12. Comparaţie între datele reale şi date calculate

t[min] y(t) yc(t) eroare


0 80 80 0
3 84.35 83.88 0.46
6 87.60 86.76 0.83
9 89.60 88.90 0.69
12 90.95 90.48 0.46
15 92.30 91.65 0.64
18 92.70 92.52 0.17
21 93.5 93.16 0.33
24 93.88 93.63 0.24
27 94.5 93.99 0.5
30 94.6 94.25 0.34
33 95 94.44 0.55

57
Figura 45. Comparație între datele experimentale şi cele calculate

Lista 13. Programul pentru a realiza graficul comparativ.


x=[0 3 6 9 12 15 18 21 24 27 30 33]
y=[80 84.35 87.60 89.60 90.95 92.30 92.70 93.5 93.88 94.5 94.6 95]
z=80+15*(1-exp(-x/10))
plot(x,y,'k', x,z,'-*k')

Unul din instrumentele software destinate identificării sistemelor este System


Identification Toolbox din MATLAB. În prezenta lucrare, autorii au studiat posibilitatea
utilizării System Identification Toolbox și au comparat rezultatele obținute cu acest
instrument în raport cu rezultatele obținute la utilizarea metodelor prezentate anterior.
Pentru a deschide interfața grafică a System Identification Toolbox, se tastează comanda
ident în fereastra de comandă MATLAB, interfața fiind prezentată în Figura 46.

58
Figura 46. Interfața modulului System Identification Toolbox

În mod uzual, datele experimentale asociate dinamicii sistemului sunt de forma


t j , y j , j  1, m . Pentru a importa aceste date în System Identification Toolbox

trebuie creat în prealabil un fișierele cu datele experimentale. În cazul de față se va crea


fișierul u.dat, fișier ce conține datele asociate variabilei de intrare u, și un fișier y.dat, ce
conține date de ieșire. Machetele celor două fișiere sunt prezentate în lista 14 respectiv
lista 15 [8].

59
Lista 14. Structura fișierului u.dat
23
23
23
23
23
23
23
23
23
23
23
23

Lista 15. Structura fișierului y.dat


80
84.35
87.60
89.60
90.95
92.30
92.70
93.5
93.88
94.5
94.6
95

Importarea acestor fișiere în Workspace presupune utilizarea butonului Import data


ce va deschide o fereastra unde se va selecta unul din cele două fișiere. După selectarea unui
fișier, în fereastra nou deschisă, Figura 47, unde se va selecta Import Selection/ Import data.

60
Figura 47. Interfața de importare a fișierelor în Workspace

Pasul următor este importarea datelor în System Identification. În meniul Import


Data al System Identification Tool se selectează funcția Time domain data, care are ca efect
deschiderea ferestrei de importare de datelor, precum în Figura 48. În fereastra Import Data
sunt specificate următoarele opțiuni:
 Input – numele variabilei de intrare a sistemului;
 Output – numele variabilei de ieșire a sistemului;
 Data name – numele fișierului de date experimentale, nume care etichetează
datele din System Identification Tool, după ce operația de import este
finalizată;
 Starting time – valoarea inițială a axei timpului. Uzual axa timpului pornește
de la valoarea 0;
 Sampling interval – valoarea pasului de tabelare a axei timpului, în cazul de
față 3.
Activarea comenzii Import aduce datele experimentale în System Identification Tool,
pictograma prezentată în Figura 49 confirmând disponibilitatea pentru prelucrarea viitoare a
datelor.

61
Figura 48. Fereastra de importare a datelor în System Identification Toolbox

Figura 49. Finalizarea importului datelor experimentale

62
După importul datelor experimentale, utilizatorul poate vizualiza dinamica mărimii
de intrare, u , și a mărimii de ieșire, y . Pentru a vizualiza dinamica datelor de intrare și de
ieșire, în meniul Data View se selectează Time Plot, apărând imaginea din Figura 50.

Figura 50. Dinamica variabilelor de intrare și ieșire.

Dacă datele experimentale au fost introduse corect, utilizatorul confirmă această


situație utilizând funcția Validation Data.
Următoarea etapă este destinată calculului parametrilor modelului matematic în
regim dinamic. Pentru aceasta, în meniul Operations/Estimate al System Identification Tool
este selectată funcția Process models, precum în Figura 51. În cadrul acestei funcții,
utilizatorul selectează numărul de poli ai funcției de transfer asociată modelului dinamic al
sistemului și timpul mort. O imagine a acestei operații, pentru estimarea modelului matematic
de ordinul I fără timp mort, este prezentată în Figura 52.
Forma modelului matematic determinat prin funcția de transfer este:

4.12
𝐻(𝑠) = (51)
8.97 ∗ 𝑠 + 1

63
.

Figura 51. Meniul Estimate utilizat pentru determinarea constantelor modelului dinamic

Figura 52. Fereastra Process Models pentru sistemul de ordinul 1 fără timp mort
64
Un grafic comparativ dintre datele experimentale și cele calculate cu funcția de
transfer este prezentat în Figura 54
După estimarea modelului matematic, interfața grafică System Identification Tool are
forma prezentată în Figura 53. Rezultatele sunt vizibile în modulul P1, situat în partea
dreaptă a ferestrei.

Figura 53. Interfața grafică a System Identification Tool după estimarea modelului
matematic

Un grafic comparativ dintre datele experimentale și cele calculate cu funcția de


transfer este prezentat în Figura 54.

65
Figura 54. Graficul comparativ

Exemplul 16. Se consideră datele din Tabelul 13, ce descriu un element aperiodic de
ordinul 2 la o variaţie treaptă ∆u=4. Determinaţi parametrii elmentului aperiodic de ordinul 2
prin cele metode grafico-analitice şi utilizând System Identification Toolbox.

Tabelul 13. Datele experimentale ale exemplului

t[min] y(t)
0 0
1.5 0.33
3 0.98
4.5 1.65
6 2.23
7.5 2.7
9 3.05
10.5 3.31
12 3.51
13.5 3.65
15 3.75
16.5 3.82
18 3.87
19.5 3.91
21 3.93
22.5 3.95
24 3.96
25.5 3.97
27 3.98
28.5 3.98
66
30 3.99
Utilizând System Identification Toolbox, precum în Figura 55, obţinem funcţia de
transfer de forma:
4 (52)
𝐻(𝑠) =
(2.22 ∗ 𝑠 + 1) ∗ (4.29 ∗ 𝑠 + 1)

Figura 55. Utilizarea System Identification Toolbox pentru rezolvarea exemplului

Metoda timpilor t30% şi t70%. Pe baza datelor din tabel se realizează graficul asociat
procesului în Matlab, precum în Figura 56.

67
Figura 56. Graficul corespunzător metodei timpilor 30% și 70%

Coeficientul de amplificare al procesului are valoarea:

4−0 (53)
𝑇= =4
1

Răspunsul sistemului la 30 % respectiv 70 % din timpul de răspuns este

𝑦30% = 0 + 0.3 ∗ (3.99 − 0) = 1.19 (54)


𝑦70% = 0 + 0.7 ∗ (3.99 − 0) = 2.79 (55)

Pe baza graficului din Figura 56, la răspunsul de y30%=1.19 îi corespunde timpul


t30=4 minute, iar pentru răspunsul y70.%= 2.79 îi corespunde t70= 7.99 minute.
Conform metodei timpilor, K1=2.84 şi K2= 3.83.

7.99
𝐾1 + 𝐾2 =
1.2 (56)
4 + 7.99 4
𝐾1 − 𝐾2 = ∗ (0.45 − )
0.6 7.99

Funcţia de transfer are forma:

4
𝐻(𝑠) = (57)
(2.84 ∗ 𝑠 + 1) ∗ (3.83 ∗ 𝑠 + 1)

Metoda Smith. Răspunsul. Pe baza graficului din Figura 56 se vor determina valorile
timpilor la 20% şi 60% din răspunsul sistemului, t20%=2.5 iar t70%= 6.4.

68
𝑦20% = 0 + 0.2 ∗ (3.99 − 0) = 0.798 (58)
𝑦70% = 0 + 0.6 ∗ (3.99 − 0) = 2.39 (59)
Cu ajutorul graficului lui Smith, Figura 57, vom determina că pentru raportul
t20%/t60%= 2.5/6.4=0.39 îi corespunde ξ= 1.6, iar t60%/K=2.1, rezultând K=3.04.
În consecinţă:
4 4 (60)
𝐻(𝑠) = =
3.042 ∗ 𝑠 2 + 3.04 ∗ 1.6𝑠 + 1 9.28 ∗ 𝑠 2 + 4.85 ∗ 𝑠 + 1

Figura 57. Graficul Smith

4.4. Întrebări și exerciții

1. Să se determine modelul matematic dinamic al unui traductor de temperatură, a


cărei dinamică a intrării este prezentată în Figura 58. Date experimentele privind dependența
dintre mărimea de ieșire, curentul generat de traductorul de temperatură și timp, sunt
prezentate în Tabelul 14. Să se întocmească programul în MATLAB pentru realizarea unei
comparații între datele experimentale și cele calculate.

69
Figura 58. Dinamica intrării traductorului de temperatură

Tabelul 14. Datele experimentale asociate unui traductor de temperatură.

Timp [s] I[mA]


0 6.97
10 8,29
20 9,52
30 10,52
40 11,28
50 11,70
60 12,07
70 12,35
80 12,55
90 12,70
100 12,80
110 12,90
120 13.04

2. Se consideră procesul de acumulare prezentat în Figura 59. Fluxul Qvi reprezintă


debitul de intrare în vas, în m3/s iar fluxul Qve debitul de evacuare, exprimat în aceeași unitate
de măsură. Fluxul de ieșire este caracterizat prin curgere liberă a lichidului din vas.

Figura 59. Structura procesului de acumulare a lichidului, curgere liberă.

Mărimea de intrare a sistemului Qi are o variație treaptă, conform Figura 60.

70
Figura 60. Dinamica debitului Qi

Răspunsul experimental al sistemului la variația mărimii de ieșire este prezentat în


Tabelul 15.

Tabelul 15. Date experimentale privind dinamica nivelului la curgere liberă.

Timp[min] 0 0.5 1 2 5 10 15 20 25 30 35 40 45 50

H[mm] 74 79 84 92 112 136 150 160 166 170 174 176 177 179

3. În cadrul unui reactor chimic s-a studiat variația temperaturii de ieșire în funcție de
timpul scurs de la începutul reacției și de proporția în care a fost deschis robinetul de
combustibil. Datele experimentale obținute sunt prezentate în Tabelul 16:

Tabelul 16. Datele experimentale obținute din reactor

Timp Deschis Temper Timp Deschis Temper Timp Deschis Temper


(min) (%) atură (min) (%) atură (min) (%) atură
(°C) (°C) (°C)
0 30 69.65 36 38 70.22 72 38 75.27
4 30 69.7 40 38 71.32 76 38 75.97
8 30 70.41 44 38 72.33 80 38 76.30
12 30 70.28 48 38 72.92 84 38 76.3
16 30 69.55 52 38 73.45 88 38 75.51
20 30 70.32 56 38 74.09 92 38 74.86
24 38 69.97 60 38 75 96 38 75.86
28 38 69.96 64 38 75.25 100 38 76.2
32 38 69.68 68 38 74.78 104 38 76
Se cer următoarele lucruri:

 Estimați parametrii unui model de ordinul întâi, cu timp mort;


 Determinați dacă modelul obținut este adecvat datelor experimentale din
tabel;

71
 Estimați erorile modelului caresunt cauzate de datele experimentale și de
metoda de calcul.

72
Lucrarea 5 - Regresia polinomială și regresia multiplă liniară

5.1. Obiectivele lucrării

 Însușirea noțiunilor de bază legate de regresia polinomială și de regresia multiplă


liniară;
 Însușirea funcțiilor MATLAB pentru regresia polinomială;
 Însușirea funcțiilor MATLAB pentru regresia multiplă liniară.

5.2. Aspecte teoretice

Analiza de regresie (regresia) este o metodă de determinare a unei relații matematice


(de corelare) între datele care aparțin unui anumit set de date. Setul de date care urmează a fi
supus analizei de regresie este compus din una sau mai multe variabile independente (notate
în general cu 𝑥) și o variabilă dependentă (notată în general cu 𝑦). Relațiile matematice
obținute (modelele matematice) poartă numele de ecuații de regresie [1].
Un set de date care urmează să fie supus analizei de regresie are două caracteristici:
 Numărul de variabile independente ale setului:
 Set de date cu o variabilă independentă;
 Set de date cu mai multe variabile independente;
 Numărul de date din acest set.
Pentru corelarea datelor dintr-un set de date pot fi utilizate mai multe categorii de
relații matematice: ecuații liniare, polinoame, etc. Din acest motiv, în cadrul denumirii
regresiei se menționează și tipul de relație matematică utilizat. De exemplu, dacă pentru
corelarea datelor dintr-un set de date se utilizează o ecuație liniară, atunci tipul de regresie
utilizat se numește regresia liniară. Dacă există mai multe variabile independente, regresia
poartă denumirea de regresie multiplă.
Analiza de regresie depinde foarte mult de datele din setul de date utilizat. Cu cât
există o corelare mai puternică între aceste date, cu atât ecuația de regresie leagă mai precis
între ele datele primite. Din acest motiv, analiza de regresie este o metodă semi-empirică, iar
ecuația de regresie obținută este o ecuație de aproximare. Pentru determinarea ecuației de
regresie este mai important gradul de corelare al datelor din setul de date analizat decât
numărul de date. Este de preferat un număr de date mai redus, dar corelat puternic decât un
număr mare de date, cu o corelare slabă.

73
Un set de date poate fi corelat prin mai multe ecuații de regresie. De exemplu, fie
setul de date cu o singură variabilă independentă, prezentat în Tabelul 17.

Tabelul 17. Set de date cu o singură variabilă independentă

𝒙 𝒚
6 14

Câteva din ecuațiile de regresie care pot fi utilizate pentru corelarea acestui set de
date sunt prezentate mai jos:

𝑦 =𝑥+8 (61)
𝑦 =2∗𝑥+2 (62)
𝑥
𝑦 = + 11 (63)
2
𝑦 = 𝑥2 − 3 ∗ 𝑥 − 4 (64)

Deoarece același set de date poate fi corelat utilizând mai mult de o ecuație de
regresie, devine importantă determinarea celei mai precise ecuații de regresie. Din acest
motiv, ecuațiile de regresie sunt supuse analizelor statistice, pentru a verifica semnificația
coeficienților și adecvanța ecuației de regresie [1]. În practică, toate programele de calculator
care efectuează analiza de regresie vor determina cea mai precisă ecuație de regresie.
Există mai multe metode de determinare a ecuațiilor de regresie. Cea mai cunoscută
dintre ele este metoda celor mai mici pătrate. Această metodă va fi utilizată în cadrul acestei
lucrări de laborator.
Analiza de regresie, este o procedură utilizată foarte mult în diferite domenii:
inginerie, finanțe, medicină (mai ales în ramura epidemiologică), economie, sport, etc.

5.3. Regresia polinomială

Regresia polinomială este acea analiză de regresie în care setul de date de intrare este
corelat cu ajutorul unei relații matematice care are forma unui polinom de gradul 𝑛 [1, 9].
Polinomul obținut se mai numește polinom de regresie. Datele utilizate pentru determinarea
polinomului de regresie sunt de forma (𝑥𝑖 , 𝑦𝑖 ), 𝑖 = 1 … 𝑚.
Forma generală a polinomului utilizat este prezentată în ecuația (51):

𝑦 = 𝑎1 ∗ 𝑥 + 𝑎2 ∗ 𝑥 2 + ⋯ + 𝑎𝑛 ∗ 𝑥 𝑛 (65)

74
Forma generală a ecuației (51) este prezentată în ecuația (52):

𝑦 = ∑ 𝑎𝑖 ∗ 𝑥 𝑖 (66)
𝑖=1

În ecuația (51), semnificația termenilor este următoarea:


 𝑦 — variabila dependentă;
 𝑥 𝑖 — variabila independentă, ridicată la puterea 𝑖;
 𝑛 — gradul polinomului de regresie;
 𝑎𝑖 — coeficienții polinomului de regresie.
În cadrul ecuației (51), singura necunoscută o constituie coeficienții polinomului de
regresie, 𝑎𝑖 . Aceștia sunt determinați de către algoritmul de regresie polinomială. Practic,
determinarea polinomului de regresie înseamnă determinarea valorilor coeficienților 𝑎𝑖 .
Gradul polinomului 𝑛 se stabilește înaintea efectuării analizei de regresie. Un grad
mai mare al polinomului de regresie va duce la un polinom de regresie ce aproximează mai
precis datele din setul de intrare, dar câștigul de precizie va fi din ce în ce mai mic. La un
moment dat, câștigul de precizie obținut va fi atât de mic, încât creșterea gradului polinomului
de regresie va deveni nejustificată.
Rezolvarea problemei de regresie polinomială (determinarea coeficienților ai) se face
utilizând metoda celor mai mici pătrate. Această metodă presupune minimizarea funcției
obiectiv:

𝑚 𝑛 2

𝑓(𝑎𝑖 ) = ∑ (𝑦𝑗 − ∑ 𝑎𝑖 𝑥𝑗𝑖 ) (67)


𝑗=1 𝑖=0

Pentru a putea minimiza funcția obiectiv (53) se pleacă de la condiția necesară pentru
existența extremului funcției obiectiv multivariabile și anume ca derivatele parțiale în raport
cu toate variabilele funcției să se anuleze:

𝜕𝑓
=0
𝜕𝑎0
𝜕𝑓
=0 (68)
𝜕𝑎1

𝜕𝑓
=0
{𝜕𝑎𝑛

75
Sistemul (54) are forma matriceală 𝑋 ∗ 𝐴 = 𝑌, unde matricele X, A și Y sunt
următoarele:

𝑚 𝑚 𝑚

𝑚 ∑ 𝑥𝑗 ∑ 𝑥𝑗2 … ∑ 𝑥𝑗𝑛
𝑗=1 𝑗=1 𝑗=1
𝑚 𝑚 𝑚 𝑚

∑ 𝑥𝑗 ∑ 𝑥𝑗2 ∑ 𝑥𝑗3 … ∑ 𝑥𝑗𝑛+1


𝑗=1 𝑗=1 𝑗=1 𝑗=1
𝑋= 𝑚 𝑚 𝑚 𝑚

∑ 𝑥𝑗2 ∑ 𝑥𝑗3 ∑ 𝑥𝑗4 … ∑ 𝑥𝑗𝑛+2


𝑗=1 𝑗=1 𝑗=1 𝑗=1 (69)
… … … … …
𝑚 𝑚 𝑚 𝑚

∑ 𝑥𝑗𝑛+1 ∑ 𝑥𝑗𝑛+2 ∑ 𝑥𝑗𝑛+3 … ∑ 𝑥𝑗2𝑛


(𝑗=1 𝑗=1 𝑗=1 𝑗=1 )
𝐴𝑇 = (𝑎0 𝑎1 𝑎2 … 𝑎𝑛 )
𝑚 𝑚 𝑚 𝑚

𝑌 𝑇 = (∑ 𝑦𝑗 ∑ 𝑦𝑗 𝑥𝑗 ∑ 𝑦𝑗 𝑥𝑗2 … ∑ 𝑦𝑗 𝑥𝑗2𝑛 )
𝑗=1 𝑗=1 𝑗=1 𝑗=1

Sistemul (55) este un sistem liniar, care poate fi rezolvat cu ajutorul tehnicilor
numerice [1].
Pentru determinarea polinomului de regresie, MATLAB utilizează funcția polyfit.
Această funcție determină coeficienții polinomului de regresie de gradul 𝑛, unde 𝑛 este ales
de către utilizator, cu ajutorul metodei celor mai mici pătrate. Rezultatul este reținut sub
forma unui șir de lungime 𝑛 + 1, șir ce conține coeficienții polinomului de regresie în ordinea
descrescătoare a puterilor [2].
Funcția polyfit permite utilizarea mai multor sintaxe de apelare.
 𝑝 = 𝑝𝑜𝑙𝑦𝑓𝑖𝑡(𝑥, 𝑦, 𝑛). În cadrul acestei apelări, funcția polyfit determină
coeficienții polinomului de regresie de gradul 𝑛, având 𝑥 ca variabilă
independentă și 𝑦 ca variabilă dependentă. Coeficienții determinați sunt
reținuți în variabila 𝑝;
 [𝑝, 𝑆] = 𝑝𝑜𝑙𝑦𝑓𝑖𝑡(𝑥, 𝑦, 𝑛). Această apelare este similară cu cea precedentă,
singura deosebire fiind existența variabilei 𝑆. Această variabilă este o
structură de date ce reține erori de estimare sau predicții;
 [𝑝, 𝑆, 𝑚𝑢] = 𝑝𝑜𝑙𝑦𝑓𝑖𝑡(𝑥, 𝑦, 𝑛). Această apelare este similară cu cea
precedentă, singurele deosebiri fiind existența variabilei structurate 𝑚𝑢 și
faptul potrivit căruia coeficienții polinomului de regresie sunt calculați după
76
un algoritm diferit, care ia în considerare valorile acestei variabile structurate
[2].
În cadrul acestei lucrări de laborator va fi utilizată apelarea care întoarce numai
coeficienții polinomului de regresie, coeficienți reținuți în variabila 𝑝.
Exemplul 16: se dau datele prezentate în Tabelul 18. Să se scrie un program
MATLAB ce determină coeficienții polinomului de regresie care corelează aceste date.

Tabelul 18. Datele de intrare utilizate drept exemplu

𝒙 𝒚 𝒙 𝒚
24 0.11 40 1.06
26 0.22 41 1.1
28 0.38 44 1.24
29 0.46 48 1.48
32 0.58 50 1.56
33 0.69 53 1.79
35 0.8 58 2.02
36 0.82 62 2.12

Pentru a rezolva exemplul de mai sus, este necesară îndeplinirea următorilor pași:
 Introducerea datelor prezentate în Tabelul 18, într-o formă pe care limbajul
MATLAB o poate procesa;
 Stabilirea gradului polinomului de regresie. Acest lucru este lăsat la
latitudinea programatorului. În acest exemplu vor fi prezentate rezultatele
obținute prin stabilirea mai multor grade ale polinomului de regresie;
 Apelarea funcției polyfit folosind prima sintaxă din cele 3 prezentate mai sus.
Există două modalități de introducere a datelor de intrare din Tabelul 18:
introducerea manuală a acestora sau citirea lor dintr-un fișier. Deoarece este mai practică, în
acest exemplu va fi folosită a doua modalitate de citire a datelor de intrare, cea a citirii din
fișier.
Înainte de citirea propriu-zisă, vor fi create două fișiere, denumite x.txt și y.txt.
Fișierul x.txt va conține datele de intrare asociate coloanei x din Tabelul 18, iar fișierul y.txt
va conține datele de intrare asociate coloanei y din Tabelul 18.
Pentru a citi datele de intrare dintr-un fișier și a le reține într-o formă matriceală,
MATLAB pune la dispoziția programatorului funcția dlmread. Aceasta are mai multe sintaxe
conform cărora poate fi apelată și este documentată foarte detaliat în sistemul de asistență al
acestui mediu de programare [2].

77
Pentru a rezolva acest exemplu, va fi utilizată sintaxa M = dlmread(filename). În
cadrul acestei sintaxe, M reprezintă matricea ce va reține datele citite din fișier iar filename
reprezintă numele fișierului din care se vor citi datele.
Următorul pas în rezolvarea acestui exemplu îl constituie scrierea programului
MATLAB pentru determinarea coeficienților polinomului de regresie. Acest program are
următoarele instrucțiuni:

clear;
x=dlmread('x.txt');
y=dlmread('y.txt');
p=polyfit(x,y,1)

În programul de mai sus, prima instrucțiune are rolul de a elibera memoria care
conține variabilele MATLAB definite până în acel moment. Următoarele două instrucțiuni au
rolul de a citi datele de intrare aflate în cele două fișiere, iar a patra instrucțiune are rolul de a
calcula polinomul de regresie utilizând datele de intrare citite și stabilind gradul polinomului
ca fiind gradul 1.
La rularea acestui script, variabila p va avea valoarea:
𝑝 = (0.0514 −1.1302)
Aceste valori corespund polinomului de regresie:
𝑦 = 0.0514 ∗ 𝑥 − 1.1302
Similar se pot calcula coeficienții polinomului de regresie de grad superior, prin
modificarea celui de-al treilea parametru al funcției polyfit.
Un pas important după determinarea coeficienților polinomului de regresie este acela
de verificare a preciziei acestuia de aproximare. Există mai multe metode de verificare, una
dintre ele fiind a evalua polinomul determinat în toate valorile care aparțin variabilei
independente 𝑥 și compararea rezultatelor obținute cu valorile variabilei dependente 𝑦. Pentru
evaluarea într-un anumit punct a polinomului de regresie obținut (sau a oricărui alt polinom),
MATLAB pune la dispoziție funcția polyval, care evaluează polinomul cu forma generală:

𝑦 = 𝑝1 ∗ 𝑥 𝑛 + 𝑝2 ∗ 𝑥 𝑛−1 + ⋯ + 𝑝𝑛 ∗ 𝑥 + 𝑝𝑛+1 (70)

Funcția polyval permite utilizarea mai multor sintaxe de apelare:


 𝑦 = 𝑝𝑜𝑙𝑦𝑣𝑎𝑙(𝑝, 𝑥). Această sintaxă evaluează în punctul 𝑥 polinomul care
are coeficienții reținuți în variabila 𝑝, rezultatul fiind reținut în variabila 𝑦;
78
 [𝑦, 𝑑𝑒𝑙𝑡𝑎] = 𝑝𝑜𝑙𝑦𝑣𝑎𝑙(𝑝, 𝑥, 𝑆). Această apelare este similară cu cea prezentată
anterior, cu diferența că se utilizează variabila structurată 𝑆 pentru a genera
erorile de estimare, erori reținute în variabila 𝑑𝑒𝑙𝑡𝑎 [2];
În cadrul acestei lucrări de laborator va fi utilizată apelarea 𝑦 = 𝑝𝑜𝑙𝑦𝑣𝑎𝑙(𝑝, 𝑥).
Modalitatea de verificare prezentată mai sus presupune combinarea funcțiilor polyfit
și polyval pentru a evalua cele două mărimi care vor fi comparate.
Există două metode de utilizare a acestor funcții în cadrul programului MATLAB:
 Prin programare, sub forma unui script. Avantajul acestei metode este că
programatorul are control deplin asupra detaliilor legate de apelarea funcțiilor
𝑝𝑜𝑙𝑦𝑓𝑖𝑡 și 𝑝𝑜𝑙𝑦𝑣𝑎𝑙. Dezavantajul este faptul că lipsește o interfață adecvată,
fapt ce face ca script-ul să fie greu de utilizat de către începători;
 Cu ajutorul unei interfețe. Avantajul acestei metode este acela că utilizarea
funcțiilor 𝑝𝑜𝑙𝑦𝑓𝑖𝑡 și 𝑝𝑜𝑙𝑦𝑣𝑎𝑙 este ușoară, datorită prezenței interfeței.
Dezavantajul este acela că nu există un control asupra detaliilor legate de
apelarea funcțiilor discutate.
În această lucrare de laborator vor fi detaliate ambele variante de utilizare prezentate
mai sus.
Pentru prezentarea modului de lucru prin programare, se va da un exemplu de
rezolvat.
Exemplul 17: se dau datele prezentate în Tabelul 18. Să se scrie un program
MATLAB ce corelează datele din acest tabel printr-un polinom de regresie și să se verifice
precizia estimării acestuia prin compararea ieșirilor obținute cu ajutorul polinomului de
regresie cu ieșirile din datele prezentate în tabel și scrierea diferenței dintre acestea.
Programul pentru rezolvarea acestui exemplu are la bază programul MATLAB
conceput pentru rezolvarea exemplului anterior, la care se adaugă instrucțiunile necesare
pentru evaluarea polinomului de regresie în punctele dorite și de calcul a diferențelor dintre
cele două valori. Și în acest exemplu va fi luat în considerare un polinom de gradul 1. Datorită
faptului că modalitatea de rezolvare este identică, indiferent de gradul ales al polinomului de
regresie, nu are importanță gradul ales al polinomului de regresie.
Programul MATLAB de rezolvare a acestui exemplu este:

79
clear;
x=dlmread('x.txt');
y=dlmread('y.txt');
p=polyfit(x,y,1)
z=polyval(p,x)
t=y-z

În programul de mai sus, semnificația primelor 4 instrucțiuni a fost prezentată


anterior. Instrucțiunea a cincea are rolul de a evalua polinomul de regresie obținut în toate
valorile variabilei x și de a scrie rezultatele obținute, iar instrucțiunea a șasea are rolul de a
calcula și de a scrie diferențele dintre valorile obținute cu ajutorul polinomului de regresie și
cele din datele de intrare.
La rularea acestui program, rezultatele afișate sunt următoarele:
𝑧 = (0.1661 0.2741 0.3821 0.4361 0.5982)
𝑡 = (−0.0561 −0.0541 −0.0021 0.0239 −0.0182)
Notă: Matricele z și t au, în realitate, 16 valori, dar au fost prezentate primele 5, din
motive de spațiu.
Interfața MATLAB este utilizată pentru determinarea coeficienților polinomului de
regresie și verificarea preciziei de estimare a acestuia. Pentru determinarea coeficienților
polinomului de regresie a fost utilizată funcția 𝑝𝑜𝑙𝑦𝑓𝑖𝑡 iar pentru verificarea preciziei acestuia
de estimare a fost utilizată funcția 𝑝𝑜𝑙𝑦𝑣𝑎𝑙.
O prezentare generală a interfeței MATLAB pentru determinarea coeficienților
polinomului de regresie se află în Figura 61.

80
Figura 61. Prezentarea generală a interfeței MATLAB pentru determinarea
coeficienților polinomului de regresie

După cum se poate observa în Figura 61, interfața MATLAB are trei secțiuni:
 Date primare. Scopul acestei secțiuni este acela de a încărca fișierul de date
care conține datele de intrare și de a afișa reprezentarea în coordonate
carteziene a acestora;
 Analiza de regresie. această secțiune determină polinomul de regresie care
corelează datele de intrare citite în cadrul secțiunii date primare. Sunt afișate
abaterea standard și coeficienții polinomului iar, înainte de acest lucru,
utilizatorul trebuie să introducă gradul dorit al polinomului de regresie;
 Autori program. Sunt afișați autorii acestui program.
Pentru a observa atât modul de aplicare a regresiei polinomiale cât și modul de
utilizare al acestei interfețe, în cele ce urmează va fi luat un exemplu de funcționare.
Exemplul 18: se dau datele prezentate în Tabelul 18. Să se determine coeficienții
polinomului de regresie și abaterea standard a acestuia.
Pentru a utiliza interfața MATLAB, primul lucru care trebuie făcut este crearea
fișierului care să conțină datele de intrare. Acest fișier este un fișier text, care are pe fiecare
linie variabila independentă 𝑥 și variabila dependentă corespunzătoare, 𝑦. Aceste două
variabile trebuie despărțite printr-un spațiu.
81
Primul pas care trebuie efectuat este acela al încărcării fișierului de date în program.
Acest lucru se face apăsând butonul Deschidere Fișier de Date din secțiunea Date primare.
După încărcarea fișierului, în această secțiune vor apărea datele încărcate, în formă tabelară și
în reprezentare carteziană, precum în Figura 62.

Figura 62. Datele de intrare încărcate în programul MATLAB

Pasul următor este acela de stabilire a gradului polinomului de regresie și de


determinare a coeficienților acestuia. Acest lucru se realizează din secțiunea Analiza de
regresie. Mai întâi se introduce gradul dorit al polinomului de regresie, apoi se face click pe
butonul OK. Programul arată rezultatele dorite. În Figura 63 sunt prezentate rezultatele
obținute pentru polinomul de regresie de gradul 1.

82
Figura 63. Coeficienții polinomului de regresie de gradul 1 și abaterea standard a
acestuia

Din Figura 63 se poate observa că polinomul de regresie de gradul 1 are forma


𝑦 = 0.054012 ∗ 𝑥 − 1.13023 (71)
Coeficienții polinomului de regresie de gradul 2 și abaterea standard calculată sunt
prezentate în Figura 64.

83
Figura 64. Coeficienții polinomului de regresie de gradul 2 și abaterea standard a
acestuia

Din Figura 64 se poate observa că polinomul de regresie de gradul 2 are forma


𝑦 = −0.000232129 ∗ 𝑥 2 + 0.073662 ∗ 𝑥 − 1.51532 (72)
Din aceeași figură se poate observa că abaterea standard este de ordinul 10−30, fapt
ce arată o precizie excelentă de aproximare a datelor de către polinomul determinat.
Similar se poate alege un grad superior pentru polinomul de regresie. Pentru acest
exemplu, creșterea gradului polinomului de regresie nu a dus la o scădere a abaterii standard
calculate (deci la o creștere a preciziei) ci dimpotrivă, după cum se poate observa în Tabelul
19.

84
Tabelul 19. Variația abaterii standard a polinomului de regresie în funcție de gradul ales
al polinomului

Gradul ales al Abaterea standard a


polinomului de polinomului
regresie determinat
3 2.19 ∗ 10−30
4 1.81 ∗ 10−27
5 2.03 ∗ 10−27
6 3.91 ∗ 10−26
7 1.48 ∗ 10−26
8 8.26 ∗ 10−21
9 1.65 ∗ 10−20

5.4. Regresia multiplă liniară

Regresia multiplă liniară este o extindere a regresiei liniare, în sensul în care


variabila independentă 𝑥 este exprimată sub forma unui șir de numere, în timp ce variabila
dependentă 𝑦 este exprimată sub forma unei valori numerice [10]. Polinomul de regresie este
de forma [1]:

𝑦 = 𝑎0 + 𝑎1 ∗ 𝑥1 + 𝑎2 ∗ 𝑥2 + ⋯ + 𝑎𝑛 ∗ 𝑥𝑛 (73)

În ecuația (59), 𝑥𝑖 reprezintă valorile variabilelor independente, 𝑦 reprezintă valoarea


variabilei dependente iar 𝑛 reprezintă numărul de variabile independente. Determinarea
polinomului de regresie, în cadrul regresiei multiple liniare, înseamnă determinarea
coeficienților 𝑎𝑖 ai acestuia.
Ca și în cazul regresiei polinomiale, determinarea coeficienților modelului matematic
de regresie multiplă liniară se face tot cu ajutorul metodei celor mai mici pătrate. Această
metodă, aplicată în regresia multiplă liniară, presupune minimizarea funcției obiectiv:

2
𝑚 𝑛

𝑓(𝑎0 , 𝑎1 , 𝑎2 , … , 𝑎𝑛 ) = ∑ (𝑦𝑗 − (∑ 𝑎𝑖 ∗ 𝑥𝑖,𝑗 )) (74)


𝑗=1 𝑖=0

Pentru a putea minimiza funcția obiectiv (60) este necesară aplicarea condiției
necesare ca derivatele parțiale ale funcției în raport cu fiecare dintre parametrii acesteia să fie
0:

85
𝜕𝑓
=0 (75)
𝜕𝑎𝑖

Dezvoltând sistemul (61) se obține forma matriceală a acestuia, 𝑋 ∗ 𝐴 = 𝑌, unde cele


trei matrice au următoarele forme:

𝑚 𝑚 𝑚

𝑚 ∑ 𝑥1,𝑗 ∑ 𝑥2,𝑗 … ∑ 𝑥𝑛,𝑗


𝑗=1 𝑗=1 𝑗=1
𝑚 𝑚 𝑚 𝑚
2
∑ 𝑥1,𝑗 ∑ 𝑥1,𝑗 ∑ 𝑥1,𝑗 𝑥2,𝑗 … ∑ 𝑥1,𝑗 𝑥𝑛,𝑗
𝑗=1 𝑗=1 𝑗=1 𝑗=1
𝑋= 𝑚 𝑚 𝑚 𝑚
2
∑ 𝑥2,𝑗 ∑ 𝑥1,𝑗 𝑥2,𝑗 ∑ 𝑥2,𝑗 … ∑ 𝑥2,𝑗 𝑥𝑛,𝑗
𝑗=1 𝑗=1 𝑗=1 𝑗=1 (76)
… … … … …
𝑚 𝑚 𝑚 𝑚
2
∑ 𝑥𝑛,𝑗 ∑ 𝑥1,𝑗 𝑥𝑛,𝑗 ∑ 𝑥2,𝑗 𝑥𝑛,𝑗 … ∑ 𝑥𝑛,𝑗
(𝑗=1 𝑗=1 𝑗=1 𝑗=1 )
𝐴𝑇 = (𝑎0 𝑎1 𝑎2 … 𝑎𝑛 )
𝑚 𝑚 𝑚 𝑚

𝑌 𝑇 = (∑ 𝑦𝑗 ∑ 𝑦1,𝑗 𝑦𝑗 ∑ 𝑦2,𝑗 𝑦𝑗 … ∑ 𝑦𝑛,𝑗 𝑦𝑗 )


𝑗=1 𝑗=1 𝑗=1 𝑗=1

Sistemul (62) este unul liniar și poate fi rezolvat cu ajutorul tehnicilor numerice.
Pentru corelarea datelor cu ajutorul regresiei multiple liniare, programul MATLAB
pune la dispoziție funcția regress. Există mai multe sintaxe pentru apelarea acestei funcții [2].
Cea utilizată în această lucrare de laborator este
𝑏 = 𝑟𝑒𝑔𝑟𝑒𝑠𝑠(𝑦, 𝑥)
În sintaxa de mai sus, variabilele implicate au următoarele semnificații:
 𝑏 — coeficienții polinomului de regresie;
 𝑦 — variabila independentă;
 𝑥 — variabila dependentă.
Similar ca și în cazul regresiei polinomiale, funcția regress poate fi utilizată atât în
cadrul unui script cât și în cazul unei interfețe, avantajele și dezavantajele fiecăreia dintre cele
două metode rămânând aceleași.
În această lucrare de laborator vor fi detaliate ambele modalități de utilizare a
funcției regress.

86
Exemplul 19: se dau datele prezentate în Tabelul 20. Să se scrie un script ce
determină modelul matematic de regresie multiplă liniară având ca variabile independente
cele din coloanele 1, 3 și 5, variabila independentă fiind cea din coloana 2.

87
Tabelul 20. Datele de intrare luate drept exemplu în cadrul procedurii de utilizare

36 71 153 4.9 22 6 40 540 730 60 190


12 71 153 4.9 22 6 40 720 720 58 166
40 71 157 4.5 42 10 50 1000 725 62 170
36 72 152 4.5 26 9 45 850 729 62 184
40 64 150 5 50 9 50 1000 742 67 163
60 69 150 5 54 12 44 500 715 63 166
54 74 155 4.6 26 13 64 200 738 61 151
60 66 154 5.2 10 7 52 550 739 50 176
64 65 145 5 28 13 40 450 710 52 147

Pentru rezolvarea acestui exemplu, trebuie îndepliniți următorii pași:


 Introducerea datelor de intrare într-o formă pe care limbajul MATLAB o
poate procesa;
 Apelarea funcției regress pentru determinarea modelului matematic cerut.
Introducerea datelor de intrare se poate face în două moduri: prin introducerea
manuală a acestora sau prin citirea lor dintr-un fișier text. În acest exemplu va fi utilizată
modalitatea de citire din fișier, cu ajutorul funcției dlmread, prezentată anterior.
Variabilele independente vor fi introduse în fișierul xrl.txt. Variabilele dependente
de pe același rând vor fi separate între ele printr-un spațiu. Funcția regress cere ca prima
coloana din fișierul de variabile independente să conțină numai valoarea 1.
Variabila dependentă va fi introdusă în fișierul yrl.txt. Nu există vreo restricție
impusă de către funcția MATLAB mai sus amintită.
Script-ul rezultat pentru rezolvarea acestui exemplu este prezentat în cele ce
urmează:

clear;
x=dlmread('xrl.txt');
y=dlmread('yrl.txt');
b=regress(y,x)

În script-ul de mai sus, prima linie are rolul de a elibera memoria alocată variabilelor
MATLAB. A doua și a treia linie încarcă fișierele mai sus menționate iar a patra linie
calculează coeficienții ecuației de regresie multiplă liniară.
După rularea script-ului, variabila b, o matrice cu o coloană și patru rânduri, are
următoarele valori:

88
𝑏 = (−13.4753 −0.0357 0.5567 −0.0124) (77)

În consecință, modelul matematic de regresie multiplă liniară căutat are expresia:

𝑦 = −13.4753 − 0.0357 ∗ 𝑥1 + 0.5567 ∗ 𝑥2 − 0.0124 ∗ 𝑥3 (78)

Interfața MATLAB are rolul de a facilita utilizatorului introducerea datelor de intrare


și de a obține rezultatul căutat într-o formă mai ușor de citit. O prezentare generală a acestei
interfețe se află în Figura 65.

Figura 65. Prezentarea interfeței MATLAB pentru regresia multiplă liniară

Procedura pentru utilizarea interfeței MATLAB pentru determinarea coeficienților


polinomului de regresie multiplă liniară are pașii care vor fi prezentați în cele ce urmează.
Deschiderea fișierului de intrare. Fișierul de intrare este un fișier text, cu extensia
*.txt sau *.dat. În acest fișier, valorile numerice sunt așezate sub formă tabelară, separate între
ele printr-un spațiu. Pentru prezentarea procedurii de utilizare a interfeței MATLAB, va fi luat
în considerare setul de date de intrare prezentat în Tabelul 20.
Pentru deschiderea fișierului, se face click pe butonul Deschidere. Va apărea o
fereastră care permite selectarea fișierului dorit. După alegerea acestuia, programul afișează
numărul de determinări (numărul de linii) și cel de parametri (numărul de coloane). În plus,
utilizatorul va putea introduce indexul ieșirii. Indexul ieșirii reprezintă numărul coloanei ale
căror valori vor fi utilizate ca variabile dependente pentru determinarea polinomului de
89
regresie multiplă liniară. O reprezentare a programului, după încărcarea fișierului de intrare,
se află în Figura 66.

Figura 66. Programul de regresie multiplă liniară, după încărcarea fișierului de intrare

Introducerea datelor de intrare. În cadrul acestui program (interfețe), datele de


intrare sunt:
 Indexul ieșirii;
 Numărul de intrări;
 Indecșii intrărilor.
După cum a fost descris în cadrul pasului anterior, indexul ieșirii este reprezintă
numărul coloanei ale căror valori vor fi utilizate ca variabile dependente pentru determinarea
polinomului de regresie multiplă liniară. Acesta trebuie să fie între 1 și numărul total de
coloane din fișierul de intrare. Pentru a introduce indexul ieșirii, se tastează în câmpul dedicat
și se apasă pe butonul OK. Dacă totul este în regulă, atunci se va activa zona de introducere a
numărului de intrări și a indecșilor intrărilor. Dacă a apărut o eroare (de exemplu, au fost
introduse litere), atunci interfața va afișa un mesaj corespunzător și va aștepta ca utilizatorul
să corecteze eroarea apărută.
Numărul de intrări este un număr care arată câte variabile independente va avea
polinomul de regresie multiplă liniară. Acest număr se introduce în căsuța dedicată și trebuie,
de asemenea, să fie un număr cuprins între 1 și numărul total de coloane al fișierului de
intrare. După introducerea numărului de intrări, se apasă butonul OK, care verifică dacă
90
valoarea introdusă este corespunzătoare. Dacă este corespunzătoare, atunci se activează zona
de introducere a indecșilor intrărilor. În caz contrar, apare un mesaj de eroare și programul
așteaptă ca utilizatorul să o corecteze.
Indecșii intrărilor reprezintă numerele coloanelor ale căror valori vor fi utilizate ca și
variabile independente pentru polinomul de regresie multiplă liniară. Acesta va fi introdus în
zona de intrări, sub forma unui șir de caractere. Acest șir trebuie să aibă următoarele
proprietăți:
 Șirul introdus trebuie să fie format din numere, între 1 și numărul total de
coloane din fișierul de intrare;
 Numerele introduse trebuie să fie separate prin spații sau virgule;
 Indexul ieșirii nu trebuie să se regăsească în niciunul dintre numerele
introduse ca indecși ai intrărilor;
 Numărul de indecși introduși trebuie să fie egal cu numărul de intrări introdus
anterior;
 Nu contează ordinea în care sunt introduși acești indecși. Modificarea ordinii
introducerii indecșilor intrărilor modifică doar ordinea coeficienților
polinomului de regresie multiplă liniară, dar rezultatele obținute și
performanțele de estimare ale polinomului nu se modifică.
Proprietățile prezentate mai sus sunt afișate și în program, în cazul în care este
necesară consultarea lor. Pentru a le citi, este suficient un click pe butonul ?.
După introducerea indecșilor intrărilor, se face click pe butonul Validare. Acesta
verifică șirul introdus. Dacă nu apar erori, atunci se va activa butonul de calcul. Altfel, va
apărea un mesaj de eroare și programul va aștepta ca utilizatorul să le corecteze.
O reprezentare a programului de regresie multiplă liniară, după introducerea corectă
a datelor de intrare, se află în Figura 67.

91
Figura 67. Programul de regresie multiplă liniară, după introducerea corectă a datelor
de intrare

În Figura 67, indecșii introduși au rol numai de exemplu. Utilizatorul poate


introduce ce valori dorește, atâta timp cât respectă regulile prezentate.
Calculul coeficienților polinomului de regresie multiplă liniară și afișarea
rezultatelor obținute. Pentru a calcula coeficienții polinomului de regresie, se face click pe
butonul Calcul. Acesta îndeplinește două funcții:
 Determinarea coeficienților polinomului de regresie;
 Afișarea performanțelor de estimare a acestuia, în format text și grafic.
Coeficienții determinați sunt afișați utilizând notația din ecuația (59). Din punct de
vedere al performanțelor de estimare, acestea sunt exprimate în format text (tabelar) și grafic.
Un exemplu de afișare a rezultatelor este prezentat în Figura 68.

92
Figura 68. Programul de determinare a polinomului de regresie și rezultatele afișate

Din Figura 68, se poate observa forma tabelară de afișare, care conține valorile
determinare și calculate ale variabilei dependente, cât și abaterea, exprimată în procente. De
asemenea, există și forma grafică de exprimare. Citirea corectă a formei grafice înseamnă
observarea valorilor calculate și determinate ale variabilei dependente de pe aceeași linie
verticală.

5.5. Exerciții și probleme propuse

1. Se consideră un traductor de debit cu diafragmă. Setul de date experimentale


obținute pentru trasarea caracteristicii statice, și anume mărimea de intrare - debitul volumic -
și mărimea de ieșire - curentul generat de traductor - sunt prezentate în Tabelul 21:

Tabelul 21. Variația curentului generat în funcție de debitul volumic

Curentul generat
Debitul volumic (m3/h)
(mA)
10.14 10
8.64 8
7.2 6
4.5 3.5
2 2.5
1.5 2.2
0.1 2

93
Să se utilizeze analiza de regresie polinomială pentru a obține coeficienții
polinomului de regresie de gradul 2 care corelează datele prezente în tabelul de mai sus.
2. Capacitatea calorică a apei prezintă o variație neliniară cu temperatura, datele
termodinamice publicate relevând această proprietate. Se cere să se determine cea mai
adecvată ecuație de regresie polinomială a dependenței 𝐶𝑝 = 𝑓(𝑇), având datele din Tabelul
22:

Tabelul 22. Variația capacității calorice în funcție de temperatură

Capacitatea Capacitatea
Temperatura Temperatura
Nr. crt. calorică Nr. crt. calorică
(°C) (°C)
(kcal/kg*°C) (kcal/kg*°C)
1 0.01 1.00762 12 55 0.99919
2 5 1.00392 13 60 0.99967
3 10 1.00153 14 65 1.00024
4 15 0.99907 15 70 1.00091
5 20 0.99852 16 75 1.00167
6 25 0.99826 17 80 1.00253
7 30 0.99826 18 85 1.00351
8 35 0.99818 19 90 1.00461
9 40 0.99828 20 95 1.00586
10 45 0.99849 21 100 1.00721
11 50 0.99878

3. Valorile critice reprezintă proprietățile fizice ale compușilor chimici în condițiile


punctului critic. În Tabelul 23 sunt prezentate valorile temperaturii critice (Tc) și a presiunii
critice (Pc) pentru 8 compuși organici. Să se găsească coeficienții funcției de aproximare
𝑇𝑐 = 𝑓(𝑃𝑐 ).

94
Tabelul 23. Valorile temperaturii și a presiunii critice pentru cei 8 compuși

Presiunea
Temperatura
Nr. crt. Compusul critică
critică (K)
(bar)
1 Acetaldehidă 461 44
2 Acid acetic 594.8 57.1
3 Acetonă 508.7 46.6
4 Butanol 560 48.4
5 Alcool etilic 516 63
6 Eter etilic 467 35.6
7 Oxid etilenic 369 71
8 Alcool metilic 513.2 78.5

4. Entalpia aburului supraîncălzit variază în funcție de temperatura și presiunea


acestuia. Pentru un domeniu uzual de utilizare a aburului în rafinării, entalpia acestuia variază
conform datelor din Tabelul 24.
Se cere să se determine funcția liniară 𝐻 = 𝑓(𝑇, 𝑃), unde T reprezintă temperatura în
°C iar P reprezintă presiunea în bar.

Tabelul 24. Entalpia specifică a aburului supraîncălzit (kJ/kg)

Temperatură
Presiune (bar)
(°C)
2 3 4 5 6
180 2830 2824 2818 2812 2805
200 2870 2864 2859 2854 2849
220 2910 2905 2900 2896 2891
240 2950 2946 2941 2937 2933
260 2990 2986 2982 2979 2975
280 3030 3027 3023 3020 3017

Indicații: Funcția liniară de forma 𝐻 = 𝑓(𝑇, 𝑃) are forma generală:

𝐻 = 𝑎0 + 𝑎1 ∗ 𝑇 + 𝑎2 ∗ 𝑃 (79)

Coeficienții funcției sunt obținuți prin regresie multiplă liniară.


Pentru rezolvarea problemei este necesară rearanjarea datelor privind entalpia
aburului. După cum a fost prezentat mai devreme, funcția regress necesită transmiterea ca
parametri a celor două matrice care reprezintă variabila independentă respectiv variabilele
dependente. În concluzie, trebuie construite cele două fișiere, pentru a putea fi citite apoi cu
ajutorul funcției dlmread. Fișierul care conține variabilele independente se va numi y.txt, iar

95
fișierul ce conține variabilele dependente se va numi x.txt. Pentru a putea scrie conținuturile
celor doua fișiere, Tabelul 24 va fi rescris conform modelului din Tabelul 25.

Tabelul 25. Structura nouă a datelor, potrivită pentru lucrul cu MATLAB

Entalpie Temperatură Presiune Entalpie Temperatură Presiune


2830 180 2 2941 240 4
2870 200 2 2982 260 4
2910 220 2 3023 280 4
2950 240 2 2812 180 5
2990 260 2 2854 200 5
3030 280 2 2896 220 5
2824 180 3 2937 240 5
2864 200 3 2979 260 5
2905 220 3 3020 280 5
2946 240 3 2805 180 6
2986 260 3 2849 200 6
3027 280 3 2891 220 6
2818 180 4 2933 240 6
2859 200 4 2975 260 6
2900 220 4 3017 280 6

Conform așezării din Tabelul 25, fișierul y.txt va conține datele referitoare la
entalpie (coloana pe fundal colorat), iar fișierul x.txt va conține datele referitoare la
temperatură și presiune.
1. Proiectarea script-ului MATLAB pentru determinarea coeficienților ecuației de
regresie. Acesta are următorii pași:
a. Eliberarea memoriei care stochează valorile variabilelor din mediul
MATLAB. Acest lucru se face cu ajutorul funcției clear. Acest pas este
opțional, dar este recomandat pentru a fi făcut, pentru a elimina apariția
eventualelor erori datorate valorilor reziduale ale variabilelor deja
existente;
b. Încărcarea din cele două fișiere a variabilelor independentă și dependentă.
Acest lucru se face cu ajutorul funcției dlmread, a cărei utilizare a fost
prezentată anterior;
c. Calculul efectiv al coeficienților ecuației de regresie. Acest lucru este
efectuat cu ajutorul funcției regress, a cărei utilizare a fost prezentată
anterior.

96
97
Lucrarea 6 - Sisteme de ecuații liniare

6.1. Obiectivele lucrării

 Însușirea noțiunilor de bază legate de sistemele de ecuații liniare;


 Utilizarea mediului MATLAB pentru rezolvarea ecuațiilor și a sistemelor de ecuații
liniare;

6.2. Aspecte teoretice legate de sistemele de ecuații liniare

Un sistem de ecuații liniare este un sistem de ecuații care are forma generală [11]:

𝑎11 𝑥1 + 𝑎12 𝑥2 + ⋯ + 𝑎1𝑛 𝑥𝑛 = 𝑏1


𝑎 𝑥 + 𝑎22 𝑥2 + ⋯ + 𝑎2𝑛 𝑥𝑛 = 𝑏2
{ 21 1 (80)

𝑎𝑛1 𝑥1 + 𝑎𝑛2 𝑥2 + ⋯ + 𝑎𝑛𝑛 𝑥𝑛 = 𝑏𝑛

Sistemul (66) poate fi scris și sub o formă matriceală. Forma matriceală a sistemului
de ecuații liniare, ce are avantajul că poate fi utilizată pentru rezolvarea sistemului cu ajutorul
algoritmilor de calculator, are expresia generală [11]:

𝑎11 𝑎12 … 𝑎1𝑛 𝑥1 𝑏1


𝑎21 𝑎22 … 𝑎2𝑛 𝑥2 𝑏2
[… … … … ] ∗ […] = […] (81)
⏟𝑎𝑛1 𝑎𝑛2 … 𝑎𝑛𝑛 ⏟ 𝑥4 ⏟𝑏𝑛
𝐴 𝑥 𝐵

În cadrul expresiilor (66) și (67), 𝑛 reprezintă numărul de ecuații și cel de


necunoscute al sistemului.
Deoarece un sistem de ecuații liniare poate fi reprezentat sub formă matriceală, la
prima vedere se poate afirma că sistemul poate fi rezolvat utilizând metoda Cramer. Acest
lucru este adevărat, dar metoda Cramer este extrem de înceată pentru lucrul la calculator în
cazul în care sistemele de ecuații au 3 sau mai multe ecuații. Din acest motiv, există mai mulți
algoritmi pentru rezolvarea acestui tip de sistem. Există trei tipuri de algoritmi (metode)
pentru rezolvarea sistemelor de ecuații liniare [11, 12]:
 Metode directe. Acest tip de metode oferă o soluție exactă (în cazul în care nu
există erori de rotunjire) utilizând un număr predeterminat de pași de calcul.

98
Algoritmul Gauss-Jordan, este unul dintre cei mai eficienți și preciși algoritmi
𝑛3
din această categorie, necesitând aproximativ înmulțiri și împărțiri;
2

 Utilizarea repetată a metodelor directe. Această metodă se aplică în cazul


anumitor sisteme de ecuații neliniare, mai precis în cazul în care apar erori de
rotunjire la aplicarea algoritmilor direcți de rezolvare. Pentru a rezolva
această problemă, se aplică metodele directe, în mod repetat;
 Metode iterative. Aceste metode oferă o succesiune de aproximări care, în
anumite condiții, converg către soluția sistemului. Cei mai performanți
algoritmi din această categorie sunt algoritmii Jacobi și Gauss-Seidel.

6.3. Utilizarea MATLAB pentru rezolvarea sistemelor de ecuații liniare

Există mai multe metode pentru rezolvarea sistemelor de ecuații liniare, utilizând
mediul MATLAB. Câteva dintre acestea vor fi prezentate în cele ce urmează. Toate metodele
prezentate utilizează forma matriceală a sistemului de ecuații liniare, prezentată în expresia
(2).
1. Împărțirea matricelor. Această metodă se bazează pe două proprietăți ale mediului
MATLAB: acest mediu permite direct împărțirea a două matrice, folosind operatorul de
împărțire și că oferă două tipuri de împărțire a matricelor: împărțirea la stânga, reprezentată
prin operatorul \ și împărțirea la dreapta, reprezentată prin operatorul /.
Determinarea soluției sistemului de ecuații liniare scris în formă matriceală
presupune împărțirea la stânga sau la dreapta a matricelor, în funcție de ordinea în care acesta
sunt scrise în cadrul sistemului. Există două moduri în care pot fi scrise sistemele de ecuații
liniare, sub formă matriceală, reprezentate în expresiile (68) și (69):

𝐴∗𝑥 =𝐵 (82)
𝑥∗𝐴 =𝐵 (83)

Dacă sistemul de ecuații liniare este scris în formă matriceală conform expresiei (68),
atunci se utilizează împărțirea la stânga, iar rezultatul este obținut conform expresiei (70):

𝑥 = 𝐴\𝐵 (84)

Dacă sistemul de ecuații liniare este scris în formă matriceală conform expresiei (69),
atunci se utilizează împărțirea la dreapta, rezultatul fiind obținut conform expresiei (71):
99
𝑥 = 𝐴/𝐵 (85)

2. Utilizarea matricei inverse. Această metodă pleacă de la scrierea unui sistem de


ecuații liniare conform expresiei (68). Acea expresie se înmulțește cu inversa
matricei 𝐴, 𝐴−1, rezultatul obținut fiind prezentat în ecuația (72):

𝑥 = 𝐴−1 ∗ 𝐵 (86)

În MATLAB, ecuația (72) se programează utilizând funcția 𝑖𝑛𝑣:

𝑋 = 𝑖𝑛𝑣(𝐴) ∗ 𝐵

3. Algoritmul Gauss. Algoritmul Gauss este un algoritm direct pentru rezolvarea


sistemelor de ecuații liniare [11]. Este cel mai des utilizat algoritm și se bazează pe
convertirea sistemului de ecuații, scris în formă matriceală:

𝐴𝑥 = 𝐵 (87)

în sistemul de ecuații, scris în formă matriceală:

𝑈𝑥 = 𝐵′ (88)

În sistemul (73), 𝑈 este matricea coeficienților, convertit în forma triunghiular


superioară, iar 𝐵′ este șirul coeficienților modificați, astfel încât sistemul (73) să aibă aceeași
soluție ca și sistemul (72).
Odată ce a fost determinată matricea 𝑈 și șirul 𝐵′, algoritmul rezolvă sistemul liniar
prin substituție.
Algoritmul Gauss este destinat rezolvării sistemelor de ecuații liniare de dimensiuni
mici și medii. Acest algoritm are două etape de calcul:
 Transformarea matricei 𝐴 a sistemului de ecuații la forma triunghiular
superioară, însoțită de transformări corespunzătoare asupra vectorului 𝑏:

𝑎11 𝑎12 … 𝑎1𝑛 ′ ′ ′


𝑎11 𝑎12 … 𝑎1𝑛
𝑎21 𝑎22 … 𝑎2𝑛 0 ′
𝑎22 ′
… 𝑎2𝑛
(… … … … )→(… )
… … …
𝑎𝑛1 𝑎𝑛2 … 𝑎𝑛𝑛 0 0 ′
… 𝑎𝑛𝑛

100
 Determinarea soluțiilor prin substituție inversă, respectiv determinarea
iterativă a soluției 𝑥𝑛 , 𝑥𝑛−1 , … , 𝑥1 .
Primul pas, acela de triangularizare a matricei 𝐴, este realizat conform următorilor
pași:
 Pentru 𝑘 = 1,2, … , 𝑛 − 1 se calculează:
 Se determină linia lmax corespunzătoare elementului maxim de pe coloana k:
|𝑎𝑙𝑚𝑎𝑥,𝑘 | = max|𝑎𝑖𝑘 | , 𝑙𝑚𝑎𝑥 ≥ 𝑘
𝑖>𝑘

 Se permută linia k cu linia lmax:


𝑎𝑘𝑗 = 𝑎𝑙𝑚𝑎𝑥,𝑗 , 𝑗 = 𝑘, … , 𝑛
𝑏𝑘 = 𝑏_𝑙𝑚𝑎𝑥
 Pentru 𝑖 = 𝑘 + 1, … , 𝑛 se calculează:
𝑎
 Multiplicatorul 𝜇 = 𝑎 𝑖𝑘 ;
𝑘𝑘

 Elementele matricei și a termenului liber:


𝑎𝑖𝑗 = 𝑎𝑖𝑗 − 𝜇 ∗ 𝑎𝑘𝑗 , 𝑗 = 𝑘 + 1, … , 𝑛
𝑏𝑖 = 𝑏𝑖 − 𝜇 ∗ 𝑏𝑘
Etapa a doua de calcul, determinarea soluției prin substituție inversă, are următorii
pași:
 Calculul soluției 𝑥𝑛 :
𝑏𝑛
𝑥𝑛 =
𝑎𝑛𝑛
 Calculul iterativ al soluțiilor 𝑥𝑛−1 , 𝑥𝑛−2 , … , 𝑥1 :
𝑏𝑖 − ∑𝑛𝑗=𝑖+1 𝑎𝑖𝑗 ∗ 𝑥𝑗
𝑥𝑖 =
𝑎𝑖𝑖
Implementarea MATLAB a acestui algoritm este funcția Gauss [13]. Această funcție
are sintaxa:
𝑥 = 𝐺𝑎𝑢𝑠𝑠(𝐴, 𝑐)
În notația de mai sus, 𝑥 reprezintă soluția sistemului de ecuații liniare, 𝐴 reprezintă
matricea coeficienților, iar 𝑐 reprezintă șirul termenilor liberi.
4. Algoritmul Gauss-Jordan. Acest algoritm face, la rândul lui, parte din clasa
algoritmilor direcți [11]. Algoritmul Gauss-Jordan se bazează pe transformarea sistemului de
ecuații liniare exprimat sub formă matriceală (11) în sistemul de ecuații cu forma matriceală:

101
𝐼𝑥 = 𝐵′ (89)

În sistemul (75), 𝐼 este matricea unitate, iar 𝐵′ este șirul modificat al termenilor
liberi, astfel încât sistemele (73) și (75) să aibă aceeași soluție.
Algoritmul Gauss-Jordan se bazează pe relațiile de calcul ce permit transformarea
matricei A în matrice unitate și a matricei unitate în matrice inversă. Din totalitatea
transformărilor se păstrează numai acele transformări care conduc la matricea unitate, acestea
fiind extinse și asupra termenului liber b. Se creează o matrice extinsă S, de dimensiuni
n  n  1 , obținută prin bordarea matricei A cu vectorul termenilor liberi b. Matricea S are

forma generală:

𝑎11 𝑎12 … 𝑎1𝑛 𝑏1


𝑎21 𝑎22 … 𝑎2𝑛 𝑏2
𝑆=( )
… … … … …
𝑎𝑛1 𝑎𝑛2 … 𝑎𝑛𝑛 𝑏𝑛

Algoritmul de Gauss-Jordan implică calculul următorilor pași, pentru k ce ia valori


între 1 și n:
 Se determină linia lmax corespunzătoare elementului maxim de pe coloana k:
|𝑠𝑙𝑚𝑎𝑥,𝑘 | = max|𝑠𝑖𝑘 |
𝑖≥𝑘

 Se permută liniile k și lmax:


𝑠𝑘𝑗 = 𝑠𝑙𝑚𝑎𝑥,𝑗
 Se memorează pivotul corespunzător iterației k:
𝑝 = 𝑠𝑘𝑘
 Se împarte linia pivotului la pivot:
𝑠𝑘𝑗
𝑠𝑘𝑗 =
𝑝
 Pentru 𝑖 = 1, … , 𝑛, 𝑖 ≠ 𝑘, se calculează:
𝑓 = 𝑠𝑖𝑘
𝑠𝑖𝑗 = 𝑠𝑖𝑗 − 𝑠𝑘𝑗 ∗ 𝑓, 𝑗 = 1, … , 𝑛 + 1
Algoritmul Gauss-Jordan aplică aceeași serie de operații ca și algoritmul Gauss.
Acest algoritm este implementat în MATLAB cu ajutorul funcției Jordan [13]. Această
funcție are sintaxa:

𝑥 = 𝐽𝑜𝑟𝑑𝑎𝑛 (𝐴, 𝑐)

102
În notația de mai sus, 𝑥 reprezintă soluția sistemului de ecuații liniare, 𝐴 reprezintă
matricea coeficienților, iar 𝑐 reprezintă șirul termenilor liberi.

5. Algoritmul Jacobi. Acest algoritm este un algoritm iterativ. Pentru a determina


soluția sistemului de ecuații liniare, acest algoritm are nevoie, în afară de sistemul propriu-zis,
scris în formă matriceală și de o aproximare a soluției sistemului, scrisă în forma [11]:

(0)
𝑥1
(0)
𝑋0 = 𝑥2 (90)

(0)
[𝑥𝑛 ]

Algoritmul Jacobi impune descompunerea matricei A, conform următoarelor relații:

𝑁=𝐷
{
𝑃 = 𝑁 − 𝐴 = −(𝐿 + 𝑅)

În notațiile de mai sus, D este matricea diagonală, iar matricele L și R au formele:

0 0 … 0
𝑎21 0 … 0
𝐿=( )
… … … …
𝑎𝑛1 𝑎𝑛2 … 𝑎𝑛𝑛

0 𝑎12 … 𝑎1𝑛
0 0 … 𝑎2𝑛
𝑅=( )
… … … …
0 0 … 0

Algoritmul Jacobi conține relația de calcul:

(𝑘)
𝑏𝑖 − ∑𝑛𝑗=1, 𝑎𝑖𝑗 𝑥𝑗
(𝑘+1) 𝑗≠𝑖
𝑥𝑖 = , 𝑖 = 1, … , 𝑛
𝑎𝑖𝑖

Criteriul de convergență al algoritmului este exprimat prin relația:

(𝑘+1) (𝑘)
|𝑥𝑖 − 𝑥𝑖 | ≤ 𝜀, 𝑖 = 1, … , 𝑛

Metoda Jacobi este convergentă atunci când matricea A a sistemului este diagonal
dominantă, adică următoarea relație este adevărată:

103
𝑛

∑|𝑎𝑖𝑗 | < |𝑎𝑖𝑖 |, 𝑖 = 1, … , 𝑛


𝑗=1
𝑗≠𝑖

Implementarea în MATLAB a acestui algoritm este funcția Jacobi [13]. Această


funcție are forma:

𝑥 = 𝐽𝑎𝑐𝑜𝑏𝑖(𝐴, 𝑐, 𝑥0 , 𝑡𝑜𝑙, 𝑡𝑟𝑎𝑐𝑒)

În sintaxa de mai sus, parametrii funcției au următoarea însemnătate:


 𝑥 reprezintă soluția sistemului de ecuații liniate;
 𝐴 reprezintă matricea coeficienților;
 𝑐 este șirul termenilor liberi;
 𝑥0 este șirul aproximării inițiale;
 𝑡𝑜𝑙 este un parametru ce reține precizia calculelor;
 𝑡𝑟𝑎𝑐𝑒 este un cod de eroare. Acesta ia valoarea 0 dacă toate calculele au putut
fi efectuate.
6. Funcția linsolve. Această funcție are rolul de a rezolva un sistem de ecuații liniare
exprimat în formă matriceală.
Există și alți algoritmi pentru rezolvarea sistemelor de ecuații liniare, care nu vor fi
discutați în această lucrare. Printre aceștia se numără:
 Gauss-Seidel;
 Faddeev-Leverier;
 Algoritmul transformărilor similitudinilor elementare [13].

6.4. Exemplu de rezolvare a sistemelor de ecuații liniare folosind MATLAB

După cum a fost observat în subcapitolul trecut, există o multitudine de modalități de


rezolvare a sistemelor de ecuații liniare utilizând programul MATLAB. Pentru demonstrarea
modului de utilizare al fiecărui mod de rezolvare, în acest subcapitol va fi oferit un exemplu
de utilizare a acestor rutine. Acest exemplu va fi rezolvat utilizând fiecare dintre modurile
prezentate în subcapitolul anterior.
Exemplul 20: să se rezolve sistemul liniar de ecuații:

104
2∗𝑥+𝑦+𝑧 =2
{ −𝑥 + 𝑦 − 𝑧 = 3 (91)
𝑥 + 2 ∗ 𝑦 + 3 ∗ 𝑧 = −10

Forma matriceală a sistemului de ecuații (77) este următoarea:

2 1 1 𝑥 2
[−1 1 −1] ∗ [𝑦] = [ 3 ] (92)
⏟1 2 3 ⏟𝑧 ⏟−10
𝐴 𝑋 𝐵

Împărțirea matricelor. Sistemul (78) are forma similară cu forma generală prezentată
în sistemul (68). Din acest motiv, se utilizează împărțirea la stânga, conform ecuației (70).
Pentru rezolvarea exemplului, se va utiliza următoarea secvență de instrucțiuni,
scrisă sub forma unui script, prezentat în Figura 69:

Figura 69. Rezolvarea unui sistem de ecuații liniare folosind metoda împărțirii
matricelor

După rularea script-ului, cu ajutorul tastei F5, se obțin rezultatele din Figura 70:

Figura 70. Rezultatul obținut cu ajutorul metodei împărțirii matricelor

105
Utilizarea matricei inverse. Pentru rezolvarea acestui exemplu, utilizând matricea
inversă, se va utiliza următoarea secvență de instrucțiuni, grupată într-un script și prezentată
în Figura 71:

Figura 71. Rezolvarea unui sistem de ecuații liniare folosind metoda matricei inverse

După rularea script-ului, cu ajutorul tastei F5, se obțin rezultatele din Figura 72:

Figura 72. Rezultatul obținut cu ajutorul metodei matricei inverse

Algoritmul Gauss. Utilizând algoritmul Gauss pentru rezolvarea sistemelor de ecuații


liniare, acest exemplu se rezolvă cu ajutorul script-ului prezentat în Figura 73:

Figura 73. Rezolvarea exemplului luat în considerare cu ajutorul algoritmului Gauss


106
După rularea script-ului, cu ajutorul tastei F5, se obțin rezultatele din Figura 74:

Figura 74. Rezultatul obținut prin aplicarea algoritmului Gauss

Algoritmul Gauss-Jordan. Pentru rezolvarea acestui exemplu folosind algoritmul


Gauss-Jordan, se va programa script-ul din Figura 75:

Figura 75. Rezolvarea exemplului luat în considerare cu ajutorul algoritmului Gauss-


Jordan

După rularea script-ului, cu ajutorul tastei F5, vor fi afișate rezultatele din Figura 76:

Figura 76. Rezultatul obținut prin aplicarea algoritmului Gauss-Jordan

Algoritmul Jacobi. Exemplul luat în considerare se rezolvă, cu ajutorul algoritmului


Jacobi, utilizând secvența de comenzi din script-ul prezentat în Figura 77:

107
Figura 77. Rezolvarea exemplului luat în considerare cu ajutorul algoritmului Jacobi

După rularea script-ului, cu ajutorul tastei F5, se obține rezultatul din Figura 78:

Figura 78. Rezultatul obținut prin aplicarea algoritmului Jacobi

Funcția linsolve. Exemplul luat în considerare se rezolvă, cu ajutorul funcției


linsolve, utilizând secvența de comenzi din script-ul prezentat în Figura 79:

Figura 79. Rezolvarea exemplului luat în considerare cu ajutorul funcției linsolve

După rularea script-ului, cu ajutorul tastei F5, se obține rezultatul din Figura 80:

108
Figura 80. Rezultatul obținut prin aplicarea funcției linsolve

După cum se poate observa, toți algoritmii prezentați în subcapitolul trecut și utilizați
în acest subcapitol conduc la același rezultat.

6.5. Exerciții și probleme propuse

1. Să se rezolve sistemele de ecuații:


𝑥+𝑦+𝑧 =4
a) {2 ∗ 𝑥 + 3 ∗ 𝑦 + 𝑧 = 9
𝑥 − 𝑦 − 𝑧 = −2

10 ∗ 𝑥1 − 2 ∗ 𝑥2 − 2 ∗ 𝑥3 = 6
b) { −𝑥1 + 10 ∗ 𝑥2 − 2 ∗ 𝑥3 = 7
−𝑥1 − 𝑥2 + 10 ∗ 𝑥3 = 8

6 ∗ 𝑥1 − 𝑥2 − 𝑥3 = 11.33
c) { −𝑥1 + 6 ∗ 𝑥2 − 𝑥3 = 32
−𝑥1 − 𝑥2 + 6 ∗ 𝑥3 = 42

𝑥1 + 4 ∗ 𝑥2 + 3 ∗ 𝑥3 = 1
d) {2 ∗ 𝑥1 + 5 ∗ 𝑥2 + 4 ∗ 𝑥3 = 4
𝑥1 − 3 ∗ 𝑥2 − 2 ∗ 𝑥3 = 5

109
Lucrarea 7 - Ecuații și sisteme de ecuații neliniare

7.1. Obiectivele lucrării

 Însușirea noțiunilor de bază legate de ecuațiile și de sistemele de ecuații neliniare;


 Utilizarea mediului MATLAB pentru rezolvarea ecuațiilor și a sistemelor de ecuații
neliniare.

7.2. Aspecte teoretice legate de ecuațiile neliniare

O ecuație neliniară este o ecuație care are forma generală [11, 13]:

𝑓(𝑥) = 0 (93)

În practică, domeniul de definiție a funcției f este o submulțime a mulțimii numerelor


reale, iar funcția poate lua orice valori reale. Rezolvarea ecuației (79) înseamnă descoperirea
acelor valori ale parametrului x pentru care egalitatea este adevărată.
Există trei categorii de algoritmi de rezolvare a ecuațiilor neliniare:
 Algoritmi ce permit localizarea soluțiilor;
 Algoritmi ce determină o singură soluție a unei ecuații.
 Algoritmi ce determină toate rădăcinile reale și complexe ale unei ecuații;
Pentru rezolvarea unei ecuații neliniare, există mai mulți algoritmi de rezolvare.
Câțiva dintre aceștia vor fi discutați în subcapitolul următor.

7.3. Algoritmi pentru izolarea soluțiilor

Această categorie de algoritmi este utilizată în cazul în care nu ne interesează


descoperirea tuturor soluțiilor, ci numai a acelor soluții care prezintă interes pentru problema
respectivă. Un exemplu care impune utilizarea acestui tip de algoritmi este acela în care
soluțiile descoperite au o însemnătate fizică.
Algoritmii pentru izolarea soluțiilor necesită pentru a rula de ecuația neliniară, scrisă
sub forma (79) și de limitele intervalului de căutare a soluțiilor, notate cu a și cu b.
Principiul acestui tip de algoritmi este acela de a pune în evidență, în intervalul
[𝑎, 𝑏], un număr de n+1 puncte consecutive astfel încât între fiecare două puncte consecutive
să se afle o soluție a ecuației.

110
Cel mai des folosit algoritm din această categorie este algoritmul de tabelare a
funcției.
Metoda tabelării. Această metodă separă numai rădăcinile reale ale ecuației (79) în
intervalul ales de căutare [𝑎, 𝑏].
Pașii acestei metode sunt:
 Se împarte intervalul [𝑎, 𝑏] într-un număr n de subintervale egale, de lungime
h:
𝑏−𝑎
ℎ=
𝑛
 Se calculează valorile funcției în punctele 𝑎 + 𝑖 ∗ ℎ, 𝑖 = 0,1, … 𝑛;
 În cazul în care există un număr k pentru care:

𝑓(𝑎 + 𝑘ℎ) ∗ 𝑓(𝑎 + (𝑘 + 1)ℎ) < 0 (94)

atunci în intervalul (𝑎 + 𝑘ℎ, 𝑎 + (𝑘 + 1)ℎ) există un număr impar de rădăcini ale


funcției f.
Dacă însă

𝑓(𝑎 + 𝑘ℎ) ∗ 𝑓(𝑎 + (𝑘 + 1)ℎ) > 0 (95)

atunci în intervalul (𝑎 + 𝑘ℎ, 𝑎 + (𝑘 + 1)ℎ) există cel mult un număr par de rădăcini.
Metoda izolării unei soluții. Această metodă are ca date de intrare funcția definită pe
o submulțime a numerelor reale. Metoda se bazează pe determinarea unui interval [𝑥1 , 𝑥2 ]
care conține rădăcina 𝛼. Acest lucru se realizează prin evaluarea funcției 𝑓(𝑥) pentru o
succesiune de valori ale argumentului x, utilizând un anumit sens de explorare.
Etapele acestui algoritm sunt următoarele:
 Determinarea sensului de explorare. Sensul de explorare este dat de relația:

∆𝑥, 𝑓(𝑥0 + ∆𝑥) < 𝑓(𝑥0 )


∆𝑥 = { (96)
−∆𝑥, 𝑓(𝑥0 + ∆𝑥) > 𝑓(𝑥0 )

 Tabelarea funcției conform sensului de explorare, până la satisfacerea


criteriului de oprire. Operația de tabelare se face conform relațiilor:

𝑥1 = 𝑥0
(97)
𝑥2 = 𝑥1 + ∆𝑥

111
𝑑𝑎, 𝛼 ∈ [𝑥1 , 𝑥2 ]
𝑓(𝑥1 ) ∗ 𝑓(𝑥2 ) < 0 { 𝑥1 = 𝑥2
𝑛𝑢, {𝐺𝑜𝑡𝑜 (82)

Criteriul de oprire este dat de relația:

|𝑓(𝑥2 )| ≤ |𝑓(𝑥1 )| (98)

În cazul în care relația (84) este adevărată, funcția prezintă un minim local, iar
calculul este oprit.

7.4. Algoritmi pentru determinarea unei soluții

Algoritmii care fac parte din această categorie sunt algoritmi iterativi, adică
descoperă soluția căutată prin încercări (iterații) succesive. Pornind de la o soluție inițială
pentru calcule, algoritmii iterativi îmbunătățesc respectiva soluție până când aceasta se
încadrează într-un interval de precizie fixat dinainte.
Valoarea soluției inițiale nu contează foarte mult, deoarece, în final, algoritmul va
ajunge la soluția corectă după un număr mai mare sau mai mic de iterații.
Principalul criteriu de clasificare al algoritmilor pentru determinarea unei singure
soluții este convergența acestora. Conform acestui criteriu, algoritmii pentru determinarea
unei soluții se împart în:
 Algoritmi cu convergență sigură: încercare-eroare, bisecția succesivă și
algoritmul poziției false;
 Algoritmi cu convergență condiționată: Newton-Raphson, Cebâșev, Ward,
etc.
1. Algoritmul încercare-eroare. Acest algoritm necesită funcția asociată ecuației
neliniare și un punct de aproximare a soluției. Algoritmul încercare-eroare evaluează funcția
într-o succesiune de puncte până când este satisfăcută condiția de oprire a calculelor.
Un lucru important în acest algoritm este sensul de explorare a funcției. Acesta este
dat de valorile absolute ale funcției și descrește de la o iterație la alta.
Alături de sensul de explorare, algoritmul folosește și pasul de explorare. Acesta este
notat cu ∆𝑥 și este folosit la calculul argumentului pentru care va fi calculată valoarea funcției
în iterația următoare, conform relației:

𝑥2 = 𝑥1 + ∆𝑥 (99)

112
Sensul de explorare este dat de următoarea relație:

∆𝑥, |𝑓(𝑥1 )| ≥ |𝑓(𝑥2 )|


∆𝑥 = { (100)
−∆𝑥, |𝑓(𝑥1 )| < |𝑓(𝑥2 )|

După stabilirea sensului și a pasului de explorare, algoritmul încercare-eroare începe


explorarea conform relației (86), urmat. În momentul în care funcția își schimbă semnul, se
reia explorarea din punctul anterior schimbării semnului, dar micșorând valoarea pasului de
explorare, conform relației:

∆𝑥 = 𝛼 ∗ ∆𝑥, 𝛼 ∈ (0,1) (101)

Relația matematică a schimbării semnului funcției este:

𝑓(𝑥1 ) ∗ 𝑓(𝑥2 ) < 0 (102)

Criteriile de oprire a calculelor sunt asociate valorii funcției în punctul 𝑥2 și valorii


limită a pasului de explorare, conform relațiilor:

|𝑓(𝑥2 ) ≤ 𝜀1 |
(103)
|∆𝑥| ≤ 𝜀2

Calculele sunt oprite atunci când inecuația |𝑓(𝑥1 )| ≥ |𝑓(𝑥2 )|, deși sensul de
explorare este bine ales. În acest caz, în intervalul [𝑥1 , 𝑥2 ]există extrem local pentru funcție.
2. Algoritmul bisecției succesive. Algoritmul bisecției succesive necesită, în afară de
funcția asociată ecuației neliniare, un interval de căutare, [𝑥1 , 𝑥2 ] care conține soluția funcției.
Cu alte cuvinte, relația (10) este adevărată.
Algoritmul iterativ presupune determinarea unui nou punct, calculat ca fiind media
aritmetică a celor două puncte luate în considerare, conform relației (90):

𝑥1 + 𝑥2
𝑥3 = (104)
2

În cazul în care 𝑓(𝑥3 ) este suficient de mic, calculul se consideră încheiat, soluția
fiind considerată ca fiind 𝑥3 . Condiția matematică de încheiere a calculelor este dată de relația
(91):

|𝑓(𝑥3 )| ≤ 𝜀1 (105)

113
Dacă relația (91) nu este satisfăcută, atunci algoritmul continuă cu stabilirea dintre
cele două subintervale obținute prin bisecție a acelui subinterval care conține soluția ecuației.
Odată stabilit acest subinterval, algoritmul se reia, căutând soluția în noul subinterval.
În cazul în care subintervalul în care se caută soluția este suficient de mic, mai mic
decât o valoare prestabilită, algoritmul își încheie execuția, soluția fiind determinată cu
ajutorul relației (90). Exprimarea matematică a condiției de încheiere a calculelor datorită
dimensiunii mici e subintervalului este dată de relația (92):

|𝑥2 − 𝑥1 | ≤ 𝜀2 (106)

În final, pentru a limita durata de calcul pentru determinarea soluției, se obișnuiește


să se limiteze superior numărul de iterații. În acest caz, dacă s-a atins această valoare, se
consideră soluția ecuației ca fiind acea soluție obținută în acel moment.
3. Algoritmul poziției false. Acest algoritm necesită funcția asociată ecuației neliniare
și un interval care să conțină soluția ecuației, conform relației (90).
Prima etapă al acestui algoritm pleacă de la punctele 𝐴(𝑥1 , 𝑓(𝑥1 )) și 𝐵(𝑥2 , 𝑓(𝑥2 )).
Prin cele două puncte se construiește o secantă, care intersectează axa abscisa în punctul
𝐶(𝑥3 , 𝑓(𝑥3 )).
Această secantă este o funcție liniară, care are forma:

𝑔(𝑥) = 𝑎 ∗ 𝑥 + 𝑏 (107)

Funcția 𝑔(𝑥) trece prin punctele A și B, respectiv:

𝑎𝑥1 + 𝑏 = 𝑓(𝑥1 )
{ (108)
𝑎𝑥2 + 𝑏 = 𝑓(𝑥2 )

Sistemul (94) are soluția:

𝑓(𝑥2 ) − 𝑓(𝑥1 )
𝑎=
𝑥2 − 𝑥1
(109)
𝑥2 ∗ 𝑓(𝑥1 ) − 𝑥1 ∗ 𝑓(𝑥2 )
𝑏=
{ 𝑥2 − 𝑥1

Intersecția secantei cu abscisa este dată de ecuația:

𝑔(𝑥3 ) = 0 (110)

114
Din ecuațiile (93) și (95), soluția ecuației (96) este dată de relația (97):

𝑥1 ∗ 𝑓(𝑥2 ) − 𝑥2 ∗ 𝑓(𝑥1 )
𝑥3 = (111)
𝑓(𝑥2 ) − 𝑓(𝑥1 )

Dacă 𝑓(𝑥3 ) atinge precizia impusă, calculele se încheie. Expresia matematică a


criteriului de oprire a calculelor este dată de relația (98):

|𝑓(𝑥3 )| ≤ 𝜀 (112)

În cazul în care relația (98) nu este adevărată, se determină, din cele două
subintervale delimitate, care dintre ele conține soluția funcției și se reiau calculele în interiorul
subintervalului determinat.
4. Algoritmul Newton-Raphson. Acest algoritm necesită cunoașterea funcției asociate
ecuației neliniare, a derivatei acesteia și a unui punct 𝑥1 , utilizat ca o primă aproximare a
soluției ecuației.
În punctul 𝐴(𝑥1 , 𝑓(𝑥1 )) se construiește tangenta la curba 𝑦 = 𝑓(𝑥), care are
următoarea ecuație:

𝑦 = 𝑎0 + 𝑎1 ∗ 𝑥 (113)

𝑑𝑓
În ecuația (99), 𝑎1 = 𝑑𝑥 |
𝑥=𝑥1

Tangenta trece prin punctul A, deci are ecuația:

𝑓(𝑥1 ) = 𝑎0 + 𝑥1 ∗ 𝑓 ′ (𝑥1 ) (114)

Din ecuația (100) rezultă expresia valorii variabilei 𝑎0 :

𝑎0 = 𝑓(𝑥1 ) − 𝑥1 ∗ 𝑓 ′ (𝑥1 ) (115)

Utilizând relațiile (99)-(101), ecuația tangentei devine:

𝑦 = 𝑓(𝑥1 ) − 𝑥1 ∗ 𝑓 ′ (𝑥1 ) + 𝑥 ∗ 𝑓 ′ (𝑥1 ) (116)

Punctul de intersecție al tangentei cu abscisa reprezintă o nouă aproximare a soluției


ecuației 𝑓(𝑥) = 0, aproximare notată cu 𝑥2 și care are expresia:

115
𝑓(𝑥1 )
𝑥2 = 𝑥1 − (117)
𝑓 ′ (𝑥1 )

În momentul în care relația (103) este adevărată, calculele se opresc:

|𝑓(𝑥2 )| ≤ 𝜀 (118)

În cazul în care relația (103) nu este adevărată, se fac substituțiile reprezentate în


relațiile (104) și calculele se reiau:

𝑥1 ← 𝑥2
{𝑓(𝑥 ) ← 𝑓(𝑥 ) (119)
1 2

Dacă derivata funcției își schimbă semnul, atunci calculele se opresc, deoarece a fost
determinat un optim local.

7.5. Algoritmi pentru determinarea tuturor soluțiilor reale ale unei ecuații polinomiale

Această categorie de algoritmi, după cum îi spune și numele, este destinată aflării
tuturor soluțiilor reale ale unei ecuații polinomiale. Forma generală a acestui tip de ecuație
este:

𝑓(𝑥) = 𝑎0 + 𝑎1 ∗ 𝑥 + 𝑎2 ∗ 𝑥 2 + 𝑎3 ∗ 𝑥 3 + ⋯ + 𝑎𝑛 ∗ 𝑥 𝑛 (120)

Cel mai utilizat algoritm din această categorie este algoritmul Birge-Viete. Acest
algoritm constă în determinarea succesivă a unei soluții a ecuației polinomiale, urmată de
reducerea gradului polinomului cu o unitate. Calculele se încheie atunci când polinomul are
gradul 0 și toate soluțiile au fost obținute.
Algoritmul Birge-Viete are două etape principale:
 Determinarea unei soluții a ecuației diferențiale polinomiale de grad mai
mare de 2, dar mai mic decât n;
 Reducerea cu o unitate a gradului polinomului.
Prima etapă a acestui algoritm se îndeplinește prin rularea algoritmului Newton-
Raphson.
A doua etapă pleacă de la transcrierea polinomului din relația (106) sub forma:

𝑓(𝑥) = 𝑎0 ∗ 𝑥 𝑛 + 𝑎1 ∗ 𝑥 𝑛−1 + ⋯ + 𝑎𝑛−1 ∗ 𝑥 + 𝑎𝑛 (121)

116
Polinomul se împarte la 𝑥 − 𝛼, unde α este o constantă oarecare. În urma împărțirii
se obține un cât, un polinom de gradul n-1 și un rest 𝑏𝑛 :

𝑓(𝑥) = (𝑥 − 𝛼) ∗ (𝑏0 ∗ 𝑥 𝑛−1 + 𝑏1 ∗ 𝑥 𝑛−2 + ⋯ + 𝑏𝑛−1 ) + 𝑏𝑛 (122)

Pentru a determina polinomul de grad n-1 se procedează la egalarea coeficienților bi,


conform Tabelul 26:

Tabelul 26. Relații de calcul pentru coeficienții b

Relația de egalitate a
Gradul Calculul coeficientului b
coeficienților
𝑛 a 0 = b0 𝑏0 = 𝑎0
𝑛−1 𝑎1 = 𝑏1 − 𝑏0 ∗ 𝛼 𝑏1 = 𝑏0 ∗ 𝛼 + 𝑎1
𝑛−2 𝑎2 = 𝑏2 − 𝑏1 ∗ 𝛼 𝑏2 = 𝑏1 ∗ 𝛼 + 𝑎2
… … …
0 𝑎𝑛 = 𝑏𝑛 − 𝑏𝑛−1 ∗ 𝛼 𝑏𝑛 = 𝑏𝑛−1 ∗ 𝛼 + 𝑎𝑛

7.6. Utilizarea mediului MATLAB pentru rezolvarea ecuațiilor neliniare

Din algoritmii de rezolvare a ecuațiilor liniare, în cele ce urmează vor fi prezentați


câțiva care au o implementare în mediul MATLAB.
Algoritmul Newton-Raphson. Acest algoritm a fost prezentat în detaliu în
subcapitolul anterior. În MATLAB, implementarea acestui algoritm este funcția NR [13].
Această funcție are sintaxa:
𝑥 = 𝑁𝑅(𝑓, 𝑥0 , 𝑡𝑜𝑙, 𝑡𝑟𝑎𝑐𝑒, 𝑣𝑎𝑟𝑎𝑟𝑔𝑖𝑛)
În sintaxa de mai sus, notațiile prezente au următoarele semnificații:
 𝑥 reprezintă soluția ecuației neliniare;
 𝑓 reprezintă fișierul care conține funcția 𝑓(𝑥) din expresia (1);
 𝑥0 reprezintă șirul de aproximare;
 𝑡𝑜𝑙 este un parametru ce reține precizia calculelor;
 𝑡𝑟𝑎𝑐𝑒 este un parametru ce reține dacă vor fi arătate rezultatele numai în
format numeric (𝑡𝑟𝑎𝑐𝑒 = 1) sau numeric și grafic (𝑡𝑟𝑎𝑐𝑒 = 2);
 𝑣𝑎𝑟𝑎𝑟𝑔𝑖𝑛 este un parametru opțional, care reține eventualii parametri pe care
îi poate avea funcția 𝑓.
2. Algoritmul bisecției succesive. Acest algoritm este implementat de funcția bisuc.
Sintaxa de apelare a funcției bisuc este:

117
𝑐 = 𝑏𝑖𝑠𝑢𝑐(𝑓, 𝑥0 , 𝑎, 𝑏)
În sintaxa de mai sus, notațiile prezente au următoarele semnificații:
 𝑐 reprezintă soluția ecuației neliniare;
 𝑓 reprezintă fișierul care conține funcția din expresia (79);
 𝑥0 reprezintă punctul de plecare al calculelor iterative;
 𝑎, 𝑏 reprezintă limita inferioară, respectiv superioară a intervalului de căutare.

7.7. Exemplu de rezolvare a ecuațiilor neliniare utilizând MATLAB

În subcapitolul trecut au fost prezentate modalități de rezolvare a ecuațiilor neliniare


utilizând programul MATLAB. Pentru demonstrarea modului de utilizare al fiecărui mod de
rezolvare, în acest subcapitol vor fi oferite exemple de utilizare a acestor rutine. Atât pentru
ecuațiile cât și pentru sistemele de ecuații neliniare va fi oferit câte un exemplu, care va fi
rezolvat utilizând fiecare dintre modurile prezentate în subcapitolul anterior.
Exemplul 21: să se rezolve ecuația neliniară:

𝑥3 − 2 ∗ 𝑥 − 5 = 0 (123)

Înainte de rezolvarea acestei ecuații, este necesară programarea în MATLAB a


acestei ecuații. Pentru a realiza acest lucru, ecuația (109) se scrie sub forma unei funcții de
tipul 𝑦 = 𝑓(𝑥):

𝑦 = 𝑥3 − 2 ∗ 𝑥 − 5 (124)

Ecuația programată în MATLAB este prezentată în Figura 81:

Figura 81. Ecuația (32) programată în limbajul MATLAB

Algoritmul Newton-Raphson. Deoarece acest algoritm este iterativ, pentru rezolvarea


ecuației (110) cu ajutorul algoritmului Newton-Raphson este necesară furnizarea unui punct

118
de plecare pentru calcule, punct ales de utilizator. Pentru rezolvarea acestui exemplu a fost
ales punctul de plecare 𝑥0 = 5. De asemenea, a fost utilizată posibilitatea afișării rezultatelor
intermediare atât din punct de vedere numeric cât și din punct de vedere grafic. Script-ul
utilizat pentru rezolvarea ecuației neliniare este prezentat în Figura 82:

Figura 82. Rezolvarea ecuației neliniare cu ajutorul algoritmului Newton-Raphson

Rezultatele intermediare, alături de rezultatul final al ecuației (110) este prezentat în


Figura 83:

Figura 83. Rezultatele intermediare și rezultatul ecuației (32), rezolvată cu ajutorul


algoritmului Newton-Raphson

119
Rezultatul în formă grafică este prezentat în Figura 84:

Figura 84. Rezultatul în formă grafică al ecuației (22)

Algoritmul bisecției succesive. Utilizarea acestui algoritm este similară cu utilizarea


algoritmului Newton-Raphson. Este necesară programarea în prealabil a funcției neliniare a
cărei ecuație trebuie rezolvată (pentru acest exemplu, codul sursă este prezentat în Figura 81).
Pentru rezolvarea acestui exemplu s-a considerat căutarea soluției în intervalul
[−5, 5]. Script-ul care conține codul necesar rezolvării exemplului dat, cu ajutorul metodei
bisecției succesive este prezentat în Figura 85:

Figura 85. Rezolvarea ecuației (110) cu ajutorul metodei bisecției succesive

120
Rezultatul obținut la rularea script-ului din Figura 85 este prezentat în Figura 86:

Figura 86. Rezultatul rezolvării ecuației neliniare cu ajutorul metodei bisecției succesive

7.8. Aspecte teoretice legate de sistemele de ecuații neliniare

Un sistem de ecuații neliniare este un sistem de ecuații care are forma generală [11]:

𝑓1 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 0
𝑓 (𝑥 , 𝑥 , … , 𝑥𝑛 ) = 0
{ 2 1 2 (125)

𝑓𝑛 𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 0
(

În sistemul (111), 𝑓1 , 𝑓2 , … , 𝑓𝑛 sunt funcții reale.


Sistemul (111) se mai scrie sub forma prescurtată:

𝐹(𝑥) = 0 (126)

Pentru calculul soluției sistemului de ecuații neliniare se mai utilizează vectorul


aproximatei inițiale a soluției, care are forma:

(0)
𝑥1
(0)
𝑥 (0) = 𝑥2 (127)

(0)
(𝑥𝑛 )

Dintre cei mai importanți algoritmi de rezolvare a sistemelor de ecuații neliniare se


numără algoritmii Newton-Raphson și Broyden. Algoritmii de rezolvare ale sistemelor de
ecuații neliniare se bazează pe dezvoltarea în serie Taylor a funcțiilor multivariabile din
sistemul (111) [12]. De asemenea, există un număr de algoritmi pentru rezolvarea acestui
sistem, care vor fi discutați în subcapitolul următor.

121
1. Algoritmul Newton-Raphson. Acest algoritm este o variație adaptată pentru
sisteme de ecuații neliniare a algoritmului prezentat în cadrul ecuațiilor neliniare. Principala
diferență este că derivata funcției asociată ecuației neliniare este înlocuită de o matrice
denumită matrice Jacobian sau, altfel spus, Jacobianul sistemului. Jacobianul sistemului de
ecuații neliniare este o matrice care are forma generală [11]:

𝜕𝑓1 𝜕𝑓1 𝜕𝑓1



𝜕𝑥1 𝜕𝑥2 𝜕𝑥𝑛
𝜕𝑓2 𝜕𝑓2 𝜕𝑓2
𝐽(𝑋 ) = 𝜕𝑥 … (128)
𝜕𝑥2 𝜕𝑥𝑛
…1 … … …
𝜕𝑓𝑛 𝜕𝑓𝑛 𝜕𝑓𝑛

[𝜕𝑥1 𝜕𝑥2 𝜕𝑥𝑛 ]

2. Algoritmul Broyden. Acest algoritm este o variație a algoritmului Newton-


Raphson în care principala lui caracteristică este că derivatele parțiale care alcătuiesc matricea
Jacobian sunt calculate o singură dată, la începutul iterațiilor.
Algoritmul Broyden are două etape:
 Etapa de inițializare;
 Etapa de calcul iterativ.
Etapa de inițializare a algoritmului Broyden este destinată prelucrării inițiale și a
calculării Jacobianului sistemului de ecuații. Pașii acestei etape sunt:
 Se calculează 𝑓0 = 𝑓(𝑥0 );
 Se calculează derivatele parțiale ale elementelor matricei Jacobian:
(0) (0)
𝜕𝑓𝑖 𝑓𝑖 (𝑥𝑗 + ℎ𝑗 ) − 𝑓𝑖 (𝑥𝑗 )
= , 𝑖, 𝑗 = 1 … 𝑛
𝜕𝑥𝑗 ℎ𝑗
În relația de mai sus, ℎ𝑗 se numește pas de discretizare. Se recomandă ca acest pas să
fie ℎ𝑗 = 0.001 ∗ 𝑥𝑗 , 𝑗 = 1 … 𝑛.
 Se alcătuiește matricea
−1
𝐻 (0) = −𝐽(𝑥 (0) )

122
Etapa de calcul iterativ este destinată îmbunătățirii soluției. Aceasta conține următorii
pași:
 Se calculează ∆𝑥 (𝑘) cu relația:
∆𝑥 (𝑘) = 𝐻 (𝑘) 𝑓 (𝑘)
 Se determină valorile 𝑠𝑘 astfel încât norma euclidiană a vectorului 𝐹(𝑥 (𝑘) +
𝑠 (𝑘) ∆𝑥 (𝑘) ) să fie mai mică decât norma lui 𝐹(𝑥 (𝑘) ). Pentru început se
(𝑘)
estimează 𝑠1 = 1. Dacă inecuația

𝑛 𝑛

√∑ 𝑓𝑖2 (𝑥 (𝑘) + 𝑠 (𝑘) ∆𝑥 (𝑘) ) < √∑ 𝑓𝑖2 (∆𝑥 (𝑘) ) (129)


𝑖=1 𝑖=1

este satisfăcută, atunci se calculează:


𝑥 (𝑘+1) = 𝑥 (𝑘) + 𝑠 (𝑘) ∆𝑥 (𝑘)
𝑓 (𝑘+1) = 𝑓(𝑥 (𝑘+1) )
și se trece la pasul următor.
În caz contrar se calculează valorile 𝑠 (𝑘) utilizând relația Broyden:

(𝑘) √1 + 6𝜂 − 1
𝑠2 = (130)
3𝜂

În relația (116), parametrul η se calculează conform relației:

∑𝑛𝑖=1 𝑓𝑖2 (𝑥 (𝑘) + 𝑠1(𝑘) Δ𝑥 (𝑘) )


𝜂= (131)
∑𝑛𝑖=1 𝑓𝑖2 (𝑥 (𝑘) )

După evaluarea relației (116) se verifică din nou îndeplinirea inecuației (115).
Dacă și în acest caz inecuația nu este satisfăcută, se reiau calculele din acest pas,
pentru reevaluarea derivatelor parțiale pe baza valorilor 𝑥 (𝑘) .
 Se testează dacă a fost găsită soluția numerică cu precizia ε fixată dinainte.
Dacă convergența nu a fost atinsă, se calculează:

Δ𝐹 (𝑘) = 𝐹 (𝑘+1) −𝐹 (𝑘) (132)

123
 Se determină matricea 𝐻 (𝑘+1) cu relația:

𝑇
(𝑘+1) (𝑘)
(𝐻 (𝑘) Δf (𝑘) + 𝑠 (𝑘) Δ𝑥 (𝑘) )(Δ𝑥 (𝑘) ) 𝐻 (𝑘)
𝐻 =𝐻 + (133)
(Δ𝑥 (𝑘) )𝑇 ∗ 𝐻 (𝑘) ∗ Δ𝑥 (𝑘)

Apoi se revine la pasul anterior.

7.9. Utilizarea MATLAB pentru rezolvarea sistemelor de ecuații neliniare

Funcția fsolve. Această funcție are ca scop rezolvarea unui sistem de ecuații
neliniare, sistem care are forma generală:

𝐹 (𝑥 ) = 0 (134)

MATLAB permite mai multe metode de apelare a acestei funcții [14]. Cea mai
simplă metodă este aceea de a apela funcția fsolve utilizând sintaxa:

𝑥 = 𝑓𝑠𝑜𝑙𝑣𝑒(𝑓𝑢𝑛, 𝑥0)
În sintaxa de mai sus, x reprezintă soluția sistemului de ecuații neliniare, fun
reprezintă sistemul de ecuații care trebuie rezolvat iar x0 este punctul de plecare pentru
iterațiile necesare pentru determinarea soluției sistemului.
Pentru a utiliza în mod corect funcția fsolve este necesară scrierea într-un alt fișier
MATLAB a sistemului propriu-zis de ecuații. Ulterior, în cadrul apelării funcției fsolve,
parametrul fun va fi de forma @sistem, unde sistem reprezintă denumirea fișierului MATLAB
care conține sistemul de ecuații al cărui rezolvare trebuie calculată.

7.10. Exemple de utilizare a rutinelor MATLAB pentru rezolvarea sistemelor de ecuații


neliniare

Exemplul 22: să se rezolve următorul sistem de ecuații neliniare:

2 ∗ 𝑥1 − 𝑥2 = 𝑒 −𝑥1
{ (135)
−𝑥1 + 2 ∗ 𝑥2 = 𝑒 −𝑥2

Punctul inițial de căutare a soluției este:

𝑥0 = [−5 −5] (136)

124
Înainte de a rezolva sistemul (121), acesta trebuie adus la forma generală 𝐹(𝑥) = 0.
Sistemul (121) adus la această formă este:

2 ∗ 𝑥1 − 𝑥2 − 𝑒 −𝑥1 = 0
{ (137)
−𝑥1 + 2 ∗ 𝑥2 − 𝑒 −𝑥2 = 0

Sistemul (123) se programează în MATLAB conform codului din Figura 87:

Figura 87. Programarea în MATLAB a sistemului de ecuații (39)

Pentru a rezolva sistemul de ecuații (123) se utilizează, sub forma unui script,
instrucțiunile din Figura 88:

Figura 88. Instrucțiunile necesare pentru rezolvarea sistemului de ecuații neliniare (123)
cu ajutorul funcției fsolve

Rezultatul obținut se află prezentat în Figura 89:

Figura 89. Rezultatul obținut prin rezolvarea sistemului de ecuații (23)

125
7.11. Exerciții și probleme propuse

1. Să se rezolve ecuația:
𝑥 3 − 1.473 ∗ 𝑥 2 − 5.738 ∗ 𝑥 + 6.763 = 0
2. Să se rezolve ecuația:
𝑥 4 − 26 ∗ 𝑥 3 + 131 ∗ 𝑥 2 − 226 ∗ 𝑥 + 120 = 0
3. Să se rezolve ecuația:
4 ∗ 𝑥 3 − 8 ∗ 𝑥 2 + 12 ∗ 𝑥 − 8 = 0
4. Să se rezolve sistemele de ecuații neliniare:

𝑥+𝑦 =3
a) {
𝑥2 + 𝑦2 = 5

𝑦 =𝑥+1
b) {
𝑦 = 𝑥2 + 3 ∗ 𝑥 + 2

𝑥+𝑦 =1
c) {
𝑥 + 3 ∗ 𝑥 ∗ 𝑦 − 2 ∗ 𝑦 2 = −2
2

𝑥+2∗𝑦 =3
d) { 2
𝑥 ∗𝑥∗𝑦+𝑦 = 3

𝑥3 + 𝑦3 = 2
e) {
𝑥 3 − 2 ∗ 𝑦 3 = −1

5
f) { 𝑥 + 8 ∗ 𝑥7 = 9
3 ∗ 𝑥 − 2 ∗ 𝑥7 = 1
5

4 ∗ 𝑥 2 + 2 ∗ 𝑥 − 3 ∗ 𝑦 2 = −3
g) {
𝑥 2 + 𝑥 ∗ 𝑦 + 𝑦 2 = 61

126
127
Lucrarea 8 - Utilizarea Rețelelor Neuronale Artificiale cu Scop
Estimativ

8.1. Obiectivele lucrării

 Însușirea noțiunilor de bază legate de rețelele neuronale artificiale;


 Utilizarea mediului MATLAB pentru crearea, antrenarea și exploatarea unei rețele
neuronale artificiale cu scop estimativ;

8.2. Aspecte teoretice legate de rețelele neuronale artificiale

O rețea neuronală artificială (denumită, mai pe scurt, rețea neuronală) este un model
matematic de calcul, inspirat din sistemele nervoase centrale ale animalelor, în mod special,
creierul. O rețea neuronală este compusă dintr-o mulțime de elemente simple, denumite
neuroni. Acești neuroni sunt concepuți pentru a funcționa în paralel, conexiunile dintre
aceștia determinând valorile datelor de ieșire ale rețelei neuronale.
O rețea neuronală este capabilă, printre altele, de învățare și de recunoașterea
modelelor și este utilizată într-o gamă largă de domenii (biologie, aeronautică, finanțe, etc.).
În această lucrare, rețeaua neuronală va fi utilizată în scopuri estimative.
Din punct de vedere informatic, o rețea neuronală este un algoritm, care are date de
intrare și date de ieșire. Mai precis, plecând de la datele de intrare primite și de la un set
suplimentar de date, set care conține de intrare și date de ieșire cunoscute în prealabil, aceasta
va fi utilizată pentru estimarea datelor de ieșire.
Pașii necesari pentru construirea și exploatarea unei rețele neuronale sunt următorii:
 Crearea bazei de date de antrenament;
 Crearea rețelei neuronale;
 Configurarea rețelei neuronale;
 Antrenarea rețelei;
 Exploatarea rețelei.
O rețea neuronală este compusă din trei tipuri de straturi:
 Stratul de intrare. Acesta are ca rol principal citirea datelor de intrare în
rețeaua neuronală și transmiterea acestora către straturile ascunse. Din
punctul de vedere al stratului de intrare, nu este importantă natura datelor
primite.

128
 Straturile ascunse. Scopul acestora este de a procesa datele de intrare pentru a
transmite rezultatele obținute către stratul sau straturile de ieșire. O rețea
neuronală poate avea unul sau mai multe straturi ascunse. Neuronii din
straturile ascunse sunt legați între ei, legăturile fiind fie între neuronii
aceluiași strat, fie între neuroni aparținând a două straturi diferite. Cu cât
există mai mulți neuroni și mai multe straturi, cu atât aproximările sunt mai
precise. Un număr prea mare de neuroni și straturi poate duce la supra-
antrenare.
 Straturile de ieșire. Rolul acestora este de a afișa rezultatul calculelor
straturilor ascunse. Numărul de straturi de ieșire este întotdeauna egal cu
numărul de variabile de ieșire, pentru că un strat nu poate reține decât o
singură variabilă de ieșire.
Una dintre caracteristicile importante ale rețelelor neuronale este capacitatea acestora
de învățare (antrenare). Din punct de vedere matematic, având o problemă de rezolvat și o
clasă de funcții de transfer, învățarea reprezintă folosirea unui set de observații pentru a găsi
soluția optimă pentru rezolvarea acelei probleme. Acest lucru înseamnă faptul că, dacă se
atașează problemei o funcție de penalizare, cea mai des întâlnită astfel de funcție fiind costul
atașat descoperirii soluției, soluția optimă este acea soluție care are costul cel mai mic [14].
Scopul procesului de învățare al unei rețele neuronale este acela de a ajusta
parametrii interni ai algoritmului acestei rețele astfel încât un anumit set de date de intrare să
conducă la un anumit set de date țintă de ieșire. Este nevoie de mai mult de o pereche de date
de intrare și date de ieșire pentru a putea antrena eficient o rețea neuronală. Avantajul acestei
necesități este faptul că nu există o limită superioară a numărului de perechi pentru
antrenamente.
Totalitatea perechilor de date de intrare și date de ieșire care sunt utilizate pentru
antrenare formează o bază de date de antrenament.
Baza de date de antrenament este un element esențial pentru ca rețeaua neuronală să
ofere estimări corecte, deoarece datele de ieșire estimate depind într-o proporție foarte mare
de datele care se află în această bază de date. În cadrul bazei de date de antrenament, datele de
ieșire se mai numesc date țintă.
O bază de date de antrenament are două caracteristici importante:
 Volumul bazei de date. Reprezintă numărul de înregistrări, adică numărul de
perechi de date de intrare și date de ieșire utilizate pentru antrenarea rețelei

129
neuronale. Volumul bazei de date reprezintă caracteristica cantitativă a
acesteia;
 Corelarea datelor din baza de date. Arată gradul de dependență dintre seturile
de date utilizate la antrenare. Dacă datele sunt puternic corelate, atunci
influența factorului aleatoriu este foarte mică, iar rețeaua neuronală va oferi
estimări foarte precise, raportate la datele de antrenament primite. Invers,
dacă datele sunt slab corelate, atunci influența factorului aleatoriu este foarte
mare, iar estimările pe care rețeaua le va oferi vor fi foarte slabe, raportat la
datele de antrenament primite. Corelarea datelor din baza de date reprezintă
caracteristica calitativă a acesteia.
Aceste caracteristici influențează precizia estimării rețelei neuronale și fiecare
prezintă importanța ei. O bază de date de dimensiuni mici, dar cu date puternic corelate va
avea dezavantajul faptului că rețeaua neuronală are la dispoziție puține cazuri din care aceasta
poate învăța. Invers, o rețea voluminoasă dar cu date slab corelate are dezavantajul faptului că
rețeaua nu se poate baza pe existența unei legături între date. Este evident faptul potrivit
căruia baza de date ideală conține un număr mare de date puternic corelate, dar dacă nu se
poate obține acest lucru, este de preferat un număr mic de date puternic corelate în favoarea
unui număr mare de date, dar slab corelate. Criteriul calitativ are o importanță mai mare.
O corelare slabă a datelor din baza de date de antrenament nu este neapărat un lucru
negativ. În practică, datele care vor constitui baza de date de antrenament sunt obținute de la
diferitele dispozitive ale procesului tehnologic studiat. Corelarea acestora poate fi puternică
sau slabă, de la caz la caz. Deoarece datele obținute sunt reale și caracterizează procesul
studiat, și corelarea acestora devine o caracteristică a acelui proces tehnologic. În concluzie,
este posibil ca rețeaua neuronală trebuie să estimeze datele de ieșire pe baza unor date reale,
dar slab corelate.
Datele dintr-o bază de date de antrenament se împart în trei categorii:
 Date de antrenament;
 Date de validare;
 Date de test.
Repartizarea datelor din baza de date de antrenament în categoriile menționate este
aleatorie și este efectuată de către rețeaua neuronală, în momentul antrenării acesteia.
Proporțiile în care sunt distribuite datele în cele trei categorii variază, dar se obișnuiește ca

130
70% din datele din baza de date de antrenament să fie date de antrenament, iar restul de 30%
să fie împărțite în mod egal între celelalte două tipuri de date.
Antrenarea unei rețele neuronale este compusă din trei etape:
 Antrenarea propriu-zisă. Scopul acesteia este de ajustare a parametrilor
interni ai algoritmului acestei rețele, în funcție de datele primite din baza de
date de antrenament;
 Validarea. Scopul acestui pas este acela de a preveni apariția fenomenului de
supra-antrenare (over-fitting). Fenomenul de supra-antrenare apare atunci
când un model statistic descrie erorile întâmplătoare în locul relațiilor dintre
date [14]. Supra-antrenarea duce la obținerea unui model matematic extrem
de fidel față de datele de antrenament primite, dar foarte slab la estimări pe
baza unor date de intrare noi, datorită incapacității rețelei neuronale de a se
adapta la date noi [15]. Această incapacitate se observă în momentul rulării
testelor statistice asupra estimărilor obținute;
 Testarea. Scopul acestei proceduri este acela de a testa soluțiile finale, pentru
a confirma capacitatea de estimare a rețelei.
Există un număr mare de programe care sunt concepute pentru crearea, antrenarea și
exploatarea unei rețele neuronale artificiale. Dintre acestea, va fi studiată utilizarea rețelei
neuronale cu ajutorul mediului MATLAB.

8.3. Utilizarea mediului MATLAB pentru crearea și antrenarea unei rețele neuronale
artificiale cu scop estimativ

Crearea și utilizarea rețelei neuronale cu ajutorul mediului MATLAB se face


executând aplicația Neural Net Fitting sau utilizând funcția nftool (indiferent de metoda
aleasă, rezultatul este același). Această aplicație este o interfață care ușurează crearea și
antrenarea rețelei neuronale. Acest gen de interfață mai este cunoscut sub denumirea de
wizard, termen ce nu are vreo denumire sau traducere satisfăcătoare în limba română. La
finalul wizard-ului, utilizatorul va avea o rețea neuronală, antrenată și pregătită pentru a fi
utilizată. Folosind funcția nftool se creează ușor, simplu și fără erori rețeaua neuronală, deși
utilizatorii mai avansați pot prefera crearea și personalizarea acesteia cu ajutorul liniilor de
cod ale limbajului MATLAB.

131
Aplicația Neural Net Fitting permite utilizatorului să salveze toate datele introduse și
opțiunile selectate sub forma unui script MATLAB, care poate fi modificat ulterior, după
necesități.
Pașii pentru crearea rețelei neuronale cu ajutorul acestei aplicații sunt:
 Selectarea datelor utilizate de către baza de date de antrenament;
 Împărțirea bazei de date în date de antrenament, validare și test;
 Determinarea arhitecturii rețelei neuronale;
 Antrenarea rețelei neuronale;
 Re-antrenarea rețele neuronale (opțional);
 Salvarea într-un fișier a rețelei create și antrenate.
Primul pas cerut de către aplicația Neural Net Fitting, pentru crearea rețelei
neuronale este acela de selectare a datelor utilizate de către baza de date de antrenament. În
cadrul acestui pas, utilizatorul alege datele de intrare și datele test pentru această bază de date.
Următorul pas pentru crearea rețelei neuronale cu ajutorul mediului MATLAB este
împărțirea bazei de date în date de antrenament, validare și test. Proporțiile inițiale în care
sunt divizate datele din baza de date de antrenament pe cele trei categorii sunt cele specificate
în subcapitolul precedent (70% date de antrenament, 15% date de validare și 15% date de
test), dar MATLAB permite utilizatorului să modifice aceste proporții, între anumite
intervale.
Al treilea pas îl constituie determinarea arhitecturii rețelei neuronale. Numărul de
neuroni pentru straturile de intrare respectiv de ieșire sunt determinați automat, odată cu
determinarea dimensiunilor matricelor folosite. Numărul de neuroni din stratul ascuns
reprezintă ultimul parametru pe care utilizatorul trebuie să îl introducă. În acest caz, numărul
de neuroni a fost lăsat la valoarea prestabilită de 10 neuroni.
Următorul pas este acela de antrenare a rețelei neuronale. Din cadrul interfeței
Neural Network Fitting Tool se apasă butonul Train. Antrenarea rețelei are loc după ce toate
datele necesare au fost introduse. Prin apăsarea butonului de antrenare, va apărea o nouă
fereastră, denumită Neural Network Training, al cărei scopuri sunt de a oferi informații despre
procesul de antrenare propriu-zis și de a oferi posibilitatea utilizatorului de a verifica eficiența
antrenamentelor.
Verificarea eficienței antrenamentelor este un pas important, dar opțional. În
MATLAB, această verificare se face cu ajutorul a două criterii: histogramele de eroare și a

132
analiza de regresie a datelor. Modalitatea corectă de interpretare a datelor oferite de aceste
criterii poate fi găsită în sistemul de asistență al programului MATLAB.
Ultimul pas este acela de salvare a rețelei neuronale într-un fișier. Rețeaua astfel
salvată poate fi utilizată în viitor.

8.4. Exemplu de creare, antrenare și utilizare a unei rețele neuronale artificiale cu scop
estimativ

În subcapitolul precedent a fost prezentată modalitatea de creare și antrenare a unei


rețele neuronale artificiale cu ajutorul programului MATLAB. În acest subcapitol va fi
prezentat un exemplu.
Pentru crearea și antrenarea rețelei neuronale va fi folosită aplicația Neural Net
Fitting. Această aplicație utilizează o rețea neuronală de tip Feedforward pentru efectuarea
estimărilor [14]. Această aplicație poate fi găsită în secțiunea Apps, precum în Figura 90.

Figura 90. Aplicația Neural Net Fitting

Fereastra principală a acestei aplicații este prezentată în Figura 91:

133
Figura 91. Fereastra principală a aplicației Neural Net Fitting

Prin efectuarea unui click pe butonul Next, este afișată fereastra care permite
introducerea datelor de intrare și a datelor țintă pentru baza de date de antrenament a rețelei
neuronale. Aceste date trebuie să fie sub formă matriceală. Matricele corespunzătoare datelor
de intrare și a celor țintă trebuie să fie introduse înainte de a ajunge la acest ecran. Metoda de
introducere a acestora (citire din fișier sau introducere manuală, din linia de comandă) nu este
importantă. Fereastra de introducere a acestor date este prezentată în Figura 92.

134
Figura 92. Fereastra de introducere a datelor de intrare și a celor țintă

Această fereastră permite, în scopuri demonstrative, utilizarea unor seturi de date


exemplu, date deja existente și livrate odată cu programul MATLAB. Pentru vizualizarea
acestora, utilizatorul trebuie să facă un click pe butonul Load Example Data Set, din partea de
jos a ferestrei din Figura 92. Fereastra care apare este prezentată în Figura 93.

135
Figura 93. Fereastra de selectare și încărcare a unor date exemplu

În acest subcapitol va fi utilizat unul dintre seturile de date exemplu, mai precis setul
denumit Simple Fitting Problem. Nu are importanță care dintre seturile din Figura 93 este
ales.
Pentru utiliza setul de date, se face un click pe acesta apoi pe butonul Import. Datele
importate au fost automat încărcate în fereastra din Figura 93 după cum se poate observa în
Figura 94.

136
Figura 94. Fereastra de selectare a datelor pentru antrenarea rețelei neuronale, cu
datele exemplu selectate

Prin efectuarea unui click pe butonul Next, va apărea o fereastră care permite
utilizatorului stabilirea proporțiilor în care vor fi împărțite datele de antrenament în cele trei
tipuri discutate anterior: date de antrenament, date de validare și date de test. În acest
exemplu, vor fi păstrate proporțiile stabilite anterior de către MATLAB. Fereastra de stabilire
a proporțiilor de împărțire a datelor de antrenament este prezentată în Figura 95.

137
Figura 95. Fereastra de împărțire a datelor de antrenament pe cele trei categorii

Prin efectuarea unui click pe butonul Next din fereastra din Figura 96, va apărea o
fereastră ce permite utilizatorului să selecteze numărul de neuroni pe care îi va avea rețeaua
neuronală în stratul ascuns. De asemenea este prezentată, schematic, rețeaua neuronală
configurată. În acest exemplu va fi folosită valoarea prestabilit de 10 neuroni. Fereastra de
selecție a numărului de neuroni este prezentată în Figura 96.

138
Figura 96. Fereastra de selecție a numărului de neuroni din stratul ascuns

Prin efectuarea unui click pe butonul Next al ferestrei din Figura 96, va apărea
fereastra care permite utilizatorului antrenarea rețelei neuronale create și configurate. Această
fereastră oferă utilizatorului posibilitatea de alege unul dintre cei trei algoritmi de antrenare a
rețelei. În acest exemplu va fi utilizat algoritmul predefinit, Levenberg-Marquardt. Pentru a
începe antrenarea rețelei neuronale, utilizatorul trebuie să efectueze un click pe butonul Train.
Fereastra de antrenare a rețelei neuronale este prezentată în Figura 97.

139
Figura 97. Fereastra de antrenare a rețelei neuronale

În timpul antrenării rețelei neuronale va apărea o fereastră similară celei din Figura
98.

140
Figura 98. Fereastra din timpul antrenării rețelei neuronale

După încheierea procesului de antrenare a rețelei neuronale, utilizatorul are


posibilitatea de a verifica eficiența antrenamentului cu ajutorul histogramei de eroare și a
analizei de regresie a datelor. Histograma de eroare poate fi văzută cu ajutorul unui click pe
butonul Plot Error Histogram, din Figura 98. Rezultatele analizei de regresie pot fi observate
efectuând un click pe butonul Plot Regression, din aceeași figură. Acesta este un pas opțional.
141
Histograma de eroare și coeficientul de corelare oferit de către analiza de regresie
pentru datele din acest exemplu sunt prezentate în Figura 99 respectiv Figura 100.

Figura 99. Histograma de eroare pentru datele luate în considerare în acest exemplu

În Figura 99 se poate observa că majoritatea erorilor se află în jurul valorii 0. Din


acest motiv se poate concluziona că datele de antrenament sunt coerente, deci antrenamentul
rețelei neuronale este eficient.

142
Figura 100. Analiza de regresie a datelor din baza de date de antrenament

În Figura 100 se poate observa faptul potrivit căruia concluziile care au fost trase din
Figura 99 se confirmă. Coeficienții de corelare cu valori aproape de 1 arată faptul că
antrenamentul rețelei neuronale a fost eficient.
Următoarea fereastră a aplicației este acea de reantrenare a rețelei neuronale. Acest
proces este opțional. Există trei modalități de reantrenare a rețelei neuronale:
 Reantrenarea propriu-zisă. Această modalitate se bazează pe faptul că, înainte
de orice antrenare, datele din baza de date de antrenament sunt împărțite
aleatoriu în cele trei categorii;

143
 Modificarea numărului de neuroni din stratul ascuns;
 Antrenarea rețelei neuronale utilizând o bază de date care are date diferite
și/sau mai multe.
Deoarece antrenamentul rețelei neuronale pentru datele din acest exemplu a fost
eficient, nu este necesară reantrenarea rețelei neuronale.
Fereastra de reantrenare a rețelei neuronale este prezentată în Figura 101:

Figura 101. Fereastra de reantrenare a rețelei neuronale

Prin efectuarea unui click pe butonul Next din fereastra prezentată în Figura 101,
apare o fereastră care permite utilizatorului salvarea rețelei neuronale create fie sub forma
unei funcții MATLAB, fie sub forma unei diagrame Simulink. De asemenea, utilizatorul are
posibilitatea de a genera o reprezentare grafică a rețelei neuronale, prin efectuarea unui click
pe butonul Neural Network Diagram. Acest pas este opțional. Această fereastră este
reprezentată în Figura 102:

144
Figura 102. Fereastra de salvare a rețelei neuronale în diferite formate

Prin efectuarea unui click pe butonul Next, va apărea o fereastră a aplicației, fereastră
ce permite salvarea rețelei neuronale sub forma unui script, MATLAB. Există două variante
de script în care poate fi salvată rețeaua creată și antrenată:
 Script simplu. Această variantă salvează numai instrucțiunile aferente creării
și antrenării rețelei neuronale;
 Script detaliat. Această variantă salvează atât instrucțiunile din varianta
precedentă, cât și instrucțiuni suplimentare care permit configurarea manuală
a rețelei neuronale, precum și un exemplu.
Acest pas este opțional. La final, utilizatorul trebuie să efectueze un click pe butonul
Finish, pentru ca aplicația să-și încheie execuția.
Fereastra de salvare sub forma unui script este prezentată în Figura 103:

145
Figura 103. Fereastra de salvare a rețelei neuronale sub forma unui script

Dacă utilizatorul alege să nu salveze rețeaua și să efectueze click pe butonul Finish,


va apărea o fereastră de dialog, care avertizează de acest fapt, precum în Figura 104:

Figura 104. Fereastra de avertisment

Dacă utilizatorul efectuează click pe butonul Finish, atunci aplicația Neural Net
Fitting își încheie execuția fără a salva rețeaua neuronală creată și antrenată. Dacă este apăsat

146
butonul Cancel, atunci aplicația revine la fereastra din Figura 103 și permite utilizatorului să
salveze rețeaua neuronală.
Pentru a exploata rețeaua neuronală creată și antrenată, se utilizează comanda 𝑛𝑒𝑡.
Această comandă are sintaxa:

𝑦 = 𝑛𝑒𝑡(𝑥)

În sintaxa de mai sus, 𝑥 reprezintă data de intrare pentru care se dorește estimarea
variabilei de ieșire, cu ajutorul rețelei neuronale, iar 𝑦 este variabila care reține valoarea
estimată a rețelei neuronale.

8.5. Exerciții și probleme propuse

1. Utilizați rețeaua neuronală creată și antrenată conform exemplului din această


lucrare de laborator, pentru a afla răspunsul acesteia având ca date de intrare valorile 1, 2, …,
9. Rețeaua nu se va reantrena între utilizări.
Indicație: valorile returnate de rețeaua neuronală variază după fiecare antrenare a
acesteia, datorită factorului aleatoriu implicat. Cu alte cuvinte, pentru aceleași date de intrare,
o rețea neuronală antrenată după fiecare apelare va oferi rezultate diferite, dar asemănătoare.
Pentru verificare, va fi prezentat un set de valori obținute:

x 1 2 3 4 5 6 7 8 9
y 9.5826 9.4695 7.8141 7.1273 7.3194 8.1721 6.0345 7.6491 8.4228

147
BIBLIOGRAFIE

1. Pătrăşcioiu, C., Tehnici Numerice de Optimizare. 2005, Bucureşti: Editura


MatrixRom. Pag. 44-95
2. MathWorks Inc., MATLAB R2014a Help System. 2014.
3. Franks, Roger G. E., Modelarea și simularea în ingineria chimică. 1979, București:
Editura Tehnică
4. Seborg, D. E., Thomas, F. E., Duncan, A. M., Francis, J. D., Process Dynamic and
Control. 2011: Wiley
5. Dumitru, S., Dragoicea, M., Lupu, C., Modelarea și Simularea - Aplicații. 2002:
Editura Printech
6. Stefanoiu, D., Culita, J., Stoica, P., Fundamentele Modelării și Identificării
Sistemelor. 2005, Editura Printech
7. Smith, C., Digital Computer Process Control. 1972: Intext Education Publishers
8. Pătrășcioiu, C., Popa, C. System Identification. System Identification Toolbox or
Properly Algorithms? Advances in Automatic Control, conferința Proceedings of the
16th International Conference on Automatic Control, Modelling and Simulation
(ACMOS 14). 2014. Brașov.
9. Polynomial Regression. 2015 [accesat la 30 mai 2015]; Disponibil la:
http://en.wikipedia.org/wiki/Polynomial_regression.
10. Freedman, D. A., Statistical Models: Theory and Practice. 2009, Cambridge
University Press. Pag. 26
11. Pătrăşcioiu, C., Metode Numerice Aplicate în Ingineria Chimică. 2005, Bucureşti:
Editura MatrixRom
12. McCalla, T. R., Introduction to Numerical Methods and FORTRAN Programming.
1967, Washington, D. C.: John Wiley & Sons, Inc. Pag. 169
13. Constantinides, A., Mostoufi, N., Numerical Methods for Chemical Engineers with
MATLAB Applications. 1999, New Jersey: Prentice Hall PTR
14. MathWorks Inc., MATLAB R2015a Help System. 2015.
15. Doicin, B., Optimizarea Rețetelor de Amestec Pentru Reformularea Combustibililor
Ecologici de Tip Benzine. 2014: Universitatea Petrol-Gaze, Ploiești. Pag. 52

148

S-ar putea să vă placă și