I. SCURT ISTORIC AL MEDIULUI DE CALCUL MATLAB [617123]

4

I. SCURT ISTORIC AL MEDIULUI DE CALCUL MATLAB

Avalanșa de informații din ultimele cinci decenii a condus la algoritmi numerici de
optimizare indispensabili pentru tratarea diferitelor probleme din domeniile ingineriei, fizicii,
analizei numerice, te oriei sistemelor și controlului, prelucrării semnalelor, învățării automate
etc. Se accentuează că această scurtă enumerare reprezintă doar cele mai principale evidente în
domenii de aplicație ale algoritmilor de optimizare, teoria optimizării este considerată un
instrument valoros în aproape toate domeniile științifice [4].
Deoarece problemele lumii reale devin extrem de complicate este necesar să se facă o
abstracti zare și o simplificare a realită ții într -un model. Să se consideră de exemplu problem a
construirii unei clădiri. Este necesară o durată îndelungată pentru culegerea de informații privind
locul unde se amplasează , caracteristicile fizice ale clădirii, studiul detaliat al condițiilor climatice
și de sol, influenț a asupra costurilor, sursele de finanțare și costu rile. Decidentul poate hotarâ să
considere în mod deosebit și în detaliu toate celelalte potențiale folosite în această perioad și în
perioadele viitoare. Dacă decidentul adoptă strategia colectării tuturor informațiilor înainte de a
acționa, atunci nici o acțiune nu va avea loc. Mintea umană nu poate considera toate aspectele
empirice ale problemei. Anumite atribute ale problemei trebuie ignorate ca să se poată lua o
decizie. Decidentul trebuie să identifice factorii cei mai relevanți pentru problema apărută .
Abstracția și simplificarea sunt paș i necesari în rezolvarea oricărei probleme umane.

1.1. Prezentarea general ă MATLAB

La ora actuală există algoritmi eficienț i de rapizi destinați rezolvării problemelor de
optimizare convex e/neconvexe cu dimensiuni mici și medii într -un interval de timp relativ scurt.
Însă multe dificult ăți și întreb ări fără răspuns apar în cazul problemelor cu dimensiuni mari .
Dimensiunile problemelor întâlnite în domeniile enumerate anterior se afl ă în cre ștere continu ă,
astfel încât se formuleaz ă relativ des probleme cu dimensiuni de zeci de m ilioane de variabile.

5
Prin urmare, algoritmii de optimizare r ămân un subiect de actualitate în cercetarea modern ă din
matematica aplicat ă[4].
Optimizarea se def inește ca știința determinării «celei mai bune» soluții la anumite
probleme definite matematic, care sunt adesea modele ale realității fizice. Aceasta implică studiul
criteriilor de optimalitate pentru probleme, determinarea soluției cu metode algoritmice, studiul
structurii acestor metode și experimentarea pe calculator a metodelor cu date experimentale și cu
date reale [12].
Metodele de optimizare au o largă aplicabilitate în aproape orice activitate în care sunt
prelucrate informațiile numerice: știință, inginerie, matematică, economie, comerț etc.
Software -ul se referă la totalitatea părților nefizice a echipamentelor de procesare a
datelor fiind intangibil, compus din programe și date aranjate într -o structură logică.
Software -ul mathematic permite rezolvarea problemelor care pot fi descrise mathematic,
este un soft de aplicații având scopul de a soluționa problem e matematice. Aceste aplicații pot
rezolva probleme a căror soluționare matematică exactă sau numerică este posibilă [2].
Există două criterii după care se poate clasifica softul mathematic:
– rezolvarea de problem ei special e;
– calcule simbolice sau calcule numerice.
MATLAB (de la Matrix Laboratory) este un mediu de dezvoltare pentru calcul
numeric și analiză statistică ce conține limbajul de programare cu același nume, creat
de MathWorks . MATLAB permite manipularea matricilor , vizualizarea funcțiilor, implementarea
algoritmilor, crear ea de interfețe și poate interacționa cu alte apl icații. Chiar dacă se specializeză
în calcul numeric, există pachete care îi permit să interacționeze cu motoarele de calcul simbolic
gen Maple . Un pachet adițional, Simulink , oferă posibilitatea de a realiza simulări ale sistemelor
dinamice și îmbarcate utilizând modele matemat ice. MATLAB e utilizat pe larg î n industrie, în
universitați și e disponibil cross -platform , sub diverse sisteme de operare
Windows , GNU/Linux , UNIX și Mac OS [1].

1.2 . Apari ția software -ului mathematic
Primul computer electron ic digital ENIAC a apărut la Universitatea din Pennsylvania în
1946, care pune bazele primelor calcule efectuate la calculator cu ajutorul programelor. În 1954
se publică primul program complect în revista MTAC (,,O metodă de calcul a func țiilor
trigonom etrice inverse’’ ) [4].

6
În 1960 este construit de un comitet international limbajul Algol 60 . În această periadă o
serie de aplicații din categoria software -ului matematic sunt dezvoltate independent în mai multe
centre, ca Toronto, Stanford și Nation al Physical Laboratory [4].
În acea perioadă pentru calcule numerice se foloseau limbajele Fortran -ul și A lgol-ul,
însă anul 1961 se descoperă limbajul Lisp -ul care este un procesator de liste, se aduce o
dezvoltare esențială în calculul simbolic . Cu ajutorul acestui program se putea aplica operația –
diferențierea simbol ică , dar cu primele limbajuri era imposibil de efectuat. Numeroase Cas -uri au
fost scrise în limbajul Lips. Această aplicație a fost o primă încercare de a programa un calculator
astfe l încât să se comporte ca un student la matematică, bazânduse pe o serie de euristici pentru
integrarea indefinită [4].
Anul 1965 este marcat de apariția primei vers iuni a MATHLAB, acest sistem s e bazează
pe limbajul Lips pentru manipularea polinoame lor și funcțiilor raționale. Acesta este primul
sistem interactiv destinat utilizării precum un calculator simbolic unde s e includea și proceduri de
reprezentare grafică bidimensională a rezultatelor. Cu trei ani mai târziu apare o versiune nouă a
sistemul ui MATHLAB unde se vine cu o grafică îmbunătățită [4].
Abrevierea MATLAB a fost creată la sfârșitul anilor ' 70 de către Cleve Moler ,
președintele departamentului de informatică al Universității din New Mexico. Inițial creat pentru
a permite accesul studenților săi la librăriile LINPACK și EISPACK , fără necesitatea de a studia
limbajul FORTRAN , în curand s -a răspândit în alte universități, dobândind un public larg în
domeniul matematicii aplicat e. Jack Little, de specialitate inginer, a intrat în contact cu MATLAB
în 1983, în timpul unei vizite a lui Moler la Universitatea Stanford . Recunoscând imediat
potențialul său comercial, a început o colaborare cu Cleve Moler și Steve Bangert rescriindu -l
în limbajul C . În anul 1984 au fondat MathWorks , continuând dezvoltarea aplicației [15].
Sfârșitul sec.XX se diversifică numărul de aplic ații de tip software mathematic, atât cele
disponibile oricărui utilizator cât și cele comerciale. Deoarece PC -urile sunt tot mai ac cesibi le
numărul utilizatorilor de CAS -uri (sistem de calcul simbolic ) crește considerabil. În sistem ul
educațional pătrunde software -ul matematic. Apare în 1992 MATLAB 4.0 oferit pentru stații
workstations, care are facilități pentru matrici rare și grafică îmbunătățită. Apoi peste cinci ani
apare versiunea 5.0 [15].

7

1.3. Mediul MATLAB

MATLAB este un CAS dedicate c alcului numeric și reprezentărilor grafice din domeniul
științei și ingineriei, în care se integrează analiza numeric ă, calculul matriceal, procesarea
semnalelor și reprezentările grafice într -un mediu ușor de învâțat și folosit , care este bine venit
pentr u studenții din ziua de azi . Matricea este elementul de bază cu care se operează în
MATLAB. Acest soft a devenit un standart pentru domeniile de cercetare și rezolvare a
proble melor din procesarea semnalelor, control static, prelucrarea datelor experimenta le [4].
Principalele facilități pe care ne le oferă MATLAB -ul sunt:
– analiza datelor de exemplu transform ări, medii statice, deviații i nterpolare;
– operații matematice fundamentale precum calculele cu matrice și tablouri, calcule cu polinoame,
aritmetică în virgulă mobilă, operatori logici și relaționali cu funcții trigonometrice, exponențiale
sau logaritmice;
– analiza matriceală și funcții matriceale, ecuații liniare, valori proprii, factorizări , algoritmi
pentru matrice rare;
– reprezentarea graf icelor bi – și tri -dimensionale în coordonate carte ziene, polare, la scară
logaritmică cu control asupra culorilor poziției de vizualizare, animație, texte și etichete, copierea
graficelor în format recunoscut de Windows;
– programare prin structuri de co ntrol citire/scriere fișiere, depa nare, creare interfețe, grafice;
– analiza numerică neliniară pentru ecuații dife rențiale, integrare, minimizări;
– cea mai importantă caracteristică este ușurința cu care poate fi extins, orice programator poate
adăuga pr opriile programe scrise în MATLAB la fișierile originale [4].
MATLAB include biblioteci specifice numite ToolBox -uri, care sunt colecții de funcții
care dezvoltă mediul de programare în vederea rezolvării unor probleme din domenii variate
precum:
-procesare de semnale: filtre, analiza și estimarea spectrului, transformate Fourier, modelare
parametrică, modulare și demodulare;
-procesare de imagini: filtre bidimensionale, reconstituire și extragere de imagini, operații de
colorare, geometrice și morfol ogice, transformări bidimensionale, analiza și statistica imaginilor.

8
-matematică simbolică care este bazată pe bib lioteca share a Maple, în care sunt incluse algebra
liniară și rezolvare de sisteme de ecuații liniare, simplificări, evaluarea simbolică a u nor funcții
speciale, acces la nucleul Maple și la pachetu l de algebră liniară a acestuia;
-rețele neuronale: pentru proiectarea și simularea acestora , cu funcții de transfer, transformare de
caracteristici, analiză grafică a rezultatelor, straturi, eleme nte și conexiuni, ar hitectură cu estimări
recurente;
-statistică: printr -o colecție de funcții folosite pentru analiza datelor, modelare și simulare unde se
conține analiză grafică interactivă, distribuții, numere aleatoare, calcule de regresi e și varianță ,
teste de ipoteze;
-analiză polinominală, interpolări, aproximarea curbelor și net ezirea lor, derivate, integrale;
-optimizare printr -o diversitate de funcții utilizate pentru optimizare liniară și neliniară ,
programare liniară și pătratică, determinare d e extreme, problema celor mai mici pătrate,
optimizarea contrangerilor, rezolvarea de ecuații neli niare, optimizări multiobiectiv;
-analiza sistemelor , respectiv design sisteme de control pentru analiza și proiectarea sistemelor în
timp continuu sau discr et, stările și func țiile de transfer ale modelelor , interconectarea sistemelor,
transformări între modele, control robust pentru sinteza sistemelor care funcționeză în prezența
incertitudinii, indentificare sisteme [6].
Utilizarea programului MATLAB includ e:
• Matematică și calcul numeric
• Programare și dezvoltare de algoritmi
• Modelare și simulare
• Analiză de date, exploatarea rezultatelor și vizualizare
• Grafică științifică și inginerească
• Dezvoltare de aplicații software, incluzând construcți e de interfețe grafice cu utiliz atorul
(GUI) [8].
MATLAB este un produs al companiei americane The Mathworks, Inc. și lucrează sub
Windows, Unix, LINUX și Machintosh. Programul MATLAB include toate facilitățile unui
limbaj complet de programare, unde se admit interfețe cu limbajul de programare C, C++ și
FORTRAN. Versiunea cea mai recentă a pachetului de programe MATLAB este versiunea 6 [9].
MATLAB a cunoscut o puternică evoluție în decursul ultimilor ani, reprezentând astăzi în
mediile un iversitare o unealtă standard de calcul, fiind asociată diverselor cursuri introductive sau
avansate în matematică, știință și inginerie. În industrie, MATLAB este recunoscut ca un mijloc

