Documente Academic
Documente Profesional
Documente Cultură
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
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:
functionparamieșirenumefuncție(param_intrare)
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)
x=3
x = [1]
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
6
Împărțirea la dreapta / / ./
Ridicarea la putere ^ ^ .^
Transpunerea ' ' .'
Pentru combinarea a două sau mai multe expresii logice se utilizează operatorii
logici din Tabelul 4.
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.
Î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
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.
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
if expresie_logică
grupul_de_instrucţiuni_A
else
grupul_de_instrucţiuni_B
end
2 ∗ 𝑥 + 8, 𝑥 ≤ 2
𝑓(𝑥) = { (2)
3 ∗ 𝑥2, 𝑥 > 2
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
2, 𝑖 = 𝑗
𝐴={−1, |𝑖 − 𝑗| = 1 (3)
0, 𝑎𝑙𝑡𝑓𝑒𝑙
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
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
𝑧 = 𝑓(𝑥) (4)
14
valori xi , yi , i 1,, n , în care n reprezintă numărul de perechi de puncte ale
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;
𝑧 = 𝑓(𝑥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);
17
Figura 3. Structura reţelei generate de funcţia meshgrid [1]
𝑧 = 𝑥2 + 4 ∗ 𝑦2 − 4 (7)
[x,y]= meshgrid(-4:1:4,-5:1:5);
Lista 11 a Lista 11 b
-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
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:
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);
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
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.
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
24
Tabelul 6. Semnificaţia celor mai utilizate componente din biblioteca SIMULINK
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ă.
26
Tabelul 9. Componenta sistemelor liniare
27
Exemplul 10. Fie ecuația:
𝑦 =3∗𝑢 (8)
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.
29
Figura 11. Configurarea blocului Constant
30
Figura 13. Diagrama din exemplul 10
𝑇 ∗ 𝑦̇ + 𝑦 + 𝐾 ∗ 𝑢(𝑡) (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 1t .
𝑑𝑦 1
= ∗ (−𝑦(𝑡) + 𝐾 ∗ 𝑢(𝑡)) (10)
𝑑𝑡 𝑇
1
𝑦(𝑡) = 𝑦(0) + ∫ (−𝑦(𝑡) + 𝐾 ∗ 𝑢(𝑡))𝑑𝑡 (11)
𝑇
31
Figura 14. Diagrama ecuației de ordinul 1
𝐾
𝐻(𝑠) = (12)
𝑇∗𝑠+1
Ultima relație este implementată prin intermediul diagramei bloc din Figura
15.
33
Figura 17. Căsuța de dialog a butonului Properties
34
35
Lucrarea 3 - Modelarea analitică
𝐴=𝐼−𝐸−𝐶 (13)
1
Debitul reprezintă cantitatea de Ψ care traversează o secțiune în unitatea de timp
36
3.3. Partea aplicativă
𝑄𝑒 = 𝑘 ∗ 𝐻 (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)
∆𝐻
𝐴∗ = 𝑄𝑖 − 𝑄𝑒 (18)
∆𝑡
∆𝐻 𝑑𝐻
lim = (19)
∆𝑡→0 ∆𝑡 𝑑𝑡
𝑑𝐻
𝐴∗ = 𝑄𝑖 − 𝑘 ∗ 𝐻 (20)
𝑑𝑡
Sau:
𝐴 𝑑𝐻 1
∗ + 𝐻 = ∗ 𝑄𝑖 (21)
𝑘 𝑑𝑡 𝑘
𝐴 1
Notând 𝑘 = 𝑎 și 𝑘 = 𝑏 se obține:
38
𝑑𝐻
𝑎∗ + 𝐻 = 𝑏 ∗ 𝑄𝑖 (22)
𝑑𝑡
1
𝐻 = 𝐻(0) + ∫(𝑏 ∗ 𝑄𝑖 − 𝐻)𝑑𝑡 (23)
𝑎
𝑏
𝐻(𝑠) = (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.
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)
𝑑𝐻1
𝐴1 ∗ = 𝑄𝑖1 − 𝑘1 ∗ 𝐻1 (26)
𝑑𝑡
𝑑𝐻2
𝐴2 ∗ = 𝑘1 ∗ 𝐻1 − 𝑘2 ∗ 𝐻2 (27)
𝑑𝑡
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 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.
𝑑𝐻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 − 𝑘1 ∗ (𝐻1 − 𝐻2 ) (30)
𝑑𝑡
𝑑𝐻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.
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
𝑑𝑉
= 𝑄1 − 𝑄2 (32)
𝑑𝑡
47
peretele mantalei, A – suprafața peretelui mantalei, T – temperatura aburului în manta, c
– căldura specifică fluidelor, ρ – densitate.
𝑑
(𝑉 ∗ 𝑐 ∗ 𝜌 ∗ 𝑇2 ) = 𝑄1 ∗ 𝑐 ∗ 𝜌 ∗ 𝑇1 − 𝑞 − 𝑄2 ∗ 𝑐 ∗ 𝜌 ∗ 𝑇2 (33)
𝑑𝑡
48
𝐶𝐴 𝐶𝐵
𝐶2 = 𝐶𝐴 ∗ + 𝑐𝐵 ∗ (35)
𝜌𝐴 𝜌𝐵
C — concentrația (lbmol/ft3);
Ρ — densitatea (lbmol/ft3);
𝐷2 𝜋 4𝑉
𝐴= + (38)
4 𝐷
49
Lucrarea 4 - Modelarea experimentală
50
Figura 38. Etapele modelării experimentale
𝐾 ∗ 𝑦̇ + 𝑦 = 𝑇 ∗ 𝑢 (39)
51
Figura 39. Răspunsul în timp al elementului aperiodic de ordinul 1 la un semnal
treaptă
𝑦 = 𝑇∗𝑢 (40)
𝑦𝑓 − 𝑦𝑖
𝑇≈ (41)
𝑢𝑓 − 𝑢𝑖
𝑑𝑦 𝑇
| = (42)
𝑑𝑡 𝑡=0 𝐾
52
Figura 40. Răspunsul în timp al elementului aperiodic de ordinul 1 la un semnal
treaptă
𝑡
𝑦(𝑡) = 𝑦𝑖 + 𝑇 ∗ (1 − 𝑒 −𝐾 ) (43)
Î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.
𝑇
𝐻(𝑠) = (45)
(𝐾1 ∗ 𝑠 + 1) ∗ (𝐾2 ∗ 𝑠 + 1)
𝑡70%
𝐾1 + 𝐾2 =
1.2
𝑡30% + 𝑡70% 𝑡30% (46)
𝐾1 − 𝐾2 = ∗ (0.45 − )
{ 0.6 𝑡70%
𝑇 ∗ 𝑒 𝜏𝑠
𝐻(𝑠) = (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.
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.
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.
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)
𝑡
𝑦(𝑡) = 80 + 15 ∗ (1 − 𝑒 −10 ) (50)
57
Figura 45. Comparație între datele experimentale şi cele calculate
58
Figura 46. Interfața modulului System Identification Toolbox
59
Lista 14. Structura fișierului u.dat
23
23
23
23
23
23
23
23
23
23
23
23
60
Figura 47. Interfața de importare a fișierelor în Workspace
61
Figura 48. Fereastra de importare a datelor în System Identification Toolbox
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.
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
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.
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)
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%
4−0 (53)
𝑇= =4
1
7.99
𝐾1 + 𝐾2 =
1.2 (56)
4 + 7.99 4
𝐾1 − 𝐾2 = ∗ (0.45 − )
0.6 7.99
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
69
Figura 58. Dinamica intrării traductorului de temperatură
70
Figura 60. Dinamica debitului Qi
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:
71
Estimați erorile modelului caresunt cauzate de datele experimentale și de
metoda de calcul.
72
Lucrarea 5 - Regresia polinomială și regresia multiplă liniară
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.
𝒙 𝒚
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.
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
𝑚 𝑛 2
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 … ∑ 𝑦𝑗 𝑥𝑗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.
𝒙 𝒚 𝒙 𝒚
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ă:
79
clear;
x=dlmread('x.txt');
y=dlmread('y.txt');
p=polyfit(x,y,1)
z=polyval(p,x)
t=y-z
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.
82
Figura 63. Coeficienții polinomului de regresie de gradul 1 și abaterea standard a
acestuia
83
Figura 64. Coeficienții polinomului de regresie de gradul 2 și abaterea standard a
acestuia
84
Tabelul 19. Variația abaterii standard a polinomului de regresie în funcție de gradul ales
al polinomului
𝑦 = 𝑎0 + 𝑎1 ∗ 𝑥1 + 𝑎2 ∗ 𝑥2 + ⋯ + 𝑎𝑛 ∗ 𝑥𝑛 (73)
2
𝑚 𝑛
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)
𝜕𝑎𝑖
𝑚 𝑚 𝑚
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
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)
Figura 66. Programul de regresie multiplă liniară, după încărcarea fișierului de intrare
91
Figura 67. Programul de regresie multiplă liniară, după introducerea corectă a datelor
de intrare
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ă.
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:
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
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
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
𝐻 = 𝑎0 + 𝑎1 ∗ 𝑇 + 𝑎2 ∗ 𝑃 (79)
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.
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
Un sistem de ecuații liniare este un sistem de ecuații care are forma generală [11]:
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]:
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
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)
𝑥 = 𝐴−1 ∗ 𝐵 (86)
𝑋 = 𝑖𝑛𝑣(𝐴) ∗ 𝐵
𝐴𝑥 = 𝐵 (87)
𝑈𝑥 = 𝐵′ (88)
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|𝑎𝑖𝑘 | , 𝑙𝑚𝑎𝑥 ≥ 𝑘
𝑖>𝑘
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ă:
𝑥 = 𝐽𝑜𝑟𝑑𝑎𝑛 (𝐴, 𝑐)
102
În notația de mai sus, 𝑥 reprezintă soluția sistemului de ecuații liniare, 𝐴 reprezintă
matricea coeficienților, iar 𝑐 reprezintă șirul termenilor liberi.
(0)
𝑥1
(0)
𝑋0 = 𝑥2 (90)
…
(0)
[𝑥𝑛 ]
𝑁=𝐷
{
𝑃 = 𝑁 − 𝐴 = −(𝐿 + 𝑅)
0 0 … 0
𝑎21 0 … 0
𝐿=( )
… … … …
𝑎𝑛1 𝑎𝑛2 … 𝑎𝑛𝑛
0 𝑎12 … 𝑎1𝑛
0 0 … 𝑎2𝑛
𝑅=( )
… … … …
0 0 … 0
(𝑘)
𝑏𝑖 − ∑𝑛𝑗=1, 𝑎𝑖𝑗 𝑥𝑗
(𝑘+1) 𝑗≠𝑖
𝑥𝑖 = , 𝑖 = 1, … , 𝑛
𝑎𝑖𝑖
(𝑘+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
𝑛
104
2∗𝑥+𝑦+𝑧 =2
{ −𝑥 + 𝑦 − 𝑧 = 3 (91)
𝑥 + 2 ∗ 𝑦 + 3 ∗ 𝑧 = −10
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:
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:
După rularea script-ului, cu ajutorul tastei F5, vor fi afișate rezultatele din Figura 76:
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:
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.
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
O ecuație neliniară este o ecuație care are forma generală [11, 13]:
𝑓(𝑥) = 0 (93)
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:
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:
𝑥1 = 𝑥0
(97)
𝑥2 = 𝑥1 + ∆𝑥
111
𝑑𝑎, 𝛼 ∈ [𝑥1 , 𝑥2 ]
𝑓(𝑥1 ) ∗ 𝑓(𝑥2 ) < 0 { 𝑥1 = 𝑥2
𝑛𝑢, {𝐺𝑜𝑡𝑜 (82)
În cazul în care relația (84) este adevărată, funcția prezintă un minim local, iar
calculul este oprit.
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:
|𝑓(𝑥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)
𝑔(𝑥) = 𝑎 ∗ 𝑥 + 𝑏 (107)
𝑎𝑥1 + 𝑏 = 𝑓(𝑥1 )
{ (108)
𝑎𝑥2 + 𝑏 = 𝑓(𝑥2 )
𝑓(𝑥2 ) − 𝑓(𝑥1 )
𝑎=
𝑥2 − 𝑥1
(109)
𝑥2 ∗ 𝑓(𝑥1 ) − 𝑥1 ∗ 𝑓(𝑥2 )
𝑏=
{ 𝑥2 − 𝑥1
𝑔(𝑥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 )
|𝑓(𝑥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
115
𝑓(𝑥1 )
𝑥2 = 𝑥1 − (117)
𝑓 ′ (𝑥1 )
|𝑓(𝑥2 )| ≤ 𝜀 (118)
𝑥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:
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 𝑏𝑛 :
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 ∗ 𝛼 + 𝑎𝑛
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.
𝑥3 − 2 ∗ 𝑥 − 5 = 0 (123)
𝑦 = 𝑥3 − 2 ∗ 𝑥 − 5 (124)
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:
119
Rezultatul în formă grafică este prezentat în Figura 84:
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
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
(
𝐹(𝑥) = 0 (126)
(0)
𝑥1
(0)
𝑥 (0) = 𝑥2 (127)
…
(0)
(𝑥𝑛 )
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]:
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
𝑛 𝑛
(𝑘) √1 + 6𝜂 − 1
𝑠2 = (130)
3𝜂
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ă:
123
Se determină matricea 𝐻 (𝑘+1) cu relația:
𝑇
(𝑘+1) (𝑘)
(𝐻 (𝑘) Δf (𝑘) + 𝑠 (𝑘) Δ𝑥 (𝑘) )(Δ𝑥 (𝑘) ) 𝐻 (𝑘)
𝐻 =𝐻 + (133)
(Δ𝑥 (𝑘) )𝑇 ∗ 𝐻 (𝑘) ∗ Δ𝑥 (𝑘)
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ă.
2 ∗ 𝑥1 − 𝑥2 = 𝑒 −𝑥1
{ (135)
−𝑥1 + 2 ∗ 𝑥2 = 𝑒 −𝑥2
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
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
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
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
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
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ă
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
Figura 99. Histograma de eroare pentru datele luate în considerare în acest exemplu
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:
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 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.
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
148