9
de investigație numerică performant, s-a utilizat în sprijinul unei activități de cercetare, dezvoltare
și analiză de înalt nivel [9].
Versiunea completă a pachetului de programe MATLAB conține o întreagă familie de
module specifice, denumite tool -box-uri, respectiv blockset -uri, care permit rezolvarea unor
aplicații din diverse domenii cum ar fi: mașini, aparate și acționări electrice, control de sistem,
aplicații DSP, procesarea materialelor și electro -tehnologii, procesare de semnal, mecanică,
industria aeronautică și de automobile, statistică, finanțe și multe altele [9].
Aceste module sunt colecții de funcții MATLAB (M -files), ușor de asimilat, care extind
puterea de calcul a pachetului de programe MATLAB în vederea rezolvării unor clase particulare
de probleme. Colecția de module MATLAB conține: Simulink, DSP, Control System,
SimPowerSystems, SimMechanics, Data Acquisition, Fuzzy Logic, Image Processing, Partial
Differential Equations, Neural Network, Optimization, System Identification, Financial, Statistics,
Communications, Database, Virtual Reality etc [9].

1.4. Principalele funcții în MATLAB

Funcțiile și comenzile în MATLAB se lansează la linia de comandă în fereastra Command
Window. Prompt -ul (>>) din Command Window indică faptul că MATLAB este gata de a
accepta o comandă din partea utilizatorului. Când apare promptul >>, putem introduce o variabilă
sau lansa o funcție [4].
Dacă s -a introdus mai multe linii de comandă înainte să se lanseze în execuție, se
folosesc tastele Shift + Enter sau Shift + Return după fiecare l inie pană la ultima. Apo i se
tastează Enter sau Return pentru a lansa î n execuție toate liniile. Afiș area promptului sub forma
K >> în Command Window indică faptul că MATLAB lucrează î n debug mode [4].
Pentru ca să se lanseze în execuție o selecție în Command Window se efe ctuează
selecția, apoi clic -dreapta ș i se selectează Evaluate Selection din meniul contextual. Nu se poate
evalua o selecție cî t timp MATLAB este ocupat, de pildă pe durata lansării unui fișier M -file.
Deschiderea unei selecții , fișier function M -file, se selectează funcția corespunzătoare fișierului
în Command Window, ș i apo i clic -dreapta ș i se selectează Open S election din meniul contextual.
Fișier ul function M -file asociat funcț iei respective se deschide in Editor/Debugger [6].

10
În MATLAB se poate lansa doar un singur proces simultan. Dacă MATLAB este ocupat
cu rularea unei alte fun cții, orice altă comandă lansată nu se va putea de a fi executată . Comanda
următoare va fi lansată când cea a nterioară s-a încheiat. De pildă , nu se poate defini br eakpoints
din Editor/Debugger cât timp MATLAB execută o funcție î n Command Window [6].
MATLAB face diferența î ntre lite re mici ș i litere mari. De pildă , nu se poate lansa
funcția Plot dar trebuie să se lanseze funcția plot. În mod similar, variabila a nu este tot una cu
variabila A. Trebuie de luat a tenție la faptul că dacă se folosește funcția help, numele funcțiilor
sunt afișate c u litere mari, de pildă , PLOT , însă doar cu scopul de a le scoate în evidență faț ă de
restul textului. Nu se folosește litere mari când se lansează funcții MATLAB. Anumite funcții de
interfatare cu Java într-adevăr folosesc minus cule și majuscule și trebuiesc i ntroduse ca atare.
Spațiile de tip blanc î n jurul operatorilor cum ar fi -, :, si ( ), sunt opționali, și pot îmbun ătăți
claritatea programului [6].
Pentru a se introduce mai multe funcții într -o singură linie de comandă, se separă funcțiile
cu o virgulă ( , ) sau punct si virgulă ( ; ). Prin fol osirea semnului punct si virgulă ( ; ) se elimină
afișarea rezultatul ui comenzii precedente [6].
Dacă o instrucțiune nu încap e pe o linie, folosim (3 puncte , …) pentru a indica faptul că
această instrucțiune con tinuă pe linia următoare, se tastează Enter sau Return pentru a avansa la
linia următoare, ș i apoi se conti nuă introducerea instrucțiunii. Numărul maxim de caractere
permis pe o singură linie este de 4096 [6].
Anumite instrucțiuni apar în dife rite culori pentru a gasi mai ușor anumite elemente,
cum ar fi identificarea perechilor de instrucțiuni if/else:
• Se tastează un string si acesta se va afișa în mov. Când se finaliză tastare a string -ul, acesta
devine roșu;
• Se tastează un cuvân t cheie, cum ar fi funcția lor și aceasta va fi afișată cu albastru. Liniile de
comandă pe care le introduceți î ntre func țiile de început și sfî rșit de contro l logic se vor scrise cu
aliniat;
• dacă se execută u n dublu -clic pe o paranteză rotundă de deschidere sau închidere ( ), paranteza
dreaptă [], sau acolada {}, are ca urmare selectarea ca racterelor dintre acea paranteză și perechea
sa;
• dacă se tastează o paranteză de închidere (sau deschidere) ș i paranteza sa pereche de deschidere
(sau închidere) paranteza respectivă apare pentru scurt timp marcată cu altă culoare;
• dacă se tastează o paranteză de închide re (sau desc hidere) prost pusa ș i MA TLAB va afișa o
linie orizon tală peste paranteza respective;

11
• dacă se folosesc tastele să geată pentru a ne poziț iona deasupra un ei paranteze de deschidere sau
închidere. Acea paranteză ș i paranteza sa pereche de î nchidere sau desch idere apar p entru scurt
timp marcate cu altă culoare;
• dacă se tastează un simbolul %, MATLAB întelege că ceea ce urme ază este u n comentariu si va
apare a scris î n culoarea verd e. Aceea informaț ie este tratată de MATLAB ca un comentari u. Se
tastează o com andă sistem, cum ar fi ! (shell escape), și linia va apă rea în galben. Erorile apar
scrise în roș u [9].
Se folosește tastele tip sageată, tasta tab, ș i tastele de co ntrol pentru a se reapela, edita, și
refolosi funcții pe care s -au introdus a nterior. De pildă, se presupune că din gr eșeală s -a introdu s:
rho = (1+ sqt(5))/2 MATLAB v -a răspunde cu ,,??? Undefined function or variable 'sqt' ”.
Deoarece s -a introdus greșit funcția sqrt. În loc de a re starta întrega linie, se teastează tasta ↑.
Linia tas tată anterior este reafișată. Se folosesc tastele tip sageată stînga sau dreapta pe ntru a
repoziționa cursorul și pentru a corecta funcția ș i a in troduce litera ,,r,, care lipsește și deci pentru
a obține sqrt în loc de sqt. Dacă s -a folosit repetat tasta ↑ se reapelează la linii de comandă tastate
anterior. Funcțiile pe care le -au introdus sunt mem orate î ntr-un buffer. Se poate folosi re-apelarea
inteligentă pentr u a se reapela o funcț ie anterioară ale că rei prime caractere se specifică . De pildă,
s-a tastt literele plo și apăsând tasta ↑ va fi reapelată ultima funcție care a început cu plo, cum ar fi
cazul une i functiei plot recente. Această operatiune v-a face diferențiere între litere mici ș i mari.
În tabelul 1 de mai jos se prezintă o listă de taste ti p săgeată sau taste de tip control pe care le
putem folosi î n Command Window [11].
Tab.1 Principalele comenzi cu ajutorul tastaturii [11].
Tasta Tasta control Opera țiune
↑ Ctrl+P Re-appelează linia anterioară
↓ Ctrl+N Re-appelează linia următoare
← Ctrl+B Muta cursorul înapoi cu un character
→ Ctrl+F Muta cursorul înainte cu un caracter
Ctrl+ → Ctrl+R Muta cursorul la dreapta cu un cuvânt
Ctrl+ ← Ctrl+L Muta cursorul la stânga cu un cuvânt
Home Ctrl+A Muta cursorul la începutul unei linii
End Ctrl+E Muta cursorul la sfârșitul unei linii
Esc Ctrl+U Șterge linia
Delete Ctrl+D Șterge caracterul din dreapta cursorului
Backspace Ctrl+H Șterge caracterul din stânga cursorului

12
Ctrl+K Șterge caracterele până la sfârșitul liniei
Shift+Home Selectează caracterele până la începutul liniei
Shift+End Selectează caracterele până la sfârșitul liniei

Facilită țile de editare a textului permit reducerea timpului de lucru. Din clipboard fac
parte c omenzile Cut, Copy, Paste, Undo, ș i Redo din meniul Edit și pot fi folosite î n editarea
textu lui introdus la linia de comandă î n Command Window. Unele dintre aceste comenzi pot fi
accesate deasemenea din meniul contextual [11].
MATLAB completează numele unei funcții, variabile, nume de fișier, sau proprietate a
unui grafic, dacă se tastează primele câteva litere și apoi tasta Tab. Daca există un singur nume,
numele este completa t în mod automat. De pildă, dacă se crează o variabi lă costs_march , se
tastează costs și tasta Tab. MATLAB v -a completa numele, afișî nd costs_march . Se tastează apoi
Return sau Enter pentru a se lansa instrucțiunea. În acest exemplu, MATLAB afișează conținutul
variabilei costs_march . Dacă există mai multe n ume care încep cu literele pe care le -au tastat, se
tastează tasta Tab din nou pentru a vedea o listă a acestor nume. De pildă, se va tasta cos și tasta
Tab. După cele de mai sus MATLAB nu afișează nimic,programul indică că există mai multe
nume de funcț ii care încep cu cos. Se tastează din nou Tab si MAT LAB va afiș a [11]:
cos cosets cosint costs_march
cos_tr cosh costfun
Lista rezultantă cu nume de funcții inclu de numele variabilei pe care s -a creat ,
costs_march , dar include deasemenea ș i alte funcții care încep cu cos [11].
Pentru a se șterge comenzile afișate î n Command Window se selectează Clear Command
Window din meniul Edit. Această comandă v-a șterge workspace -ul, dar și afișarea comenzilor.
Prin urmare se poate continua de folosi t tasta ↑ pentru a se reapela funcțiile lansate anter ior.
Același efect de ștergere se obține pri n tastarea la linia de comanda î n Command Window a
funcției clc. Similar funcției clc, funcția home mută prompt -ul pe primul rând și prima coloana î n
fereastr a Command Window [11].
Daca o linie de comandă se încheie cu punct ș i virgula ( ; ), MATLAB la nsează
instrucțiunea dar nu va afișa nimic pe ecran când se tastează Enter sau Return . Această comandă
devine foarte utilă î n cazul generării matricelor mar i. De pilda, daca s-a tastat :
A = magic(100);
și apoi se tastează Enter sau Return MATLAB crează matricea A dar nu o va afișa pe ecran [11].

13
Dacă rezultatul î n Command Window este lung, este posibil sa nu încapă pe ecran și să fie
afișat prea reped e pentru a fi înț eles. Se folosește funcția more pentru a controla paginația afisă rii
în Command Window . Inițial, funcția more este dezactivată (este off). Când se va tasta more on ,
MATLAB afișează doar o pagina (un ecran întreg) de rezultate simultan. După afișarea primului
ecran, se tastează una dintre tastele [11]:
– Enter sau Return , se va avansa la linia următoare;
– Space Bar , se va avansa la pagina următoare;
– Q, se va opri afișarea rezultatelor.
Inițial, rezultatul numeric din Command Windows este afișat ca o valoare scalar ă în
virgula fixă cu 5 -degete. Proprietăț ile de afișare a textului pot fi modificate pentru a schimba
formatul numeric al rezultatului. Formatul de afișare al textului afectează doar mod ul de afișare al
numerelor, nu ș i modul de calcul MATLAB sau modul d e salvare. Un rezultat similar î n ceea ce
privește controlul formatului de afișare al valorilor numerice din Command Window se obține
prin folosirea funcției format . Formatul pe care se specific, este valabil doar pe durata sesi unii
curente [11].
Pentru a controla interspațiile la afișarea textului î n Command Window se folosește
funcț ia format în urmă toarele variante [11]:
• format compact pentru a se supri ma liniile vide; acest format permite totodată să se vizualizeze
mai multe informații î n Command Window ;
• format loose pentru a se afișa liniile vide; acest format permite o vizualizare mai ușoară a
informațiilor [11].
Pentru a tipă ri tot conț inutul Command Window , se select ează Print din meniul File. Pen tru
a printa doar o selectie, se realiz ează mai întîi selecția î n Command Window și apoi se alege
Print Selection din meniul File [11].

1.5. Execuția programelor

Execuția fișierel or M -files, care sunt fișiere care conțin instrucțiuni scrise î n limbajul
MATLAB, se efectuază în același fel ca execuția oricărei alte funcț ii MATLAB. Se tastează
numele fisierului M-file î n Command Window și se tastează pe butonul Enter sau Return . Pentru a
se afiș a fiecare func ție din M-file pe masura ce aceasta se execută , se selectează optiunea Echo

14
on, din meniul File + Preferences + Command Window sau se folosește funcț ia echo on care este
tastată la linia de comandă î n Command Window [12].
Se poate întrerupe un program în execuție în orice moment de tim p, se tastează
combinația de taste Ctrl+C sau Ctrl+Break . Sub Windows, s -ar putea să m ai treacă o anumită
perioadă de timp până când funcț ia curentă sau fișierul MEX -file își încheie activitatea.
Sub UNIX , execuț ia programului se î ncheie ime diat [12].
Semnul de exclamare, !, este un shell escape și indică faptul că restul de comandă tastată la linia
de comenzi este o comandă că tre sistemul de operare. Se folosește această facilitate pentru a se
lansa alte programe fă ră a părăsi mediul MATL AB. De pildă , se tastează comanda !dir care este
similară cu lansarea comenzii dir din MS -DOS. După ce programul sau comanda se executată se
încheie sistemul de operare se reâ ntoarce controlul MATLAB -ului [12].
Pentru a deschide un fiș ier M -file, se select ează fișierul sau funcția în Command Window, ș i
apoi clic-dreapta și se select ează Open Selection din meniul contextual. Fișierul M-file se
deschide î n Editor/Debugger [12].
Dacă un mesaj de eroare apare la lan sarea unui fișier M -file, se clichează pe porțiunea
subliniată a mesajului de eroare, sau apasati Ctrl+Enter . Fișierul M -file care conține eroarea se
deschide î n Editor , cu zona care include linia eronată afișată î n prim plan [12].
Funcția diary creează o copie a sesiunii d vs. MATLAB într-un fișier pe disc,
incluzând instrucțiu nile introduse de la tastatură și răspunsul sistemului, dar exclusiv graficele. Se
poate vizualiza ș i edita fișierul text resultant, se folosește orice procesor de text. Pentru a crea un
fișier pe disc, denumit sept23.out care conține toate fun cțiile pe care s -au introdus , și toate
răspunsurile MATLAB, se tastează diary('sept23.out') . Pentru a se întrerupe înregistrarea sesiunii,
se folosește diary('off') [12].
Există alte două modalităț i de v izualizare a informației unei sesiuni [1]:
• una în care se utilizează Command History , care conține o listă a tuturor f uncțiilor executate în
sesiunea curentă ș i cele anterioare ;
• Sub Windows, opțiunea logfile de lansare a MATLAB -ului.
Proprietăț ile ferestrei Command Window se pot modifica din meniul
File+Preferences +Command Window .
Text display – conține opț iuni de specificare a rezultatelor î n Command Window [1]:
Numeric format – Permite setarea formatului valorilor numerice afișate î n Command Window.
Acesta afectează doar modul de afișare a numerelor, nu și modul de calcul sau salvare specifice
MATLAB -ului. Numeric dis play – Permite setarea interspațiilor î n Command Window . Pentru a

15
elimina liniile vide, folosim compact. Pentru a afiș a liniil e vide folosim loose .
Display – conține opț iuni de acti vare sau dezactivare a ecoului ș i a dimensiunii buffer –
ului[1]:
Echo on – se selectează acestă opțiune dacă se dorește vizualizarea î n Command Window a
comenzilo r din fișierele M-files af late î n execuție;
Wrap lines – textul introdus la linia de comandă și rezultatele î n Command Window se pot extinde
pe mai multe linii pentru a se î ncadra în lă țimea curentă a ferestrei Command Window . În acest
caz scroll -bar-ul orizontal nu apare întrucî t nu mai este necesar ;
Limit matrix display width to eighty columns –se selectează această opțiune dacă se dorește ca
MATLAB să afiș eze doar 80 coloane ale rezultatul ui tip matrice, indiferent de lăț imea ferestrei
Command Window . Se deselectează opțiunea dacă lățimea fere strei Command Window se setează
mai mare de 80 coloane și doriți ca rezultatul tip matrice să umple lăț imea ferestrei Command
Window ;
Command session scroll buffer size – se setează dimens iunea buffer -ului care pastrează o listă a
comenz ilor lansate anterior pentru a fi reapelate ;
Command Window Font & Color Preferences – permite specificarea caracteristicilor font -ului
folosit î n Command Window . Se select ează Use desktop font dacă doriți că fontul î n Command
Window să fie identic cu acela și specificat î n General Font & Colors preferences . Dacă se
dorește ca fontul î n Command Window să fie diferit, selectaț i Use custom font și se specific ă
caracteristicile fontului pentru Command Window :
• Se tastează, de pildă , Sans Serif
• Style , de pildă , bold
• Size in points , de exemplu, 12 points [1].
După efectuarea selecției, zona Sample area va afișa noua înfățiș are a fontului.
Se specifică culorile folosite î n Command Window :
Text color – Culoarea textului obișnuit; textul special folosește culori specificate pentru Syntax
Highlighting;
Background color – Culoarea de fundal a ferestrei ;
Syntax highlighting – Culorile folosite pentru a sublinia sintaxa. Dacă opțiunea este select ată, se
cliclează pe Set Colors pentru a le specifica [1].
Command W indow Keyboard & Indenting ne permit e modificarea anumitor proprietăti
legate de tastatură ș i de aliniere [1].

16
Command line key bindings – se selectează Windows sau Emacs în funcție de tipul de
proprietăti de accelerare ș i prescurtare pe care se doreș te de a le avea în Editor/Debugger . De
pildă, dacă se selectează Windows , prescurtarea lui paste este Ctrl+V . Daca se selectează Emacs ,
aceeași prescurtare este Ctrl+Y [1].
Tab ke – Tab size – Permite setarea numărului de spaț ii asociate unui tab în cursul afișă rii
rezultatelor. Numărul implicit este 4 [1].
Enable up to n tab completions – se selectează opțiunea dacă se dorește a folosi
completare tab când se tastează funcții î n Command Window . Apoi se introduce o limită în căsuța
de editare. De pildă, dacă se introduce 10, când se folosește completare tab , MATLAB afișează
lista de posibile completări dacă există 10 sau mai puține. Dacă există mai multe de 10,
MATLAB afișează un mesaj care afirma ca există mai mult de 10 completări. Se deselectează
cutia dacă nu se dorește să se folosească completare tab . MATLAB se va muta cursorul la
următorul tab stop când se apasă tasta Tab, în loc să se completeze numele unei funcții.
Principalele că i de ac cesare a help -ului constau î n folosirea Help Browser , Help Functions
și a altor metode specific [11] .
Tipurile de informații Help sunt Help browser și Help Functions permite accesul la
diferite tipuri de documentații care se folosesc î n funcție de necessitate [11] .
Release Notes – o vede re de ansamblu a noilor produse ș i caracteristici în versiunea
curentă ; aceasta conține deasemenea un upgrade al informației împreună cu problemele specifice
și limitări [11].
Getting Started with … – acetă comandă este d estinată î n primul rând înc epătorilor,
această documentație conține instrucțiuni de bază ale produsului respectiv.
Using … collections – acest material conține instrucțiunile complete pentru folosirea unui
produs.
Reference Pages – orice funcție are o pagină de refer ință care conține sintaxa, descrierea,
exemple, ș i alte informații despre acea funcție. Aceasta include links -uri către alte funcții înrudite
și informații adiționale. Există Reference pages puse la dispoziție ș i pentru blocuri . Se folosește
paginile de re ferință pentru a învăț a mai mult despre o funcție sau pentru a vizualiza sintaxa
acesteia.
M-File Help – se poate obtine M-file help î n Command Window pentru a accesa
informații de bază despre o funcț ie. Astfel se poat e obtine o scurtă descriere a fu ncției și a sintaxei
acesteia. Această informație este denumită M-file help deoarece textul help -ului este o serie de
comentarii la începutul fișierului M-file al acelei funcț ii.

17
Product Page – Este disponibilă pe site -ul MathWorks Web , și conține ce le mai noi
informaț ii despre produse.
Online Knowledge Base – Acesta reprezintă suportul tehnic oferit de MathWorks online.
Acesta furnizează soluții la întrebă ri puse de utilizatori [11].

18

II. FUNCȚII ALE PACHETULUI DE OPTIMIZARE MATLAB

Aplicația MATLAB este un pachet de programe dedicat calcului num eric ș i
reprezenta rilor grafice. Elementul de bază cu care se operează este matricea, de aici s -a iscat și
numele să u: MATrix LABora tory. Resursele sale de c alcul și reprezentare grafică sunt bogate,
permițând operații matematice fundamentale, analiza datelor , programare, reprezentări grafice 2D
și 3D, realizarea de interfețe grafice etc. Din punct de vedere al construcției sale, MATLAB este
alcătuit dintr -un nucleu de bază în jurul că ruia sunt grupate TOOLBOX -urile. Acestea reprezintă
niște aplicatii specifice, fiind de f apt colecții extinse de funcții MATLAB care dezvoltă mediul de
programare de la o versiune la alta, pentru a rezolva probleme din diverse domenii. În prelucrarea
numerică a semnalelor cel mai des utilizat este toolbox -ul SIGNAL PROCESSING.

2.1. Matricea – element de baz ă în MATLAB

MATLAB lucrează numai cu un singur tip de obiecte și anume matrice numerice, având
elemente reale sau comp lexe. Astfel scalarii sunt priviți ca matrice de dimensiune 1 x 1, iar
vectorii ca matrice de dimensiune 1 x n (dacă este vector linie) sau n x 1 (dacă este vector
coloană) [10].
Un exemplu celebru de matrice apare în gravura renascentistă Melancholia realizată de
marele artist și matematician amator Albrecht Dürer. Gravura este încărcată de simbolism
matematic și la o atentă observare a acesteia se poate distinge în colțul din dreapta sus o matrice.
Matricea respectivă este cunoscută sub numele de pătrat magic și în timpul lui Dürer se
considera că are proprietăți magice.

19

Fig. 2.1: Gravura renascentistă Melancholia și pătratul magic .
Sursa: Aatel A.V., Numeral Analysis , Humboldt State University, USA, 1994.

În continuare se prezintă r eguli privind m odul de definire a matricelor [10]:
– elementele matricei sunt cuprinse între paranteze drepte [ ] ;
– elementele unei linii se separă prin pauză (blanc) sau virgule;
– liniile matricei se separă prin ; sau enter [6].
Pentru o matrice M :
– M(i,j) repre zintă elementul din matricea M corespunzător liniei i și coloanei j
– M(i) reprezintă elementul i din matrice, n umărarea elementelor făcându -se pe coloane [10].
Pentru un vector v :
– v(i) se reprezintă elementul de pe poziția i din vector [10].
Se pot construi matric e de dimensiuni mai mari se inițializează de la matrice a de
dimensiuni mai reduse. Pentru exemplificare vom folosi matricea A și vectorii B și C în ultima
lor formă (A – 3 x 3, B – 1 x 3, C – 3 x 1) [10]:

20
Se va construi matricea D de dimensiune 4 x 3, prin adăugarea vectorului B la
matricea A (ca ultimă linie). Programatorii t rebuie s ă fie atenți ca A și B să aibă același număr
de coloane (3) pentru a fi posibilă const rucția:

D=[A;B] → D =
1 2 3
4 5 0
0 0 -3
7 8 9
Dar pentru a se construi matricea E de dimensiune 3 x 4, prin adăugarea vectorului C la
matricea A (ca ultimă coloană). În acest caz se va lua seama ca numărul liniilor (3) să fie același
pentru a fi posibilă construcția [10].
E=[A,C] → E =
1 2 3 -1
4 5 0 -2
0 0 -3 6
Dacă v este un vector atunci:
• v(i:k) – selectează elementele de pe pozițiile i, i + 1, i + 2, … , k ale vectorului v; dacă i > k
atunci vectorul rezultat este gol (nu are nici un element);
• v(i:j:k) – selectează elementele de pe pozițiile i, i + j, i + 2j, … până la k, ale vectorului v (se
selectează cu pasul j); dacă j > 0 și i > k sau j < 0 și i < k atunci vectorul rezultat este gol;
• v([i,j,k]) – selectează elementele de pe pozițiile i, j și k;
• v(:) – dacă vectorul este linie atunci el devine coloană; dacă vectorul este coloană atunci el
rămâne nemodificat [11].
Dacă M este o matrice atunci:
• M(:,j) – selectează coloana j a matricei M;
• M(i,:) – selectează linia i a matricei M;
• M(:,i:j) – selectează coloanele de la i la j ale ma tricei M;
• M(i:j,:) – selectează liniile de la i la j ale matricei M;
• M(:,i:j:k) –selectează coloanele i, i + j, i + 2j , .. până la k ale matricei M (selectează cu pasul j);
• M(i:j:k,:) – selectează liniile i, i + j, i + 2j , … până la k ale matricei M;
• M(i:j,k:l) – se extrage submatricea formată cu elementele aflate la intersecția liniilor de la i la j
și coloanelor de la k la l ale matricei M;
• M(:,[i,j,k]) – selectează coloanele i, j și k ale matricei M;
• M([i,j,k],:) – selectează liniile i, j și k ale matricei M;

21
• M([i,j,k],[l,m,n]) – extrage submatricea formată cu elementele aflate la intersecția liniilor i, j și k
și coloanelor l, m și n ale matricei M;
• M(:,:) – selectează întreaga matrice M;
• M(i:j) – selectează elementele de i la j ale ma tricei M și le pune sub forma unui vector linie
(elementele într -o matrice se numără pe coloane);
• M(:) – selectează toate elementele matricei M și le pune sub forma unui vector coloană (pune
coloanele matricei M una sub alta, sub forma unui vector coloan ă) [11].

2.1.1. Reprezentarea curbelor sin(t), cos(t), sin2(t) și cos(t) într-o matrice de patru figuri

În unele cazuri avem nevoie să reprezentăm simultan mai multe figur i. Acestă operațiune
se face cu instrucțiunea : subplot(m,n,p) care împ arte figura î ntr-o matrice de m*n axe și
selectează axa p pentru reprezentarea grafică ce se va face cu instrucțiunea plot următoare . Se
reprezintă curbele sin(t), cos(t), sin2(t) și cos(t) în funcție de sin(t) într -o matrice de patru f iguri.
Porgramul este următorul :
t = 0: pi/20: 2*pi;
x = sin(t);
y = cos(t);
z = x .* x;

subplot(2, 2, 1)
plot(t, x)
grid
xlabel('t[s]')
ylabel('sin(t)' )

subplot(2, 2, 2)
plot(t, y)
grid
xlabel('t[s]')
ylabel('cos(t)' )

subplot(2, 2, 3)
plot(t, z)
grid
xlabel('t[s]')

22
ylabel('sin^2(t)' )
subplot(2, 2, 4)
plot(x, y)
grid
xlabel('sin(t)' )
ylabel('cos(t)' )

Fig. 2.2. Reprezentare grafică într -o matrice de figure i .
Sursa: Ghinea M., MATLAB. Calcul numeric, Grafică, Aplicații , Editura Teora, 1997.

23

2.2. Probleme de optimizare neconstrânsă

Problemele de optimizare neconstr ânsă presupun minimizarea sau maximi zarea, unei
anumite funcț ii obiectiv (criteriu) prin intermediul unui set de variabile de decizie, f ără ca
acestea s ă respecte anumite restricț ii (constr ângeri). Se va consider a funcț ia (în general,
neliniar ă):
f : 𝑅𝑛→𝑅 de dou ă ori difere nțiabilă, căreia i se asociaz ă problema de optimizare:
min f(x),
x∈𝑅𝑛
unde 𝑥 are rolul vectorului variabilelor de decizie . Problema de optimizare se consider ă rezolvat ă
dacă s-a obț inut un vector 𝑥∗ pentru care valoarea funcț iei f(・) în 𝑥∗ este minim ă, adic ă f(𝑥∗) ≤
f(x) pentru orice x ∈ 𝑅𝑛. Mulț imea în care se efectueaz ă căutarea se numeș te mulțime fezabil ă,
care în cazul de față este dată de întreg spaț iul Euclidian 𝑅𝑛 [11].
În cazul unde funcția obie ctiv nu are o structură prestabilită sau o formă particulară, sunt
disponibile următoarele funcții MATLAB pentru aproximarea unui punct de minim local în cazul
unei problem neconstrânse [11]:
1. Funcția […]=fminunc(…) returneaz ă un punct de minim loca l al funcț iei introduse c a argument
cu ajutorul informaț iei de ordinul I (gradient) ș i a celei de ord in II (Hessiana). Sintaxa funcț iei
are expresia:
x=fminunc(fun,x0)
x=fminunc(fun,x0,optiuni)
[x,val]=fminunc( …)
[x,fval,exitflag,output,grad,hessia n]=fminunc( …)

Această v ariabila fun reprezint ă funcț ia obiectiv diferenț iabilă ce trebuie furnizat ă ca o variabil ă
de tip function handle . O variabil ă de tip function handle poate fi, e.g. un fiș ier objfun.m care
primeș te la intrare variabila de decizi e x și returneaz ă valoarea funcț iei în x. Dac ă această metodă
de rezolvare a problemei necesit ă și gradientul funcției, iar opț iunea GradObj este setat ă ’on’,
atunci argumentul fun furnizeaz ă, în plus, ș i valoarea gradientului în punctul x. Dac ă metoda de
rezolvare a problemei necesit ă Hessiana, dar opț unea Hessian este setat ă ’on’, atunci argumentul
fun furnizeaz ă, în plus, ș i valoarea hessianei în punctul x. Vectorul 𝑥0 reprezint ă punctul inițial de
unde porneș te procesul de căutare al minimului ș i trebuie furnizat ca un vector din Rn[11].

24
Variabila optiuni reprezintă setul de opțiuni specific fiec ărei rutine Matlab. Comanda
optiuni=optimset(’fminunc’) afișează setul de opț iuni implicit. Fiecare dintre acestea se poate
modifica în funcț ie de probl ema de minimizare. De exemplu, pentru setarea opțiunii GradObj pe
on, comanda este optiuni.GradObj=’on’ . Pentru o documentare am ănunț ită se introduce
următoarea comand ă: help fminunc [11].
Funcț ia […]=fminsearch(…) returneaz ă un punct de minim loc al al funcț iei introduse ca
argument, utiliz ând însă o metod ă diferit ă de cea folosit ă de fminunc , anume metoda Nedler –
Mead , ce utilizeaz ă informaț ie de ordin zero (evaluarea funcț iei). Sintaxa este similar ă celei
prezentat e pentru funcț ia fminunc [11].

2.3. Probleme de optimizare constrânsă

Fie funcț ia (în general neliniar ă) f : 𝑅𝑛 →R. Forma general ă a unei probleme de
optimizar e cu constr ângeri (numite și restricț ii), associate funcț iei f, se formuleaz ă în urm ătorul
mod [3]:
min f(x)
x∈𝑅𝑛
s.l.: Cx ≤ d, g(x) ≤ 0, l ≤ x ≤ u, (2.1)
Ax = b, h(x) = 0 ,
unde l, u ∈𝑅𝑛, d ∈ 𝑅𝑚1 , b ∈ 𝑅𝑝1,C ∈ 𝑅𝑚1∗𝑛,A ∈ 𝑅𝑝1∗𝑛, iar g(x) : 𝑅𝑛 → 𝑅𝑚2,h(x) : 𝑅𝑛 → 𝑅𝑝2
sunt funcț ii multidimensionale (v ectori de funcț ii), reprezent ând constr ângerile neliniare de
inegalitate ș i respectiv, de egalitate.
Pentru cazul în care funcț ia de minimizat (maximizat) nu are o structur ă prestabilit ă sau o
form ă particular ă, pentru rezolvarea problemei de optimiza re (2.1) este disponibil ă funcț ia
MATLAB fmincon ce prezint ă următoarea sintax ă [3]:
x = fmincon(fun,x0,C,d,A,b,l,u,nonlcon,optiuni)
[x,fval,exitfla g,output,lambda,grad,hessian] = fmincon( …).
variabila fun reprezint ă funcț ia obiectiv ce trebuie furnizat ă ca o variabil ă de tip function handle .
Dacă metoda de rezolvare a problemei cere și gradientul funcției, iar opț iunea GradObj este setată
’on’, atunci argumentul fun furnizeaz ă, în plus, ș i valoarea gradientului în punctul x. Dac ă metoda
de rezolvare a pro blemei cere Hessiana, iar opț iunea Hessian este setat ă ’on’, atunci argumentul
fun furnizeaz ă, în plus, ș i valoarea Hessianei în punctual x;

25
matricele ș i vectorii C, d,A, b, l, u definesc constr ângerile liniare cu structura prezentat ă în
modelul (2.1 );
variabila de tip handle nonlcon returneaz ă constr ângerile neliniare de egalitate ș i inegalitate
reprezentate în (2.1);
𝑥0 reprezint ă punctul iniț ial de unde porneș te procesul de c ăutare al minimului ș i trebuie furnizat
ca un vector din 𝑅𝑛;
variabila optiuni reprezint ă setul de opț iuni specific fiec ărei rutine MATLAB . Comanda
optiuni=optimset(’fmincon’) afișează setul de opț iuni implicit. Fiecare dintre acestea se poate
modifica în funcț ie de problema de minimizare. De exemplu, pentru setarea opțiunii GradObj pe
on, comanda este optiuni.GradObj=’on’ [3].
Analiza datelor și interpretarea acestora într -un sens cât mai corect este preocuparea
principală din domeniul statisticii. Problema se formulează în următorul mod: pe baza unei
colecții de date cunoscute (reprezentate în Fig. 2.4 prin puncte), să se realizeze predicția cu o
eroare cât mai mică a unui alt set de date parțial cunoscut. În termeni matematici, această
problemă presupune determinarea unei direcții de -a lungul căreia elementele date ( punctele) tind
să se alinieze, astfel încât să se poată prezice zona de apariție a punctelor viitoare. S -a constatat că
direcția de căutare este dată de vectorul singular al matricei formate din colecția de puncte date,
ce poate fi găsit prin intermediul u rmătoarei probleme de optimizare [11]:

min f(x) (=1/2𝑥𝑇𝐴𝑇𝐴𝑥)
x∈𝑅𝑛
s.l.:g(x) ≤0 (‖𝑥‖≤1),

unde A ∈ 𝑅𝑚+𝑛 reprezint [ matricea ale c ărei coloane [a1 . . . a n] sunt punctele cunoscute iniț ial.
Se consider ă cazul particular în care se d ă matricea A =[10,50
0 2 1],
să se rezolve problema precedent ă cu ajutorul funcț iei fmincon , aleg ând punctul iniț ial
𝑥=[−1−2 0.5]𝑇.

26

Fig.2.4 . Dispersie a datelor în spaț iul 𝑅2. Observ ăm că
punctele s e aliniaz ă de-a lungul dreptei ce iese în evidență .
Sursa: Necoară I., Metode de Optimizare Numerică , Ed. Politehnica Press, 2013.

Se creează fiș ierele objfun.m și confun.m pentru funcț ia obiectiv ș i respectiv, pentru
constr ângeri :
function [f]=objfun(x )
f=x(1)^2+4.25*x(2)^2+x(3)^2+0.5*x(1)*x(2)+2*x(2)*x(3);
function [g,h]=confun(x)
g=x(1)^2+x(2)^2 + x(3)^2 – 1;
h=[];

Se apeleaz ă rutina pentru minimizare cu restr icții:
x0=[-1,-2,0.5];
optiuni=optimset(fmincon);
optiuni.LargeScale=off;
[x,fval]=fmincon(@ objfun,x0,[],[],[], …
[],[],[],@confun,optiuni)

2.4. Programare liniar ă

Pentru secvențe lungi de comenzi se recomandă a crea și lansa în execuție a unui program
MATLAB. Acesta este un fișier “text” având extensia .m și conținând succesiunea dori tă de
comenzi MATLAB. După creare, fișierul devine o nouă comandă externă MATLAB, care poate
fi lansată în execuție prin simpla introducere de la tastatură a numelui fișierului (fără extensia .m).
Pentru crearea unui astfel de fișier se parcurg următorii pași [11]:

27
– în bara de meniuri a ferestrei de comenzi se selectează File, iar în interiorul acesteia New,
urmată de M-file. Se va deschide astfel o nouă fereastră (sesiune de editare cu editorul
NOTEPAD ) cu bară de meniuri proprie și cu numele Untitled . În acest fișier se scrie program ul
MATLAB droit;
– pentru a salva fișierul astfel creat sub un alt nume se selectează din bara de meniuri a noii
ferestre comanda File, urmată de Save As …; va apărea o nouă fereastră de dialog în care vom
preciza numele fișier ului ( File name 🙂 însoțit de extensia .m și locul unde dorim să îl salvăm ( Save
in:)[11].
Pentru cazurile particulare de probleme de optimizare ex istă funcții Matlab specifice care
se rezolvă problemele de optimizare aferente prin intermediul unor al goritmi care se dedică
respectivelor clase de probleme. Funcția linprog rezolvă probleme de programare liniară , care
vizează minimizarea unei funcții obiectiv liniare, în prezența unui set de constrângeri liniare. O
problemă de programare liniară se formul ează în general după cum urmează [11]:

min 𝐶𝑇𝑥
x∈𝑅𝑛

s.l.: Cx ≤ d, l ≤ x ≤ u,
Ax = b,
unde c, l, u ∈ 𝑅𝑛, d ∈ 𝑅𝑚, b ∈ 𝑅𝑝,C ∈ 𝑅𝑚∗𝑛,A ∈ 𝑅𝑝∗𝑛.
Sintaxa funcț iei linprog cuprinde:
x = linprog(c,C,d,A,b,l,u, x0,optiuni)
[x,fval,exitflag,output,lambda] = linprog(. . . ).
Pentru mai multe detalii, se poate apela comanda: help linprog .

2.5. Programare patratică

Funcți a quadprog rezolv ă probleme de programare p ătratic ă, care vizeaz ă minimizarea
unei funcț ii ob iectiv p ătratice, în prezenț a unui set de constr ângeri liniare. O problem ă de
programare p ătratic ă se formuleaz ă în general dup ă cum urmeaz ă [11]:
min 1
2𝑥𝑇𝑄𝑥+𝑞𝑇𝑥
x∈𝑅𝑛𝑚
s.l.: Cx ≤ d, l ≤ x ≤ u,
Ax = b,

28
unde Q = 𝑄𝑇 ∈𝑅𝑛∗𝑛, q, l, u ∈ 𝑅𝑛, d ∈ 𝑅𝑚, b ∈ 𝑅𝑝,C ∈ 𝑅𝑚∗𝑛,A ∈ 𝑅𝑝∗𝑛.
Sintaxa funcției quadprog cuprinde:
x = quadprog(Q,q,C,d,A,b,l,u,x0,optiuni)
[x,fval,exitflag,output,lambda] = quadprog(. . . ).
Pentru mai multe detalii, se poate apela comanda: help quadprog .

În continuare se va aborda p roblema Google . Ca urmare a progreselor tehnologice
recente, motoarele de c ăutare (e.g. Google, Yahoo) au devenit un punct central de interes în
optimizare, urm ărind dezvo ltarea de algoritmi eficienț i ce execut ă o căutare c ât mai rapid ă. Se
constat ează că o căutare eficient ă presupune o clasificare c ât mai strategic ă a paginilor web,
rezult ă o reducere a problemei de c ăutare la una de clasificare a acestor pagini. Problema de
clasificare ( ranking ) se formuleaz ă ușor în terme ni de grafuri ponderate (Fig. 2.6 ). De aceea,
paginile web sunt interpretate ca noduri ale unui graf, muchiile ca leg ături aferente dintre ele, iar
fiecărei muchii îi este asociat ă o pondere [11].

Fig.2.6.Exemplu graf orientat

Dacă se notează cu E matricea de adiacență a grafului, elementele acesteia respect ă
următoarea regul ă: Eij este nenul dac ă exist ă o muchie direcț ionat ă de la i la j, altfel este nul.
Dacă se ține cont de faptul c ă graful e ste ponderat ș i că suma ponderilor este egal ă cu 1, atunci
matricea E va avea suma pe linii egal ă cu 1. Matematic, problema precedent ă presupune g ăsirea

29
unui vector propriu x corespunz ător valorii proprii 1, ideea este să se determine x ∈ 𝑅𝑛 astfel
încât Ex = x. Reformul ând mai departe problema în termeni de optimizare avem [11]:

min f(x) (=1
2‖𝐸𝑥−𝑥‖2)
x∈𝑅𝑛
s.l.: 𝐶𝑥=𝑑 (𝑥≥0)
𝐴𝑥=𝑏 (∑ 𝑥𝑖=1𝑛
𝑖=1 )
De cele mai multe ori, matricea are dimensiuni foarte mari ( e.g.109∗109) ceea ce face
problema foarte greu de rezolvat .
O matrice E ∈ 𝑅𝑚∗𝑛 se numeș te stocastic ă pe linii dacă are elemente nenegative
(i.e. Eij ≥ 0), iar suma pe fiecare linie este egal ă cu 1. O matrice E ∈ 𝑅𝑚∗𝑛 se numeș te stocastic ă
pe coloane dacă are elemente nenegative (i.e. Eij ≥ 0), iar suma pe fiecare coloan ă este egal ă cu
1 [12].
Deoarece componentele nenule ale matricei de adiacență E au rolul de probabilit ăți,
acestea sunt nenegative, iar matricea E este stocastică pe coloane . Forma algebric ă a problemei
Google se reduce la a g ăsi vectorul propriu corespunz ător valorii proprii maxime 1, adic ă soluț ia
următorului sistem liniar supus constr ângerilor [12]:

{𝐸𝑥=𝑥
𝑒𝑇𝑥=1,𝑥=0
Rezolvarea acestui sistem se execut ă ușor în cu terminii de optimizare:
min f(x) (=1
2‖𝐸𝑥−𝑥‖2)
x∈𝑅𝑛
s.l.: 𝑒𝑇=1,𝑥≥0
unde e = [1 …1]𝑇 , matricea E ∈ 𝑅𝑚∗𝑛 este rar ă (elementele au valori preponderent nule). Se
observ ă că problema rezultat ă este constr ânsă, însă dacă alegem un parametru τ > 0 suficient de
mare, se poate obț ine o formulare echivalent ă fără constr ângeri folosind funcț ia de penalitate
pătratic ă:
min F(x, 𝜏) (=1
2‖𝐸𝑥−𝑥‖2+𝜏
2(𝑒𝑇𝑥−1)2)
x∈𝑅𝑛
Pe baza teoremei Peron -Frobenius , se observ ă că putem elimina constr ângerile de
inegalitate x ≥ 0, deoarece soluț ia optim ă global ă a problemei de optimizare satisface automat

30
aceast ă constr ângere. Datorit ă dimensiunilor foarte mari ale ambelor probleme considerate , se
orientează atenț ia către algoritmi de ordinul I deoarece au o complexitate scăzută per iterație [11]:
A• metoda de gradient proiectat pentru cazul constrâ ns:
𝑥𝑘+1=[𝑥𝑘−𝛼∇𝑓(𝑥𝑘)](𝐼𝑛,∆𝑛)
B• metoda gradient pentru cazul n econstr âns:
𝑥𝑘+1=𝑥𝑘−𝛼∇𝐹(𝑥𝑘,𝜏)
unde ∆𝑛={𝑥:𝑒𝑇𝑥=1,𝑥≥0} se numește mulțimea simplex ș i α > 0 este u n pas constant.
Rezultatele obț inute se prezentă î n Fig. 2.7 și 2.8 . Se observă o convergență rapidă î n ambele
meto de. De asemenea, se observă că metoda de penalitate produce o soluție optimă pentru
problema originală pentru valori relativ mici ale parametrului de penalitate τ .
Se observă că mulț imea fezabil ă este descris ă de o combinaț ie de inegalit ăți\egalit ăți
liniare, se poate deduce proiecț ia ortogonal ă a unui punct pe aceast ă mulț ime în mod explicit. De
accea, în implementare folosim funcț ia Matlab quadprog pentru a obț ine o proiecț ie aproximativ ă
[11].
În primul caz s e consider ă următoarea funcț ie Matlab c e primeș te ca argument matricea de
adiacență E și se rezolv ă problema de optimizare prin metoda gradientului proiectat [11]:

function [x]=google(E,eps)
[m n]=size(E);
if (m~=n)
error(’Dimensiunile matricii nu sunt compatibile !’);
end
e=ones(n,1);
%%%% Dac \u a matricea E nu este stochastica pe coloane,
%%%% se creaza o noua matrice care
%%%% indeplineste aceasta proprietate.
if (norm(sum(E,1).^( -1)’-e)>0.0001)
inv=diag(sum(E,1).^( -1));
E=E*inv;
end
I=eye(n); x=5*rand(n,1); x=x/sum(x);
crit_stop=norm(E*x -x);
L=norm(E-I);
while (crit_stop>eps)
%%% Se calculeaza gradientul %%%%
grad=(E-I)’*(E-I)*x;
%%% Se calculeaza pasul metodei gradient %%%%
d=x-(1/L)*grad;

31
%%% Se proiecteaza pe mul \c timea fezabila%%%%
[grad_proj]=quadprog(eye(n), -d,[],[],e ’,1,zeros(n,1));
x=grad_proj;
%%% Criteriul de oprire %%%%
crit_stop=norm(E*x -x);
end end

Fig. 2.7. Convergenț a metodei gradient proiectat aplicat ă unei probleme
Google de dimensiune n = 50 în termeni de valorile funcț iei obiectiv.
Sursa: Necoară I., Metode de O ptimizare Numerică , Ed. Politehnica Press, 2013.

În cel de -al doilea caz, se implement ează metoda gradient ul cu parametrul τ dat de
utilizator [11]:
function [x]=google_unc(E,eps,gamma)
[m n]=size(E);
if (m~=n)
error(’Dimensiunile matricii nu sunt compati bile!’);
end
e=ones(n,1);
%%%% Dac \u a matricea E nu este stochastica pe coloane,
%%%% se creaza o noua matrice cu aceasta proprietate.
if (norm(sum(E,1).^( -1)’-e)>0.0001)
inv=diag(sum(E,1).^( -1));
E=E*inv;
end
I=eye(n); x=5*rand(n,1); x=x/sum(x);
crit_vec =[];
crit_stop=norm(E*x -x)/norm(x);
L=norm(E -I+(gamma*e*e ’));
crit_vec=[crit_vec;crit_stop];

32
while (crit_stop>eps)
%%% Se calculeaza gradientul %%%%
grad=(E-I)’*(E-I)*x + gamma*(e*e ’*x-e);
%%% Se calculeaza pasul metodei gradient %%%%
x=x-(1/L)*grad;
%%% Criteriul de oprire %%%%
crit_stop=norm(E*x -x)/norm(x);
crit_vec=[crit_vec;crit_stop];
end
figure;
plot(0:length(crit_vec) -1,crit_vec, ’LineWidth ’,2);
xlabel(’Iteratii ’); ylabel( ’f(x_k) – f^*’);
end

Fig. 2.8 . Convergenț a metodei gradient pentru problema G oogle cu n = 103, 𝜏 = 50 în termeni de
valorile funcției obiectiv (a). Dependenț a convergenț ei metodei gradient de parametrul 𝜏 aplicat ă
problemei Google pe n = 103 (b) .
Sursa: Necoară I., Metode de Optimizare Numerică , Ed. Politehnica Press, 2013 .

33

Fig.2.9 Problema Google rezolvată cu ajutorul aplica ției MATLAB.

2.6. Pobleme de optimizare convex ă

Fie problema de optimizare,
min f(x)
x∈𝑅𝑛
s.l.: gi(x) ≤ 0 ∀i = 1,…,m
Ax = b.
Se știe că d acă funcția obiectiv f și funcț iile ce defines c constr ângerile de inegalitate gi sunt
convexe atunci problema se numeș te problem ă de optimizare convex ă. Convexitatea deț ine un rol
crucial în optimizare, deoarece problemele cu aceast ă proprietate prezint ă trăsături teoretice foarte
bune (e.g., punctele de optim locale sunt, de asemenea, puncte de optim globale); ș i ceea ce este
mai important, pot fi rezolvate numeric în mod eficient, ceea ce nu este valabil pentru problemele
neconvexe. Se studia ză în acest subcapitol noțiunile de funcț ie convex ă și mulțime convex ă
pentru a sublinia propriet ățile remarcabile ale problemelor convexe.
Problemele de programare convexă se caracterizează prin [12]:
 funcție obiectiv convexă dacă aceasta se minimizează (echivalent: funcție obiectiv
concavă dacă aceasta se maximi zează);

34
 restricțiile inegalități sunt de forma
0)(xgi în care g i este o funcție convexă
(echivalent
0)(xgi cu g i funcție concavă);
 eventualele restricții egalități sunt liniare, cerință motivată prin aceea că funcțiile
liniare sunt singurele funcții simultan convexe și concave.
Problemele convexe au următoarele proprietăți fundamentale:
 mulțimea soluțiilor admisibile este convexă;
 funcția obiectiv admite cel mult un optim (minim sau maxim) local; automat acesta
va fi un opti m global și va reprezenta optimul problemei;
 dacă optimul liber (nerestricționat) al funcției obiectiv nu este o soluție admisibilă
atunci optimul restricționat se găsește cu necesitate pe frontiera mulțimii A .
Importanța acestei clase de probleme este c ovârșitoare. Într-adevăr:
 programarea convexă include programarea liniară ;
 în acest domeniu sau concentrat toate mințile luminate ale acestei lumi unde s -a depus
cel mai mare efort de cercetare și s -au obținut cele mai puternice rezultate teoretice (cum a r fi
teoria dualității neliniare, condițiile de optimalitate Kuhn – Tucker) și practice (metode și
algoritmi de optimizare);
Întregul formalism matematic al teoriei economice moderne se bazează pe ipotezele de
convexitate.
Pentru o expunere clară și concis ă, se întroduce următoarele de finiții care vor ajuta la
rezolvarea problemelor următore.
Mulțimea S ⊆ Rn se nume ște convexă dacă pentru oricare două puncte 𝑥1,𝑥2∈𝑆 și un
scalar ∝<∈[0,1] avem 𝛼𝑥1+(1−𝛼)𝑥2∈𝑆, ideea este c ă acest segment se generează de oricare
două puncte din S este inclus în S (Fig. 3.1.).

Fig.2 .10. Exemplu de mulțime convexă (stânga) și mulțime neconvexă(dreapta).
Sursa: Nocedal J. and Wright S., Numerical Optimization , Springer Verlan g, 2006.

35

În matematică , o funcție reală de o variabilă reală este convexă pe un interval atunci câ nd
graficul său se află sub dreapta care unește punctele ce reprezintă valoarea funcției în
extremitățile intervalului.
Funcțiile convexe jocă un rol important în multe domenii din matematică, de exemplu în
probleme de optimizare , în rezolvarea inecuațiilor prin utilizarea inegalității lui Jensen și
a inegalității lui Hölder , și în rezolvarea anumitor ecuații .
Regu la de ba ză a f uncțiilor convexe este atunci câ nd funcția 𝑓:ℝ𝑛→ℝ se numește
convexă dacă domeniul său efectiv dom 𝑓 este o mulțime convexă și dacă următoarea inegalitate:
𝑓(𝛼𝑥1+(1−𝛼)𝑥2)≤𝛼𝑓(𝑥1)+(1−𝛼)𝑓(𝑥2),
și această relație este satisfăcută pentru orice 𝑥1,𝑥2∈ dom 𝑓 și 𝛼∈[0,1].

Fig.2.11: E xemplu de funcție convexă 𝑓(𝑥)= 𝑥2.
Sursa: Nocedal J. and Wright S., Numerical Optimization , Springer Verlang, 2006.

Inegalitatea de mai sus se poate generaliza la un număr p de puncte, purtând numele de
inegalitatea lui Jensen : 𝑓 este o funcție convexă dacă și numai dac ă:
𝑓(∑𝛼𝑖𝑥𝑖𝑝
𝑖=1)≤∑𝛼𝑖𝑓(𝑥𝑖)𝑝
𝑖=1

Pentru orice 𝑥𝑖∈ dom 𝑓 și 𝛼𝑖∈[0,1], cu∑𝛼𝑖=1𝑝
𝑖 .
Interpretarea geometric ă a convexității este foarte simplă (Fig. 3.3). Pentru o funcție
convexă, fie două puncte din domeniul său 𝑥,𝑦∈ dom 𝑓, atunci valorile funcț iei evaluate în
punctele din intervalul [ x, y] sunt mai mici sau egale dec ât cele aflate pe segmentul cu capetele ( x,
f(x)) și (y, f(y)).

36
O funcț ie se consideră convex ă dacă și numai dac ă restricț ia domeniului s ău la o dreapt ă,
care intersecteaz ă domeniul, este de asemenea, convex ă. Cu alte cuvinte, 𝑓 este convex ă dacă și
numai dac ă oricare ar fi 𝑥∈ dom 𝑓 și o direcț ie 𝑑, funcț ia g(α) = f(x + αd) este convex ă pe
domeniul {α ∈ℝ : x+α𝑑∈ dom 𝑓}. Aceast ă proprietate este foarte ajutătoare în problemele ce
implic ă teste de convexitate ale func țiilor.
Pentru a sublinia legătura di ntre noțiunile introduse anterior , se face următoarea
observație: orice mulțime M definită ca mulțimea de subnivel a unei anumite funcții 𝑓, condiția
acestei funcții fiind următoarea: M = {𝑥∈ℝ𝑛: f(x) ≤ c}, unde 𝑐 este o constantă, este convexă
dacă și numai dacă funcția 𝑓este convexă.

2.7. Metode de ordinul I

În acest subcapitol se abordează probleme neliniare de optimizare neconstrânsă, UNLP –
unconstrained nonlinear programming care este urătorul:
(UNLP): min 𝑓(𝑥),
𝑥∈𝑅𝑛
unde funcț ia obiectiv 𝑓 este de dou ă ori diferenț iabilă. Conform condiț iilor de optimalitat e
necesare pentru problema de mai sus , orice punct de minim local pentru problema (UNLP), 𝑥∗, se
satisface următoarea relație :
∇𝑓(𝑥∗)=0, ∇2𝑓(𝑥∗)≥0.
Dacă pentru un punct 𝑦∗∈ dom 𝑓 avem ∇𝑓(𝑦∗)=0,∇2𝑓(𝑦∗)>0, atunci 𝑦∗ este punct de minim
local strict pe problema (UNLP) dată mai sus [12].
Condiț iile de optimalitate în probleme joacă un rol foarte important în dezvoltarea algoritmilor
eficienți din domeniul optimizării . În cazuri particulare, condițiile de ordinul I stau la baza unei
clase relativ largi de metode de ordin I , metodele acestea folosesc evaluarea funcției și
informație de gra dient. În cazul problemelor de optimizare convexe, gă sirea unui punct ce
satisface condițiile de optimalitate necesare este echivalent ă cu rezolvarea problemei de
optimizare originale , deoarece condiț iile de ordinul I sunt suficiente . Acest argument furni zează o
imagine clar ă asupra facilit ăților optimiz ării convexe față de cazurile neconvexe, unde pentru
găsirea unui punct minim/maxim local este necesar ă rezolvarea condițiilor de ordinul I ș i de ordin

37
II. Se observ ă că din experimentele numerice, deș i algoritmii de ordinal I prezintă o complexitate
a iterației foarte scăzută, în comparație cu cei de ordin II, și o convergență accelerată în regiunile
îndepărtate de punctul de optim, atunci când algoritmul intră în vecinătatea punctului de optim,
viteza ace stora scade considerabil. De aceea, găsirea unui punct de optim cu o acuratețe mare este
un proces dificil pentru metodele de ordin I. Î n cazul problemelor de dimensiuni foarte mari, când
nu este necesară aflarea punctului de optim cu o acuratețe ridicată, recomandarea principală
pentru rezolvarea acestora sunt algoritmii de ordin I datorit ă complexit ății reduse a iterațiilor
acestora. În continuare, se prezent ă principalele metode de ordin I și exemple de funcț ionare ale
acestora [12].
Metoda gradient se af lă printre primele ș i cele mai simple metode dezvoltate în scopul
determin ării unui punct critic aflat pe o anumit ă curbă (Cauchy, 1847). În principiu, metoda
gradient reprezint ă un algoritm de ordin I care genereaz ă un șir de puncte ,vectori , 𝑥1,𝑥2,…,
pornind dintr -un punct inițial ales. Structura esenț ială a metodei gradient este enunț ată în
continuare , cu un plan care ne ajută la soluționarea acestori tipuri de probleme :
1. Se alege punctul inițial 𝑥0,𝑘∶=0.
2. Se determină pasul 𝛼𝑘 și se actualizează 𝑥𝑘+1=𝑥𝑘−𝛼𝑘∇𝑓(𝑥𝑘).
3. Dacă criteriul de oprire nu se satisface, atunci se insinui ază 𝑘≔𝑘+1 și se reia pasul 2, unde
∇𝑓(𝑥) reprezint ă gradientul funcț iei 𝑓 în punctul 𝑥. Pentru alegerea pasului 𝛼𝑘 avem mai multe
opțiuni:
(I) Alegerea ideal ă a pasului 𝛼𝑘 la fiecare iterație presupune ca funcț ia scalar ă 𝜙(𝛼)=
𝑓(𝑥𝑘−𝛼∇𝑓(𝑥𝑘))să descreasc ă cât mai mult posibil, condiția este :
𝛼𝑘 = arg min 𝜙(𝛼) – numită și problema de ”line search” .
α>0
(II) De cele mai dese ori , în funcț ie de 𝑓, minimizarea lui 𝜙(𝛼) poate fi foarte dificil ă. În acest
caz, 𝛼𝑘 poate fi g ăsit prin diverș i algoritmi mai simpli de căutare, care includ condiții necesare
asupra pasului pentru asigura rea unei descreșteri suficiente a funcției. Condițiile Wolfe reprezintă
un exemplu elocvent pentru această strategie de ”line -search”:
1. Se aleg două constante 𝑐1 ,𝑐2 ce satisfac următoarea condinție 0<𝑐1<𝑐2<1
2. Se determină 𝛼𝑘 >0 astfel încât:
𝑓(𝑥𝑘−𝛼𝑘∇𝑓(𝑥𝑘))≤𝑓(𝑥𝑘)−𝑐1𝛼𝑘∇𝑓(𝑥𝑘)𝑇∇𝑓(𝑥𝑘)
∇ 𝑓(𝑥𝑘)𝑇∇𝑓(𝑥𝑘−𝛼𝑘∇𝑓(𝑥𝑘))≤𝑐2∇𝑓(𝑥𝑘)𝑇∇𝑓(𝑥𝑘)
(III) În cazuri particulare mai adesea sunt utilizate , în practică este ”metoda backtracking” ce
ajustează dimensiunea pasului 𝛼𝑘 pentru ca prima relație Wolfe de mai sus să fie satisfăcută;

38
metoda presupune alegerea unui parametru 𝜌∈ (0, 1] și actualizarea dimensiunii pasului, dup ă
cum urmeaz ă în continuare :
1.Se va alege 𝛼0>0,𝜌∈ (0,1] ;
2.Dacă 𝛼𝑘 nu satisface condiția 𝑓(𝑥𝑘−𝛼𝑘∇𝑓(𝑥𝑘))≤𝑓(𝑥𝑘)−𝑐1𝛼𝑘∇𝑓(𝑥𝑘)𝑇∇𝑓(𝑥𝑘) atunci
iterăm: 𝛼𝑘+1=𝜌𝛼𝑘;𝑘=𝑘+1.
(IV) Pentru funcțiile cu gradient continuu în sens Lipsch itz cu o constant 𝐿>0, putem alege
pasul 𝛼𝑘 constant la fiecare iteraț ie. Dac ă se aplic ă iterația metodei gradient, din condiț ia
continuit ății funcț iilor cu gradient Lipschitz avem:
𝑓(𝑥𝑘+1)≤𝑓(𝑥𝑘)−𝛼𝑘(1−𝐿
2𝛼𝑘)‖∇𝑓(𝑥𝑘)‖2,
rezultând că trebuie să selectăm 𝛼𝑘∈(0,2
𝐿), iar pentru o descreștere optimă a funcț iei, la fiecare
iteraț ie alegem 𝛼𝑘=1
𝐿.
În continuare se va realize un exemplul unde se implement ează metoda gradient pentru
prima ș i a treia dintre opț iunile alegerii pasului 𝛼𝑘 , unde criteriul de oprire se va
impune de sc ăderea termenului ‖∇𝑓(𝑥𝑘)‖ sub o precizie dat ă.

2.8. Metoda de ordinul II

Metodele de ordinul I expuse în subcapitolul anterior se bazează pe informația de gradient
a fun cției obiectiv, în următoarele rînduri se analiză algoritmi ce fac uz în plus și de informația de
ordinul II, și anume matricea He ssiană a funcției obiectiv . În continuare se prezintă pe scurt
condiț iile de optimalitate necesare ș i suficiente p entru probl eme de optimizare fără constră ngeri .
Condițiile necesare de optimalitate pentru problemele neconstrînse se enunțează astfel: orice
punct de minim local 𝑥∗∈ dom 𝑓 al problemei :
(UNLP): min 𝑓(𝑥), satisface ∇𝑓(𝑥∗)=0.
𝑥∈𝑅𝑛
De asemenea, condiț iile necesare de ordinul II se pot formula dup ă cum urmeaz ă: orice punct de
minim local 𝑥∗∈ dom 𝑓 al problemei (UNLP) satisface:
∇𝑓(𝑥∗)=0 și ∇2𝑓(𝑥2)≥0,
Se atribui o importanță majoră condițiilor de optimalitate suficiente de ordinul II deoarece
reprezintă o modalitate de verificare a naturii unui punct dat:

39
dacă x∗ satisface
∇𝑓(𝑥∗)=0 și ∇2𝑓(𝑥2)>0,
atunci 𝑥∗ este un punct strict de minim local al problemei (UNLP). Intui tiv, dacă algoritmii de
ordinul I se rezolvă condițiile necesare de ordinul I cu ajutorul informației de gradient, se poate
argumenta că cei de ordinul II converg la un punct de minim local ce satisface condițiile de
ordinul I și II, utilizînd în plus matr icea Hessiană a func ției obiectiv. În continuare, se prezent ă
principalele m etode de ordinul II ș i se analiz ează comportamentul acestora pe exemple numerice.
Metoda Newton reprezintă una dintre cele mai vechi metode de optimizare, dezvoltată
ințial în scop ul aproximării iterative a soluțiilor ecuațiilor neliniare. Aceast ă metod ă utilizeaz ă
inversa matricei Hessiane a funcț iei obiectiv pentru o convergență rapid ă către un punct de minim
local. Principalul dezavantaj al acestei metodei vechi Newton îl reprezi ntă instabilitatea provocat ă
de anumiț i factori , iniț ializarea are loc într-o regiune îndep ărtată de optim, condiționarea matricei
Hessiene . Dar c u toate acestea, în cazurile bine condiț ionate c înd metoda se converge, se prezint ă
o convergență mult superi oară metodelor de ordinul I. Soluția principal ă ce stă la baza metodei
New ton este repreze ntată de aproximarea funcț iei obiectiv: pentru funcț ia obiectiv 𝑓 a problemei
(UNLP), la iteraț ia 𝑘 unde se construieș te aproximarea p ătratic ă 𝑓̂≈𝑓, reprezentâ nd aproximarea
Taylor de ordinul II, a funcț iei obiectiv în punctul curent 𝑥𝑘:
𝑓̂(𝑥)=𝑓(𝑥𝑘)𝑇(𝑥−𝑥𝑘)+1
2(𝑥−𝑥𝑘)𝑇∇2𝑓(𝑥𝑘) (𝑥−𝑥𝑘),
care se minimizează cu scopul obținerii iterației Newton. Dacă ∇2𝑓(𝑥𝑘) este pozitiv definită,
atunci funcția 𝑓̂(𝑥) este convexă. Dar pe de alt aspect, gradientul funcției 𝑓̂(𝑥)este dat de:
∇𝑓̂(𝑥)=∇2𝑓(𝑥𝑘)(𝑥−𝑥𝑘)+∇𝑓(𝑥𝑘),
iar minimul funcției 𝑓̂(𝑥) va fi atins într -un punct 𝑥̅ ce satisface ∇𝑓(𝑥𝑘)=0. Se consideră
următorul punct 𝑥𝑘+1 al șirului ca fiind punctul ce anulează gradientul funcției 𝑓̂(𝑥), ∇𝑓̂(𝑥𝑘+1)=
0, implicit vom obține sistemul liniar de ecuații:
∇2𝑓̂(𝑥)(𝑥𝑘+1−𝑥𝑘)=−∇𝑓(𝑥𝑘),
din cele de mai sus rezultă iterația metodei Newton standard:
𝑥𝑘+1=𝑥𝑘−(∇2𝑓(𝑥𝑘))−1∇𝑓(𝑥𝑘).
Iterația general ă a metodei Newton este dată de relația:
𝑥𝑘+1=𝑥𝑘−𝛼𝑘(∇2𝑓(𝑥𝑘))−1∇𝑓(𝑥𝑘),

40
se consideră selectarea pasului 𝛼𝑘 prin aceleaș i moduri ca la metodele de ordinul I: line search
(ideal), backtracking sau 𝛼𝑘=𝛼 constant. Se o bserv ă că metoda Newton standard are
dimensiunea pasului unitary constant, care este 𝛼𝑘=1.
Dacă funcția 𝑓 este pătratică strict convexă , cu condiția ∇2𝑓(𝑥𝑘) = 0 pentru orice 𝑥,
atunci metoda Newton se converge într -un singur pas către punctul de minim. De obicei , metoda
Newton nu converge decâ t dacă inițializarea se realizează în vecinătatea punctului de minim. Dar
există două m otivaț ii pentru acest comportament:
(I) dacă funcț ia obiectiv 𝑓 este puternic neliniară atunci 𝑓̂ este o aproximare inexactă lui 𝑓,
de aceea există posibilitatea ca 𝑓(𝑥𝑘+1)>𝑓(𝑥𝑘);
(II) nu există garanția că ∇2𝑓(𝑥𝑘) > 0 pe parcursul itera țiilor metodei. Mai ex act, dacă
∇2𝑓(𝑥𝑘)≱ 0 sau det ( ∇2𝑓(𝑥𝑘)) = 0, atunci este posibil ca 𝑓̂(𝑥) să nu aibă punct de minim.
Pentru i mplementarea acestei metode, Newton , se necesită abordarea a doi factori
importanț i:
– este necesară impl ementarea unei reguli de alegere a dimensiunii pasului 𝛼𝑘 , astfel încît
să se elimine posibilitatea de creștere a funcției obiectiv în punctele depărtate de optim, fapt care
se datorează impreciziei aproximării pătratice. În cazul în care funcția di n exemplele date nu este
obiectiv convexă, însă problema de minimizare admite o soluție, atunci inversa Hessianei nu este
pozitiv definită în mod cert decît în apropierea soluției propriuzise;
– dacă nu putem asigura ca Hessiana este pozitiv definită în fiec are punct al
șirului {𝑥𝑘}𝑘≥0, o abordare des întâlnită , presupune înlocuirea Hessianei cu o matrice Hessiană
modificată 𝐺=𝜖𝐼𝑛+∇2𝑓(𝑥) > 0, cu 𝜖≥ 0. Se mențioează că întotdeauna va exista un 𝜖
suficient de mare astfel încît 𝐺 > 0. Se reamintește că cel mai simplu algoritm pentru a verifica
dacă o matrice dată este sau nu pozitiv definită este factorizarea Cholesky.
Metoda Newton prezentată anterior care este convergentă și pătratică, în multe cazuri
această metodă prezintă dezavanta je din punct de vedere al efortului de calcul datorită necesității
calculului derivatelor de ordinul I și a rezolvării sistemului de ecuaț ii de mai jos la fiecare
iterație [13]:
∇2𝑓̂(𝑥)(𝑥𝑘+1−𝑥𝑘)=−∇𝑓(𝑥𝑘).
Pentru probleme de dimensiuni m ari ce nu pot fi abordate cu metoda Newton au fost dezvoltate
metode de tip cvasi -Newton . Aceast ă clasă de metode presupun înlocuirea matricei Hessiene cu
una simetric ă pentru care operaț ia de inversare nu este costisitoare. În acest caz ș irul de matrice
rezultat permite evitarea calculului derivatelor de ordinul II ș i simplific ă rezolvarea sistemului de

41
ecuaț ii de mai sus necesar determin ării dire cției. Un algoritm de tip cvasi -Newton se defineș te de
următoarea schema [13] :
fie punctul inițial 𝑥0∈ dom 𝑓 și matricea iniț ială 𝐻0 > 0. Pentru 𝑘≥ 1, cât timp criteriul de oprire
nu este satisf ăcut, se iterează:
1.se calculează direcția cvasi -Newton 𝑑𝑘= −𝐻𝑘−1∇𝑓(𝑥𝑘);
2.se determină pasul 𝛼𝑘 , pentru metoda backtracking ;
3.se calcule ază următoarea iterație: 𝑥𝑘+1=𝑥𝑘+𝛼𝑘𝑑𝑘;
4.se calculează o matrice nouă 𝐻𝑘+1[13].
Această metodă de tip cvasi -Newton diferă prin regula de actualizare a matricei 𝐻𝑘. Cea mai des
utilizată variantă este metoda Broyden -Fletcher -Goldfarb -Shanno, această metodă se notează pe
scurt BFGS :
𝐻𝑘=𝐻𝑘−1+𝛿𝑘𝛿𝑘𝑇
𝛿𝑘𝑇∆𝑘−𝐻𝑘−1∆𝑘∆𝑘𝑇𝐻𝑘−1
∆𝑘𝑇𝐻𝑘−1∆𝑘,
unde avem condiția
∆𝑘=𝑥𝑘−𝑥𝑘−1, 𝛿𝑘=∇𝑓(𝑥𝑘)−∇𝑓(𝑥𝑘−1).
Altă formulă a metodei BFGS se consideră actualizarea directă a inverse matricei 𝐻𝑘:

𝐻𝑘−1=(𝐼−∆𝑘𝛿𝑘𝑇
𝛿𝑘𝑇∆𝑘)𝐻𝑘−1−1(I−𝛿𝑘∆𝑘𝑇
𝛿𝑘𝑇∆𝑘)+∆𝑘∆𝑘𝑇
𝛿𝑘𝑇∆𝑘
Structura algoritmului me todei cvasi -Newton cu actualizare BFGS este definit ă de urm ătoarea
schem ă de rezolvare :
Se selectează un punct inițial 𝑥0∈ℝ𝑛, o toleranță 𝜖>0 și o matrice 𝐻0∈ℝ𝑛∗𝑛 simetrică și
pozitiv definită, atâta timp câ t ∥∇𝑓(𝑥𝑘)∥>𝜖,
1.se calcu lează direcția 𝑑𝑘=−𝐻𝑘−1∇𝑓(𝑥𝑘);
2.se calculează pasul 𝛼𝑘=arg 𝑚𝑖𝑛 𝛼>0𝑓((𝑥𝑘+𝛼𝑑 𝑘) și ∆𝑘=αkdk ;
3.se calculează noua iterație 𝑥𝑘+1=𝑥𝑘+αkdk și ∆𝑘=αkdk;
4.se evaluiază ∇𝑓(𝑥𝑘+1) și se calculează 𝛿𝑘=∇𝑓(𝑥𝑘+1)−∇𝑓(𝑥𝑘);
5.se calculează 𝐻𝑘+1 prin formula BFGS ; 𝑘=𝑘+1[13].
Se mențione ază cât de importantă este diferența dintre rata de convergență locală

42
a metodei Newton și a metodelor de tip cvasi -Newton. Cu t oate că aceste metode cvasi -Newton
reprezintă o complexitate per iterație mai mică, rata de convergență este super liniar sau liniară în
timp ce metoda Newton prezint ă o rată de convergență pătratic ă local ă[13].

43

III. PRINCIPALELE PR OBLEME DE OPTIMIZARE

Deoarece în timpul de față a avut loc o dezvoltare a tehnicii de calcul din ultima periodă
permite simularea unui tot mai mare număr de probleme fizice, inginerești sau economice. În
paralel, a avut loc o dezvoltare a programelor disp onibile fizicianului, inginerului sau
economistului, oferindu -le o bogată gamă de algoritmi pentru rezolvarea unor aplicații concrete.
Utilizarea acestei bogății de tehnici și informații necesită însă, o bază teoretică solidă pentru a fi
efectiv folosite. Re prezentarea printr -un număr finit de cifre semni ficative a numerelor în
calculator introduce di ficultăți extrem de mari în asigurarea condițiilor pentru aplicarea unora din
noțiunile fundamentale ale matematicilor moderne, legate de procesul de trecere la lim ită,
amendând astfel utilizarea e ficientă a unor teoreme de bază din analiză.
În acest capitol se realizează principalele probleme, cu care se întîlnește un specialist în
domeniu, care este mereu în dezvoltare în momentul de față. Deoarece tot mai multe p robleme
sunt de realizat, aplicația MATLAB nu stă pe loc, dar din contra se dezvolt ă permanent cu noi
înbunătățiri, care sunt ușor de utilizat ulterior.

3.1. Problemă de optimizare neconstrânsă

Exemplu 1. Se consider ă problema de optimizare:
min f(x,y) (= cos 2 πx + sin 3 πy) .
x,y∈R
Soluția problemei se va realiza în doua etape:
1. Să se rezolve problema (s ă se găseasc ă un punct de minim local) utiliz ând rutina fminunc , cu
punctul de iniț ializare 𝑥0=0.
2. Să se rezolve pr oblema cu ajutorul metod ei secț iunii de aur.

Rezolvare:
Se creea ză fiș ierul objfun.m cu urm ătoarea secvență de cod:
function f=objfun(x,y)
f = cos(2*pi*x) + sin(3 *pi*y);
Se apeleaz ă rutina fminunc :

44
x0=0; optiuni=optimset(LargeScale,off);
[x,y,fval,exitflag,output]=fminunc(@o bjfun,x0,optiuni);

Fig.3.1 .Reprezentarea grafică a problemei anterioare

Deoarece funcț ia este periodic ă, de perioad ă 2π, putem aplica metoda secțiunii de aur, în care se
alege lungimea intervalului iniț ial egal ă cu 2π, a cărei implementare este expu să în cele ce
urmeaz ă. S-a creeat fiș ierul objfun.m și goldsection.m :
function f=objfun(x)
f = cos(2*pi*x) + sin(3 *pi*y);
end
function [xst,fst]= goldsection(x,eps)
a=x-pi; b=x+pi; lambda=a+0.382*(b -a);
miu=a+0.618*(b -a);
while ((b-a)>=eps)
if (objfun(lamb da)<=objfun(miu))
b=miu;
else
a=lambda;
end
lambda=a+0.382*(b -a); miu=a+0.618*(b -a);
end
if (objfun(lambda)<=objfun(miu))
fst=objfun(lambda); xst=lambda;
else
fst=objfun(miu); xst=miu;
end

45
3.2. Programare liniară

Exemplu 2 . Să se resolve problema de pr ogramare liniară
𝑓(𝑥)=4𝑥1+2𝑥2+3𝑥3
Cu restricțiile : 2𝑥1+𝑥2+2𝑥3≥1
2𝑥1+𝑥2−𝑥3≥−1
2𝑥1−𝑥2+2𝑥3=0
0≤𝑥1≤1
0≤𝑥2≤1
0≤𝑥3≤1

Rezolvarea problemei se execută cu următorul cod:
clear all
close all
clc
C = [4 2 3];
D = [2 1 2; 2 1 -1];
B = [1 -1];
Aeq = [2 -1 2];
beq = [0];
lb = zeros(3,1);
ub = [1 1 1];
f = C;
A = -D;
b = -B;
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub);
x
fval

Se apelează funcția:
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub);

Funcția afișa ză valorile variab ilelor x, fval:

Optimization terminated.

x =

0.0000
0.5000
0.2500

fval =

1.7500

46

Fig 3. 2: Problema programare liniară, cu grficul rezultatului x.

Exemplul 3. Să se re zolve cu ajutorul programului MATLAB problema de programare liniară:
𝑓(𝑥)=5𝑥1+2𝑥2→𝑖𝑛𝑓

Cu următoarele restricții: 3𝑥1+𝑥2≥1
2𝑥1−𝑥2≥2
𝑥1≥0,𝑥2≥0
Rezolvarea problemei are loc cu următorul cod:
clear all
close all
clc
C = [5 2]
D = [3 1; 2 -1];
B = [1 2];
lb = zeros(2,1)
f = C;
A = -D;
b = -B;
options = optimset( 'LargeScale' ,'off','Simplex' ,'on');
[x,fval,exitflag] = linprog(f,A,b,[],[],lb,[],[],options);
x
fval

47
exitflag

Se apelează funcția:
[x,fval,exitflag] = linprog(f,A,b,[],[],lb,[],[],options);

Aplicația MATLAB ne va rula următorul rezultat:

Optimization terminated.

x =

1
0

fval =

5
exitflag =
1

Fig 3.3: Rezultatul aplicației MATLAB, graficul lui x în funcție de B , C, D.

48

3.3. Mulțimi și funcții convexe

Exemplu 4. Se dă mulțimea Ln={[x
t]∈Rn+1:‖x‖≤t} , denumită și conul Lorentz
sau conul de înghețată, condiția problemei este să se traseze graficul acestei mulțim i în programul
MATLAB pentru n= 3.
Rezolvare : Soluția problemei anterioare este prin aceea că întroducem seg vența de cod de
mai jos:
function create_cone
[y1,y2]=meshgrid( -1:0.01:1, -1:0.01:1);
y3=sqrt(y1.^2+y2.^2); dom=[y3>1];
z3=y3; z3(dom)=inf;
figure(1);
hold on;
surf(y1,y2,z3); set(gca, ’FontSize ’,15);
hold off;
end

Fig.3. 4: con de ordinul II (con Loren tz) în 𝑅3 pentru n = 3.

Această problemă pune bazele ulterioare a studiul mulțimilor convexe ș i al propriet ăților
acestora , unde faciliteaz ă analiza mulțimilor fezabile afe rente problemelor de tipul optmizării

49
convexe și a ș irurilor generate de algor itmi cu restricții la aceste mulț imi. În următorul subcapitol
se va aborda analiza noțiunei de funcț ie convex ă.
Exemplu 5. în rândurile următoare se va continua cu un exemplu de această problem:
Se dă funcția convexă 𝑓∶ ℝ2→ℝ, definită de 𝑓(𝑥)= 1
3𝑥𝑇[3 −1
−11,5]𝑥+[−0.5 1]𝑥. Trebuie
să construim graficul acestei funcții în MATLAB.
Rezolvarea: acestei probleme se vace cu următorul cod, unde se folosește funcția
gradient(z) , deoarece această funcție ne descrie culoarea graduală de -a lungul axei z(Fig.3.4):
function create_parab
[x,y] = meshgrid([ -10:.2:10]);
z=x.^2+0.25*(y.^2) -x.*y-0.5*x+y;
surf(x,y,z,gradient(z))
end

Fig.3. 5 Graficul funcției pătratice

50

3.4. Metoda gradient

Exemplul 5. Se dă funcția (𝑥)=(𝑥1−3)4+(𝑥1−3𝑥2)2, unde trebuie să se
implementeze metoda gradientului pentru problema dată cu condiția 𝑚𝑖𝑛
𝑥∈𝑅𝑛𝑓(𝑥), în variant cu
pas ideal și cea cu pas ales prin metoda de backtracking.
Rezolvarea acestei probleme va fi următoarea, în prim ul rînd vom avea nevoie de două
funcții: f=feval_obj(x), g=gradient_obj(x) care să returneze valoarea funcției î ntr-un punct 𝑥,
respectiv gradientul funcției în acel punct. Din moment ce se va căuta pasul ideal la fiecare
iterație a metodei gradi ent, va f i necesară o funcție care returnează valoarea funcție i
𝜙(𝛼)=𝑓(𝑥+𝛼𝑑):
function f=phi_obj(alpha,x,d)
f=feval_obj(x+alpha*d);
end

Pentru a se găsi pasul ideal la fiecare iterație, vom utiliza funcția fminsearch . Se pornește
de la un punct inițial 𝑥0, iar condția de oprire a algoritmului va presupune ca norma gradientului
să fie sub o anumită toleranță impusă eps. Implementarea algoritmului este dată de următoarea
secvență de cod:
function xmin=gradient_method(x0,eps)
puncte_gradient=[] ; puncte_iteratie=[];
valori_functie=[]; norme_gradienti=[];
x=x0; g=gradient_obj(x);
while(norm(g)>eps)
g=gradient_obj(x); puncte_gradient=[puncte_gradient g];
puncte_iteratie=[puncte_iteratie x];
valori_functie=[valori_functie; feval_obj(x)];
norme_gradienti=[norme_gradienti; norm(g)];
alpha=fminsearch(@(alpha) phi_obj(alpha,x, -g).1);
x=x-alpha*g
end
xmin=x;
t=1:length(valori_functie);
figure(1)
hold on
plot(t,norme_gradienti(t), ’k’,’LineWidth ’,2);
hold off
figure(2)
hold on
plot(t,valori_functie(t), ’k’,’LineWidth ’,2);

51
hold off
[x1,x2]=meshgrid([1.2:0.01:2.8],[0.4:0.01:1.6]);
z=(x1-3).^4+(x1 -3*x.^2).^2;
figure(3)
hold on
contour(x1,x2,z,valori_functie);
plot3(puncte_iteratie(1,:),puncte_iteratie(2,:), …
valori_functie, ’r’);
scatter3(puncte_iteratie(1,:),puncte_iteratie(2,:), …
valori_functie, ’filled’);
hold off

Fig.3.5: problema rezolvată prin metoda gradientului .
Funcția precedemtă se apelează cu ajutorul liniei de comandă din MATLAB :
xmin=gradient_method([1.4;0.5],0 .0001)
Pentru varianta metodei gradient cu pasul determinat de metoda de backtracking, se poate înlocui
în cod funcția fminsearch cu următoarea secven ță de cod:
function alpha=backtrack_alpha(x,d)
alpha=1; t1=0.9; t2=0.2;
g=gradient_obj(x);
while(feval_obj (x+alpha*d)>feval_obj(x)+t1*alpha*g ’*d)
alpha=alpha*t2;
end

care va fi apelată cu 𝑑=−𝑔=−∇𝑓(𝑥).

52
In figura de mai sus se observă caracteristica elocventă a metodei gradient care a fost precizată în
bsecțiunile anterioare, și anume decelerarea ratei de convergență pe măsură ce algoritmul se
apropie de punctul de optim. În această nfigură se redă rezultatele grafice comparative ale
convergenței metodei gradient când criteriul de oprire este de forma 𝑓(𝑥𝑘)−𝑓∗ sau ‖∇𝑓(𝑥𝑘)‖.
Se observă că d eși criteriul 𝑓(𝑥𝑘)−𝑓∗ reflectă mult mai bine acuratețea punctului curent, acesta
rar se folosește în practică, deoarece valoarea optimă nu se cunoaște a priori.

53

BIBLIOGRAFIE
1. Aatel A.V., Numeral Analysis , Humboldt State University, USA, 1994.
2. Breaz N., Cr ăciun M., Gașpar P., Miroiu M., Paraschiv -Munteanu I., Modelare a Matematică prin
MATL AB, 2011.
www.edumanager.ro/community/documente/modelare_matematica_prin_matlab.pdf
3. C. Moler, Numerical computing with MATLAB , Electronic Edition: The
MathWorks, Inc., Natick, MA, 2004, http://www.mathworks.com/moler .
4. D.F. Griffiths, An Introduction to MATLAB , Text book University of Dundee, 1996.
5. Ghinea M., MATLAB. Calcul numeric, Grafică, Aplicații , Editura Teora, 1997.
6. Leonard N.E., Levine W.S., Using MATLAB to analyze and desing Control Systems , Addison –
Wesley Publ., SUA, 1995.
7. Luenberger D.G., Linear and nonlinear programming , Kluwer, 1994.
8. Marchard P., Graphics and GU/s with MATLAB , CRC Press,SUA, 1999.
9. Mariș S., Brăescu L., Metode Numerice , Timișoara, 2007.
10. Naslau P., Negrea R., Cadariu L., Caruntu B., Popescu D., Balmez M., Dumitrașcu C.,
Matematici asistate pe calculator , Ed. Politehnica, Timișoara,2005.
11. Necoară I., Metode de Optimizare Numerică , Ed. P olitehnica Press , 2013.
12. Nocedal J. and Wright S., Numerical Optimization , Springer Verlang, 2006.
13. The MathWorks, Inc., MATLAB – The Language of Technical Computing,
Getting Started with MATLAB , www.mathworks.com
14. Matlab & Simulink a tutorial by Tom Nguyen,
http://edu.levitas.net/Tutorials/Matlab/plotting.html
15. ***, Documentation for MathWorks Products, R2009a http://www.mathworks.com/

Similar Posts