Sunteți pe pagina 1din 129

Matematici Asistate de Calculator – L1 1

1. INTRODUCERE ÎN MATLAB

Obiectivele lucr rii:


• familiarizarea cu mediul de programare Matlab,
• recapitularea unor elemente de calcul matriceal,
• fixarea unor cunoştinţe privitoare la rezolvarea problemelor de calcul
matriceal folosind mediul de programare Matlab,
prin studierea unor exemple şi prin rezolvarea unor probleme.
Se recomandă parcurgerea anexei M1 înaintea studierii paragrafelor 1.1 şi 1.2.

1.1. Elemente despre mediul de programare Matlab

O scurtă descriere a mediului de programare Matlab


Matlab (Matrix Laboratory) este un software matematic, produs de firma
The MathWorks, Inc. (http://www.mathworks.com), destinat calculului numeric,
programării, modelării şi simulării numerice, prelucrărilor de date şi reprezentărilor
grafice în ştiinţă şi inginerie.
Matlab este alcătuit din pachete de programe. Unul dintre pachete reprezintă
nucleul, care are interpretor propriu, şi care conţine comenzi de uz general, funcţii
matematice de bază, funcţii de prelucrare a şirurilor de caractere, instrucţiuni de
control, funcţii pentru reprezentări grafice etc. Celelalte pachete de programe,
numite toolbox-uri, reprezintă colecţii de funcţii Matlab destinate rezolvării
problemelor din diverse domenii, cum ar fi, de exemplu: calcul simbolic (Symbolic
Math Toolbox), optimizare (Optimization Toolbox), modelarea, simularea şi analiza
sistemelor dinamice (Simulink), statistică (Statistics Toolbox).
Lansarea în execuţie a mediului Matlab se face fie utilizând pictograma
corespunzătoare, fie rulând programul Matlab.exe din subdirectorul bin al
directorului Matlab. Părăsirea mediului Matlab se efectuează fie utilizând
comanda Exit Matlab din meniul File, fie tastând una din comenzile quit sau exit
în linia de comandă.

Interfaţa Matlab este alcătuită din mai multe ferestre. Utilizatorul poate
alege care ferestre să fie vizibile la un moment dat. Anumite toolbox-uri au propriile
lor ferestre. În continuare vor fi descrise pe scurt câteva dintre ferestrele interfeţei
Matlab:
• fereastra de comenzi (Command Window): în această fereastră, instrucţiunile
se introduc în linia de comandă, după prompter, reprezentat de simbolul >>.
După apăsarea tastei ENTER, fiecare instrucţiune este evaluată. Dacă
instrucţiunile au fost corecte, ele se execută imediat, în caz contrar se
afişează mesaje de eroare. Implicit, rezultatul executării fiecărei instrucţiuni
este afişat în linia de comandă. În cazul în care nu se doreşte afişarea
Matematici Asistate de Calculator – L1 2

rezultatului, se adaugă la sfârşitul instrucţiunii semnul „;”. Matlab este case-


sensitive, deci, a şi A pot reprezenta două variabile distincte;
• fereastra de editare a unui fişier Matlab (Editor): Matlab are un editor propriu,
care se deschide fie utilizând comanda New din meniul File, urmată de
comanda M-file, fie tastând comanda edit în linia de comandă; un fişier
Matlab, numit şi fişier-M (M-file), este un fişier de tip ASCII care are extensia
.m . Un fişier-M poate fi editat şi în alte editoare de texte, cum este Notepad;
• fereastra pentru reprezentări grafice (Figure): o astfel de fereastră se deschide
automat în urma executării unei comenzi de reprezentare grafică;
• fereastra Help: oferă informaţii detaliate şi exemple legate de mediul Matlab,
de comenzi şi funcţii Matlab etc; în această fereastră se găsesc inclusiv
informaţii despre toolbox-urile instalate, precum şi diverse tutoriale;
• fereastra Workspace: conţine o listă, cu anumite detalii, a variabilelor create
în linia de comandă sau în fişiere script; există o variabilă specială, denumită
ans (ANSwer), care este creată automat în situaţiile în care expresiile
evaluate nu sunt atribuite nici unei variabile;
• fereastra Current Directory: afişează fişierele şi subdirectoarele directorului
curent; acesta poate fi setat în linia de comandă prin tastarea comenzii cd
cale, unde cale reprezintă calea relativă sau absolută a directorului;
• fereastra Command History: conţine o listă a ultimelor comenzi executate;
comenzile din această fereastră pot fi copiate în linia de comandă, sau chiar
executate.

Utilizarea help-ului din linia de comandă


Mediul Matlab oferă două modalităţi de utilizare a help-ului:
• fereastra Help, care a fost descrisă pe scurt în paragraful precedent;
• help-ul în linie de comandă, care este mai rapid şi oferă informaţii concise
despre subiectul dorit.
Comanda:
>> help
determină afişarea listei de directoare ale mediului Matlab. Prima parte a listei
conţine directoarele nucleului (subdirectoare ale directorului matlab). A doua parte
a listei conţine directoarele toolbox-urilor instalate. Lista este formată din două
coloane: prima coloană conţine numele directoarelor, iar a doua coloană o scurtă
descriere a conţinuturilor acestora.
Informaţii despre un anumit subiect (comandă, funcţie Matlab, director) se
pot obţine cu comanda:
>> help subiect
Matematici Asistate de Calculator – L1 3

Câteva funcţii Matlab de control


Principalele funcţii Matlab de control sunt prezentate în tabelul 1.1:

Tabelul 1.1. Funcţii Matlab de control.


Funcţia Efectul
cd returnează numele directorului curent sau schimbă directorul
curent
clc şterge fereastra de comenzi
clear şterge variabile şi funcţii
disp afişeză un tablou de numere sau caractere, fără a tipări numele
tabloului
format setează formatul de afişare a datelor pe ecran
realmin, reprezintă cea mai mică, respectiv cea mai mare valoare strict
realmax pozitivă în virgulă mobilă care poate fi folosită în calcule
tic, toc funcţii pentru pornirea şi oprirea unui cronometru
type listează conţinutul fişierul-M menţionat
which returneză calea în care este localizat un fişier sau o funcţie
Matlab
who listează variabilele curente din memorie (spaţiul de lucru
Matlab)
whos listează variabilele curente, dimensiunile lor, tipul lor

Matrice şi vectori
Elementul de bază cu care operează Matlab este matricea.
O matrice se introduce în Matlab sub forma unui şir de valori delimitat de
paranteze drepte, „[” şi „]”, atribuit unei variabile, de exemplu A. Şirul de valori
reprezintă elementele matricei scrise linie cu linie; elementele unei linii se separă
prin virgulă sau spaţiu, liniile sunt separate între ele prin caracterul punct-şi-
virgulă (;).
Valoarea unui element Ai,j al unei matrice A este accesată prin construcţia:
A(i,j).

Comentarii: 1. Operatorul Matlab de atribuire este semnul egal (=).


2. În Matlab indicii încep de la valoarea 1.

Operaţiile cu matrice se împart în două categorii:


‰ operaţii desfăşurate după regulile calculului matriceal, adică operaţii
matriceale (între paranteze sunt precizaţi operatorii corespunzători): adunarea
(+), scăderea (–), înmulţirea (*), împărţirea la dreapta (/) (pentru semnificaţie a se
vedea capitolul 4), împărţirea la stânga (\) (pentru semnificaţie a se vedea
capitolul 4), ridicarea la putere (^) (A^B, unde A este matrice pătratică şi B scalar
Matematici Asistate de Calculator – L1 4

sau invers, însă A şi B nu pot fi simultan matrice), transpunerea (') (A' = AT;
respectiv A’= A T dacă A este o matrice de numere complexe);
‰ operaţii desfăşurate după regulile calculului scalar, între elemente situate pe
aceeaşi poziţie, adică operaţii cu tablouri (în acest caz se utilizează denumirea
tablou în locul denumirii matrice) (între paranteze sunt precizaţi operatorii
corespunzători): adunarea element cu element (+), scăderea element cu element
(–), înmulţirea element cu element (.*), împărţirea la dreapta element cu element
(./), împărţirea la stânga element cu element (.\), ridicarea la putere element cu
element (.^) , transpunerea element cu element (.') (cu excepţia operaţiei de
transpunere, pentru celelalte operaţii operanzii trebuie să aibe aceleaşi
dimensiuni sau unul dintre operanzi să fie scalar) .

În Matlab se pot genera matrice speciale care apar frecvent în calcule


matriceale. Exemple de astfel de matrice sunt:
• matricea fără nici un element (introdusă pentru a creşte viteza de lucru):
X=[];
• matricea având toate elementele egale cu 1: U=ones(dim);
• matricea nulă: O=zeros(dim);
• matricea unitate: I=eye(dim);
unde dim poate avea una din semnificaţiile:
- ordinul matricei, în cazul matricelor pătratice;
- dimensiunea matricei, sub forma: număr_linii, număr_coloane, în cazul
matricelor care nu sunt neapărat pătratice;
- dimensiunea unei alte matrice A, sub forma: size(A), dacă se doreşte
generarea unei matrice de aceeaşi dimensiune cu matricea A.

În Matlab este considerat că un vector reprezintă o matrice cu o linie sau cu


o coloană. Un element al unui vector este identificat utilizând un singur indice
cuprins între paranteze rotunde.
Un caz special de vectori îl reprezintă aşa-numiţii vectori cu pas liniar,
utilizaţi, de exemplu, pentru descrierea unui interval finit, închis la ambele capete.
Aceştia sunt vectori ai căror elemente reprezintă o secvenţă finită de termeni
consecutivi ai unei progresii aritmetice. Generarea unui vector cu pas liniar v se
face cu comanda:
v=a:pas:b
unde a reprezintă valoarea primului termen şi pas raţia progresiei aritmetice (numit
pasul de calcul), v având ca elemente toţi termenii progresiei aritmetice din
intervalul [a,b], pentru cazul a≤b şi pas≥0, respectiv intervalul [b,a], pentru
cazul b<a şi pas<0.
Vectorii cu pasul 1 pot fi generaţi şi cu comanda:
v= a:b
pasul 1 fiind singurul pas calculat implicit în Matlab. Pentru orice altă valoare a
pasului, chiar dacă este egală cu –1, pasul trebuie precizat în mod explicit în
expresia de generare.
Matematici Asistate de Calculator – L1 5

Manipularea elementelor unei matrice


Următoarele tipuri de operaţii de manipulare a elementelor unei matrice,
sunt mai des utilizate:
‰ Rearanjarea elementelor unei matrice A sub forma unui vector-coloană v,
utilizând comanda:
v=A(:)
Vectorul v conţine elementele matricei în ordinea: prima coloană, a doua coloană,
..., ultima coloană. Datorită acestei posibilităţi de rearanjare, un element al unei
matrice poate fi accesat şi prin utilizarea unui singur indice (ca în cazul unui
vector), indice care precizează de fapt poziţia elementului respectiv în aranjamentul
matricei sub forma vector-coloană.
‰ Extragerea de submatrice S dintr-o matrice A, utilizând comanda:
S=A(v_lin,v_col)
unde v_lin,v_col reprezintă vectori (cel mai des, vectori cu pas liniar) care
specifică liniile, respectiv coloanele, folosite la extragerea submatricei.
‰ Asamblarea matricelor mari din alte matrice. Pentru această operaţie se
foloseşte o comandă, a cărei sintaxă este asemănătoare celei de definire a unei
matrice, singura diferenţă constând în faptul că în locul valorilor matricei se
enumeră denumirile matricelor componente.

Calcul matriceal
În tabelul 1.2 sunt redate pe scurt principalele funcţii destinate calculului
matriceal.

Tabelul 1.2. Funcţii Matlab pentru calcul matriceal.


Funcţia Sintaxa Efectul
chol R=chol(A) realizează factorizarea Cholesky a matricei
simetrice şi pozitiv definite A (A=RT*R, unde R
este o matrice superior triunghiulară)
conj conj(A) returnează conjugata matricei cu elemente
complexe A
det det(A) returnează determinantul matricei pătratice A
diag diag(A,p) returnează a p-a diagonală a matricei A paralelă
cu diagonala principală, care se află deasupra
(cazul p>0), sub aceasta (cazul p<0) sau este
identică cu aceasta (cazul p=0)

diag(A) returnează diagonala principală a matricei A


(identic cu cazul p=0)
inv inv(A) returnează inversa matricei pătratice, inversabile
A
Comentariu: inversa unei matrice A mai poate fi
calculată cu comanda A^(-1)
Matematici Asistate de Calculator – L1 6

Tabelul 1.2. Funcţii Matlab pentru calcul matriceal - continuare


Funcţia Sintaxa Efectul
lu [L,U]=lu(A) realizează factorizarea LR a matricei A
[L,U,P]=lu(A) (P·A=L·U, unde L este o matrice inferior
triunghiulară (lower), U o matrice superior
triunghiulară (upper), iar P o matrice de
permutări); dacă se utilizează prima sintaxă,
L va fi o matrice care conţine o permutare a
liniilor matricei inferior triunghiulare, astfel
încât A=L·U
qr [Q,R]=qr(A) realizează factorizarea QR a matricei A (A=Q·R,
unde Q este o matrice ortogonală, R o matrice
superior triunghiulară)
rank rank(A) returnează rangul matricei A
size [lin,col]=size(A) returnează dimensiunea matricei A (numărul
de linii, lin, şi numărul de coloane, col)

Comentarii: 1. În Matlab, factorizările LR şi QR se pot efectua pentru orice matrice,


nu doar cele pătratice. În acest caz, o matrice oarecare cu p linii şi n coloane este
inferior triunghiulară, dacă pentru orice i=1,2,...,p şi j=1,2,..,n cu i<j, elementul
matricei situat pe poziţia (i,j) este nul. Respectiv, o matrice oarecare cu p linii şi n
coloane este superior triunghiulară, dacă pentru orice i=1,2,...,p şi j=1,2,..,n cu
i>j, elementul matricei situat pe poziţia (i,j) este nul.
2. Prin factorizarea LR în Matlab a unei matrice de dimeniune p×n se
obţin o matrice inferior triunghiulară de dimensiune p×min(p,n) şi o matrice
superior triunghiulară de dimensiune min(p,n)×n.
3. Prin factorizarea QR în Matlab a unei matrice de dimeniune p×n se
obţin o matrice ortogonală de dimensiune p×p şi o matrice superior triunghiulară de
dimensiune p×n.

Şiruri de caractere
Un şir de caractere este format din unul sau mai multe caractere şi este
delimitat de apostrofuri, '. Apostrofurile nu fac parte din şirul de caractere. Un şir
de caractere poate fi atribuit unei variabile folosind operatorul de atribuire =.
Caracterele sunt memorate intern prin intermediul codurilor ASCII.
Matematici Asistate de Calculator – L1 7

1.2. Exemple de studiat

Exemplul 1.1: Utilizând help-ul în linie de comandă, să se găsească funcţia


Matlab pentru calculul arctangentei şi să se specifice sintaxa de apel a acesteia.
Soluţie: Rezolvarea problemei constă din următorii paşi:
i) Căutarea unui director cu funcţii trigonometrice. Pentru aceasta se foloseşte
comanda:
>> help
Din lista de directoare afişate se constată că nu există un director destinat doar
funcţiilor trigonometrice. Funcţia arctangentă este însă o funcţie elementară, deci
se găseşte probabil în directorul:
matlab\elfun - Elementary math functions.
ii) Vizualizarea conţinutului directorului elfun:
>> help elfun
În lista funcţiilor Matlab din acest director se află şi funcţia căutată:
atan - Inverse tangent.
iii) Aflarea sintaxei de apel a funcţiei:
>> help atan
Din help-ul funcţiei atan rezultă că sintaxa de apel este:
atan(X)
care returnează arctangentele, exprimate în radiani, ale elementelor vectorului X.

Comentarii: 1. Denumirile funcţiilor Matlab se scriu cu litere mici. Ele apar scrise în
help cu litere mari doar pentru a fi scoase în evidenţă.
2. Dacă s-ar fi presupus că denumirea funcţiei arctangentă din Matlab
este aceeaşi cu cea folosită în matematică, arctg, şi s-ar fi apelat help-ul funcţiei cu
această denumire:
>> help arctg
Matlab ar fi afişat un mesaj de eroare, anunţând utilizatorul că nu găseşte fişierul-
M arctg (arctg.m not found.), ceea ce arată că denumirea funcţiei Matlab şi
denumirea fişierului în care este implementată funcţia trebuie să fie identice.

Exemplul 1.2: Să se extragă din matricea M, definită mai jos: elementul de


pe linia 1 şi coloana 3, prima linie, coloana a 2-a şi submatricea determinată de
liniile 1,2 şi 4 şi de coloanele 2, 3 şi 4.
Matematici Asistate de Calculator – L1 8

⎡1 2 3 4⎤
⎢2 4 6 8 ⎥⎥
M= ⎢
⎢ − 1 − 2 − 3 − 4⎥
⎢ ⎥
⎣0 5 0 7 ⎦
Soluţie: Problema se rezolvă parcurgând următorii paşi:
i) Introducerea matricei M:
>> M=[1 2 3 4; 2 4 6 8; -1 -2 -3 -4; 0 5 0 7];
ii) Extragerea elementului de pe linia 1 şi coloana 3:
>> M(1,3)
ans = 3
iii) Extragerea primei linii:
>> M(1,:)
ans =
1 2 3 4
iv) Extragerea coloanei a 2-a:
>> M(:,2)
ans =
2
4
-2
5
v) Extragerea submatricei determinată de liniile 1,2 şi 4 şi de coloanele 2, 3 şi 4:
>> M([1,2,4],2:4)
ans =
2 3 4
4 6 8
5 0 7

Comentarii: 1. Rezultatele extragerilor nu au fost atribuite niciunei variabile. În


acest caz, Matlab a făcut atribuirea implicită a rezultatului fiecărei operaţii de
extragere variabilei ans.
2. Dacă se doreşte extragerea tuturor elementelor unei linii, în locul
vectorului ce indică coloanele de pe care se face extragerea se foloseşte forma
prescurtată „:”. O observaţie asemănătoare este valabilă şi în cazul extragerii unei
coloane.
3. Matricea M nefiind reatribuită în mod explicit, nu a fost afectată de
nici una din operaţiile de mai sus. Acest lucru se poate vedea afişând la sfârşit
conţinutul matricei:
>> M
M =
1 2 3 4
2 4 6 8
-1 -2 -3 -4
0 5 0 7
Matematici Asistate de Calculator – L1 9

1.3. Probleme de rezolvat

⎡ 2 3 0⎤ ⎡ 4 − 3 1⎤
P1.1. Fie A = ⎢ ⎥ şi B=⎢ ⎥ . Să se scrie instrucţiunile care
⎣− 5 0 8⎦ ⎣− 1 0 5⎦
afişează rezultatele tuturor operaţiilor matriceale, respectiv cu tablouri, care se pot
efectua cu A şi B.

⎡ 2 − 3i − i ⎤
P1.2. Fie Z = ⎢ ⎥ . Să se aplice asupra lui Z cei doi operatori de transpunere
⎣4 + 7i 5 ⎦
şi să se precizeze diferenţele dintre rezultatele afişate.
P1.3. Să se exemplifice utilizarea help-ului în linie de comandă pentru găsirea
următoarelor funcţii Matlab:
ƒ funcţia / funcţiile care determină codurile ASCII ale unui şir de caractere; să se
exemplifice utilizarea funcţiei / funcţiilor găsite pentru şirul de caractere
‘Matlab’;
ƒ funcţia / funcţiile care compară două şiruri de caractere; să se compare şirurile
‘test’ şi ‘Test’ şi să se afişeze rezultatul;
ƒ funcţia / funcţiile care determină poziţia unui şir de caractere într-un alt şir de
caractere; să se afle poziţia şirului de caractere S2=‘test’ în şirul de caractere
S1=‘Acest test este interesant.’.
P1.4. Se consideră următoarea matrice:

⎡3 1 0 − 2 − 9⎤
⎢ 0 − 5 4 8 10 ⎥
⎢ ⎥
A=⎢ 6 6 1 −5 7 ⎥
⎢ ⎥
⎢ 11 − 2 6 9 4⎥
⎢⎣− 8 0 0 0 1 ⎥⎦
Se cere să se extragă:
ƒ linia a 3-a;
ƒ ultima coloană;
ƒ ultima linie;
ƒ submatricea determinată de liniile 2-4 şi coloanele 1-3.
P1.5. Să se determine transpusa, rangul şi determinantul matricei de la problema
precedentă. Este matricea A inversabilă? În caz afirmativ, să se determine inversa
matricei A.
P1.6. Să se realizeze factorizările LR, respectiv QR, pentru matricea de la problema
P1.4. Să se verifice ortogonalitatea matricei Q obţinute.
P1.7. Să se afişeze matricea obţinută prin concatenarea succesivă a matricei de la
problema P1.4. cu vectorii:
Matematici Asistate de Calculator – L1 10

⎡5⎤
⎢0⎥
⎢ ⎥
⎢− 5⎥
u = [1 4 9 − 7 0 1], w = ⎢ ⎥.
⎢0⎥
⎢3⎥
⎢ ⎥
⎣⎢ 2 ⎦⎥

1.4. Întreb ri recapitulative

Î1.1. Care sunt ferestrele cu care aţi lucrat în Matlab?


Î1.2. Care este elementul de bază în Matlab şi de la ce vine denumirea de „Matlab”?
Î1.3. Ce utilizări ale operatorului Matlab „;” (punct-virgulă) cunoaşteţi (unde l-aţi
utilizat şi ce efect a avut)?
Î1.4. Care sunt cele două tipuri de operaţii asupra matricelor în Matlab şi care este
diferenţa de notare a operatorilor corespunzători celor două tipuri de operaţii?
Î1.5. Specificaţi care este funcţia Matlab pentru generarea matricei identitate In şi
modurile sale de apel.
Î1.6. Specificaţi care este comanda Matlab pentru generarea unui interval real
[a,b].
Î1.7. Ce se înţelege prin „vector” în Matlab?
Î1.8. Fie x un număr real. Specificaţi instrucţiunea de calcul a lui ex în Matlab.
Î1.9. Fie x un număr real strict pozitiv. Specificaţi instrucţiunea de calcul a lui
ln(x) în Matlab.
Î1.10. Precizaţi care este funcţia Matlab pentru calculul arctangentei.
Î1.11. Precizaţi care este funcţia Matlab pentru calculul cosinusului hiperbolic.
Î1.12. Definiţi noţiunea de „transpusă a unei matrice”.
Î1.13. Precizaţi proprietăţiile operaţiei de transpunere a matricelor.
Î1.14. Precizaţi care este diferenţa dintre operatorii ‘ (apostrof) şi .’ (punct-apostrof).
Î1.15. Definiţi noţiunea de „matrice superior triunghiulară”.
Î1.16. Definiţi noţiunea de „matrice inferior triunghiulară”.
Î1.17. Definiţia noţiunea de „matrice ortogonală”.
Î1.18. Precizaţi proprietăţiile operaţiei de inversare a matricelor.
Î1.19. Ce se înţelege prin „factorizarea unei matrice pătratice”?
Î1.20. Ce tipuri de factorizări ale matricelor pătratice cunoaşteţi?
Î1.21. Precizaţi care este funcţia Matlab pentru determinarea dimensiunilor unei
matrice, precum şi modul ei de apelare.
Matematici Asistate de Calculator – L1 11

ANEXA M1. ELEMENTE DE ALGEBR


MATRICEAL

M1.1. Elemente de algebr matriceal

a. Diferite tipuri de matrice


Fie A o matrice cu p linii şi n coloane cu elemente din mulţimea numerelor
reale, R, sau a numerelor complexe complexe, C:
⎡ A1,1 A1, 2 L A1,n ⎤
⎢A A2, 2 L A2,n ⎥⎥
A=⎢
2 ,1

⎢ M M O M ⎥
⎢ ⎥
⎣⎢ A p ,1 Ap,2 L A p ,n ⎦⎥

Notăm A∈Mp,n(K), unde K∈{R,C}. Spunem că matricea A are dimensiunea p×n sau
este de dimensiune p×n.
O matrice pătratică de ordinul n este o matrice A cu n linii şi n coloane. În
acest caz folosim notaţia A∈Mn(K).

Transpusa matricei A∈Mp,n(K) este matricea notată AT∈Mn,p(K), cu n linii şi p


coloane, obţinută din matricea A prin schimbarea între ele a liniilor şi coloanelor:
⎡ A1,1 A2,1 L A p ,1 ⎤
⎢A A2, 2 L A p , 2 ⎥⎥
A=⎢
1, 2

⎢ M M O M ⎥
⎢ ⎥
⎢⎣ A1,n A2,n L A p ,n ⎥⎦

Proprietăţi ale operaţiei de transpunere a matricelor sunt:


1. (AT)T=A, ∀ A∈Mp,n(K);
2. (α⋅ A)T=α⋅ AT, ∀ A∈Mp,n(K) şi ∀ α∈K;
3. (A + B)T=AT + BT, ∀ A, B∈Mp,n(K);
4. (A ⋅ B)T=BT ⋅ AT , ∀ A∈Mp,n(K) şi ∀ B∈Mn,s(K).

Conjugata unei matrice A∈Mp,n(C) este matricea notată A ∈Mp,n(C) care


conţine conjugatele elementelor matricei A.

O matrice simetrică este o matrice pătratică A cu proprietatea A=AT.


O matrice antisimetrică este o matrice pătratică A cu proprietatea A=-AT.

O matrice superior triunghiulară este o matrice pătratică A cu proprietatea


Ai,j = 0, ∀ i>j.
Matematici Asistate de Calculator – L1 12

O matrice inferior triunghiulară este o matrice pătratică A cu proprietatea


Ai,j= 0, ∀ i<j.
O matrice pătratică de ordinul n care are elemente nenule doar pe diagonala
principală se numeşte matrice diagonală de ordinul n.
O matrice diagonală de ordinul n cu toate elementele de pe diagonala
principală de valoare unitară, se numeşte matrice unitate de ordinul n:
⎡1 0 L 0⎤
⎢0 1 L 0⎥
In = ⎢ ⎥
⎢L L O L⎥
⎢ ⎥
⎣0 0 L 1⎦

O matrice ortogonală este o matrice pătratică A cu proprietatea A⋅AT=In.

b. Determinant. Inversa unei matrice


Se consideră o matrice pătratică A de ordinul n cu elemente numere reale
sau complexe. Fie Sn mulţimea tuturor permutărilor mulţimii M={1,2,…,n}.
Numărul:

det A= ∑ ( −1 ) I ( k ,k ,K,k ) A1,k A2,k


1 2 n
1 2
K An ,kn
( k1 ,k2 ,K,kn )∈S n

în care I(k1,k2,…,kn) este numărul tuturor inversiunilor permutării (k1,k2,…,kn), se


numeşte determinantul matricei A sau determinant de ordinul n.

Observaţie. Se numeşte inversiune a permutării (k1,k2,…,kn)∈Sn orice pereche


(i,j)∈M×M cu proprietăţiile i<j şi ki>kj.

O matrice A∈Mn(K) cu proprietatea det A = 0 se numeşte matrice singulară.


O matrice nesingulară este o matrice A∈Mn(K) cu proprietatea det A ≠ 0.

O matrice pătratică A∈Mn(K) este o matrice inversabilă dacă există o


matrice pătratică B∈Mn(K) astfel încât:
A⋅B= B⋅A=In.
Matricea B din relaţia de mai sus se numeşte matricea inversă a matricei A şi se
notează cu A-1.
Principalele proprietăţi ale operaţiei de inversare sunt:
1. O matrice pătratică este inversabilă dacă şi numai dacă ea este o matrice
nesingulară.
2. ∀ A∈Mn(K), A – inversabilă, rezultă că A-1 este inversabilă şi (A-1)-1=A;
3. ∀ A∈Mn(K), A – inversabilă, rezultă că AT este inversabilă şi ( AT ) −1 = ( A −1 ) T ;

−1 1
4. det ( A ) = , ∀ A∈Mn(K), A - inversabilă;
det A
Matematici Asistate de Calculator – L1 13

5. ∀ A∈Mn(K) şi ∀ B∈Mn(K), A, B – inversabile, rezultă că A⋅B este o matrice


inversabilă şi ( A ⋅ B ) −1 = B −1 ⋅ A −1 .

Fie o matrice A∈Mn(K).


Se numeşte minor al elementului Ai,j din det A, determinantul de ordinul
n-1 care se obţine din det A prin eliminarea liniei i şi a coloanei j. Minorul
elementului Ai,j se notează cu Mi,j.
Se numeşte complement algebric sau cofactor al elementului Ai,j din
det A numărul:
Ai,j=(-1)i+jMi,j
Se numeşte adjuncta matricei A, şi se notează cu A*, matricea:

⎡ A11 A 21 L A n1 ⎤
⎢A A 22 L A n 2 ⎥⎥
A* = ⎢ 12
⎢L L L L⎥
⎢ ⎥
⎣ A1n A 2 n L A nn ⎦

Utilizând noţiunile de mai sus, inversa matricei A se poate exprima sub forma
următoare:
1
A −1 = ⋅ A*
det A

c. Rangul unei matrice


Fie A o matrice de dimensiune p×n cu elemente numere reale sau complexe.
Se numeşte minor de ordin k al matricei A orice determinant de ordin k
format din k2 elemente ale lui A (k linii şi k coloane, păstrând ordinea elementelor).
Se spune că matricea A are rangul r, dacă A are un minor de ordinul r
nenul, iar toţi minorii lui A de ordin mai mare decât r, dacă există astfel de minori,
sunt nuli. Faptul că matricea A are rangul r se scrie sub forma:
rang A = r

d. Factorizarea matricelor
Prin factorizarea unei matrice pătratice A de ordinul n se înţelege
exprimarea matricei A sub forma unui produs de două (sau mai multe) matrice de
acelaşi ordin cu A. De obicei, matrice-factor sunt matrice de anumite tipuri
(triunghiulare, ortogonale etc.). Astfel se disting mai multe metode de factorizare,
dintre care menţionăm următoarele:
• Factorizarea LR (cunoscută şi sub denumirea de factorizare LU)
Matricea A∈Mn(K) se scrie sub forma:
A=L⋅R
unde L∈Mn(K) este o matrice inferior triunghiulară, iar R∈Mn(K) o matrice superior
triunghiulară.
Matematici Asistate de Calculator – L1 14

Un caz particular îl constituie factorizarea LR a matricelor simetrice şi pozitiv definite,


numită factorizare Cholesky. În acest caz, L=RT.

Comentariu. Fie Ak submatricea determinată de primele k linii şi primele k coloane ale


matricei pătratice A de ordinul n. Matricea A este pozitiv definită, dacă şi numai
dacă determinanţii tuturor submatricelor Ak, k=1,2,...,n sunt strict pozitivi.

• Factorizarea QR
Exprimarea matricei A∈Mn(K) se face sub forma:
A=Q⋅R
unde Q∈Mn(K) este o matrice ortogonală, iar R∈Mn(K) o matrice superior
triunghiulară.
Matematici Asistate de Calculator – L2 1

2. ELEMENTE DE PROGRAMARE ÎN MATLAB

Obiectivele lucr rii:


• familiarizarea cu tipurile de fişiere Matlab,
• recapitularea unor elemente de calcul vectorial,
• fixarea unor cunoştinţe privitoare la rezolvarea problemelor de calcul
vectorial folosind mediul de programare Matlab,
prin studierea unor exemple şi prin rezolvarea unor probleme.
Se recomandă parcurgerea anexei M2 înaintea studierii paragrafelor 2.1 şi 2.2.

2.1. Elemente de programare în Matlab

Tipuri de fişiere Matlab

Fişierele Matlab (fişierele-M) sunt de două tipuri:

• fişiere funcţie;

• fişiere script.
Fişierele funcţie diferă de fişierele script prin faptul că primele pot lucra cu
argumente (pot primi parametri şi returna valori), iar celelalte operează doar asupra
variabilelor din mediul de lucru (Workspace). Fişierele script se utilizează de obicei
pentru rezolvarea unor probleme care necesită executarea unui grup mare de
comenzi, pentru care utilizarea modului linie de comandă ar fi greoaie.
Obligatoriu, prima linie a unui fişier funcţie este de forma:
function [parametri_ieşire]=nume_funcţie(parametri_intrare)

unde:
function este cuvântul-cheie care declară fişierul ca fişier funcţie;
nume_funcţie reprezintă numele funcţiei, este acelaşi cu numele sub
care se salvează fişierul;
parametri_ieşire reprezintă lista parametrilor de ieşire separaţi cu virgulă,
cuprinsă între paranteze drepte; dacă funcţia nu are
parametri de ieşire, atunci parantezele drepte şi semnul
egal se omit;
parametri_intrare reprezintă lista parametrilor de intrare separaţi cu
virgulă, cuprinsă între paranteze rotunde; dacă funcţia
nu are parametri de intrare, atunci parantezele rotunde
se omit.
Rularea unui program de tip script (fişier script) se face fie tastând
numele fişierului (fără extensie) în linia de comandă, fie apelând comanda Run M-
Matematici Asistate de Calculator – L2 2

File a meniului File, fie apăsând tasta F5 atunci când fişierul este deschis în editor
şi editorul este fereastra activă.
Rularea unui program de tip funcţie (fişier funcţie) se face în linia de
comandă, folosind sintaxa:
[variabile_valori_returnate]=nume_funcţie(valori_parametri_intrare)

unde:
nume_funcţie numele funcţiei (fişierului în care este definită funcţia);
variabile_valori lista variabilelor destinate memorării valorilor
_returnate parametrilor de ieşire, separate cu virgulă, cuprinsă
între paranteze drepte; dacă funcţia nu are parametri de
ieşire, atunci parantezele drepte şi semnul egal se omit;
dacă funcţia are un singur parametru de ieşire,
parantezele drepte se omit;
valori_parametri lista valorilor parametrilor de intrare separate cu
_intrare virgulă, cuprinsă între paranteze rotunde; dacă funcţia
nu are parametri de intrare, atunci parantezele rotunde
se omit.

Comentarii în Matlab

Un comentariu într-un program Matlab are forma:


%comentariu
Dacă pe o linie de program apare caracterul %, atunci partea de linie care
urmează după acest caracter va fi omisă de către interpretor. Dacă un comentariu
se întinde pe mai multe linii, fiecare dintre aceste linii trebuie să aibă la început
caracterul %.
Dacă un comentariu apare imediat sub linia de declarare a unui fişier
funcţie, el va constitui help-ul fişierului funcţie respectiv, adică textul care va fi
afişat în linia de comandă în urma apelului:
>> help nume_functie
unde nume_functie este numele (fără extensie) a fişierului funcţie.

Există şi o formă specială a unui comentariu pe mai multe linii, numită block
comment, comentariul fiind delimitat de două linii speciale. Comentariul propriu-zis
se scrie pe linii cuprinse între cele două linii delimitatoare:
%{
comentariu
%}

Instrucţiuni de control
Tabelele 2.1 şi 2.2 conţin operatorii relaţionali şi, respectiv, operatorii
logici utilizaţi în Matlab:
Matematici Asistate de Calculator – L2 3

Tabelul 2.1. Operatori relaţionali utilizaţi în Tabelul 2.2. Operatori logici utilizaţi
Matlab. în Matlab.
Operatori Semnifi-caţie Operatori Semnifi- Prioritate
relaţionali logici caţie
< strict mai mic ~ NU 1
> strict mai mare & ŞI 2
<= mai mic sau | SAU 3
egal
>= mai mare sau
egal
== identic
~= diferit

Comentarii: 1. În cazul folosirii operatorilor relaţionali <, >, <=, >= pe mulţimea
matricelor de numere complexe, se constată că este omisă partea imaginară. Astfel,
0>=i va da ca rezultat răspunsul 1 (adică TRUE) (0>=0, unde al doilea 0 este partea
reală a lui i).

2. Operatorii logici se utilizează întotdeauna pentru compararea


matricelor cu elemente 0 şi 1 (având semnificaţiile fals, respectiv, adevărat),
calculate cu operatori relaţionali.

Instrucţiunea “if” poate fi folosită în una din următoarele trei forme, având
sintaxele:
‰ instrucţiunea if
simplă: if expresie_logică
grup_de_instrucţiuni
end
‰ clauza else:
if expresie_logică
grupul_de_instrucţiuni_1
else
grupul_de_instrucţiuni_2
end
‰ clauza elseif :
if expresia_logică_1
grupul_de_instrucţiuni_1
elseif expresia_logică_2
grupul_de_instrucţiuni_2
...
elseif expresia_logică_n-1
grupul_de_instrucţiuni_n-1
else
grupul_de_instrucţiuni_n
end
Matematici Asistate de Calculator – L2 4

Sintaxa instrucţiunii repetitive “for” din Matlab este de forma:


for index=expresie
grup_de_instrucţiuni
end
în care:
- expresie este o matrice, un vector sau un scalar; de cele mai multe ori este
de forma:
k=iniţial:pas:final
- dacă expresie este o matrice, atunci ciclarea se face pe coloane.

Instrucţiunea repetitivă “while” este utilizată pentru repetarea unui set de


instrucţiuni, atâta timp cât o condiţie specificată este adevărată. Sintaxa acestei
instrucţiuni este de forma:
while expresie
grup_de_instrucţiuni
end
cu următoarele comentarii:
- grupul_de_instrucţiuni se execută cât timp toate elementele din
expresie sunt nenule;
- expresie este de obicei sub forma:
expresie_1 operator_relaţional expresie_2
- ieşirea forţată dintr-o buclă infinită se face prin apăsarea concomitentă a
tastelor [Ctrl] şi [C].

Funţii de testare
În tabelul 2.3 sunt redate pe scurt o parte din funţiile folosite pentru testări
de valori ale variabilelor, a tipurilor variabilelor, obiectelor etc:

Tabelul 2.3. Funcţii Matlab de testare.


Funcţia Efectul
ischar testează dacă argumentul dat este un şir de caractere
isempty testează dacă argumentul dat este matricea vidă
(matricea fără niciun element)
isequal testează dacă două tablouri sunt identice
isfinite găseşte elementele finite ale unui tablou
isfloat testează dacă argumentul dat este un tablou de valori în
virgulă mobilă
isinf găseşte elementele de valoare infinită ale unui tablou (Inf)
isinteger testează dacă argumentul dat este un tablou de întregi
iskeyword testează dacă argumentul dat este un cuvânt-cheie
Matlab
Matematici Asistate de Calculator – L2 5

Tabelul 2.3. Funcţii Matlab de testare - continuare


Funcţia Efectul
isnan găseşte elementele unui tablou care nu sunt numere
(NaN)
isnumeric testează dacă argumentul dat este un tablou de numere
isprime găseşte elementele unui tablou care sunt numere prime
isreal testează dacă toate elementele unui tablou sunt numere
reale (coeficientul părţii imaginare este zero)
isscalar testează dacă argumentul dat este un scalar
issorted testează dată un set de elemente este ordonat crescător
isvector testează dacă argumentul dat este un vector

Calcul vectorial
În tabelul 2.4 sunt redate principalele funcţii utilizate în calculul vectorial.

Tabelul 2.4. Funcţii Matlab pentru calcul vectorial.


Funcţia Sintaxa Efectul
norm norm(v,p) returnează norma p a vectorului v

norm(v) returnează norma euclidiană a


vectorului v (identic cu cazul p=2)
dot dot(v,w) returnează produsul scalar al
vectorilor de aceeaşi lungime, v şi w
cross cross(v,w) returnează produsul vectorial al
vectorilor cu câte 3 elemente, v şi w
sum sum(v) returnează suma elementelor
vectorului v
length length(v) returnează lungimea vectorului v
(adică numărul de elemente)

2.2. Exemple de studiat

Exemplul 2.1: Să se genereze matricele pătratice A şi B, de ordinul 4,


definite prin relaţiile de mai jos. Apoi să se afişeze suma lor, produsul lor, cubul
matricei A, rezultatul împărţirii la stânga a matricei A prin B şi rangul matricei B.
Rezolvarea problemei să se facă prin utilizarea unui fişier script.
1
Ai , j = , i, j = 1,4
i+ j
Matematici Asistate de Calculator – L2 6

⎧1, i = j

Bi , j = ⎨i + j , i > j , i, j = 1,4
⎪i − j , i < j

Soluţie: Etapele rezolvării problemei sunt următoarele:
i) Crearea unui fişier-M, numit, de exemplu, op_matr.m:
>> edit op_matr
ii) Rezolvarea cerinţelor problemei prin scrierea comenzilor în fişierul script:
% generarea matricei A
for i=1:4
for j=1:4
A(i,j)=1/(i+j);
end
end
% generarea matricei B
for i=1:4
for j=1:4
if i==j B(i,j)=1;
elseif i>j B(i,j)=i+j;
else B(i,j)=i-j;
end
end
end
% afisarea matricei A
A
% afisarea matricei B
disp('matricea B')
disp(B)
% calculul si afisarea sumei
Suma=A+B
% calculul si afisarea produsului
Produs=A*B
% calculul si afisarea cubului matricei A
cub_A=A^3
% calculul si afisarea rezultatului impartirii la stanga
disp('Rezultatul impartirii A\B este')
Rez=A\B
% rangul matricei B
rang_B=rank(B)
Se recomandă salvarea constantă a fişierului.
iii) Rularea fişierului script se face din linia de comandă:
>> op_matr
Rularea unui fişier-M din linia de comandă are ca efect rularea ultimelei versiuni
salvate a fişierului.
iv) Vizualizarea rezultatelor afişate în fereastra de comenzi:
A =
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
0.2000 0.1667 0.1429 0.1250
matricea B
Matematici Asistate de Calculator – L2 7

1 -1 -2 -3
3 1 -1 -2
4 5 1 -1
5 6 7 1
Suma =
1.5000 -0.6667 -1.7500 -2.8000
3.3333 1.2500 -0.8000 -1.8333
4.2500 5.2000 1.1667 -0.8571
5.2000 6.1667 7.1429 1.1250
Produs =
3.5000 2.2833 0.3167 -2.2167
2.7167 1.9167 0.4500 -1.5333
2.2310 1.6405 0.4667 -1.1738
1.8964 1.4310 0.4512 -0.9512
cub_A =
0.4516 0.3263 0.2571 0.2127
0.3263 0.2358 0.1859 0.1538
0.2571 0.1859 0.1465 0.1213
0.2127 0.1538 0.1213 0.1004
Rezultatul impartirii A\B este
Rez =
1.0e+004 *
-0.0600 0.2380 -0.4940 -0.1420
0.4620 -1.5900 3.7980 1.0920
-0.9660 2.8980 -7.7280 -2.2260
0.5880 -1.5680 4.5640 1.3160
rang_B = 4

Exemplul 2.2: Să se scrie o funcţie Matlab care primeşte ca argumente trei


valori a,b,p şi care generează vectorul cu pas liniar v=a:p:b. Funcţia returnează
vectorul generat, lungimea sa, precum şi suma elementelor sale. Să se testeze
funcţia creată pentru următoarele triplete de valori: (0,25,5), (2,19,3), (5,-3,-2),
(5,-2,0), (2,19,-1).
Soluţie: Etapele rezolvării problemei sunt următoarele:
i) Crearea unui fişier-M, numit, de exemplu, vect_lin.m:
>> edit vect_lin
ii) Rezolvarea cerinţelor problemei prin scrierea comenzilor în fişierul funcţie:
function [v,lung,suma]=vect_lin(a,b,p)
v=a:p:b; lung=length(v);
if lung>0
suma=sum(v);
else
suma=[];
end

iii) Rularea fişierului funcţie pentru tripletele de valori cerute şi vizualizarea


rezultatelor:
>> [v,lung,suma]=vect_lin(0,25,5)

v =
0 5 10 15 20 25
Matematici Asistate de Calculator – L2 8

lung = 6
suma = 75
>> amin=2; amax=19; pas=3;
>> [w,l,s]=vect_lin(amin,amax,pas)
w =
2 5 8 11 14 17
l = 6
s = 57
>> a=5; b=-3; p=-2;
>> [v,lung,suma]=vect_lin(a,b,p)
v =
5 3 1 -1 -3
lung = 5
suma = 5
>> [v1,l1,s1]=vect_lin(5,-2,0)
v1 =
Empty matrix: 1-by-0
l1 = 0
s1 = []
>> [v2,l2,s2]=vect_lin(2,19,-1)
v2 =
Empty matrix: 1-by-0
l2 = 0
s2 = []

Exemplul 2.3: Să se scrie o funcţie Matlab care primeşte ca argumente doi


vectori, v şi w, de lungimi egale cu 3, şi returnează normele euclidiene ale vectorilor,
produsul lor scalar, produsul lor vectorial şi unghiul dintre cei doi vectori exprimat
în radiani.
Soluţie: Etapele rezolvării problemei sunt următoarele:
i) Crearea fişierului-M:
>> edit vectori
ii) Scrierea comenzilor în fişierul-M creat:
function [n_v,n_w,ps,pv,unghi]=vectori(v,w)
if length(v)~=3 | length(w)~=3
disp('Vectorii nu satisfac conditia de lungime 3!')
n_v=[]; n_w=[]; ps=[]; pv=[]; unghi=[];
return;
end
n_v=norm(v); n_w=norm(w);
ps=dot(v,w); pv=cross(v,w);
if n_v==0 | n_w==0
disp('Unghiul nu poate fi calculat, unul din vectori fiind
zero.')
unghi=[];
else
unghi=acos(ps/(n_v*n_w));
end
iii) Testarea programului pentru diferite perechi de vectori:
>> v=[1 -1 3]; w=[0 3 -2];
>> [n_v,n_w,ps,pv,unghi]=vectori(v,w)
Matematici Asistate de Calculator – L2 9

n_v = 3.3166
n_w = 3.6056
ps = -9
pv = -7 2 3
unghi = 2.4228
>> a=[1 2 3]; b=[0 0 0]; c=[-1 -2];
>> [n_v,n_w,ps,pv,unghi]=vectori(a,b)
Unghiul nu poate fi calculat, unul din vectori fiind zero.
n_v = 3.7417
n_w = 0
ps = 0
pv = 0 0 0
unghi = []
>> [n_v,n_w,ps,pv,unghi]=vectori(a,c)
Vectorii nu satisfac conditia de lungime 3!
n_v = []
n_w = []
ps = []
pv = []
unghi = []

Comentarii: 1. Este necesară verificarea respectării condiţiilor impuse argumentelor


transmise funcţiei (în acest caz, faptul ca cei doi vectori transmişi ca parametri să
aibă fiecare lungimea egală cu 3).
2. La testare trebuie considerate atât cazul general, cât şi cazurile
particulare care generează erori.
3. Comanda return determină oprirea execuţiei programului şi
returnarea controlului către funcţia apelantă sau către tastatură.

Exemplul 2.4: Pentru o matrice pătratică transmisă ca parametru unei


funcţii Matlab se cere să se scrie o secvenţă de instrucţiuni prin intermediul căreia:
să se specifice dacă matricea este inversabilă; în cazul în care matricea este
inversabilă, să se afişeze inversa ei, iar în cazul în care matricea nu este
inversabilă, să se afişeze rangul ei.

Soluţie: Rezolvarea constă din următoarele etape:


i) Crearea fişierului-M:
>> edit calcul_matr
ii) Scrierea codului sursă în fişier:
function calcul_matr(M)
[lin,col]=size(M);
if lin~=col
disp('Matricea nu este patratica!')
return
end
if det(M)~=0
disp('Matricea este inversabila.')
Matematici Asistate de Calculator – L2 10

inversa=inv(M)
else
disp('Matricea nu este inversabila.')
rang=rank(M)
end
iii) Testarea programului:
>> A=[1 0; -1 1]; B=[1 1; 2 2]; C=[1 1 2; 2 2 3];
>> calcul_matr(A)
Matricea este inversabila.
inversa =
1 0
1 1
>> calcul_matr(B)
Matricea nu este inversabila.
rang = 1
>> calcul_matr(C)
Matricea nu este patratica!

1
Exemplul 2.5: Să se definească în Matlab funcţia f:R→R, f(x)= .
1 + e −3⋅x
Soluţie: Rezolvarea constă din următoarele etape:
i) Crearea fişierului-M:
>> edit f
ii) Scrierea codului sursă în fişier:
function y=f(x)
if imag(x)==0
y=1./(1+exp(-3*x));
else
y='x trebuie sa fie numar real sau vector de numere reale';
end
iii) Testarea programului:
>> f(0.5)
ans = 0.8176
>> y=f(-2)
y = 0.0025
>> f(1+i)
x trebuie sa fie numar real sau vector de numere reale

Comentarii: 1. Funcţia Matlab imag returnează coeficientul părţii imaginare al unui


număr complex.
2. Matlab lucrează implicit cu numere complexe. Funcţia matematică
fiind definită pe un domeniu de numere reale, este necesar să se testeze dacă
argumentul primit de funcţia Matlab corespunzătoare este un număr real sau un
vector de numere reale.
3. Comparaţia imag(x)==0 poate fi înlocuită cu isreal(x)==1.
Matematici Asistate de Calculator – L2 11

4. Este recomandabil ca în cazul funcţiilor să se folosească operatori


pentru tablouri, pentru a putea calcula simultan valorile funcţiei în mai multe
puncte ale domeniului de definiţie.
5. Dacă se doreşte calculul simultan al valorilor funcţiei f în mai multe
puncte ale domeniului de definiţie, atunci se procedează în felul următor:
- se creează un vector cu punctele din domeniul de definiţie în care se doreşte
aflarea valorilor funcţiei f, de exemplu:
>> x=[-5.3 -2 -1.47 0 0.25 1];
- se apelează fişierul funcţie care conţine definiţia funcţiei f:
>> y=f(x)
- ca rezultat al acestui apel este afişarea valorilor funcţiei f în punctele dorite:

y = 0.0000 0.0025 0.0120 0.5000 0.6792 0.9526

2.3. Probleme de rezolvat

P2.1. Să se genereze şi să se afişeze:


ƒ matricea pătratică de ordinul n=4, ale cărei elemente sunt date de expresia:
i⋅ j
M i, j = , i, j = 1, n ;
i + j −1
ƒ o matrice A cu 4 linii şi 5 coloane, ale cărei elemente sunt:

⎧ 3, dacă i = j

⎪− 3, dacă i − j = 2
A =⎨ , i = 1, 4, j = 1,5
i,j dacă i + j = 3 .
⎪ 1,
⎪⎩ 0 , în rest
P2.2. Să se scrie un program, care, utilizând o instrucţiune while, calculează
produsele parţiale ale elementelor vectorului v1=[2 3 1 9 2 -1 -3 5] până când
întâlneşte un număr strict negativ şi afişează ultimul produs calculat. Care este
rezultatul afişat, dacă se înlocuieşte vectorul v1 cu vectorul v2=[2 3 1 9 2 1 3 5]?
P2.3. Să se scrie o funcţie Matlab care primeşte ca argument o matrice cu cel puţin
4 linii şi 4 coloane şi care afişează rezultatele următoarelor operaţii de extragere de
elemente ale matricei:
ƒ linia a 3-a;
ƒ ultima coloană;
ƒ ultima linie;
Matematici Asistate de Calculator – L2 12

ƒ submatricea determinată de liniile 2-4 şi coloanele 1-3.


P2.4. Fie vectorii:
r r r r r r r
v = 2i − j + 3k , w = 3 j − 2k
Să se determine, scriind un program Matlab, normele euclidiene, produsul scalar,
cosinusul unghiului, unghiul exprimat în grade şi produsul vectorial pentru cei doi
vectori.
P2.5. Să se scrie o funcţie Matlab care primeşte ca argument o matrice pătratică şi
afişează transpusa, rangul şi determinantul matricei.
P2.6. Să se scrie o funcţie Matlab care primeşte ca argument o matrice pătratică
nesingulară şi care returnează determinantul şi inversa matricei.

⎧ sin(3 ⋅ x)
⎪ , x<0
P2.7. Să se definească în Matlab funcţia f:R→R, f(x)= ⎨ 2 ⋅ x . Să se
⎪⎩cos(3 ⋅ x), x ≥ 0

π 7 ⋅π
calculeze şi să se afişeze valorile funcţiei în punctele -3, - , 0, 1.25, .
2 2

2.4. Întreb ri recapitulative

Î2.1. Precizaţi cum se poate ieşi forţat dintr-o buclă infinită.


Î2.2. Ce se înţelege prin „norma euclidiană” a unui vector?
Î2.3. Precizaţi la modul general cum se calculează produsul scalar a doi vectori
cunoscuţi prin proiecţiile lor pe axele sistemului de coordonate.
Î2.4. Precizaţi la modul general cum se calculează produsul vectorial a doi vectori
cunoscuţi prin proiecţiile lor pe axele sistemului de coordonate.
Î2.5. Definiţi noţiunea de „produs vectorial a doi vectori”.
Î2.6. Definiţi noţiunea de „unghi dintre doi vectori”.
Î2.7. Precizaţi care este funcţia Matlab pentru determinarea lungimii unui vector,
precum şi modul ei de apelare.
Matematici Asistate de Calculator – L2 13

ANEXA M2. ELEMENTE DE ALGEBR


VECTORIAL

M2.1. Elemente de algebr vectorial

Se consideră spaţiul real n-dimensional, raportat la un sistem ortogonal de


r r r
coordonate având versorii i1 , i2 ,K , in .
r r
Fie v şi w doi vectori cunoscuţi prin proiecţiile lor pe axele sistemului de
coordonate:
r r r r
v = v1 ⋅ i1 + v 2 ⋅ i2 + L + v n ⋅ in
r r r r
w = w1 ⋅ i1 + w2 ⋅ i2 + L + wn ⋅ in

r
Norma euclidiană a (modulul, mărimea) vectorului v este numărul real
pozitiv determinat prin relaţia:

v = v12 + v 22 + L + v n2

Un vector al cărui modul este egal cu 1 se numeşte vector unitar sau versor.
r
Norma p a vectorului v este numărul real pozitiv determinat prin relaţia:

p ∈ [1, ∞ )
p p p
vp = p
v1 + v2 + K + vn ,

r r
Produsul scalar al vectorilor v şi w este un număr (scalar) real determinat
prin relaţia:
r r
v ⋅ w = v1 ⋅ w1 + v 2 ⋅ w2 + L v n ⋅ wn
r r r r
Vectorii v şi w sunt ortogonali dacă şi numai dacă v ⋅ w =0.

r r
Prin unghiul dintre vectorii v şi w se înţelege unghiul mic determinat de
r r
sensurile pozitive ale celor doi vectori. Unghiul dintre vectorii v şi w se notează cu
r r
∠( v , w ). Cosinusul acestui unghi se calculează cu formula:
r r
r r v ⋅w
cos( v , w ) =
v⋅w

În cazul spaţiului tridimensional (n=3), se defineşte produsul vectorial al


r r
vectorilor v şi w , în cazul în care aceştia sunt necoliniari şi nenuli, ca fiind vectorul
r r
notat v × w care are direcţia perpendiculară pe direcţiile celor doi vectori, sensul dat
r
de aplicarea regulii burghiului drept când se roteşte primul vetor ( v ) peste cel de-al
r r r
doilea vector ( w ), şi modulul egal cu produsul v⋅w⋅sin( v , w ), respectiv vectorul zero,
Matematici Asistate de Calculator – L2 14

în cazul în care cei doi vectori sunt coliniari sau cel puţin unul dintre ei este vectorul
nul.
r r
Produsul vectorial al vectorilor v şi w se poate calcula cu formula:
r r r
i1 i2 i3
r r r r r
v × w = v1 v2 v3 = ( v 2 w3 − v3 w2 )i1 + ( v3 w1 − v1 w3 )i2 + ( v1 w2 − v 2 w1 )i3
w1 w2 w3
r r r r
Doi vectori nenuli şi necoliniari v şi w sunt paraleli dacă şi numai dacă v × w =0.
3. REPREZENT RI GRAFICE ÎN MATLAB

Obiectivele lucr rii:


• recapitularea unor tipuri de sisteme de coordonate,
• fixarea unor cunoştinţe privitoare la realizarea graficelor în plan în diferite
sisteme de coordonate, respectiv a graficelor în spaţiu, folosind mediul de
programare Matlab,
prin studierea unor exemple şi prin rezolvarea unor probleme.
Se recomandă parcurgerea anexei M3 înaintea studierii paragrafelor 3.1 şi 3.2.

3.1. Elemente despre reprezent ri grafice în Matlab

Reprezentări grafice în plan

Matlab permite crearea de reprezentări grafice atât în plan (2D), cât şi în


spaţiul tridimensional (3D).
În plan pot fi reprezentate grafice de funcţii şi suprafeţe poligonale.
Reprezentările grafice ale funcţiilor pot fi făcute în mai multe tipuri de coordonate:
carteziene, polare, logaritmice, semilogaritmice.
O parte din funcţiile destinate reprezentărilor grafice 2D din Matlab sunt
prezentate în tabelul 3.1.:

Tabelul 3.1. Funcţii Matlab pentru reprezentări grafice 2D


Func ia Utilizare
fill reprezentarea grafică a suprafeţelor poligonale
line reprezentarea grafică a liniilor poligonale
loglog grafice în coordonate X-Y logaritmice (în baza 10)
plot grafice în coordonate X-Y carteziene (liniare)
polar grafice în coordonate polare
semilogx, semilogy grafice în coordonate X-Y semilogaritmice (în baza
10)

Pentru definirea tipurilor de linii, tipurilor de marker-e (simboluri de


reprezentare) precum şi a culorilor sunt disponibile variantele ilustrate în tabelul
3.2.
Tabelul 3.2. Simboluri de reprezentare a tipurilor de linii, marker-elor şi culorilor
Tipuri de linii Tipuri de marker-e Culori
Tip linie Simbol Tip marker Simbol Culoare Simbol
continuă - asterisc * alb w
întreruptă -- cerc o albastru b
linie-punct -. hexagon h albastru- c
deschis
puncte : pătrat s galben y
pentagon p mov m
plus + negru k
punct . roşu r
romb d verde g
triunghi v, ^, <, >
x x

Reprezentări grafice în spaţiu

În Matlab pot fi reprezentate grafic în spaţiul 3D curbe, suprafeţe şi corpuri


3-dimensionale.
Câteva din funcţiile de reprezentare grafică 3D sunt redate în tabelul 3.3.:

Tabelul 3.3. Funcţii Matlab pentru reprezentări grafice 3D


Func ia Utilizare
plot3 reprezentarea curbelor în spaţiu
mesh reprezentarea grafică a suprafeţelor 3D sub forma
unei reţele (“mesh”)
surf, surfl reprezentarea grafică a suprafeţelor pline
fill3 reprezentarea grafică spaţială a poliedrelor
cylinder, sphere, reprezentarea grafică a unor corpuri tridimensionale
ellipsoid

Funcţii auxiliare pentru reprezentări grafice

În cazul reprezentărilor grafice pot fi setate diferite proprietăţi ale modului de


reprezentare, pot fi controlate limitele axelor sistemului de coordonate, se pot plasa
texte pe grafic etc. În tabelul 3.4. sunt menţionate câteva din funcţiile Matlab
auxiliare pentru reprezentări grafice:
Tabelul 3.4. Funcţii Matlab auxiliare pentru reprezentări grafice
Func ia Utilizare
meshgrid definirea sub formă de reţea de puncte a domeniului de
reprezentare 3D a suprafeţelor
grid suprapunerea unei reţele de linii pe grafic
axes, axis controlul apariţiei şi stabilirea lungimii unităţilor de
reprezentare ale axelor sistemului de coordonate
subplot împărţirea ferestrei de reprezentare grafică în mai multe
regiuni grafice
hold păstrarea graficului curent şi a proprietăţilor sale
colormap stabilirea sau returnarea matricei de culoare folosită
pentru reprezentări grafice 3D
shading stabilirea modului de umbrire pentru suprafeţe în spaţiul
3D
title inserarea unui titlu pentru reprezentarea grafică
xlabel, ylabel, inserarea etichetelor axelor sistemului de coordonate
zlabel
gtext plasarea unui text pe grafic la poziţia selectată cu mouse-
ul

3.2. Exemple de studiat

Exemplul 3.1: Să se reprezinte grafic funcţiile f1, f2:[-2,6]→R, definite prin

f 1( x ) =
1
şi f 2( x ) =
cos( x)
relaţiile: .
sin( x) + 2 x
e2
Soluţie.: Etapele reprezentării graficelor 2D sunt:
- redarea domeniului (intervalului) de reprezentare prin definirea unui vector cu pas
liniar:
>> x=-2:0.1:6;
- definirea funcţiei / funcţiilor, folosind operatori pentru tablouri:
>> f1=1./(sin(x)+2); f2=cos(x)./exp(x/2);
- trasarea graficului / graficelor şi, eventual, precizarea anumitor proprietăţi ale
reprezentării grafice:
>> plot(x,f1,'b-',x,f2,'ro')
- setarea altor proprietăţi ale reprezentării grafice (titlul reprezentării grafice,
etichetele axelor, text pe grafic etc):
>> title('Grafice 2D'), xlabel('x'), ylabel('y')
>> grid; gtext('graficele a 2 functii')
Rezultatul execuţiei secvenţei de comenzi este ilustrat în figura 3.1.
Grafice 2D
1.5

0.5

graficele a 2 functii
0
y

-0.5

-1

-1.5
-2 -1 0 1 2 3 4 5 6
x

Fig.3.1. Graficele funcţiilor din exemplul 3.1.

Comentarii: 1. Pentru reprezentarea grafică a funcţiilor în Matlab este necesar ca


domeniul de reprezentare să fie definit prin puncte. În reprezentările grafice din
Matlab două puncte consecutive ale graficului sunt unite cu segmentul dintre ele.
Distanţa dintre oricare două puncte consecutive ale graficului trebuie să fie
suficient de mică pentru ca reprezentarea grafică să fie corectă. Totodată, o distanţă
prea mică necesită mai mult timp de calcul. Deci trebuie găsită întotdeauna o
soluţie de compromis. În figura 3.2. sunt redate aceleaşi grafice, dar pentru un
vector de reprezentare cu pasul de 5 ori mai mare.
2. Reprezentarea mai multor grafice de funcţii în acelaşi grafic Matlab
se poate face prin enumerarea funcţiilor (sub forma: variabilă, funcţie şi, opţional,
setări de culoare, marker şi / sau tip de linie, pentru fiecare funcţie în parte) în
acelaşi apel al funcţiei plot, sau în apeluri diferite ale funcţiei plot, dar, în cazul al
doilea, cu condiţia ca înainte sau imediat după primul apel să se dea comanda
hold on, iar după ultimul apel să fie dată comanda hold off. De exemplu, acelaşi
grafic se putea obţine cu următoarea succesiune de comenzi:
>> plot(x,f1,'b-')
>> hold on
>> plot(x,f2,'ro')
>> hold off
Grafice 2D
1.5

0.5

graficele a 2 functii

0
y

-0.5

-1

-1.5
-2 -1 0 1 2 3 4 5 6
x

Fig.3.2. Graficele funcţiilor din exemplul 3.1. în cazul pasului 0.5

Exemplul 3.2: Să se scrie o funcţie Matlab care primeşte ca argumente o


altă funcţie f şi capetele unui interval închis [a,b] pe care este definită această
funcţie, şi reprezintă grafic în coordonate semilogaritmice, ambele cazuri, funcţia f
pe intervalul [a,b]. Dacă reprezentarea grafică în cel puţin unul din cele două cazuri
nu poate fi realizată, se va afişa un mesaj de eroare.
Soluţie:
• În acest caz, etapa de definire a funcţiei care se doreşte a fi reprezentată grafic
fie se omite, dacă se alege o funcţie deja definită, fie se realizează separat, prin
definirea ei într-un fişier-funcţie.
• Pentru a putea urmări codul sursă al programului este necesară consultarea
help-ului Matlab cu privire la funcţiile min şi feval.
• Codul sursă al funcţiei Matlab cerute, denumită grafic_log, este:
function grafic_log(f,a,b)
if a>b
disp('Interval vid (a>b) !')
return
end
n=100; % numarul de puncte pentru reprezentarea
% intervalului-1
pas=(b-a)/n; % pasul de reprezentare
% intervalul [a,b]
if a==b x=a;
else x=a:pas:b;
end
if a<=0 | min(feval(f,x))<=0
disp(['Cel putin unul din graficele in coordonate '...
'semilogaritmice nu poate fi reprezentat!'])
return
end
% coordonate semilogaritmice pe axa x
subplot(2,1,1); semilogx(x,feval(f,x))
% coordonate semilogaritmice pe axa y
subplot(2,1,2); semilogy(x,feval(f,x))

Comentarii: 1. Pentru ca vectorul x=a:pas:b să atingă şi capătul din dreapta, pasul


trebuie să fie un submultiplu al lungimii intervalului.
2. În reprezentarea celor două grafice s-a optat pentru redarea lor în
aceeaşi fereastră grafică. Aceasta a fost împărţită în două subferestre situate una
sub cealaltă. În subfereastra de sus va fi reprezentată grafic funcţia în coordonate
semilogaritmice pe axa x, iar în subfereastra de jos în coordonate semilogaritmice
pe axa y.
3. Evident că este necesară testarea în program a valorilor a şi b pentru
a şti dacă formează un interval propriu-zis (adică a<=b) şi a valorilor funcţiei f şi a
intervalului [a,b] pentru a putea reprezenta grafic funcţia în cele două sisteme de
coordonate semilogaritmice (f trebuie să fie strict pozitivă, iar intervalul să conţină
valori strict pozitive).
• Pentru testarea programului, mai jos se folosesc funcţia Matlab sin şi funcţia:
function y=f(x)
y=sin(x)+2;
Apelul funcţiei grafic_log se face din linia de comandă. Funcţia f se transmite ca
argument prin intermediul denumirii fişierului-funcţie în care a fost definită. Iată
apelurile şi rezultatele lor, sub formă de răspunsuri în linia de comandă, respectiv
reprezentarea grafică în figura 3.3:
>> grafic_log('f',2,1)
Interval vid (a>b) !
>> grafic_log('f',-1,10)
Cel putin unul din graficele in coordonate logaritmice nu poate fi
reprezentat!
>> grafic_log('sin',1,10)
Cel putin unul din graficele in coordonate logaritmice nu poate fi
reprezentat!
>> grafic_log('f',1,10)
Fig.3.3. Graficele funcţiei din exemplul 3.2. în coordonate semilogaritmice

Exemplul 3.3: Să se reprezinte grafic triunghiul ale cărui vârfuri au


coordonatele (-1,3), (2,7) şi (9,-4).
Soluţie: Rezolvarea problemei se bazează pe utilizarea funcţiei line, care primeşte
ca argumente vectorul tuturor absciselor şi vectorul tuturor ordonatelor vârfurilor
(evident în aceeaşi ordine):
>> line([-1 2 9 -1],[3 7 -4 3]); grid
În figura 3.4. este redată reprezentarea obţinută:

Fig.3.4. Reprezentarea triunghiului din exemplul 3.3.


Comentariu: Funcţia Matlab line uneşte două puncte consecutive din şirul de
puncte cu segmentul determinat de ele. Triunghiul fiind format din 3 segmente,
necesită precizarea a patru puncte, evident, primul şi ultimul punct fiind identice.

Exemplul 3.4: Să se reprezinte grafic în spaţiul tridimensional curba 3D


dată prin ecuaţiile parametrice: x(t)=ln(t2+2), y(t)=t·sin(t), z(t)=-t-1, t∈[-7,7].

Soluţie: Etapele reprezentării unei curbe 3D sunt:


- redarea domeniului (intervalului) de reprezentare prin definirea unui vector cu pas
liniar:
>> t=-7:0.1:7;
- definirea funcţiilor corespunzătoare coordonatelor:
>> x=log(t.^2+2); y=t.*sin(t); z=-t-1;
- trasarea graficului şi, eventual, precizarea anumitor proprietăţi ale reprezentării
grafice:
>> plot3(x,y,z,'m')
- setarea altor proprietăţi ale reprezentării grafice (etichetele axelor, grid etc):
>> grid
>> xlabel('axa x'); ylabel('axa y'); zlabel('axa z');
Rezultatul execuţiei secvenţei de comenzi este ilustrat în figura 3.5.

Fig.3.5. Reprezentarea grafică a curbei 3D din exemplul 3.4.

Comentariu: Stabiliţi sensul de parcurgere a curbei din figura 3.5. Indicaţie: Folosiţi
funcţia Matlab comet3.
Exemplul 3.5: Să se reprezinte grafic în spaţiul 3D clasicul „sombrero”

⎧1, x = y = 0

(suprafaţa descrisă de relaţia z ( x, y ) = ⎨ sin( x 2 + y 2 ) ).
⎪ , x, y reali, nenuli
⎩ x2 + y2

Soluţie: Etapele reprezentării grafice 3D sunt aceleaşi ca şi în cazul 2D:


- redarea domeniului de reprezentare:
>> x=-8:0.2:8; y=x; [x,y]=meshgrid(x,y);
- definirea funcţiei / funcţiilor:
>> R=sqrt(x.^2+y.^2); S=sin(R);
>> [i,j]=find(R==0); R(i,j)=1; S(i,j)=1;
>> z=S./R;
- trasarea graficului / graficelor şi, eventual, precizarea anumitor proprietăţi ale
reprezentării grafice (culoare, umbră etc):
>> surfl(x,y,z)
>> shading interp
>> colormap(flag)
Rezultatul execuţiei comenzilor este reprezentat grafic în figura 3.6.

0.5

-0.5
10
5 10
0 5
0
-5 -5
-10 -10

Fig.3.6. Graficul funcţiei „sombrero”.

Comentarii: 1. Domeniul de reprezentare al unei suprafeţe este o reţea de puncte


{(xi, yj)}, care se formează de obicei în următorul mod: se generează separat seturile
de puncte {xi} şi {yj}, apoi se formează produsul cartezian al acestora cu ajutorul
funcţiei Matlab meshgrid.
2. Pentru a defini valoarea funcţiei în punctul (0,0), poziţia acestuia a
fost căutată în tabloul R cu funcţia Matlab find, iar apoi valoarea de pe poziţia
găsită a fost setată pe 1, atât în tabloul R, cât şi în tabloul S.

Exemplul 3.6: Să se reprezinte grafic o piramidă dreaptă de înălţime h şi cu


baza octogon regulat înscris într-un cerc de rază rc şi un elipsoid de semiaxe rx, ry
şi rz.
Soluţie: Piramida va fi reprezentată cu ajutorul funcţiei Matlab cylinder, iar
elipsoidul cu una din funcţiile Matlab sphere sau ellipsoid.
• Reprezentarea grafică a piramidei, redată în figura 3.7.a, cu rc=1.25 şi h=3, se
obţine astfel:
% raza cercului circumscris bazei, inaltimea piramidei si
% numarul laturilor bazei
rc=1.25; h=3; n=8;
%determinarea coordonatelor suprafetei piramidei de
% inaltime 1
[xp,yp,z]=cylinder([rc 0],n);
% stabilirea inaltimii cerute
zp=h*z;
% reprezentarea grafica
surf(xp,yp,zp)
colormap(summer); axis('equal')
• Reprezentarea grafică a elipsoidului este realizată cu ambele funcţii menţionate
şi este redată în figurile 3.7.b şi 3.7.c (s-a ales ca centru al elipsoidului punctul
de coordonate (3,-1,0), iar pentru semiaxe au fost considerate valorile 5,3,2):
% precizarea coordonatelor centrului
xc=3; yc=-1; zc=0;
% precizarea semiaxelor
rx=5; ry=3; rz=2;
% reprezentarea grafica cu functia ellipsoid
ellipsoid(xc,yc,zc,rx,ry,rz,30)
axis('equal'); colormap spring
pause
% reprezentarea grafica cu functia sphere
[x,y,z]=sphere(30);
xe=5*x+3; ye=3*y-1; ze=2*z;
surf(xe,ye,ze)
axis('equal'); colormap(cool)
a

b c

Fig.3.7 Reprezentarea grafică a unor corpuri 3D: a - piramidă, b,c -elipsoid

3.3. Probleme de rezolvat

P3.1. Să se reprezinte grafic funcţiile:


⎧sin ( 5 ⋅ t), dacă {-9 ≤ t < -3} şi {3 ≤ t ≤ 9}
a) y(t) = ⎨
⎩cos (t)- cos ( 3 )- sin ( 15 ), dacă − 3 ≤ t < 3
b) f(t)=sin(π·t)·cos(π·t), t∈[-3,3], cu linie întreruptă de culoare mov şi
g(t)=sin(π·t+1)·cos(π·t+1), t∈[-3,3], cu markere-pătrat de culoare albastru-
deschis unite cu linie continuă.
P3.2. Să se reprezinte în coordonate polare, (r=f(t), θ=t), funcţia:

f (t ) = sin( t ) + t 2 , t∈[0,6π].
P3.3. Să se reprezinte în coordonate logaritmice, (lg(t),lg(f(t))), funcţia f(t)=e3·t,
t∈[1,5].
P3.4. Fie suprafaţa hexagonală din figura de mai jos, formată din 6 regiuni:
A,B,C,D,E,F. Să se scrie un program care primeşte ca argument un număr întreg
strict pozitiv p şi reprezintă grafic suprafaţa hexagonală, colorată în funcţie de
restul r al împărţirii lui p la 3 cu r+1 culori, alternând culorile.

1.5

1 C B

0.5

0 D A

-0.5

-1 E F

-1.5

-2
-2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5

P3.5. Să se reprezinte grafic:


a) dreptunghiul,
b) suprafaţa dreptunghiulară, cu o culoare la alegere,
determinate de punctele A(5,4), B(-7,4), C(-7,-3), D(5,-3).
P3.6. Să se reprezinte grafic în acelaşi plan un cerc şi o elipsă care să se
intersecteze.
P3.7. Să se reprezinte grafic spirala 3D dată de relaţiile: x(t)=t, y(t)=sin(0.5·t-3),
z(t)=cos(0.5·t), t∈[-10π,10π].
P3.8. Să se reprezinte grafic, pe rând, cu plot3, mesh, surf şi surfl funcţia:
z(x,y)=x3-3⋅x⋅y2, x∈[-3,3], y∈[-3,3].
P3.9. Să se reprezinte grafic în mod separat un trunchi de con de raze rc1=2, rc2=1
şi de înălţime h=3 şi o piramidă de înălţime h cu baza hexagon regulat, cu cercul
circumscris bazei de rază rp=3.
P3.10. Să se reprezinte grafic o sferă de rază 6371, care să sugereze Globul
Pământesc cu meridiane şi paralele la 15º longitudine şi latitudine.
P3.11. Să se scrie un program care primeşte ca argument un număr real r şi
realizează următoarea reprezentare grafică (dacă r este negativ sau nul, pentru
reprezentare se consideră implicit r = 1):

2r

0.5r

r
3.4. Întreb ri recapitulative

Î3.1. Ce tipuri de coordonate în plan pot fi utilizate în Matlab pentru reprezentări


grafice de funcţii?
Î3.2. Precizaţi formulele de legătură dintre coordonatele carteziene şi coordonatele
polare.
Î3.3. Ce tipuri de grafice 3D pot fi realizate în Matlab?
Î3.4. Care sunt etapele de reprezentare a funcţiilor în plan?
Î3.5. Care sunt etapele de reprezentare a curbelor în spaţiu?
Î3.6. Care sunt etapele de reprezentare a suprafeţelor în spaţiu?
Î3.7. Precizaţi care este ecuaţia carteziană generală a dreptei în plan.
Î3.8. Precizaţi care este ecuaţia unei drepte determinată de două puncte distincte.
Î3.9. Definiţi cercul ca loc geometric.
Î3.10. Precizaţi care sunt ecuaţiile explicite ale unui cerc.
Î3.11. Precizaţi care sunt ecuaţiile parametrice ale unei elipse.
Î3.12. Definiţi hiperbola ca loc geometric.
Î3.13. Cum se numeşte figura plană definită ca “loc geometric al punctelor din plan
egal depărtate de un punct fix şi de o dreaptă fixă”?
Î3.14. Definiţi sfera ca loc geometric.
Î3.15. Precizaţi care este ecuaţia implicită a unui elipsoid.
Î3.16. Precizaţi care sunt ecuaţiile parametrice ale unei sfere.
Î3.17. Precizaţi utilitatea funcţiilor Matlab min, feval şi find, precum şi sintaxele
de apel ale acestora.
ANEXA M3. ELEMENTE DE REPREZENTARE
GRAFIC ÎN PLAN ŞI ÎN SPA IU

M3.1. Tipuri de sisteme de coordonate

a. Coordonate carteziene
Fie xOy un sistem de coordonate carteziene în plan. Fie P un punct în plan
având coordonatele xp pe axa Ox şi yp pe axa Oy. Coordonata xp se mai numeşte
abscisa punctului P, iar axa Ox axa absciselor, şi yp se mai numeşte ordonata
punctului P, iar axa Oy axa ordonatelor. Se va nota P(xp,yp). Coordonatele
carteziene se mai numesc şi coordonate liniare.
Axele Ox şi Oy împart planul în patru regiuni, numite cadrane deschise:
• cadranul I este mulţimea punctelor care au ambele coordonate strict pozitive;
• cadranul II este mulţimea punctelor care au abscisele strict negative şi
ordonatele strict pozitive;
• cadranul III este mulţimea punctelor care au ambele coordonate strict negative;
• cadranul IV este mulţimea punctelor care au abscisele strict pozitive şi
ordonatele strict negative.

Un sistem de coordonate carteziene în spaţiu se notează cu xOyz. Poziţia


unui punct P din spaţiul tridimensional este dată de cele trei coordonate ale sale, xp
pe axa Ox, yp pe axa Oy şi zp pe axa Oz. Se va nota P(xp,yp,zp).

b. Coordonate polare
Fie xOy un sistem de coordonate carteziene în plan şi P(xp,yp) un punct din
plan diferit de originea O a sistemului. Fie r distanţa de la P la O şi θ unghiul format
în sens trigonometric de semidreapta (OP cu axa Ox, θ∈[0,2π). Numerele r şi θ se
numesc coordonatele polare ale punctului P. Se notează P(r,θ). r se numeşte
raza polară a lui P, iar θ argumentul polar al lui P.
Legătura dintre coordonatele carteziene şi coordonatele polare ale lui P sunt
exprimate de relaţiile:

r= xp 2 + yp 2 ,

θ ∈ [0 ,2π )
xp yp
cos( θ ) = , sin( θ ) = ,
xp 2 + yp 2 xp 2 + yp 2

c. Coordonate logaritmice
Coordonatele logaritmice reprezintă exprimarea coordonatelor unui punct
pe o scară logaritmică, adică ca şi logaritmi într-o bază b precizată ale
coordonatelor carteziene ale punctului respectiv. Deoarece logaritmul se poate
calcula doar pentru valori strict pozitive, singurele puncte care pot fi reprezentate în
coordonate logaritmice sunt cele din cadranul deschis I. Astfel, dacă xOy este un
sistem de coordonate carteziene şi P(xp,yp) un punct din cadranul deschis I, atunci
coordonatele logaritmice ale punctului P sunt x=logb(xp) şi y=logb(yp), adică xp=bx şi
yp=by.

d. Coordonate semilogaritmice
Coordonatele semilogaritmice reprezintă o pereche de coordonate dintre
care una este o coordonată carteziană (liniară), iar cealaltă o coordonată logaritmică.
Dacă coordonata logaritmică corespunde axei x, atunci se foloseşte denumirea de
coordonate semilogaritmice pe axa x. Analog, dacă coordonata logaritmică
corespunde axei y, atunci se foloseşte denumirea de coordonate semilogaritmice
pe axa y.

M3.2. Figuri geometrice în plan

a. Dreapta
Fie xOy un sistem de coordonate carteziene. Orice dreaptă paralelă cu Ox se
numeşte dreaptă orizontală. Orice dreaptă paralelă cu Oy se numeşte dreaptă
verticală. Orice dreaptă care nu este nici orizontală şi nici verticală se numeşte
dreaptă oblică. Tangenta unghiului format de o dreaptă oblică cu axa Ox (unghi
⎛ π ⎞ ⎛π ⎞
cuprins în mulţimea ⎜ 0, ⎟ ∪ ⎜ , π ⎟ ) se numeşte panta dreptei oblice şi se
⎝ 2⎠ ⎝2 ⎠
notează cu m.
Ecuaţia dreptei oblice determinată de un punct şi de o pantă
Fie d o dreaptă oblică de pantă m şi P(xp,yp) un punct al dreptei d. Atunci ecuaţia
dreptei d este:
y - yp = m·(x - xp)
Ecuaţia dreptei determinată de două puncte distincte
Fie d o dreaptă şi P(xp,yp) şi R(xr,yr) două puncte distincte ale dreptei d. Atunci
ecuaţia dreptei d este:
x = xp, când dreapta este verticală
y = yp, când dreapta este orizontală
x − xp y − yp
= , când dreapta este oblică
xr − xp yr − yp
Ecuaţia carteziană generală a dreptei
Fie d o dreaptă. Ecuaţia carteziană generală a dreptei d are forma implicită:
a·x+b·y+c = 0, cu a,b,c∈R, a2+b2≠0
b. Cercul
Locul geometric al punctelor din plan egal depărtate de un punct dat se
numeşte cerc. Punctul dat poartă denumirea de centrul cercului, iar distanţa de la
acesta la oricare din punctele cercului se numeşte raza cercului.
Fie xOy un sistem de coordonate carteziene, iar C cercul de centru C(xc,yc) şi
de rază r. Ecuaţiile cercului C sunt:
• ecuaţia implicită a cercului: (x - xc) 2 + (y - yc) 2 = r 2

• ecuaţiile explicite ale cercului: y = yc ± r 2 − ( x − xc ) 2 , x ∈ [xc − r , xc + r ]

• ⎧ x = xc + r ⋅ cos(θ )
ecuaţiile parametrice ale
⎨ , θ ∈ [0,2π )
cercului: ⎩ y = yc + r ⋅ sin(θ )
Mulţimea punctelor a căror distanţă la C este strict mai mică decât r se
numeşte interiorul cercului. Reuniunea dintre cerc şi interiorul său se numeşte
disc de centru C şi rază r.

c. Elipsa
Locul geometric al punctelor din plan care au proprietatea că suma distanţelor
lor la două puncte fixe este constantă se numeşte elipsă. Cele două puncte fixe se
numesc focarele elipsei. Distanţa dintre cele două focare se numeşte distanţă
focală, iar distanţele de la un punct P oarecare al elipsei la cele două focare se
numesc razele focale ale punctului P.
Fie F şi F' cele două focare, C mijlocul segmentului [FF'], A şi A' punctele de
intersecţie ale dreptei FF' cu elipsa, B şi B' intersecţia dreptei perpendiculare pe FF' în
C cu elipsa, a distanţa CA şi b distanţa CB. C este centrul de simetrie al elipsei,
iar AA' şi BB' sunt axele de simetrie ale elipsei. a şi b se numesc semiaxele
elipsei.
Fie xOy un sistem de coordonate carteziene şi (xc,yc) coordonatele centrului de
simetrie C al elipsei. În continuare se va considera că dreapta FF' este paralelă cu axa
Ox. Fie E elipsa de centru C(xc,yc) şi semiaxe a şi b. Ecuaţiile elipsei E sunt:

( x − xc ) 2 ( y − yc ) 2
• ecuaţia implicită a elipsei: + =1
a2 b2

• ⎛ ( x − xc ) 2 ⎞
ecuaţiile explicite ale y = yc ± b ⎜⎜1 − ⎟,
⎟ x ∈ [xc − a , xc + a ]
elipsei: ⎝ a2 ⎠

• ⎧ x = xc + a ⋅ cos( θ )
ecuaţiile parametrice ale
⎨ , θ ∈ [0,2π )
elipsei: ⎩ y = yc + b ⋅ sin( θ )

d. Hiperbola
Locul geometric al punctelor din plan care au proprietatea că modulul
diferenţei distanţelor lor la două puncte fixe este constant se numeşte hiperbolă.
Cele două puncte fixe se numesc focarele hiperbolei. Distanţa dintre cele două
focare se numeşte distanţă focală, iar distanţele de la un punct P oarecare al
hiperbolei la cele două focare se numesc razele focale ale punctului P.
Fie F şi F' cele două focare, C mijlocul segmentului [FF'], A şi A' punctele de
intersecţie ale dreptei FF' cu hiperbola, c distanţa CF, a distanţa CA (a<c) şi
b = c 2 − a 2 . C este centrul de simetrie al hiperbolei, iar FF' şi mediatoarea
segmentului [FF'] sunt axele de simetrie ale hiperbolei. a şi b se numesc
semiaxele hiperbolei.
Fie xOy un sistem de coordonate carteziene şi (xc,yc) coordonatele centrului de
simetrie C al hiperbolei. În continuare se va considera că dreapta FF' este paralelă cu
axa Ox. Fie H hiperbola de centru C(xc,yc) şi semiaxe a şi b. Ecuaţiile hiperbolei H
sunt:

• ecuaţia implicită a ( x − xc )2 ( y − yc )2
− =1
hiperbolei: a2 b2

⎛ ( x − xc ) 2 ⎞
• ecuaţiile explicite ale y = yc ± b ⎜⎜ 2
− 1 ⎟,

hiperbolei: ⎝ a ⎠
x ∈ (− ∞ , xc − a ] ∪ [xc + a ,∞ )
Mulţimea punctelor de coordonate (x,y) care satisfac ecuaţia:

( x − xc )2 ( y − yc )2
− + =1
a2 b2
reprezintă o hiperbolă H ' de centru C(xc,yc) şi semiaxe b şi a, pentru care axa
focarelor este paralelă cu axa Oy. Hiperbolele H şi H ' se numesc hiperbole
conjugate una alteia.
O hiperbolă de semiaxe egale se numeşte hiperbolă echilateră.

e. Parabola
Locul geometric al punctelor din plan egal depărtate de un punct fix şi de o
axă fixă se numeşte parabolă. Punctul fix se numeşte focarul parabolei, iar axa
fixă directoarea parabolei. Distanţa de la un punct oarecare P al parabolei la focar
se numeşte raza focală a punctului P. Fie F focarul, A proiecţia focarului pe
directoarea parabolei, C intersecţia dreptei FA cu parabola şi p distanţa dintre focar
şi A. C se numeşte vârful parabolei. Dreapta AC este dreaptă de simetrie a
parabolei.
Fie xOy un sistem de coordonate carteziene şi (xc,yc) coordonatele vârfului C al
parabolei. În continuare se va considera că dreapta AF este paralelă cu axa Ox. Fie P
parabola de vârf C(xc,yc) şi axă de simetrie AF. Ecuaţiile parabolei P sunt:

• ecuaţia implicită a ( y − yc ) 2 − 2 p( x − xc ) = 0
parabolei:
• ecuaţiile explicite ale y = yc ± 2 p( x − xc ) , x ≥ xc
parabolei:
M3.3. Figuri geometrice în spa iu

a. Dreapta
Fie xOyz un sistem de coordonate carteziene şi d o dreaptă în spaţiul
structurat de acesta.
Ecuaţiile carteziene generale ale dreptei
Analitic, dreapta d se exprimă ca intersecţie a două plane, adică prin sistemul de
ecuaţii alcătuit din ecuaţiile celor două plane. Astfel, dacă P 1, de ecuaţie
a1x+b1y+c1z+d1 = 0, şi P 2, de ecuaţie a2x+b2y+c2z+d2 = 0, sunt cele două plane,
atunci, ecuaţiile dreptei d sunt:

⎧a1 x + b1 y + c1 z + d1 = 0
⎨ , a1 ,..., d 2 ∈ R
⎩a 2 x + b2 y + c 2 z + d 2 = 0
Ecuaţiile parametrice ale dreptei determinate de două puncte distincte
Fie P(xp,yp,zp) şi R(xr,yr,zr) două puncte distincte ale dreptei d. Atunci ecuaţiile
parametrice ale dreptei d determinate de punctele P şi R sunt:

⎧ x = xp + k ( xr − xp )

⎨ y = yp + k ( yr − yp ), k ∈R
⎪ z = zp + k ( zr − zp )

b. Sfera
Locul geometric al punctelor din spaţiu egal depărtate de un punct dat se
numeşte sferă. Punctul dat poartă denumirea de centrul sferei, iar distanţa de la
acesta la oricare din punctele sferei se numeşte raza sferei.
Fie xOyz un sistem de coordonate carteziene şi S sfera de centru C(xc,yc,zc) şi
de rază r. Ecuaţiile sferei S sunt:
• ecuaţia implicită a sferei: (x - xc) 2 + (y - yc) 2 + (z - zc) 2 = r 2

⎧ x = xc + r ⋅ cos( α ) ⋅ cos( β )
• ⎪
⎨ y = yc + r ⋅ sin( α ) ⋅ cos( β ), α ∈ [0,2π ), β ∈ [− π ,π ]
ecuaţiile parametrice ale
sferei: ⎪ z = zc + r ⋅ sin( β )

Mulţimea punctelor a căror distanţă la C este strict mai mică decât r se
numeşte interiorul sferei. Reuniunea dintre sferă şi interiorul său se numeşte bilă
de centru C şi rază r.

b. Elipsoidul
Un elipsoid este o suprafaţă tridimensională închisă cu proprietatea că
intersecţia ei cu orice plan este o elipsă sau un cerc. Un elipsoid are trei axe de
simetrie, care se intersectează într-un punct şi care sunt perpendiculare două câte
două. Punctul de intersecţie se numeşte centru de simetrie. Fie AA’, BB’ şi DD’
intersecţiile celor trei axe de simetrie cu elipsoidul, iar C centrul de simetrie.
Distanţele CA, CB şi CD se numesc semiaxele elipsoidului şi se notează cu a, b,
respectiv c.
Fie xOyz un sistem de coordonate carteziene şi EL un elipsoid de semiaxe a,b
şi c, şi de centru de simetrie C(xc,yc,zc). Ecuaţiile elipsoidului EL sunt:

• ecuaţia implicită a ( x − xc )2 ( y − yc )2 ( z − zc )2
+ + =1
elipsoidului: a2 b2 c2
⎧ x = xc + a ⋅ cos( α ) ⋅ cos( β )
• ⎪
⎨ y = yc + b ⋅ sin( α ) ⋅ cos( β ) , α ∈ [0,2π ), β ∈ [− π ,π ]
ecuaţiile parametrice ale
elipsoidului: ⎪ z = zc + c ⋅ sin( β )

c. Prisma
Fie S o suprafaţă poligonală, inclusă într-un plan α, d o dreaptă care nu
aparţine planului α şi nu este nici paralelă cu acesta, şi α ' un plan paralel cu α.
Pentru fiecare punct P al suprafeţei poligonale S fie P' intersecţia dintre planul α ' şi
paralela la d dusă prin P. Reuniunea tuturor segmentelor [PP' ], atunci când P
parcurge suprafaţa S , se numeşte prismă. Fie S ' mulţimea tuturor punctelor P'.
S şi S ' se numesc bazele prismei. S şi S ' sunt congruente.
Dacă dreapta d este perpendiculară pe planul α, atunci prisma este o prismă
dreaptă. O prismă dreaptă a cărei bază este o suprafaţă poligonală regulată se
numeşte prismă regulată. O prismă a cărei bază este mărginită de un paralelogram
se numeşte paralelipiped. Un paralelipiped drept se numeşte paralelipiped
dreptunghic. Un paralelipiped dreptunghic care are doar suprafeţe mărginite de
pătrate se numeşte cub.

d. Piramida
Fie S o suprafaţă poligonală, inclusă într-un plan α, şi V un punct care nu
aparţine planului α. Reuniunea tuturor segmentelor [VP], atunci când P parcurge
suprafaţa S , se numeşte piramidă de vârf V şi bază S . Distanţa de la V la planul
α se numeşte înălţimea piramidei.
O piramidă a cărei bază este o suprafaţă poligonală regulată şi pentru care
proiecţia lui V pe α este centrul lui S se numeşte piramidă regulată. O piramidă cu
baza suprafaţă triunghiulară se numeşte tetraedru.
Fie α ' un plan paralel cu α şi care intersectează piramida. Fie S ' intersecţia
planului α ' cu piramida. S şi S ' sunt asemenea. Mulţimea punctelor piramidei
cuprinse între planurile α şi α ' împreună cu cele două suprafeţe S şi S ' se numeşte
trunchi de piramidă. S şi S ' se numesc bazele trunchiului de piramidă.
Distanţa dintre cele două plane se numeşte înălţimea trunchiului de piramidă.
Un trunchi de piramidă obţinut dintr-o piramidă regulată se numeşte trunchi de
piramidă regulată.

e. Cilindrul
Fie D un disc, inclus într-un plan α, d o dreaptă care nu aparţine planului α
şi nu este nici paralelă cu acesta, şi α ' un plan paralel cu α. Pentru fiecare punct P al
discului D fie P ' intersecţia dintre planul α ' şi paralela la d dusă prin P. Reuniunea
tuturor segmentelor [PP ' ], atunci când P parcurge discul D, se numeşte cilindru
circular. Fie D ' mulţimea tuturor punctelor P '. D şi D ' se numesc bazele
cilindrului circular. D şi D ' au raze egale.
Dacă dreapta d este perpendiculară pe planul α, atunci cilindrul este un
cilindru circular drept.

f. Conul
Fie D un disc, inclus într-un plan α, şi V un punct care nu aparţine planului
α. Reuniunea tuturor segmentelor [VP], atunci când P parcurge discul D, se numeşte
con circular de vârf V şi bază D . Distanţa de la V la planul α se numeşte
înălţimea conului.
Un con pentru care proiecţia vârfului pe planul bazei coincide cu centrul bazei
se numeşte con drept.
Fie α ' un plan paralel cu α şi care intersectează conul. Fie D ' intersecţia
planului α ' cu piramida. Mulţimea punctelor conului cuprinse între planurile α şi
α ' împreună cu cele două discuri D şi D ' se numeşte trunchi de con. D şi D ' se
numesc bazele trunchiului de con. Distanţa dintre cele două plane se numeşte
înălţimea trunchiului de con. Un trunchi de con obţinut dintr-un con drept se
numeşte trunchi de con drept.
Matematici Asistate de Calculator – L4 1

4. REZOLVAREA SISTEMELOR DE ECUA II


LINIARE

Obiectivele lucrării:
• recapitularea unor elemente legate de rezolvarea sistemelor de ecuaţii liniare,
• fixarea de cunoştinţe privitoare la rezolvarea sistemelor de ecuaţii liniare
folosind mediul de programare Matlab,
• familiarizarea cu calculul simbolic în Matlab şi cu rezolvarea sistemelor de
ecuaţii liniare folosind calea simbolică,
prin studierea unor exemple şi prin rezolvarea unor probleme.
Se recomandă parcurgerea anexei M4 înaintea studierii paragrafelor 4.1 şi 4.2.

4.1. Elemente despre rezolvarea sistemelor de ecua ii liniare


în Matlab

Rezolvarea sistemelor de ecuaţii liniare pe cale numerică


Pe cale numerică se pot rezolva în Matlab sisteme compatibile determinate şi
se pot găsi maxim două soluţii particulare pentru sisteme compatibile
nedeterminate.
În rezolvarea sistemelor liniare de p ecuaţii şi n necunoscute folosind mediul
Matlab, se presupune că acestea au forma matriceală:
A·X = b
cu A matricea coeficienţilor, având p linii şi n coloane, b vectorul coloană al
termenilor liberi şi X vectorul coloană al necunoscutelor.
Alternativ, se poate opera şi cu forma matriceală:
X1·A1 = b1
unde A1=AT, b1=bT şi X1=XT, formă care foloseşte vectorii termenilor liberi, respectiv
al necunoscutelor, sub formă de vectori-linie.
Un sistem de ecuaţii liniare este definit în Matlab prin definirea matricei A şi
a vectorului b (sau a matricei A1 şi a vectorului b1).

a. Rezolvarea sistemelor compatibile determinate


Sistemele compatibile determinate pot fi rezolvate prin două metode:
1. metoda inversării matriceale:
În cazul unui sistem pătratic, soluţia sistemului este obţinută prin inversarea
matricei coeficienţilor şi înmulţirea ei cu vectorul termenilor liberi:
X = inv(A) * b
Matematici Asistate de Calculator – L4 2

respectiv,
X1 = b1 * inv(A1)
2. metoda împărţirii la stânga / dreapta:
Această metodă utilizează unul din operatorii de împărţire la stânga sau la dreapta,
în funcţie de forma matriceală utilizată:
X = A \ b
respectiv,
X1 = b1 / A1
Cele două metode de rezolvare se bazează pe metode numerice diferite.
Metoda împărţirii la stânga / dreapta foloseşte pentru rezolvarea sistemelor de
ecuaţii liniare metoda eliminării în versiunea Gauss. Această metodă nu necesită
determinarea inversei matricei coeficienţilor.

b. Determinarea unei solu ii particulare pentru sistemele compatibile


nedeterminate
În cazul sistemelor compatibile nedeterminate nu se pot determina pe cale
numerică toate soluţiile, acestea fiind în număr infinit. Se poate determina o soluţie
particulară folosind una din următoarele două metode:
1. metoda împărţirii la stânga / dreapta:
X = A \ b
respectiv,
X1 = b1 / A1
În acest caz, această metodă realizează căutarea acelei soluţii a sistemului care
minimizează în sensul celor mai mici pătrate norma euclidiană a vectorului A·X-b
şi care are cel mult rang A componente nenule.
2. metoda pseudo-inversării matriceale:
Soluţia sistemului este obţinută prin înmulţirea pseudo-inversei Moore-Penrose a
matricei coeficienţilor cu vectorul termenilor liberi. Pseudo-inversa Moore-Penrose
se obţine prin apelul funcţiei Matlab pinv:
X = pinv(A) * b
respectiv,
X1 = b1 * pinv(A1)

Rezolvarea sistemelor de ecuaţii liniare pe cale simbolică


Pe cale simbolică se pot rezolva în Matlab sisteme pătratice compatibile
nedeterminate, sisteme subdeterminate şi sisteme cu parametri.

a. Calcul simbolic în Matlab


Pentru calcule simbolice, Matlab pune la dispoziţia utilizatorului toolbox-ul
Symbolic Math. Tabelul 4.1. prezintă câteva din funcţiile utilizate în calculul
simbolic din mediul Matlab:
Matematici Asistate de Calculator – L4 3

Tabelul 4.1. Funcţii Matlab pentru calcul simbolic.

Func ia Utilizare
det calculează determinantul unei matrice simbolice
factor descompune în factori o expresie simbolică
inv calculează inversa unei matrice simbolice
rank calculează rangul maxim al unei matrice simbolice
simplify, simplifică expresii simbolice
simple
solve rezolvă ecuaţii şi sisteme de ecuaţii
subs substituie un simbol cu un alt simbol sau cu o valoare numerică
sym crează un obiect simbolic
syms crează mai multe obiecte simbolice

Lista completă a funcţiilor Matlab pentru calcul simbolic se poate afişa prin
apelul help-lui asociat directorului Matlab symbolic.
Rezolvarea unei probleme pe cale simbolică trebuie să înceapă cu definirea
obiectelor simbolice (simbolurilor). Apoi se trece la implementarea propriu-zisă a
soluţionării problemei.

b. Rezolvarea sistemelor de ecua ii liniare folosind Symbolic Math Toolbox


Metodele de rezolvare precizate la începutul lucrării sunt valabile şi pentru
rezolvarea pe cale simbolică a sistemelor de ecuaţii liniare:
1. metoda inversării / metoda pseudo-inversării;
2. metoda împărţirii la stânga / dreapta.
Rezolvarea pe cale simbolică necesită de obicei studiul sistemului şi
efectuarea soluţionării pe cazuri.

4.2. Exemple de studiat

Toate exemplele corespund formei canonice A·X = b (a se vedea paragraful


4.1).
Înainte de a rezolva un sistem de ecuaţii liniare trebuie verificat dacă acest
sistem este compatibil (a se vedea anexa M4).

Exemplul 4.1: Să se rezolve sistemul de mai jos utilizând metoda inversării


matriceale:

⎧5 x1 + 4 x 2 + x3 = 0

⎨6 x1 + 3x 2 + 2 x3 = 5
⎪ x + x + x = −7
⎩ 1 2 3
Matematici Asistate de Calculator – L4 4

Soluţie: Se execută următoarea secvenţă de program Matlab (de exemplu, fişier-M):


A=[5 4 1; 6 3 2; 1 1 1]; % matricea coeficientilor
% rezolvarea sistemului
if det(A)~=0 % daca sistemul este compatibil determinat
b=[0; 5; -7]; % vectorul-coloana al termenilor liberi
X=inv(A)*b
else
disp('Sistemul nu este compatibil determinat.')
end
În urma execuţiei secvenţei de mai sus se obţine:
X =
6.2500
-6.0000
-7.2500
Adică: x1 = 6.25 , x2 = -6 , x3 = –7.25.

Exemplul 4.2: Să se rezolve următorul sistem folosind metoda împărţirii la


stânga:

⎧2 x1 − 3x 2 = 7

⎨− 6 x1 + 8 x 2 − x3 = −5
⎪3 x + 4 x = 1
⎩ 2 3

Soluţie.: Se execută următoarea secvenţă de program Matlab (de exemplu, fişier-M):


A=[2 -3 0; -6 8 -1; 0 3 4]; % matricea coeficientilor
% rezolvarea sistemului
if det(A)~=0
b=[7 -5 1]'; % vectorul-coloana al termenilor liberi
X=A\b
else
disp('Sistemul nu este compatibil determinat.')
end
În urma execuţiei secvenţei de mai sus se obţine:
X = -94.0000
-65.0000
49.0000
Adică: x1 = -94 , x2 = -65 , x3 = 49.

Exemplul 4.3: Să se determine pentru sistemele de mai jos una-două soluţii


particulare, folosind metodele pseudo-inversării şi împărţirii la stânga.

⎧2 x1 − 3 x 2 = 7
⎪− 6 x + 8 x − x = −5
⎪ 1 2 3
a) ⎨
3
⎪ 2 x + 4 x 3 = 1
⎪⎩ − 4 x1 + 8 x 2 + 3 x3 = 3

⎧3 x − y + z − 2t = 6
b) ⎨
⎩− 4 x + 4 y + 2 z + t = 0
Matematici Asistate de Calculator – L4 5

Soluţie.:
a) Se execută următoarea secvenţă de program Matlab (de exemplu, fişier-M):
A=[2 -3 0; -6 8 -1; 0 3 4; -4 8 3]; % matricea coeficientilor
b=[7; -5; 1; 3]; % vectorul-coloana al termenilor liberi
% rezolvarea sistemului
if rank(A)==rank([A b]) % daca sistemul este compatibil
disp('metoda pseudo-inversarii')
X=pinv(A)*b
disp('metoda impartirii la stanga')
X=A\b
else
disp('Sistemul nu este compatibil.')
end

În urma execuţiei secvenţei de mai sus se obţine:


metoda pseudo-inversarii
X = -94.0000
-65.0000
49.0000
metoda impartirii la stanga
X = -94.0000
-65.0000
49.0000
b) Se execută următoarea secvenţă de program Matlab (de exemplu, fişier-M):
A=[3 -1 1 -2; -4 4 2 1]; % matricea coeficientilor
b=[6; 0]; % vectorul-coloana al termenilor liberi
% rezolvarea sistemului
if rank(A)==rank([A b])
disp('metoda pseudo-inversarii')
X=pinv(A)*b
disp('metoda impartirii la stanga')
X=A\b
else
disp('Sistemul nu este compatibil.')
end

Executând secvenţa de mai sus, se obţine:


metoda pseudo-inversarii
X = 0.9431
0.5418
1.3846
-1.1639
metoda impartirii la stanga
X = 1.2000
0
2.4000
0

Comentarii: 1. Pentru testarea compatibilităţii s-a folosit teorema lui Kronecker-


Capelli. Matricea extinsă s-a obţinut în Matlab prin concatenarea matricei A cu
vectorul-coloană b, [A b].
Matematici Asistate de Calculator – L4 6

2. În cazul primului sistem, care este compatibil determinat s-au


obţinut, evident, soluţii identice prin utilizarea celor două metode. În cazul celui de-
al doilea sistem, care este compatibil nedeterminat, prin utilizarea celor două
metode s-au obţinut două soluţii particulare distincte. Rezolvarea completă a
acestui sistem apare în exemplul 4.4.

Exemplul 4.4: Să se rezolve sistemul de ecuaţii liniare:

⎧3 x − y + z − 2t = 6

⎩− 4 x + 4 y + 2 z + t = 0
Soluţie: Sistemul de ecuaţii liniare considerat este un sistem subdeterminat. El
poate fi rezolvat doar pe cale simbolică. Se execută următoarea secvenţă de
program Matlab (de exemplu, fişier-M):
clc
% pas 1: se determina rangul matricei sistemului
A=[3 -1 1 -2;-4 4 2 1];
r=rank(A) % se obtine 2
% prin urmare, 2 variabile sunt independente, si 2
% variabile sunt dependente de primele

% pas 2: se cauta un minor de ordinul 2 nenul, pentru a


% stabili variabilele dependente; de exemplu:
rminor=rank(A(:,[1 2])) % se obtine 2
% x,y devin variabilele dependente, in raport cu care se
% rezolva sistemul;
% acesta se rescrie sub forma:
% 3x-y=6-z+2t; -4x+4y=-2z-t;

disp('sistemul este compatibil nedeterminat')


disp(blanks(1)')

% pas 3: se rezolva sistemul rescris in noua forma:


% se creeaza obiectele simbolice
syms z t;
% matricea sistemului
Aredus=A(:,[1 2]);
% vectorul termenilor liberi
bredus=[6-z+2*t; -2*z-t];
% rezolvarea sistemului cu metoda inversarii
s=inv(Aredus)*bredus
% rezolvarea sistemului cu operatorul de impartire la
% stanga
ss=Aredus\bredus
disp(blanks(1)')
pause
disp('Solutia sistemului dat este:')
x=s(1)
y=s(2)
disp('z,t numere reale oarecare')
Se obţin rezultatele:
r = 2
Matematici Asistate de Calculator – L4 7

rminor = 2
sistemul este compatibil nedeterminat

s =
3-3/4*z+7/8*t
3-5/4*z+5/8*t
ss =
3-3/4*z+7/8*t
3-5/4*z+5/8*t

Solutia sistemului dat este:


x =
3-3/4*z+7/8*t
y =
3-5/4*z+5/8*t
z,t numere reale oarecare
Prin urmare, a fost obţinută soluţia:
3 7 5 5
x= 3 − ⋅ z + ⋅ t , y= 3 − ⋅ z + ⋅ t , z∈R, t∈R.
4 8 4 8

Comentarii: 1. Funcţia Matlab blanks creează spaţii între şirurile de caractere.


2. Comanda Matlab pause are ca efect suspendarea momentană a
execuţiei programului. Execuţia se continuă numai după apăsarea unei taste.

Exemplul 4.5: Să se rezolve sistemul de ecuaţii liniare:

⎧mx − nz = q

⎨nx − my = 0 , în necunoscutele x, y, z,
⎪my + mz − 2q = 0

cu parametri m, n şi q, dintre primii doi parametri cel puţin unul fiind nenul.
Soluţie: Sistemul dat fiind un sistem cu parametri, el se poate rezolva doar cu
ajutorul toolbox-ului de calcul simbolic. Este necesar un studiu de compatibilitate
al sistemului, în funcţie de diverse valori ale parametrilor, rezolvarea efectuându-se
pe cazuri, mediul Matlab fiind utilizat doar pentru efectuarea de calcule simbolice
sau numerice şi de substituţii ale parametrilor cu valori particulare.
Se execută următoarea secvenţă de program Matlab (de exemplu, fişier-M):
% se creeaza obiectele simbolice
m=sym('m'); n=sym('n'); q=sym('q');
% matricea sistemului
A=[m 0 -n;n -m 0;0 m m];
% vectorul coloana al temenilor liberi
b=[q; 0; 2*q];

% ** Discutie **
% determinantul sistemului
d=det(A) % se obtine d = -m^3-n^2*m
factor(d) % se obtine -m*(m^2+n^2)
% se observa ca d==0 daca si numai daca m==0
Matematici Asistate de Calculator – L4 8

% cazul d~=0: sistem compatibil determinat


disp('Cazul: m~=0 -> sistem compatibil determinat')
% solutia calculata cu metoda inversarii matriceale
s=inv(A)*b
% solutia calculata cu operatorul de impartire la stanga
ss=A\b
disp(blanks(2)')
pause

% cazul d==0
% substituirea lui m cu valoarea 0
A=subs(A,m,0)
% se observa ca ultima linie a lui A contine doar elemente
% nule, dar, ultimul element al lui b este 2*q
% prin urmare sistemul este incompatibil daca q~=0
% si compatibil nedeterminat, daca q==0
disp('Cazul: m==0 si q~=0 -> sistem incompatibil')
disp(blanks(2)')
pause

% cazul sistem compatibil nedeterminat


disp(['Cazul: m==0,n~=0,q==0 -> sistem compatibil '...
'nedeterminat'])
% substituirea lui q cu valoarea 0
b=subs(b,q,0);
% sistemul devine:
% -n*z==0; n*x==0;
% m fiind 0, rezulta din ipoteza ca n este nenul
disp('Solutia: (0,y,0) cu y real oarecare')

Se obţin rezultatele:
d =-m^3-n^2*m
ans = -m*(m^2+n^2)
Cazul: m~=0 -> sistem compatibil determinat
s =
m/(m^2+n^2)*q+2*n/(m^2+n^2)*q
n/(m^2+n^2)*q+2*n^2/m/(m^2+n^2)*q
-n/(m^2+n^2)*q+2*m/(m^2+n^2)*q
ss =
q*(m+2*n)/(m^2+n^2)
q*n*(m+2*n)/m/(m^2+n^2)
-q*(n-2*m)/(m^2+n^2)

A =
[ 0, 0, -n]
[ n, 0, 0]
[ 0, 0, 0]
Cazul: m==0 si q~=0 -> sistem incompatibil

Cazul: m==0,n~=0,q==0 -> sistem compatibil nedeterminat


Solutia: (0,y,0) cu y real oarecare
Matematici Asistate de Calculator – L4 9

Exemplul 4.6: Să se compare metodele studiate de rezolvare a sistemelor de


ecuaţii liniare din punct de vedere al timpului de execuţie şi al preciziei soluţiei
pentru cazul unui sistem pătratic compatibil determinat de ecuaţii liniare de
dimensiuni mari.
Soluţie: Pentru generarea unei matrice de dimensiuni mari s-a optat pentru
folosirea funcţiei Matlab rand, care generează o matrice de numere aleatoare
uniform distribuite.
Se execută următoarea secvenţă de program Matlab (de exemplu, fişier script):
% matricea sistemului, solutia exacta, vectorul termenilor
% liberi:
A=rand(700); x=rand(700,1); b=A*x;
% timpii de executie:
tic; y=inv(A)*b; timp1=toc
tic; z=A\b; timp2=toc
% precizia solutiilor calculate:
n1=norm(A*y-b)
n2=norm(A*z-b)
n1/n2

Executând secvenţa de mai sus, se obţine:


timp1 =
0.1671
timp2 =
0.0685
n1 =
3.3005e-010
n2 =
5.9342e-012
ans =
55.6182

Întrucât în primul caz – utilizarea metodei inversării – timpul de execuţie este


0.1671 secunde şi eroarea 3.3005·10-10, iar în al doilea caz – utilizarea metodei
împărţirii la stânga – timpul de execuţie este 0.0685 secunde şi eroarea 5.9342·
10-12, se observă că metoda prin împărţirea la stînga a matricelor este mai
performantă decât metoda inversării matriceale, atât din punct de vedere al
timpului de execuţie, cât şi al preciziei soluţiei obţinute.

4.3. Probleme de rezolvat

P4.1. Folosind mediul Matlab, să se analizeze dacă următorul sistem de ecuaţii


liniare este compatibil determinat şi, în caz afirmativ, să se rezolve sistemul:
Matematici Asistate de Calculator – L4 10

⎧4 x + 3 y − z = 2

⎨− x + y + z = 0 .
⎪ x + 3 z = −1

P4.2. Folosind mediul Matlab, să se determine rangul matricei coeficienţilor şi câte
o soluţie aproximativă pentru sistemele de ecuaţii liniare de mai jos:

⎧4 x + 3 y − z = 2
⎪− x + y + z = 0

a) ⎨ ;
⎪ x + 3 z = −1
⎪⎩4 x + 4 y + 3 z = 1

⎧ − 6 x + 8 y − z = −5
b) ⎨ .
⎩2 x − 3 y = 7
P4.3. Să se scrie un program care primeşte ca parametri matricea coeficienţilor
unui sistem oarecare de ecuaţii liniare şi vectorul termenilor liberi şi returnează
soluţia sistemului, în cazul în care este compatibil determinat, sau un mesaj
corespunzător, în cazul în care este compatibil nedeterminat sau incompatibil.
P4.4. Folosind mediul Matlab, să se rezolve sistemul de ecuaţii liniare:

⎧ − 6 x + 8 y − z = −5
⎨ .
⎩2 x − 3 y = 7
P4.5. Folosind mediul Matlab, să se rezolve următoarele sisteme de ecuaţii liniare
cu parametri şi cu necunoscutele x,y,z:

⎧αx − βy + z = γ

a) ⎨− γx + y + βz = α ;
⎪ x + γy − αz = β

⎧ax − by = p

b) ⎨− bx + by − cz = −2q .
⎪cy + az = p + q

P4.6. Să se scrie un program care primeşte ca argumente matricea coeficienţilor şi
vectorul termenilor liberi ai unui sistem oarecare de ecuaţii liniare şi care clasifică
sistemul într-una din categoriile: i) compatibil determinat, ii) compatibil
nedeterminat sau iii) incompatibil, şi afişează un mesaj corespunzător.
P4.7. Să se realizeze un studiu de caz asemănător exemplului 4.6. pentru cazul
unui sistem compatibil nedeterminat pentru care se doreşte determinarea unei
soluţii particulare.

4.4. Întrebări recapitulative


Matematici Asistate de Calculator – L4 11

Î4.1. Câte metode de rezolvare a sistemelor de ecuaţii liniare în Matlab cunoaşteţi şi


care sunt acestea?
Î4.2. Care este metoda numerică pe care se bazează metoda de împărţire la stânga
/ dreapta de rezolvare a sistemelor compatibile determinate de ecuaţii liniare?
Î4.3. Cum se pot rezolva în Matlab sistemele compatibile nedeterminate de ecuaţii
liniare?
Î4.4. Ce returnează funcţia Matlab pinv?
Î4.5. Ce este un sistem de ecuaţii liniare supradeterminat?
Î4.6. Ce este un sistem de ecuaţii liniare subdeterminat?
Î4.7. Care este condiţia ca un sistem oarecare de ecuaţii liniare să fie compatibil?
Î4.8. Care este condiţia ca un sistem compatibil (oarecare) de ecuaţii liniare să fie
determinat?
Î4.9. Ce puteţi spune legat de sisteme de ecuaţii liniare omogene?
Î4.10. Definiţi noţiunea de "pseudo-inversă Moore-Penrose a unei matrice".
Î4.11. Care sunt proprietăţile pseudo-inversei Moore-Penrose a unei matrice?
Matematici Asistate de Calculator – L4 12

ANEXA M4. ELEMENTE DESPRE REZOLVAREA


SISTEMELOR LINIARE

M4.1. No iuni generale

Fie sistemul de p ecuaţii liniare cu n necunoscute:

⎧a1,1 x1 + a1, 2 x 2 + L + a1,n x n = b1



⎪a 2,1 x1 + a 2, 2 x 2 + L + a 2,n x n = b2

⎪LLLLLLLLLLLL
⎪a p ,1 x1 + a p , 2 x 2 + L + a p ,n x n = b p

cu ai , j ∈ R , bi ∈ R , i = 1, p, j = 1, n .
Introducând notaţiile:
⎛ a1,1 a1, 2 L a1,n ⎞ ⎛ b1 ⎞ ⎛ x1 ⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ a 2,1 a 2, 2 L a 2, n ⎟ ⎜ b2 ⎟ ⎜ x2 ⎟
A=⎜ ⎟ , b = ⎜ ⎟, X = ⎜ ⎟
L L L L M M
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜a a p,2 ⎟
L a p ,n ⎠ ⎜ ⎟ ⎜ ⎟
⎝ p ,1 ⎝ bp ⎠ ⎝ xn ⎠
se obţine forma matriceală a sistemului de ecuaţii liniare:
A⋅ X = b
Matricea A se numeşte matricea coeficienţilor, matricea b vectorul-coloană
al termenilor liberi şi X vectorul-coloană al necunoscutelor sistemului de
ecuaţii liniare.
Matricea (A,b) cu p linii şi n+1 coloane obţinută prin alipirea la dreapta
matricei A a vectorului b, se numeşte matricea extinsă a sistemului.

În funcţie de rezultatul comparaţiei lui p cu n se disting următoarele tipuri de


sisteme:

• sistem pătratic, dacă p = n;


• sistem supradeterminat, dacă p > n;
• sistem subdeterminat, dacă p < n.

Un sistem de ecuaţii liniare care are cel puţin o soluţie se numeşte sistem
compatibil. Un sistem compatibil care are o singură soluţie se numeşte sistem
compatibil determinat. Un sistem compatibil care are mai multe soluţii se numeşte
sistem compatibil nedeterminat. Un sistem care nu are nici o soluţie se numeşte
sistem incompatibil.
Matematici Asistate de Calculator – L4 13

Soluţia unui sistem pătratic de ecuaţii liniare compatibil determinat, se poate


obţine matriceal prin relaţia:
X = A −1 ⋅ b
Un sistem compatibil nedeterminat are o infinitate de soluţii.

M4.2. Criterii de compatibilitate

Teorema lui Kronecker – Capelli: Un sistem de ecuaţii liniare este


compatibil dacă şi numai dacă rangul matricei sistemului este egal cu rangul
matricei extinse a sistemului.

Un sistem compatibil de ecuaţii liniare este determinat dacă şi numai dacă


rangul matricei sistemului este egal cu numărul necunoscutelor sistemului.

Un sistem pătratic de ecuaţii liniare este compatibil determinat dacă şi numai


dacă determinantul matricei coeficienţilor este nenul.

Verificarea compatibilitaţii unui sistem de ecuaţii liniare se poate face în


următorul mod:
a) cazul sistemelor pătratice:
• dacă determinantul matricei coeficienţilor este nenul, sistemul este
compatibil determinat;
• în caz contrar:
o dacă rangul matricei sistemului este egal cu rangul matricei extinse,
atunci sistemul este compatibil nedeterminat;
o altfel, sistemul este incompatibil.
b) cazul sistemelor oarecare:
• dacă rangul matricei sistemului este egal cu rangul matricei extinse, atunci
sistemul este compatibil; distingem două subcazuri:
o dacă rangul matricei sistemului este egal cu numărul necunoscutelor,
atunci sistemul este compatibil determinat;
o altfel, sistemul este compatibil nedeterminat;
• în caz contrar, sistemul este incompatibil.

M4.3. Sisteme de ecua ii liniare omogene

Un caz particular de sisteme de ecuaţii liniare îl reprezintă sistemele de


ecuaţii liniare omogene, adică sisteme pentru care b=0.
Un sistem omogen este întotdeauna compatibil, deoarece el admite
întotdeauna soluţia nulă: X = 0.
Matematici Asistate de Calculator – L4 14

Dacă rangul matricei sistemului omogen este egal cu numărul


necunoscutelor, atunci sistemul este compatibil determinat. În caz contrar (rangul
este mai mic decât numărul necunoscutelor) sistemul este compatibil nedeterminat.

M4.4. Pseudo-inversa Moore-Penrose a unei matrice

Pseudo-inversa Moore-Penrose a matricei A este o matrice B de aceeaşi


dimensiune ca şi AT, care îndeplineşte următoarele condiţii:
(a) A·B·A = A şi B·A·B = B,
(b) A·B şi B·A sunt matrice hermitiene.
(O matrice hermitiană este o matrice pătratică cu proprietatea că ea coincide cu
transpusa conjugatei sale.)

Proprietăţile pseudo-inversei Moore-Penrose sunt :


1. Orice matrice are o unică pseudo-inversă Moore-Penrose.
2. Pseudo-inversa unei matrice inversabile coincide cu inversa matricei.
3. Pseudo-inversa pseudo-inversei unei matrice este matricea însăşi.

Fie sistemul compatibil de ecuaţii liniare cu n necunoscute:


A⋅ X = b
Fie A+ pseudo-inversa Moore-Penrose a matricei A. Atunci:
Xa = A + ⋅ b
este o soluţie aproximativă a sistemului de ecuaţii liniare, cu proprietatea că are
A⋅ X − b
2
norma euclidiană minimă dintre toate n-uplurile X pentru care este
minimă, unde cu ⋅ s-a notat norma euclidiană.
Matematici Asistate de Calculator – L5 1

5. REZOLVAREA ECUA IILOR ALGEBRICE.


CALCULUL VALORILOR PROPRII ŞI AL
VECTORILOR PROPRII

Obiectivele lucrării:
• fixarea cunoştinţelor privitoare la rezolvarea ecuaţiilor algebrice, atât pe cale
numerică, cât şi pe cale simbolică, folosind mediul de programare Matlab,
• recapitularea unor elemente despre valori proprii şi vectori proprii,
• fixarea de cunoştinţe privitoare la calculul valorilor proprii şi al vectorilor
proprii, precum şi la valorile singulare şi la numărul de condiţionare în
raport cu inversarea a unei matrice, folosind mediul de programare Matlab,
prin studierea unor exemple şi prin rezolvarea unor probleme.
Se recomandă parcurgerea anexei M5 înaintea studierii paragrafelor 5.1 şi 5.2.

5.1. Elemente despre rezolvarea ecua iilor algebrice în Matlab.


Elemente despre determinarea valorilor proprii şi al vectorilor
proprii în Matlab

Rezolvarea ecuaţiilor algebrice


O ecuaţie algebrică în necunoscuta x de forma sau adusă la forma:
a0⋅xn + a1⋅xn-1 + ... + an-1⋅x + an = 0
cu ai∈R, i=0,1,...,n, se defineşte în Matlab prin specificarea vectorului coeficienţilor
în ordine descrescătoare după puterile necunoscutei:
c = [a0 a1 ... an-1 an ]
A rezolva ecuaţia de mai sus înseamnă a determina rădăcinile polinomului:
Pn = a0⋅Xn + a1⋅Xn-1 + ... + an-1⋅X + an
Pentru determinarea rădăcinilor unui polinom Pn şi a soluţiilor ecuaţiilor
algebrice, în Matlab se foloseşte funcţia roots, care primeşte ca argument vectorul
c al coeficienţilor :
roots(c)
Funcţia roots returnează soluţiile în mulţimea numerelor complexe ale
ecuaţiilor algebrice (respectiv, toate rădăcinile polinoamelor).

Matlab poate fi utilizat şi pentru rezolvarea ecuaţiilor algebrice cu parametri.


În acest scop se foloseşte toolbox-ul Symbolic Math, care a fost prezentat pe scurt în
paragraful 4.1.
Matematici Asistate de Calculator – L5 2

Determinarea valorilor proprii şi a vectorilor proprii


Pentru calculul valorilor proprii ale unei matrice A se foloseşte funcţia Matlab
eig, cu sintaxa de apel:
val = eig(A)
Funcţia returnează un vector – coloană val care conţine valorile proprii ale matricei
A.

Aceeaşi funcţie Matlab eig se poate utiliza şi pentru a determina câte un


vector propriu unitar (adică de normă euclidiană 1) pentru fiecare valoare proprie.
În acest scop, funcţia se apelează cu sintaxa:
[vec,val] = eig(A)
în care val reprezintă o matrice diagonală care are pe diagonala principală valorile
proprii ale matricei A, iar vec este o matrice ale cărei coloane sunt vectorii proprii
unitari ai valorilor proprii din val, astfel încât coloana i a matricei vec reprezintă
vectorul propriu asociat valorii proprii vali,i, i=1,2,...,n, n fiind ordinul matricei A.

Calculul valorilor singulare


Pentru calculul valorilor singulare ale unei matrice A se utilizează funcţia
Matlab svd, cu sintaxa de apel:
vs = svd(A)
Funcţia returnează un vector – coloană vs care conţine valorile singulare ale
matricei A.

Calculul numărului de condi ionare în raport cu inversarea


Pentru calculul numărului de condiţionare în raport cu inversarea al unei
matrice A se utilizează funcţia Matlab cond, având sintaxa:
nrc = cond(A)

În Matlab se pot calcula şi alte numere de condiţionare ale unei matrice. O


funcţie Matlab mai performantă care calculează numărul de condiţionare al unei
matrice este funcţia rcond, având aceeaşi sintaxă de apel ca şi funcţia cond. Astfel,
un sistem de ecuaţii liniare a cărui matrice a coeficienţilor este A este bine
condiţionat, dacă rcond(A) este aproape 1 şi slab condiţionat dacă rcond(A) este
aproape 0.

5.2. Exemple de studiat

Exemplul 5.1: Să se rezolve ecuaţia algebrică:


x3–3·x2–x+3 = 0
Soluţie: Se execută următoarea secvenţă de program Matlab:
>> c=[1 -3 -1 3]; % vectorul coeficientilor
>> disp('Solutiile ecuatiei: '), sol=roots(c)
Matematici Asistate de Calculator – L5 3

Solutiile ecuatiei:
sol =
3.0000
-1.0000
1.0000
Rezultă că ecuaţia are trei soluţii: x1=3, x2=-1 şi x3=1. Se observă că această ecuaţie
are doar soluţii reale.

Exemplul 5.2: Să se rezolve ecuaţia algebrică:

2 ⋅ x + 3 = 6 + x −1
în mulţimea numerelor reale.
Soluţie: Rezolvarea problemei constă din parcurgerea următoarelor etape:
1. Se separă într-un membru al ecuaţiei radicalul, ceilalţi termeni grupându-se în
celălalt membru. Ecuaţia devine:

2 ⋅ x − 3 = x −1
Examinând ecuaţia de mai sus, rezultă următoarele comentarii:
ƒ condiţia de existenţă a radicalului este: x ≥ 1;
ƒ radicalul unui număr real este pozitiv, în particular, membrul drept este
pozitiv; prin urmare şi membrul stâng trebuie să fie pozitiv, adică: x ≥ 1.5.
Concluzia: soluţiile trebuie să aibă valori mai mari sau egale cu 1.5.
2. Se aduce ecuaţia la forma f(x) = 0, cu f – polinom, prin ridicare la putere şi
mutarea tuturor termenilor în membrul stâng. Se obţine:
4·x2 - 13·x + 10 = 0
3. Se rezolvă ecuaţia de mai sus în mediul Matlab şi se extrag acele rezultate care
îndeplinesc condiţia obţinută la etapa 1. În acest scop se execută următoarea
secvenţă de cod Matlab:
rad=roots([4 -13 10]);
sol=[];
for i=1:length(rad)
if imag(rad(i))==0 & rad(i)>=1.5
sol=[sol rad(i)];
end
end
disp('Solutiile ecuatiei algebrice:')
format short g
sol
În urma execuţiei secvenţei de mai sus se obţine:
Solutiile ecuatiei algebrice:
sol = 2
Adică, ecuaţia are o singură soluţie reală, şi anume: x = 2.
Matematici Asistate de Calculator – L5 4

Exemplul 5.3: Să se determine soluţiile real strict pozitive (Re xi>0) ale
ecuaţiei algebrice:
-45·x2+x7+11·x3+x6+4·x4-50·x -2·x5 = 0
Soluţie.:
Se execută următoarea secvenţă de program Matlab (de exemplu, fişier-M):
% vectorul coeficientilor ecuatiei
c=[1 1 -2 4 11 -45 -50 0];
% rezolvarea ecuatiei in C
rad=roots(c);
% extragerea solutiilor cu partea reala >0
j=1;
for i=1:length(rad)
if real(rad(i))>0
sol(j)=rad(i); j=j+1;
end
end
disp('Solutiile care au partea reala strict pozitiva: ')
sol
În urma execuţiei secvenţei de mai sus se obţine:
Solutiile care au partea reala strict pozitiva:
sol = 2.0000
1.0000 + 2.0000i
1.0000 - 2.0000i

Exemplul 5.4: Să se rezolve următoarele ecuaţii algebrice:

ax − b
a) = e −a ,
ax + b
în raport cu necunoscuta x, respectiv în raport cu necunoscuta b;

ax 2 + 2b b
b) = , în raport cu necunoscuta x.
bx 2 − 2a a
Soluţie: Întrucât în cazul calculului simbolic Matlab returnează soluţia în cazul cel
mai favorabil, înainte de rezolvarea simbolică este necesară identificarea situaţiilor
de compatibilitate.

a) Discuţii:
‰ Ecuaţia în necunoscuta x prezintă următoarele puncte de discuţie:

(I.x) a=0 şi b=0 nu este un caz posibil (numitorul ecuaţiei fiind 0);

(II.x) a=0, b≠0 duc la o ecuaţie imposibilă –1=1;

(III.x) a≠0, b=0 nu este un caz posibil (ecuaţia devine: 1=e-a, ceea ce contrazice a≠0);

(IV.x) a≠0 şi b≠0. Se rezolvă ecuaţia. Pentru aceasta se execută următoarea secvenţă
Matlab:
Matematici Asistate de Calculator – L5 5

% definirea obiectelor simbolice


syms x a b;
% exprimarea membrului stang al ecuatiei adusa la forma
% f(x)=0
f=a*(exp(-a)-1)*x+b*(exp(-a)+1);
%rezolvarea ecuatiei se face implicit in raport cu variabila x
solx=solve(f)
În urma execuţiei secvenţei de mai sus, se obţine soluţia:
solx = -b*(exp(-a)+1)/a/(exp(-a)-1)

Trebuie verificat dacă pentru orice a≠0 şi orice b≠0, soluţia x îndeplineşte condiţia
ca numitorul a⋅x+b≠0. Se calculează:

2⋅b
a⋅x+b=
1 − e −a
care evident este nenul. Deci soluţia calculată este validă.

‰ În cazul necunoscutei b, există următoarele cazuri:


(I.b) a=0 sau x=0 duc la o ecuaţie imposibilă –1=e-a, adică –1>0, ceea ce este fals;
(II.b) trebuie verificat dacă, pentru a≠0 şi x≠0, soluţia b care se obţine nu anulează
numitorul ecuaţiei, adică a⋅x+b≠0.
Pentru obţinerea soluţiei, se execută următoarea secvenţă Matlab:
% definirea obiectelor simbolice
syms x a b;
% exprimarea membrului stang al ecuatiei adusa la forma
% f(x)=0
f=(a*x-b)/(a*x+b)-exp(-a);
% rezolvarea ecuatiei in raport cu variabila b
solb=solve(f,b)

Se obţine expresia simbolică:


solb = -a*x*(-1+exp(-a))/(1+exp(-a))
Se face verificarea a⋅x+b≠0:
2⋅a⋅ x
a⋅x+b= ,
1 + e −a
care este nenulă pentru orice a≠0 şi x≠0. Deci, expresia simbolică obţinută
reprezintă soluţia.

b) Discuţii:
(I) a nu poate fi zero;
(II) în cazul b=0 ecuaţia are o singură soluţie, x=0;
(III) pentru a=b sau a=-b, b≠0, se obţine o ecuaţie imposibilă, care se reduce la
a=-a, ceea ce nu este posibil, a neputând fi 0;
(IV) în rest, se determină soluţiile ecuaţiei, executând următoarea secvenţa Matlab:
% definirea obiectelor simbolice
Matematici Asistate de Calculator – L5 6

syms x a b;
% exprimarea membrului stang al ecuatiei adusa la forma
% f(x)=0
f=(a*x^2+2*b)/(b*x^2-2*a)-b/a;
% rezolvarea ecuatiei in raport cu variabila x
solx=solve(f,x)

Se obţin soluţiile:
solx =
2/(a^2-b^2)*(-(a^2-b^2)*a*b)^(1/2)
-2/(a^2-b^2)*(-(a^2-b^2)*a*b)^(1/2)

Comentarii. 1 Dacă expresia de sub radical, (-a2+b2)⋅a⋅b, este strict negativă, cele
două soluţii ale ecuaţiei sunt numere complexe;
2. Se verifică uşor că numitorul b⋅x2-2⋅a nu se anulează pentru soluţiile
obţinute.

Exemplul 5.5: Se consideră matricea pătratică de ordinul 3:

⎡ 13 − 10 12 ⎤
A = ⎢⎢− 11 14 10 ⎥⎥
⎢⎣ 0 12 − 13⎥⎦
Să se determine:
a) valorile proprii ale matricei A;
b) pentru fiecare valoare proprie a lui A câte un vector propriu unitar;
c) valorile singulare ale matricei A;
d) numărul de condiţionare în raport cu inversarea al matricei A.
Soluţie: Se execută următoarea secvenţă de program Matlab:
clear, clc

A=[13 -10 12; -11 14 10; 0 12 -13];


disp('valorile proprii ale lui A:')
lambda=eig(A)
% determinarea vectorilor proprii unitari
[vec,val]=eig(A);
for i=1:3
disp(['vectorul propriu unitar corespunzator valorii '...
'proprii ' num2str(lambda(i)) ': '])
disp(vec(:,i))
end

% calculul valorilor singulare


disp(blanks(1)')
disp('Valorile singulare ale lui A:')
val_sing=svd(A)

% calculul numarului de conditionare


disp(blanks(1)')
disp(['Numarul de conditionare in raport cu '...
Matematici Asistate de Calculator – L5 7

'inversarea al lui A'])


nr=cond(A)
În urma executării secvenţei de mai sus, se obţine:
valorile proprii ale lui A:
lambda =
23.5829
9.2073
-18.7902
vectorul propriu unitar corespunzator valorii proprii 23.5829:
-0.4782
0.8345
0.2737
vectorul propriu unitar corespunzator valorii proprii 9.2073:
-0.6320
-0.6818
-0.3684
vectorul propriu unitar corespunzator valorii proprii -
18.7902:

-0.4303
-0.3923
0.8130

Valorile singulare ale lui A:


val_sing =
26.8248
18.9470
8.0275

Numarul de conditionare in raport cu inversarea al lui A


nr = 3.3416

Comentarii: 1. Funcţia Matlab num2str converteşte un număr în şirul de caractere


format din cifrele şi punctul zecimal al numărului respectiv.
2. Apelul disp(blanks(n)’), unde n este un număr natural nenul,
determină afişarea a n linii goale.

Exemplul 5.6: Să se rezolve următorul sistem de ecuaţii liniare:

⎧ x1 + 0.5 ⋅ x 2 + 0.3333 ⋅ x3 + 0.25 ⋅ x 4 = 0.1


⎪0.5 ⋅ x + 0.3333 ⋅ x + 0.25 ⋅ x + 0.2 ⋅ x = 0
⎪ 1 2 3 4

⎪0.3333 ⋅ x1 + 0.25 ⋅ x 2 + 0.2 ⋅ x3 + 0.1667 ⋅ x 4 = 0.1
⎪⎩0.25 ⋅ x1 + 0.2 ⋅ x 2 + 0.1667 ⋅ x3 + 0.1429 ⋅ x 4 = 0

Este acest sistem bine condiţionat sau slab condiţionat? Să se compare soluţia
obţinută cu soluţia următorului sistem:
Matematici Asistate de Calculator – L5 8

⎧ x1 + 0.5 ⋅ x 2 + 0.3333 ⋅ x3 + 0.25 ⋅ x 4 = 0.1


⎪0.5 ⋅ x + 0.3333 ⋅ x + 0.25 ⋅ x + 0.2 ⋅ x = 0
⎪ 1 2 3 4

⎪ 0 . 3333 ⋅ 1+
x 0 . 25 ⋅ 2+
x 0 . 2 ⋅ 3+
x 0 . 1667 ⋅ x 4 = 0 .1
⎪⎩0.25 ⋅ x1 + 0.2 ⋅ x 2 + 0.1667 ⋅ x3 + 0.1436 ⋅ x 4 = 0

Soluţie: Se poate observa că al doilea sistem a fost obţinut din primul sistem, la
care s-a modificat coeficientul din a 4-a ecuaţie corespunzător necunoscutei x4. Prin
urmare, matricea coeficienţilor celui de-al doilea sistem se poate obţine prin
înlocuirea elementului de pe linia 4 – coloana 4 cu noua valoare.
Totodată este mai comod să se introducă liniile matricei coeficienţilor pe linii de cod
separate. În acest caz, separatorul de linii ale matricei este ENTER, în locul
separatorului obişnuit „;”.
Se execută următoarea secvenţă Matlab:
% matricea coeficientilor
A=[ 1 0.5 0.3333 0.25
0.5 0.3333 0.25 0.2
0.3333 0.25 0.2 0.1667
0.25 0.2 0.1667 0.1429];
% vectorul termenilor liberi
b=[0.1; 0; 0.1; 0];
% solutia sistemului
x=A\b
% numarul de conditionare al lui A
nr_cond=rcond(A)

% matricea coeficientilor sistemului 2


A1=A; A1(4,4)=0.1436;
% solutia sistemului 2
x1=A1\b

% compararea solutiilor
dif=abs(x-x1)
În urma executării secvenţei de mai sus, se obţine:
x = 32.8794
-360.8831
858.5994
-554.0360
nr_cond =
2.7586e-005

x1 = 12.2531
-119.2262
261.8065
-159.2004
dif = 20.6263
241.6569
596.7930
394.8356

Se observă că numărul de condiţionare al matricei A este apropiat de zero. Deci,


Matematici Asistate de Calculator – L5 9

sistemul este slab condiţionat. Aceeaşi observaţie rezultă şi din compararea soluţiilor
celor două sisteme: la o mică modificare a unui coeficient al matricei A – modulul
diferenţei între valorile care diferă este 7·10-4 – se obţine o modificare mare a soluţiei
– de exemplu, pentru necunoscuta x3 modulul diferenţei este de peste 500.

5.3. Probleme de rezolvat

P5.1. Să se rezolve ecuaţiile algebrice:


a) 2·x5-3·x4+3·x2-10·x-8=0, în C;

b) 2 ⋅ x + 1 − x 2 + 1 = x 2 + 3 ⋅ x + 2 , în R.
P5.2. Să se scrie un program care primeşte ca argument vectorul coeficienţilor unei
ecuaţii algebrice şi returnează vectorul soluţiilor reale ale ecuaţiei.
P5.3. Să se scrie un program care primeşte ca argument vectorul coeficienţilor unei
ecuaţii algebrice şi returnează vectorul soluţiilor complexe de modul supraunitar.
P5.4. Să se rezolve în R următoarea ecuaţie algebrică în necunoscuta x:
n
m−x+ = m ⋅ x + 1.
x
P5.5. Se consideră matricea:
⎡1 − 1⎤
A=⎢ ⎥
⎣3 2 ⎦
Să se determine valorile proprii ale matricei. Câţi vectori proprii corespund fiecărei
valori proprii determinate? Să se afişeze minimum câte trei vectori proprii pentru
fiecare valoare proprie determinată.
P5.6. Să se scrie un program care primeşte ca argument o matrice pătratică şi care
returnează valoarea singulară minimă, valoarea singulară maximă şi numărul de
condiţionare în raport cu inversarea al matricei.
P5.7. Să se stabilească dacă următoarele sisteme sunt bine condiţionate sau slab
condiţionate:

⎧2 x1 − 3 x 2 = 7

a) ⎨− 6 x1 + 8 x 2 − x3 = −5
⎪3x + 4 x = 1
⎩ 2 3

⎧190 ⋅ x + 7 ⋅ y = 4
b) ⎨
⎩2 ⋅ x + 200 ⋅ y = -2
Matematici Asistate de Calculator – L5 10

5.4. Întrebări recapitulative

Î5.1. Definiţi noţiunea de „ecuaţie algebrică (în necunoscuta x)”.


Î5.2. Cum se defineşte în Matlab o ecuaţie algebrică?
Î5.3. Definiţi noţiunile de „valoare proprie” şi „vector propriu” pentru o matrice
pătratică.
Î5.4. Câţi vectori proprii corespund unei valori proprii? Argumentaţi răspunsul.
Î5.5. Ce proprietate au vectorii proprii returnaţi de funcţia Matlab eig?
Î5.6. Definiţi noţiunile de „polinom caracteristic” şi „ecuaţie caracteristică” pentru o
matrice pătratică.
Î5.7. Definiţi noţiunile de „spectru” şi „rază spectrală” pentru o matrice pătratică.
Î5.8. Definiţi noţiunea de „valoare singulară” pentru o matrice pătratică.
Î5.9. Definiţi noţiunea de „număr de condiţionare în raport cu inversarea” pentru o
matrice pătratică.
Î5.10. Ce se înţelege prin „sistem de ecuaţii liniare bine condiţionat”? Dar prin
„sistem de ecuaţii liniare slab condiţionat”?
Matematici Asistate de Calculator – L5 11

ANEXA M5. ELEMENTE DESPRE REZOLVAREA


ECUA IILOR ALGEBRICE. ELEMENTE DESPRE
VALORI PROPRII ŞI VECTORI PROPRII

M5.1. Ecua ii algebrice

Se numeşte ecuaţie algebrică (în necunoscuta x) o ecuaţie de forma:


f(x) = 0
unde f este un polinom nenul, sau o ecuaţie reductibilă (prin operaţii algebrice) la
aceasta.
Dacă polinomul f este de grad n, se spune că gradul ecuaţiei algebrice este
n.
Rădăcinile polinomului f se numesc soluţiile ecuaţiei algebrice f(x)=0.

De obicei interesează determinarea soluţiilor reale ale unei ecuaţii algebrice.

M5.2. Valori proprii. Vectori proprii

Fie A o matrice pătratică de ordinul n cu elemente reale sau complexe.


Un număr λ∈C se numeşte valoare proprie a matricei A dacă există un
vector n-dimensional x (x∈Rn sau x∈Cn), nenul, astfel încât:
A⋅x=λ⋅x

În acest caz, vectorul nenul x se numeşte vector propriu al matricei A asociat


valorii proprii λ.

Relaţia de mai sus poate fi scrisă şi sub forma:


(A - λ ⋅In) ⋅ x = 0
Ultima relaţie reprezintă forma matriceală a unui sistem de ecuaţii liniare omogene.
Întrucât din definiţia vectorului propriu rezultă că acest sistem admite şi soluţii
nebanale, el este un sistem compatibil nedeterminat. Deci sistemul are o infinitate de
soluţii, ceea ce duce la concluzia că unei valori proprii îi corespund o infinitate de
vectori proprii. Determinantul sistemului este:
det(A - λ ⋅In) = 0
Ecuaţia det(A - λ ⋅In) = 0 reprezintă o ecuaţie algebrică în necunoscuta λ şi se numeşte
ecuaţia caracteristică a matricei A. Polinomul de grad n, Pn(λ) = det(A - λ ⋅In),
poartă denumirea de polinom caracteristic al matricei A.
Matematici Asistate de Calculator – L5 12

Mulţimea tuturor valorilor proprii ale lui A se numeşte spectrul matricei A şi


se notează σ(A). Numărul ρ ( A) = max λ se numeşte raza spectrală a matricei A.
λ∈σ ( A )

Vectorii proprii asociaţi la două valori proprii distincte sunt liniar


independenţi. Dacă matricea A de ordin n are n vectori proprii liniar independenţi,
atunci ea se numeşte matrice simplă sau matrice nedefectivă. În caz contrar,
matricea A se numeşte matrice defectivă.

Valori singulare
Teoremă. Dacă A este o matrice pătratică de ordinul n, atunci există matricele
ortogonale pătratice de ordinul n, U şi V, şi o matrice diagonală Σ de ordinul n cu
elemente pozitive, care satisfac relaţia:
A = U ⋅Σ ⋅ VT
Elementele diagonale ale matricei Σ se numesc valorile singulare ale matricei A.
Câteva proprietăţi ale valorilor singulare sunt:
1. Rangul matricei A este egal cu numărul valorilor singulare nenule.
2. Valorile singulare ale matricei A sunt rădăcinile pătrate ale valorilor proprii
ale matricei simetrice AT⋅A.

Număr de condi ionare


Raportul dintre cea mai mare valoare singulară nenulă şi cea mai mică valoare
singulară nenulă ale matricei A se numeşte numărul de condiţionare în raport cu
inversarea al matricei A.
Numărul de condiţionare al unei matrice A caracterizează sensibilitatea unui
sistem de ecuaţii liniare pentru care A este matricea coeficienţilor.
Se spune că un sistem de ecuaţii liniare este slab condiţionat dacă mici
modificări ale coeficienţilor sistemului duc la modificări mari ale soluţiei. În caz
contrar, se spune că sistemul este bine condiţionat. Dacă numărul de condiţionare
al matricei coeficienţilor unui sistem de ecuaţii liniare este mare, sistemul este slab
condiţionat.
Matematici Asistate de Calculator – L6 1

6. REZOLVAREA ECUA IILOR


TRANSCENDENTE

Obiectivele lucrării:
• însuşirea unui mod de studiu al ecuaţiilor transcendente, în vederea
rezolvării lor, folosind mediul Matlab,
• recapitularea anumitor proprietăţi ale unor funcţii matematice elementare,
• fixarea de cunoştinţe privitoare la rezolvarea ecuaţiilor transcendente, atât pe
cale numerică, cât şi pe cale simbolică, folosind mediul de programare
Matlab,
prin studierea unor exemple şi prin rezolvarea unor probleme.
Se recomandă parcurgerea anexei M6 înaintea studierii paragrafelor 6.1 şi 6.2.

6.1. Elemente despre rezolvarea ecua iilor transcendente în


Matlab
Fie ecuaţia transcendentă:
f(x) = 0 (f:I⊆R → R)
Rezolvarea acestei ecuaţii în Matlab necesită parcurgerea celor două etape
precizate în anexa M6.

Separarea (localizarea soluţiilor)


În prima etapă se localizează soluţiile fie în vecinătatea unor valori
aproximative ale acestora, fie în subintervale care conţin câte o soluţie.
Pentru localizarea soluţiilor se foloseşte metoda grafo-analitică. În acest scop,
se rescrie ecuaţia sub forma:
g(x) = h(x)
Dacă intervalul I nu este cunoscut apriori, atunci el este determinat în
funcţie de domeniile de definiţie şi imaginile funcţiilor g şi h, precum şi pe baza
proprietăţilor lor de monotonie, periodicitate şi continuitate.
În continuare, se reprezintă grafic funcţiile g şi h pe intervalul I.
De pe grafic se pot "citi" punctele de intersecţie ale graficelor celor două
funcţii cu mouse-ul folosind funcţia Matlab ginput, cu una din sintaxele de apel:
[x,y] = ginput
[x,y] = ginput(n)
unde:
- x este un vector care conţine abscisele punctelor "citite" de pe grafic
Matematici Asistate de Calculator – L6 2

- y este un vector care conţine ordonatele punctelor "citite" de pe grafic


- n este numărul punctelor "citite" de pe grafic.
În primul caz, efectuarea "citirii" punctelor se încheie prin apăsarea tastei ENTER.
În al doilea caz, încheierea "citirii" punctelor se face automat după "citirea" celui de-
al n-lea punct.
Valorile conţinute de vectorul x reprezintă valorile aproximative de la care se
porneşte calculul soluţiilor cu o precizie apriori fixată.
Este foarte important ca "citirea" de pe grafic a unui punct de intersecţie să
se facă cât mai exact, pentru a minimiza eroarea de determinare a soluţiei - care
reprezintă abscisa punctului de intersecţie - şi timpul de calcul al soluţiei.
Descompunerea g(x) = h(x) nu este unică. Ca urmare, de la caz la caz,
problema localizării poate fi reluată în diferite variante.

Calculul soluţiilor cu o precizie apriori fixată


Pentru calculul soluţiilor este necesară definirea în prealabil a funcţiei f,
într-un fişier-funcţie.
Calculul fiecărei soluţii a ecuaţiei transcendente se face folosind funcţia
Matlab fzero. Aceasta implementează o metodă de calcul numeric care se bazează
pe o combinaţie a metodelor bisecţiei, secantei şi a unei metode de interpolare a
funcţiilor.

În funcţie de scopul urmărit pot fi folosite următoarele sintaxe de apel ale


funcţiei fzero:
• dacă interesează doar determinarea soluţiei, se foloseşte una din sintaxele de
apel:
x = fzero(nume_fisier,x0)
x = fzero(nume_fisier,x0,optiuni)
• dacă în afară de determinarea soluţiei interesează şi evaluarea funcţiei f pentru
soluţia găsită, se apelează funcţia cu una din sintaxele:
[x,fval]= fzero(nume_fisier,x0)
[x,fval]= fzero(nume_fisier,x0,optiuni)
• dacă interesează şi cauza opririi executării metodei numerice, se foloseşte una
din sintaxele de apel:
[x,fval,exitflag]= fzero(nume_fisier,x0)
[x,fval,exitflag]= fzero(nume_fisier,x0,optiuni)
• dacă interesează şi anumite date suplimentare, precum numărul de iteraţii
efectuate, se apelează funcţia cu una din sintaxele:
[x,fval,exitflag,output]= fzero(nume_fisier,x0)
[x,fval,exitflag,output]= fzero(nume_fisier,x0,optiuni)
unde:
- nume_fisier reprezintă un şir de caractere care conţine numele fişierului-
funcţie în care a fost definită funcţia f ;
Matematici Asistate de Calculator – L6 3

- x0 reprezintă valoarea aproximativă a soluţiei căutate, sau un vector care


conţine capetele subintervalului în care a fost localizată soluţia, a şi b, astfel
încât f(a)·f(b)<0;
- optiuni reprezintă o structură care conţine opţiuni de optimizare a
calculării soluţiei; este un argument opţional; opţiunile de optimizare pot fi
schimbate folosind funcţia Matlab optimset; funcţia optimset primeşte un
număr par de argumente, sub formă de perechi nume parametru opţiune –
valoare opţiune; de exemplu, setarea preciziei de calcul a soluţiei, memorată
în parametrul Matlab TolX, se poate face prin comanda Matlab:
optiuni=optimset('TolX',valoare_precizie)
- x reprezintă soluţia calculată cu o precizie apriori fixată (fie precizia
implicită, fie una stabilită prin intermediul funcţiei optimset);
- fval reprezintă valoarea funcţiei f pentru soluţia calculată x;
- exitflag reprezintă o valoare de control, care este strict pozitivă în cazul în
care a fost găsită o soluţie, sau strict negativă în caz contrar;
- output reprezintă o structură care conţine următoarele informaţii: numărul
de iteraţii (iterations), numărul de evaluări (funcCount) efectuate, precum şi
algoritmii utilizaţi pentru determinarea soluţiei (algorithm).

Matlab poate fi utilizat şi pentru rezolvarea ecuaţiilor transcendente cu


parametri. În acest scop se foloseşte toolbox-ul Symbolic Math, care a fost prezentat
pe scurt în paragraful 4.1.

6.2. Exemple de studiat

Exemplul 6.1: Să se determine o soluţie în jurul valorii -0.5 cu precizia 10-10


pentru ecuaţia transcendentă:

3
⎛x ⎞
sin (x ) + ⎜ − 0.5 ⎟ + 1 = 0
⎝3 ⎠
Totodată să se determine şi numărul de iteraţii efectuate.
Soluţie: Deoarece se specifică valoarea cu care se porneşte căutarea soluţiei, nu mai
este necesar să se parcurgă o etapă de localizare a soluţiei; se trece direct la etapa
de calcul a soluţiei. În acest scop, se defineşte mai întâi membrul stâng al ecuaţiei
într-un fişier funcţie (de exemplu, ectrans1.m):
function f=ectrans1(x)
f=sin(x)+(x/3-0.5).^3+1;
După definirea membrului stâng se execută următoarea secvenţă de program
Matlab (de exemplu, fişier script):
% setarea preciziei de calcul
options=optimset('Tolx',10^(-10));
% calcularea solutiei
[x,fval,exitflag,output]=fzero('ectrans1',-0.5,options);
Matematici Asistate de Calculator – L6 4

% solutia
x

% numarul de iteratii
iter=output.iterations
În urma execuţiei secvenţei de mai sus se obţine:
x = -0.6704
iter = 4
S-a obţinut soluţia x=-0.6704 după 4 iteraţii efectuate.
Comentariu: Pentru a accesa un membru al structurii options se foloseşte
construcţia options.nume_membru.

Exemplul 6.2: Să se găsească o soluţie aproximativă din intervalul [–0.5,0.5]


a ecuaţiei transcendente:
(x − 1)4 − tg (x ) = 0
Soluţie:
1. Se parcurge etapa de separare a soluţiilor pentru a determina dacă în intervalul
cerut există o unică soluţie. În acest sens, se reprezintă grafic funcţia din membrul
stâng al ecuaţiei pe intervalul cerut şi se determină câte puncte de intersecţie ale
graficului său cu axa Ox există (g(x)=h(x), cu g(x)=f(x) şi h(x)=0):

>> x=-0.5:0.1:0.5;
>> plot(x,(x-1).^4-tan(x),x,zeros(size(x)))
Graficul este redat în figura 6.1.

-1
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5

Fig.6.1. Graficul funcţiei din membrul stâng al ecuaţiei din exemplul 6.2.

Se observă că în acest interval se află o singură soluţie a ecuaţiei.


Matematici Asistate de Calculator – L6 5

2. Pentru determinarea soluţiei, se defineşte funcţia din membrul stâng al ecuaţiei


într-un fişier funcţie:
function f=ectrans2(x)
f= (x-1).^4-tan(x);
Pentru a stabili dacă este necesară „citirea” de pe grafic a unei valori aproximative a
soluţiei, sau dacă se poate folosi doar intervalul cerut pentru căutarea acesteia, se
verifică dacă funcţia din membrul stâng al ecuaţiei are semne diferite în cele două
capete ale intervalului:
>> ectrans2(-0.5)
ans = 5.6088
>> ectrans2(0.5)
ans = -0.4838
Se observă că funcţia are semne diferite în cele două capete ale intervalului. Prin
urmare, se poate proceda direct la determinarea soluţiei, prin comanda:
>> x=fzero('ectrans2',[-0.5,0.5])
Se obţine soluţia:
x = 0.2728

Exemplul 6.3: Să se rezolve ecuaţia transcendentă:

cos(π ⋅ x + 0.5) − 2 x + 2.5 = 0


Soluţie.:
1. Pentru a localiza soluţiile ecuaţiei, se rescrie ecuaţia sub forma:
2x = cos(π·x+0.5) + 2.5

Pentru a reprezenta grafic cele două funcţii trebuie determinate intervalele de


reprezentare, atât pe axa Ox cât şi pe axa Oy. Acestea se deduc din proprietăţile
celor două funcţii. Astfel, funcţia din membrul stâng este funcţia exponenţială cu
baza 2 şi are proprietăţile: este definită pe R, este strict crescătoare, continuă,
imaginea funcţiei este intervalul (0,∞). Funcţia din membrul drept este definită pe
R, este periodică de perioadă 2, continuă, mărginită, imaginea funcţiei este
intervalul [1.5,3.5].

Din proprietăţile menţionate deducem că cele două funcţii au sigur cel puţin un
punct de intersecţie al graficelor, având ordonata în intervalul [1.5,3.5]. Limitele
reprezentării grafice pe axa Oy trebuie să cuprindă acest interval, iar limitele pe axa
Ox trebuie să cuprindă un interval cât mai mic [a,b] cu 2a≤1.5 şi 2b≥3.5 (de
exemplu, a=0 şi b=2 ).

Se generează graficele, folosind următoarea secvenţă Matlab:


% intervalul de reprezentare grafica
x=0:0.05:2;
Matematici Asistate de Calculator – L6 6

% reprezentarea grafica a celor doua functii


plot(x,2.^x,'b',x,cos(pi*x+0.5)+2.5,'r:')
% stabilirea limitelor de reprezentare
axis([0 2 1 4])

Graficele sunt redate în figura 6.2.

3.5

2.5

1.5

1
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Fig.6.2. Graficele funcţiilor din exemplul 6.3.

Se observă din grafic că există trei puncte de intersecţie a graficelor celor două
funcţii. Coordonatele punctelor de intersecţie pot fi „citite” de pe grafic cu funcţia
Matlab ginput:
[x0,y0]=ginput

sau
[x0,y0]=ginput(3)

După citirea coordonatelor punctului cu mouse-ul de pe grafic (primul mod de citire


necesită apăsarea tastei ENTER după citirea celui de-al treilea punct), se obţine:

x0 = 0.6889 1.3618 1.7995


y0 = 1.6360 2.5658 3.4868

2. Înainte de a calcula soluţiile, se defineşte membrul drept al ecuaţiei iniţiale (sub


forma f(x)=0) într-un fişier funcţie:
function f=ectrans3(x)
f=cos(pi*x+0.5)-2.^x+2.5;

Soluţiile se determină apelând funcţia Matlab fzero de 3 ori, pentru fiecare soluţie
transmiţând ca valoare de pornire valoarea x0(i) corespunzătoare:
Matematici Asistate de Calculator – L6 7

sol1=fzero('ectrans3',x0(1))
sol2=fzero('ectrans3',x0(2))
sol3=fzero('ectrans3',x0(3))

Se obţin soluţiile:

sol1 = 0.6888
sol2 = 1.3650
sol3 = 1.8047

Exemplul 6.4: Să se rezolve ecuaţia transcendentă:


a ⋅ cos(u − v ) + b ⋅ sin(u + v ) = 0 ,
în raport cu necunoscuta u.
Soluţie: Întrucât în cazul calculului simbolic Matlab returnează soluţia în cazul cel
mai favorabil, înainte de rezolvarea simbolică este necesară identificarea situaţiilor
de compatibilitate.

Discuţii:
(I) dacă a=0 şi b=0, ecuaţia devine 0=0, deci soluţia este u∈R;
(II) dacă a≠0 şi b=0, ecuaţia devine a⋅cos(u-v)=0, care are o infinitate de soluţii;
acestea se obţin cu formula:
π
uk = v+ (2 ⋅ k + 1) ⋅ , k∈Z;
2
(III) dacă a=0 şi b≠0, ecuaţia devine b⋅sin(u+v)=0, care are o infinitate de soluţii,
obţinute cu formula:
uk = -v+k·π, k∈Z;
(IV) dacă a≠0 şi b≠0, se execută următoarea secvenţă Matlab, urmând ca discuţia
să se continue în funcţie de rezultatul returnat de Matlab:
% definirea obiectelor simbolice
syms a b u v;
% definirea membrului stang al ecuatiei scrisa sub forma
% f(x)=0
f=a*cos(u-v)+b*sin(u+v);
% rezolvarea ecuatiei in cazul cel mai favorabil
solu=simplify(solve(f,u))

Se obţine expresia:
solu = v-atan((a+b*sin(2*v))/cos(2*v)/b)
Discuţia continuă în funţie de valorile numitorului expresiei obţinute:
(IV.1) dacă cos(2·v) ≠0, atunci soluţiile ecuaţiei sunt:

⎛ a + b ⋅ sin( 2 ⋅ v ) ⎞
u k = v − arctg ⎜⎜ ⎟⎟ + k ⋅ π , k ∈ Z
⎝ b ⋅ cos( 2 ⋅ v ) ⎠
(IV.2) dacă cos(2·v) =0, distingem următoarele cazuri, în funcţie de semnele
sinusului şi a cosinusului parametrului v, cazuri ce pot fi tratate prin cod Matlab:
Matematici Asistate de Calculator – L6 8

ff=expand(f);

% (a) sin(v)=sqrt(2)/2, cos(v)=sqrt(2)/2


ffa=subs(ff,sin(v),sqrt(2)/2);
ffa=subs(ffa,cos(v),sqrt(2)/2);
solu_a=solve(ffa,u)

% (b) sin(v)=sqrt(2)/2, cos(v)=-sqrt(2)/2


ffb=subs(ff,sin(v),sqrt(2)/2);
ffb=subs(ffb,cos(v),-sqrt(2)/2);
solu_b=solve(ffb,u)

% (c) sin(v)=-sqrt(2)/2, cos(v)=-sqrt(2)/2


ffc=subs(ff,sin(v),-sqrt(2)/2);
ffc=subs(ffc,cos(v),-sqrt(2)/2);
solu_c=solve(ffc,u)

% (d) sin(v)=-sqrt(2)/2, cos(v)=sqrt(2)/2


ffd=subs(ff,sin(v),-sqrt(2)/2);
ffd=subs(ffd,cos(v),sqrt(2)/2);
solu_d=solve(ffd,u)

Executând secvenţa Matlab de mai sus se obţine:


solu_a = -1/4*pi
solu_b = 1/4*pi
solu_c = -1/4*pi
solu_d = 1/4*pi
Prin urmare s-au obţinut soluţiile:
π
uk = + k ⋅π , k ∈ Z ,
4
respectiv,
π
uk = − + k ⋅π , k ∈ Z .
4

6.3. Probleme de rezolvat

P6.1. Să se rezolve ecuaţiile transcendente:

a) x2-3=sin(x)+ x (Se va determina soluţia în vecinătatea valorii x0=1.)

− x2 x2
b) e = ln( 1 − x + ) (Se va determina soluţia în vecinătatea x0=-3, cu precizia
3
10-6. Să se afişeze şi numărul de iteraţii efectuate.)

c) 2 − sin( x ) + 4 − x ⋅ ln( x ) = 0 (Se va determina soluţia din intervalul [3.1,5]. Se va


verifica în prealabil dacă în acest interval a fost separată o soluţie.)

d) (x − 3)2 + 5 − cos ( x ) = 0 (Se va determina soluţia dintr-un interval la alegere.)


Matematici Asistate de Calculator – L6 9

P6.2. Câte soluţii are ecuaţia de mai jos? Să se determine două soluţii de valori
absolute distincte:

e cos( x ) = sin( x) + 1 .
P6.3. Să se rezolve ecuaţia în necunoscuta x:

2 ⋅ b ⋅ cos 2 ( x ) + 2 ⋅ a ⋅ sin ( x ) ⋅ cos( x ) = p ⋅ a 2 + b 2 + b, a ≠ 0


Indicaţie: Pentru simplificarea expresiilor simbolice se pot folosi comenzile Matlab
simple, simplify.

6.4. Întrebări recapitulative

Î6.1. Definiţi noţiunea de „ecuaţie transcendentă (în nedeterminata x)”.


Î6.2. Câte soluţii are o ecuaţie transcendentă?
Î6.3. Care sunt metodele pe care se bazează funcţia Matlab fzero?
Î6.4. Care sunt etapele de rezolvare ale unei ecuaţii transcendente?
Î6.5. Daţi exemplu de metodă care se poate folosi pentru etapa de localizare a
soluţiilor unei ecuaţii transcendente.
Î6.6. Precizaţi expresia, domeniul de definiţie, imaginea şi câteva proprietăţi ale
funcţiei putere.
Î6.7. Precizaţi expresia, domeniul de definiţie, imaginea şi câteva proprietăţi ale
funcţiei arctangentă.
Matematici Asistate de Calculator – L6 10

ANEXA M6. ELEMENTE DESPRE REZOLVAREA


ECUA IILOR TRANSCENDENTE

M6.1. Ecua ii transcendente

Se numeşte ecuaţie transcendentă (în necunoscuta x) orice ecuaţie


f(x) = 0 (f : I⊆R → R)
care nu este o ecuaţie algebrică.
A rezolva ecuaţia de mai sus este echivalent cu a determina zerourile funcţiei
f.
O ecuaţie transcendentă poate avea un număr finit de soluţii, o infinitate de
soluţii sau nici o soluţie.

Rezolvarea ecuaţiilor transcendente cu ajutorul metodelor numerice


presupune parcurgerea următoarelor două etape:
I. separarea (localizarea) soluţiilor, adică descompunerea intervalului de
căutare I într-o partiţie de subintervale, astfel încât fiecare subinterval să
conţină cel mult o soluţie;
II. calculul soluţiilor cu o precizie apriori fixată, de obicei pornind de la
valori aproximative ale acestora.
Parcurgerea primei etape se poate face prin diferite metode, de exemplu, prin
metoda grafo-analitică. Această metodă se bazează pe rescrierea ecuaţiei
transcendente sub forma g(x) = h(x), g,h:I→R, reprezentarea grafică a celor două
funcţii g şi h şi folosirea proprietăţilor lor de monotonie, periodicitate şi continuitate.
Soluţiile ecuaţiei transcendente reprezintă abscisele punctelor de intersecţie ale
graficelor funcţiilor g şi h. Nu există „reţete” pentru descompunerea f(x)=g(x)-h(x);
descompunerea se bazează pe abilitatea şi experienţa utilizatorului. „Experienţa”
înseamnă printre altele cunoaşterea aspectelor de la punctul M6.2 de mai jos.

M6.2. Câteva proprietă i ale unor func ii elementare

Tabelul M6.1. sintetizează anumite proprietăţi ale unor funcţii elementare.


Matematici Asistate de Calculator – L6 11

Tabelul M6.1. Proprietăţi ale unor funcţii elementare.


Numele Expresia Domeniul de
Imaginea Proprietă i
func iei func iei (f(x)) defini ie
funcţia f(x)=x R R o strict crescătoare
identitate
o continuă
o graficul este prima
bisectoare
funcţia afină f(x)=a·x+b, R R o strict crescătoare, dacă
a,b∈R, a≠0 a>0; strict descrescătoa-
re, dacă a<0
o continuă
o graficul este o dreaptă
funcţia f(x)=a·x2+b·x+c, R ⎡ Δ ⎞ o nu este monotonă,
polinomială
a,b,c∈R, a≠0 ⎢⎣− 4 ⋅ a , ∞ ⎟⎠ , decât pe porţiuni
de gradul al
dacă a>0 / o continuă
doilea
o graficul este o parabolă
⎛ Δ ⎤ Δ ⎞
⎜ − ∞ ,− ⎛ b
4 ⋅ a ⎥⎦ cu vârful ⎜ − ,−
, ⎟
⎝ ⎝ 2⋅a 4⋅a ⎠
dacă a<0,
Δ=b2-4·a·c
funcţia f(x)=x3 R R o strict crescătoare
polinomială
o continuă
de gradul al
treilea
funcţia f(x)= n x sau [0,∞) pentru f, [0,∞) pentru f, o strict crescătoare
radical
2⋅n −1 R pentru g R pentru g o continuă
g(x)= x,
n∈N, n≥2
funcţia putere f(x)=xa, (0,∞) (0,∞) o strict crescătoare, dacă
a>0; strict
a∈R*
descrescătoare, dacă a<0
o continuă
funcţia f(x)=ax, R (0,∞) o strict crescătoare, dacă
exponenţială a>1; strict descrescătoa-
a∈R, a>0, a≠1
re, dacă a<1
o continuă
funcţia f(x)=loga(x), (0,∞) R o strict crescătoare, dacă
logaritmică a>1; strict descrescătoa-
a∈R, a>0, a≠1
re, dacă a<1
o continuă
funcţia sinus f(x)=sin(x) R [-1,1] o periodică (perioada 2·π)
o impară
o continuă
funcţia f(x)=cos(x) R [-1,1] o periodică (perioada 2·π)
cosinus
o pară
o continuă
Matematici Asistate de Calculator – L6 12

Tabelul M6.1. Proprietăţi ale unor funcţii elementare - continuare


Numele Expresia Domeniul de
Imaginea Proprietă i
func iei func iei (f(x)) defini ie
funcţia f(x)=tg(x) R-D, R o periodică (perioada π)
tangentă
⎧ π o nu este monotonă pe
⎨(2k + 1) domeniul de definiţie;
D= ⎩ 2 este strict crescătoare pe
k ∈ Z} fiecare subinterval
maximal
o nu este continuă pe
domeniul de definiţie;
este continuă pe fiecare
subinterval maximal
funcţia f(x)=ctg(x) R-D, R o periodică (perioada π)

{k ⋅ π
cotangentă
o nu este monotonă pe
domeniul de definiţie;
k ∈ Z}
D=
este strict des-
crescătoare pe fiecare
subinterval maximal
o nu este continuă pe
domeniul de definiţie;
este continuă pe fiecare
subinterval maximal
funcţia f(x)=arcsin(x) [-1,1] ⎡ π π⎤ o strict crescătoare
arcsinus ⎢⎣− 2 , 2 ⎥⎦ o continuă

funcţia f(x)=arccos(x) [-1,1] [0,π] o strict des-crescătoare


arccosinus
o continuă
funcţia f(x)=arctg(x) R ⎛ π π⎞ o strict crescătoare
arctangentă ⎜− , ⎟
⎝ 2 2⎠ o continuă

funcţia arc- f(x)=arcctg(x) R (0,π) o strict des-crescătoare


cotangentă
o continuă
funcţia modul f(x)=|x| R [0,∞) o nu este monotonă
o continuă
Matematici Asistate de Calculator – L7 1

7. REZOLVAREA SISTEMELOR DE ECUA II


NELINIARE. REZOLVAREA PROBLEMELOR DE
OPTIMIZARE

Obiectivele lucrării:
• fixarea de cunoştinţe privitoare la rezolvarea sistemelor de ecuaţii neliniare,
atât pe cale numerică, cât şi pe cale simbolică, folosind mediul de
programare Matlab,
• fixarea de cunoştinţe privitoare la rezolvarea problemelor de optimizare
folosind mediul de programare Matlab,
prin studierea unor exemple şi prin rezolvarea unor probleme.
Se recomandă parcurgerea anexei M7 înaintea studierii paragrafelor 7.1 şi 7.2.

7.1. Elemente despre rezolvarea sistemelor de ecua ii neliniare


în Matlab. Elemente despre rezolvarea problemelor de
optimizare în Matlab

Rezolvarea sistemelor de ecuaţii neliniare


Fie sistemul de ecuaţii neliniare (vezi anexa M7):

⎧f1(x1,x2,K,x n )= c1
⎪f (x ,x ,K,x )= c
⎪ 2 1 2 n 2

⎪LLLLLLLL
⎪⎩fn(x1,x2,K,x n )= cn

Pentru a rezolva acest sistem cu ajutorul mediului Matlab, el trebuie adus la


forma canonică:

⎧g1(x1,x2,K,x n )= 0
⎪g (x ,x ,K,x )= 0
⎪ 2 1 2 n

⎪LLLLLLLL
⎪⎩g n(x1,x2,K,x n )= 0

unde gi=fi–ci, i=1,2,...,n.

Un sistem de ecuaţii neliniare poate fi rezolvat în Matlab pe cale numerică


sau pe cale simbolică.
Matematici Asistate de Calculator – L7 2

a. Rezolvarea numerică a sistemelor de ecua ii neliniare


Pentru rezolvarea sitemelor de ecuaţii neliniare pe cale numerică se parcurg
etapele de separare şi rezolvare aproximativă menţionate în anexa M7.

În ceea ce priveşte etapa localizării, în cazul sistemelor de ecuaţii neliniare cu


două necunoscute:

⎧g1(x1,x2)= 0

⎩g2(x1,x2)= 0
se poate folosi metoda grafică. În acest scop se reprezintă grafic în plan mulţimea
punctelor care satisfac ecuaţia g1(x1,x2)= 0 şi mulţimea punctelor care satisfac
ecuaţia g2(x1,x2)= 0 . Coordonatele punctelor de intersecţie ale celor două grafice
reprezintă soluţiile sistemului de ecuaţii. Citirea acestora de pe grafic se poate face
cu funcţia Matlab ginput prezentată în paragraful 6.1. Deoarece citirea de pe grafic
se face cu o anumită eroare, coordonatele citite de pe grafic vor constitui valorile în
vecinătatea cărora sunt localizate soluţiile şi vor fi utilizate în a doua etapă ca valori
de pornire în determinarea soluţiei.

Cea de-a doua etapă are ca scop calculul soluţiei / soluţiilor din domeniul de
interes cu o precizie apriori fixată.
Pentru calculul soluţiilor este necesară definirea în prealabil într-un fişier-
funcţie a funcţiilor gi ca şi componente ale unei funcţii vectoriale.
Pentru calculul fiecărei soluţii a sistemului de ecuaţii neliniare, în
vecinătatea unui punct rezultat prin separare, se foloseşte funcţia Matlab fsolve
din toolbox-ul de optimizare (Optimization Toolbox). Această funcţie are mai multe
sintaxe de apel, analog funcţiei Matlab fzero (vezi paragraful 6.1):
• dacă interesează doar determinarea soluţiei, se foloseşte una din sintaxele de
apel:
x = fsolve(nume_fisier,x0)
x = fsolve(nume_fisier,x0,optiuni)
• dacă în afară de determinarea soluţiei interesează, din considerente de precizie,
şi evaluarea funcţiilor gi pentru soluţia găsită, se apelează funcţia cu una din
sintaxele:
[x,fval]= fsolve(nume_fisier,x0)
[x,fval]= fsolve(nume_fisier,x0,optiuni)
• dacă interesează şi modul în care s-a ajuns la oprirea executării metodei
numerice (rezolvare cu respectarea condiţiilor impuse, oprire prin atingerea
numărului maxim de iteraţii, etc), se foloseşte una din sintaxele de apel:
[x,fval,exitflag]= fsolve(nume_fisier,x0)
[x,fval,exitflag]= fsolve(nume_fisier,x0,optiuni)
• dacă interesează şi anumite date suplimentare, precum numărul de iteraţii
efectuate, se apelează funcţia cu una din sintaxele:
[x,fval,exitflag,output]= fsolve(nume_fisier,x0)
[x,fval,exitflag,output]= fsolve(nume_fisier,x0,optiuni)
Matematici Asistate de Calculator – L7 3

unde:
- nume_fisier reprezintă un şir de caractere care conţine numele fişierului-
funcţie în care au fost definite funcţiile gi ca şi componente ale unei funcţii
vectoriale;
- x0 reprezintă vectorul valorilor aproximative ale soluţiei căutate;
- optiuni reprezintă o structură care conţine opţiuni de optimizare a
calculării soluţiei; este un argument opţional; opţiunile de optimizare pot fi
schimbate folosind funcţia Matlab optimset (vezi paragraful 6.1);
- x reprezintă soluţia calculată cu o precizie apriori fixată, sub forma unui
vector;
- fval reprezintă valorile funcţiilor gi pentru soluţia calculată x;
- exitflag reprezintă o valoare de control, care precizează motivul opririi
algoritmului; de exemplu, valoarea 1 are semnificaţia că algoritmul a ajuns la
o soluţie în condiţiile impuse;
- output reprezintă o structură care conţine mai multe informaţii, printre care
şi numărul de iteraţii (iterations), numărul de evaluări (funcCount) efectuate
şi algoritmii utilizaţi pentru determinarea soluţiei (algorithm).

b. Rezolvarea simbolică a sistemelor de ecua ii neliniare


Pentru rezolvarea pe cale simbolică a sistemelor de ecuaţii neliniare, se
utilizează funcţia Matlab solve din Symbolic Math Toolbox, având sintaxele:
s=solve(eq_1,eq_2,...,eq_n)
s=solve(eq_1,eq_2,...,eq_n,var_1,var_2,...,var_n)
unde:
- eq_i reprezintă expresia membrului stâng al ecuaţiei i a sistemului, scrisă
între apostrofuri;
- var_1,var_2,...,var_n reprezintă necunoscutele sistemului, scrise între
apostrofuri;
- s este o structură, având ca membri vectori de valori; fiecare vector
corespunde unei necunoscute, având aceeaşi denumire cu aceasta, şi
conţine valorile obţinute pentru acea necunoscută în cazul fiecărei soluţii
găsite.

Avantajul rezolvării unui sistem de ecuaţii neliniare pe cale simbolică constă


în faptul că nu trebuie indicat nici un set de valori de pornire în calculul soluţiei,
iar valoarea soluţiei este determinată cu exactitate. Dezavantajul constă în faptul că
puţine sisteme pot fi rezolvate pe această cale.
Matematici Asistate de Calculator – L7 4

Rezolvarea problemelor de optimizare


Deoarece orice problemă de maximizare poate fi transformată într-o
problemă de minimizare prin schimarea semnului funcţiei obiectiv, se va considera
în continuare doar problema minimizării unei funcţii reale de una sau mai multe
variabile reale.
Matlab pune la dispoziţia utilizatorului mai multe funcţii de rezolvare a
problemelor de optimizare, grupate în toolbox-ul de optimizare (Optimization
Toolbox). Aceste funcţii implementează diverse metode numerice. Astfel:
o funcţia Matlab fminbnd foloseşte o combinaţie a metodelor secţiunii de
aur şi interpolare pătratică;
o funcţia Matlab fminunc are implementată o combinaţie de mai multe
metode, printre care metoda regiunii de încredere în model, metode cvasi-
Newton, metode de interpolare pătratică şi metode de interpolare cubică;
o funcţia Matlab fminsearch implementează metoda de căutare simplex.

Funcţia Matlab fminbnd caută minimul local al unei funcţii reale de o


variabilă reală, situat într-un interval deschis. Sintaxele de apel ale funcţiei
fminbnd sunt:
x = fminbnd(nume_fisier,a,b)
x = fminbnd(nume_fisier,a,b,optiuni)
[x,fval]= fminbnd(nume_fisier,a,b)
[x,fval]= fminbnd(nume_fisier,a,b,optiuni)
[x,fval,exitflag]= fminbnd(nume_fisier,a,b)
[x,fval,exitflag]= fminbnd(nume_fisier,a,b,optiuni)
[x,fval,exitflag,output]= fminbnd(nume_fisier,a,b)
[x,fval,exitflag,output]= fminbnd(nume_fisier,a,b,optiuni)
unde:
- nume_fisier reprezintă un şir de caractere care conţine numele fişierului-
funcţie în care a fost definită expresia funcţiei obiectiv;
- a, b reprezintă capetele intervalului deschis în care se caută minimul local;
- optiuni reprezintă o structură care conţine opţiuni de optimizare a
calculării soluţiei / soluţiilor; este un argument opţional; opţiunile de
optimizare pot fi schimbate folosind funcţia Matlab optimset (a se vedea
paragraful 6.1.);
- x reprezintă punctul de minim local;
- fval reprezintă valoarea funcţiei în punctul de minim local (minimul);
- exitflag reprezintă o valoare de control, care este 1 în caz că s-a ajuns la
minimul local;
- output reprezintă o structură care conţine următoarele informaţii: numărul
de iteraţii (iterations), numărul de evaluări (funcCount) efectuate, algoritmii
utilizaţi pentru determinarea soluţiei (algorithm) şi un mesaj de terminare
(message).
Matematici Asistate de Calculator – L7 5

Funcţiile Matlab fminunc şi fminsearch sunt folosite pentru rezolvarea


problemelor de minimizare fără restricţii. Sintaxele comune de apel ale ale celor
două funcţii sunt:
x = functie_Matlab(nume_fisier,x0)
x = functie_Matlab(nume_fisier,x0,optiuni)
[x,fval]= functie_Matlab(nume_fisier,x0)
[x,fval]= functie_Matlab(nume_fisier,x0,optiuni)
[x,fval,exitflag]= functie_Matlab(nume_fisier,x0)
[x,fval,exitflag]= functie_Matlab(nume_fisier,x0,optiuni)
[x,fval,exitflag,output]= functie_Matlab(nume_fisier,x0)
[x,fval,exitflag,output]= functie_Matlab(nume_fisier,x0,optiuni)
unde:
- functie_Matlab este una din funcţiile fminunc, fminsearch;
- nume_fisier reprezintă un şir de caractere care conţine numele fişierului-
funcţie în care a fost definită expresia funcţiei obiectiv (funcţie de una sau
mai multe variabile);
- x0 reprezintă valoarea iniţială / vectorul valorilor iniţiale, de la care se
porneşte căutarea minimului;
- optiuni reprezintă o structură care conţine opţiuni de optimizare a
calculării soluţiei / soluţiilor; este un argument opţional; opţiunile de
optimizare pot fi schimbate folosind funcţia Matlab optimset (a se vedea
paragraful 6.1.);
- x reprezintă punctul (vector) de minim local;
- fval reprezintă valoarea funcţiei în punctul de minim local (minimul);
- exitflag reprezintă o valoare de control care precizează motivul opririi
algoritmului; de exemplu, în cazul funcţiei fminsearch valoarea exitflag=1
arată că algoritmul a ajuns la minimul local;
- output reprezintă o structură care conţine următoarele informaţii: numărul
de iteraţii (iterations), numărul de evaluări (funcCount) efectuate, precum şi
algoritmii utilizaţi pentru determinarea soluţiei (algorithm).

7.2. Exemple de studiat

Exemplul 7.1: Să se determine soluţia sistemului de ecuaţii neliniare:

⎧ x ⋅ y + z = −3
⎪x

⎨ − y = −2 ,
⎪z
⎪⎩ y ⋅ z + x = 6
situată în vecinătatea punctului x0 = 1, y0 = 0, z0 = –1.
Matematici Asistate de Calculator – L7 6

Soluţie: Deoarece se specifică valorile cu care se porneşte căutarea soluţiei, nu mai


este necesar să se parcurgă etapa de localizare a soluţiei; se trece direct la etapa de
calcul a soluţiei. În acest scop, se aduce mai întâi sistemul de ecuaţii neliniare la
forma canonică:

⎧x ⋅ y + z + 3 = 0
⎪x

⎨ − y+2=0
⎪z
⎪⎩ y ⋅ z + x − 6 = 0
Apoi, se defineşte membrul stâng al sistemului sub forma canonică într-un fişier
funcţie (de exemplu, sistnelin1.m):
function g=sistnelin1(v)
% x,y,z sunt reprezentate de v(1),v(2),v(3)
x=v(1); y=v(2); z=v(3);
% membrul stang al ecuatiei i este reprezentat de g(i)
g(1)=x*y+z+3;
g(2)=x/z-y+2;
g(3)=y*z+x-6;
După definirea membrului stâng, pentru calculul soluţiei se execută următoarea
secvenţă de program Matlab (de exemplu, fişier script):
% vectorul valorilor de aproximare initiala a solutiei
v0=[1; 0; -1];
% rezolvarea sistemului
sol=fsolve('sistnelin1',v0)
În urma execuţiei acestei secvenţe se obţine:
Optimization terminated: first-order optimality is less than
options.TolFun.
sol = 6.0000 -0.0000 -3.0000
Rezultă că soluţia este x=6, y=0, z=-3.

Exemplul 7.2: Să se determine, pornind de la valorile (1,2,3,4), cvadruplul


(a,b,c,d) care satisface simultan condiţiile:
i) a, b, c, d sunt în progresie aritmetică,
ii) a-2, b-6, c-7, d-8 sunt în progresie geometrică,
cu precizia 10-30 atât pentru soluţie, cât şi pentru funcţiile din membrul stâng al
sistemului scris sub forma canonică.
Soluţie: Condiţiile i) şi ii) sunt echivalente cu următorul sistem de ecuaţii neliniare:

⎧a + c = 2 ⋅ b
⎪b + d = 2 ⋅ c


⎪(a − 2 ) ⋅ (c − 7 ) = (b − 6 )
2

⎪(b − 6 ) ⋅ (d − 8) = (c − 7 )2

Matematici Asistate de Calculator – L7 7

a cărui formă canonică este:

⎧a + c − 2 ⋅ b = 0
⎪b + d − 2 ⋅ c = 0


⎪(a − 2) ⋅ (c − 7 ) − (b − 6) = 0
2

⎪(b − 6 ) ⋅ (d − 8) − (c − 7 )2 = 0

Având valorile de pornire în determinarea soluţiei, se trece direct la a doua etapă:
Se reprezintă membrul stâng al sistemului de ecuaţii neliniare într-un fişier funcţie:
function g=sistnelin2(v)
% a,b,c,d sunt reprezentate de v(1),v(2),v(3),v(4)
% membrul stang al sistemului, scris sub forma de functie
% vectoriala
g=[v(1)+v(3)-2*v(2);
v(2)+v(4)-2*v(3);
(v(1)-2)*(v(3)-7)-(v(2)-6)^2;
(v(2)-6)*(v(4)-8)-(v(3)-7)^2];
Pentru rezolvare se execută următoarea secvenţă Matlab (de exemplu, fişier script):
% vectorul valorilor de aproximare initiala a solutiei
v0=[1; 2; 3; 4];
% setarea proprietatilor cerute
optiuni=optimset('TolX',10^(-30),'TolFun',10^(-30));
% rezolvarea sistemului
[sol,gval]=fsolve('sistnelin2',v0,optiuni)
şi se obţin rezultatele:
Optimization terminated: relative function value changing by less
than max(options.TolFun^2,eps) and sum-of-squares of function values
is less than sqrt(options.TolFun).
sol = 4.9999 6.0000 7.0000 8.0000
gval = 1.0e-008 *
-0.0001 0.0000 -0.1595 -0.1599
Prin urmare s-a obţinut soluţia: a=4.9999 (prin verificare rezultă valoarea exactă
a=5), b=6, c=7, d=8.

Exemplul 7.3: Să se determine pe cale simbolică toate tripletele (a,b,c) care


îndeplinesc simultan condiţiile:

i) a, b, c sunt în progresie aritmetică,


ii) suma lor este 30,
iii) a-5, b-4, c sunt în progresie geometrică,
Soluţie: Condiţiilor i), ii), iii) le corespunde următorul sistem de ecuaţii neliniare
scris sub forma canonică:
Matematici Asistate de Calculator – L7 8

⎧a + c − 2 ⋅ b = 0

⎨a + b + c − 30 = 0 .

⎩(a − 5) ⋅ c − (b − 4) = 0
2

Este uşor de observat că, primele două ecuaţii fiind de gradul I, iar a treia ecuaţie
fiind de gradul II numai în raport cu b, sistemul are cel mult două soluţii.

Pentru rezolvarea pe cale simbolică a acestui sistem se apelează funcţia Matlab


solve care primeşte ca argumente expresiile funcţiilor din membrul stâng al
sistemului şi variabilele scrise între apostrofuri. Se execută următoarea secvenţă de
program Matlab (de exemplu, fişier script):

sol=solve('a+c-2*b','a+b+c-30',...
'(a-5)*c-(b-4)^2','a','b','c')
% afisarea solutiilor
for i=1:length(sol.a)
disp([sol.a(i) sol.b(i) sol.c(i)])
end

În urma executării secvenţei de mai sus se obţine:

sol =
a: [2x1 sym]
b: [2x1 sym]
c: [2x1 sym]
[ 17, 10, 3]
[ 8, 10, 12]
S-au obţinut două soluţii: tripletele (a,b,c)=(17,10,3) şi (a,b,c)=(8,10,12).

Exemplul 7.4: Să se rezolve pe cale numerică sistemul de ecuaţii neliniare:

⎧⎪ x 2 + y 2 = 2
⎨ 2
⎪⎩ x − y 2 = 1
Soluţie: Se observă că prima ecuaţie a sistemului reprezintă ecuaţia implicită a

cercului cu centrul în originea sistemului de coordonate, (0,0), şi de rază 2 , iar a


doua ecuaţie reprezintă ecuaţia implicită a unei hiperbole echilatere de semiaxe 1.
1. Pentru a localiza soluţiile sistemului de ecuaţii neliniare se aplică metoda grafică
(a se vedea paragraful 7.1): se reprezintă grafic cele două figuri geometrice plane şi
se „citesc” cu mouse-ul coordonatele punctelor de intersecţie. În acest scop se
execută următoarea secvenţă Matlab (de exemplu, fişier script):
% cerc de centru (0,0) si raza sqrt(2)
theta=0:pi/60:2*pi; r=sqrt(2);
x=r*cos(theta); y=r*sin(theta);
plot(x,y,'r--')
hold on
% hiperbola echilatera de centru (0,0) si semiaxe 1
% y^2=x^2-1 => x^2>=1, deci x<=-1 sau x>=1,
Matematici Asistate de Calculator – L7 9

% si y1=sqrt(x^2-1), y2=-sqrt(x^2-1)=-y1
x1=-3:0.1:-1; y11=sqrt(x1.^2-1); y12=-y11;
x2=sort(-x1); y21=sqrt(x2.^2-1); y22=-y21;
plot(x1,y11,'b',x1,y12,'b',x2,y21,'b',x2,y22,'b')
axis equal, grid, hold off
[xcoord,ycoord]=ginput;
Graficul este redat în figura 7.1.

2.5

1.5

0.5

-0.5

-1

-1.5

-2

-2.5

-3 -2 -1 0 1 2 3

Fig.7.1. Graficul figurilor geometrice din exemplul 7.4.

Din grafic se observă că există patru puncte de intersecţie, deci sistemul are 4
soluţii.
2. Etapa a doua – de calcul a soluţiilor – începe cu aducerea sistemului la forma
canonică şi definirea membrului stâng al sistemului într-un fişier funcţie:
function y=sistNelin(v)
x=v(1); y=v(2);
y=[x.^2+y.^2-2; x.^2-y.^2-1];
Pentru a determina soluţiile, se apelează funcţia Matlab fsolve de atâtea ori câte
puncte de intersecţie au fost găsite, fiecare apel având ca valori de pornire câte un
set de coordonate „citite”. În acest scop se completează codul sursă de la punctul 1
cu următoarele instrucţiuni:
disp('solutiile sistemului')
for i=1:length(xcoord)
sol=fsolve('sistNelin',[xcoord(i),ycoord(i)])
if i<length(xcoord) pause, end
end
Soluţiile sunt:
solutiile sistemului
Optimization terminated: first-order optimality is less than
options.TolFun.
sol = -1.2247 0.7071
Optimization terminated: first-order optimality is less than
options.TolFun.
Matematici Asistate de Calculator – L7 10

sol = 1.2247 0.7071


Optimization terminated: first-order optimality is less than
options.TolFun.
sol = -1.2247 -0.7071
Optimization terminated: first-order optimality is less than
options.TolFun.
sol = 1.2247 -0.7071

Exemplul 7.5: Să se determine punctul de minim situat în vecinătatea


punctului x0=2 şi minimul local al funcţiei:

f(x)=x – sin(x·π) – 3, x ∈ R.

Soluţie: Se parcurg următorii paşi:


Pasul 1. Se defineşte expresia funcţiei obiectiv într-un fişier funcţie (de exemplu,
f.m):
function y=f(x)
y=x-sin(pi*x)-3;

Pasul 2. Se caută minimul folosind una din funcţiile Matlab fminunc sau
fminsearch. În cazul acestui exemplu s-a utilizat a doua funcţie. Se execută
următoarea secvenţă de instrucţiuni Matlab (de exemplu, fişier script):
[xmin,fmin,ct_terminare,detalii]=fminsearch('f',2)
disp(detalii.message)
Pasul 3. În urma execuţiei secvenţei de la pasul 2. se obţine:
xmin = 2.3969
fmin = -1.5511
ct_terminare = 1
detalii =
iterations: 13
funcCount: 26
algorithm: 'Nelder-Mead simplex direct search'
message: [1x196 char]
Optimization terminated:
the current x satisfies the termination criteria using OPTIONS.TolX
of 1.000000e-004 and F(X) satisfies the convergence criteria using
OPTIONS.TolFun of 1.000000e-004

S-a obţinut punctul de minim 2.3969, minimul funcţiei fiind -1.5511. Căutarea
minimului s-a terminat cu succes (constanta de terminare fiind 1). Au fost
executate 13 iteraţii, funcţia a fost apelată de 26 de ori, s-a utilizat metoda căutării
directe simplex în varianta Nelder-Mead. Precizia este de 10-4 atât pentru punctul
de minim, cât şi pentru minim (valoarea funcţiei în punctul de minim).
Matematici Asistate de Calculator – L7 11
2
⎛x⎞
Exemplul 7.6: Fie funcţia f:R→R, f(x)= ⎜ ⎟ − sin ( x ) − 0.5 . Să se determine:
⎝4⎠
i) un punct de minim local din intervalul (-8,10), precum şi minimul
corespunzător al funcţiei;
ii) toate punctele de extrem local din intervalul (-8,10), precum şi valorile
funcţiei în aceste puncte, precizând totodată şi tipul de extrem pentru fiecare
punct în parte.
Soluţie: i) Pasul 1. Se defineşte expresia funcţiei obiectiv într-un fişier funcţie (de
exemplu, fct.m):
function y=fct(x)
y= (x/4).^2-sin(x)-0.5;
Pasul 2. Deoarece căutarea punctului minim se face într-un interval, se va utiliza
funcţia Matlab fminbnd.
Se execută următoarea secvenţă de instrucţiuni Matlab (de exemplu, fişier script):
[xmin,fmin,ct_terminare,detalii]=fminbnd('fct',-8,10)
disp(detalii.message)
Pasul 3. În urma execuţiei secvenţei de la pasul 2. se obţine:
xmin = 1.3955
fmin = -1.3630
ct_terminare = 1
detalii =
iterations: 9
funcCount: 10
algorithm: 'golden section search, parabolic interpolation'
message: [1x112 char]
Optimization terminated:
the current x satisfies the termination criteria using OPTIONS.TolX
of 1.000000e-004

S-a obţinut punctul de minim local 1.3955, minimul funcţiei fiind -1.3630.
Căutarea minimului s-a terminat cu succes (constanta de terminare fiind 1). Au
fost executate 9 iteraţii, funcţia a fost apelată de 10 de ori. Au fost utilizate metoda
secţiunii de aur şi metoda de interpolare pătratică. Punctul de minim a fost
determinat cu precizia 10-4.

ii) Pasul 1 este identic cu primul pas de la punctul i).

Pasul 2. Pentru a afla câte puncte de extrem local se află în intervalul (-8,10),
funcţia obiectiv se reprezintă grafic pe acest interval. Pe baza graficului care se
obţine, se alege pentru fiecare punct de extrem un interval de vecinătate, în care să
nu se afle nici un alt punct de extrem. În final, se apelează funcţia Matlab fminbnd
pentru fiecare punct de extrem în parte, căutarea fiecărui punct făcându-se în
intervalul de vecinătate în care acesta se situează.
Matematici Asistate de Calculator – L7 12

Se execută următoarea secvenţă de instrucţiuni Matlab (de exemplu, fişier script):


clear, clc
% graficul
x=-8:0.1:10; plot(x,fct(x))

% functia -f pentru determinarea maximelor locale


g=@(x) -fct(x);

% determinarea punctelor de extrem si a minimelor si maximelor


% locale
[xmin1,fmin1]=fminbnd('fct',-6,-3);
fprintf('punct de minim: %g, minimul: %g\n',xmin1,fmin1)
[xmax1,fmax1]=fminbnd(g,-3,-1);
fprintf('punct de maxim: %g, maximul: %g\n',xmax1,-fmax1)
[xmin2,fmin2]=fminbnd('fct',0,3);
fprintf('punct de minim: %g, minimul: %g\n',xmin2,fmin2)
[xmax2,fmax2]=fminbnd(g,4,6);
fprintf('punct de maxim: %g, maximul: %g\n',xmax2,-fmax2)
[xmin3,fmin3]=fminbnd('fct',6,8);
fprintf('punct de minim: %g, minimul: %g\n',xmin3,fmin3)
Pasul 3. În urma execuţiei secvenţei de la pasul 2. se obţin cele 5 puncte de extrem
(graficul funcţiei este redat în figura 7.2):

punct de minim: -4.16483, minimul: -0.269685


punct de maxim: -1.79742, maximul: 0.67635
punct de minim: 1.39547, minimul: -1.36296
punct de maxim: 5.46431, maximul: 2.09655
punct de minim: 6.83067, minimul: 1.89559

-1

-2
-8 -6 -4 -2 0 2 4 6 8 10

Fig.7.2. Graficul funcţiei obiectiv din exemplul 7.6.

Exemplul 7.7: Folosind funcţia Matlab bazată pe metode cvasi-Newton să se


rezolve următoarea problemă de optimizare fără restricţii:

x⋅ y⋅z
( x̂ , ŷ , ẑ ) = arg min f ( x , y , z ), f ( x, y, z ) = , (x,y,z)∈R3 ,
( x , y ,z ) ( x − y )2 + ( y − z )2 + 1
pornind de la aproximarea (1,0,-1).
Matematici Asistate de Calculator – L7 13

Soluţie: Pasul 1. Se defineşte expresia funcţiei obiectiv într-un fişier funcţie (de
exemplu, fct2.m):
function y=fct2(v)
y=v(1)*v(2)*v(3)/((v(1)-v(2))^2+(v(2)-v(3))^2+1);
Pasul 2. Se caută minimul folosind funcţia Matlab fminunc. Se execută următoarea
secvenţă de instrucţiuni Matlab (de exemplu, fişier script):
clear, clc
v0=[1;0;-1];
options=optimset('LargeScale','off');
[vmin,fmin,exitflag,output]=fminunc('fct2',v0,options);
fprintf('Punctul de minim [%g %g %g]\n',vmin)
fprintf('Minimul: %g\n',fmin)
fprintf('Metoda de optimizare: %s\n',output.algorithm)
Pasul 3. În urma execuţiei secvenţei de la pasul 2. se obţine:
Optimization terminated: relative infinity-norm of gradient less
than options.TolFun.
Punctul de minim [4.53616e+015 4.56755e+015 -2.25904e+015]
Minimul: -1.00434e+015
Metoda de optimizare: medium-scale: Quasi-Newton line search

Exemplul 7.8: Să se rezolve următoarea problemă de optimizare fără


restricţii, folosind funcţia Matlab bazată pe metoda de căutare simplex:
2
− y2
( x̂ , ŷ ) = arg min f ( x , y ), f ( x, y ) = x ⋅ e −x , (x,y)∈R2
( x ,y )

pornind de la aproximarea (0,0).


Soluţie: Pasul 1. Se defineşte expresia funcţiei obiectiv într-un fişier funcţie (de
exemplu, fvect.m):
function y=fvect(v)
y=v(1)*exp(-v(1)^2-v(2)^2);
Pasul 2. Se caută minimul folosind funcţia Matlab fminsearch. Se execută
următoarea secvenţă de instrucţiuni Matlab (de exemplu, fişier script):
clear, clc
[vmin,fmin,exitflag,output]=fminsearch('fvect',[0 0]);
fprintf('Punctul de minim [%g %f]\n',vmin)
fprintf('Minimul: %g\n',fmin)
fprintf('Metoda de optimizare: %s\n',output.algorithm)
Pasul 3. În urma execuţiei secvenţei de la pasul 2. se obţine:
Punctul de minim [-0.707127 0.000042]
Minimul: -0.428882
Metoda de optimizare: Nelder-Mead simplex direct search
Matematici Asistate de Calculator – L7 14

7.3. Probleme de rezolvat

P7.1. Să se determine o soluţie a sistemului de ecuaţii neliniare:


⎧sin( x + y ) − 1.1 ⋅ x = 0.2

⎩1.1 ⋅ x + 2 ⋅ y = 1
2 2

pornind de la aproximaţia iniţială x0=1, y0=1.

P7.2. Să se determine pe cale numerică toate soluţiile sistemului de ecuaţii


neliniare:
⎧x 2 + y 2 = 4

⎩x − y = 1
P7.3. Să se rezolve pe cale simbolică sistemul de ecuaţii neliniare:

⎧m + p − 2 ⋅ n = 0

⎪n ⋅ q − p = 0
2


⎪m + q − 37 = 0
⎪⎩n + p − 36 = 0

P7.4. Să se rezolve sistemul subdeterminat:

⎧x 2 + y ⋅ a − z = 0

⎨x
⎪ =a
⎩z
în necunoscutele x, y, z.

P7.5. Să se determine toate numerele a,b,c care îndeplinesc simultan următoarele


condiţii:

a) a, b, c sunt în progresie geometrică;


b) a, b+4, c sunt în progresie aritmetică;
c) a, b+4, c+32 sunt în progresie geometrică.
P7.6. Să se determine punctul de minim situat în vecinătatea punctului x0=0.5 şi

⎛ x2 ⎞
minimul local al funcţiei: f(x)= ln⎜⎜1 − x + ⎟⎟ , x ∈ R.
⎝ 3 ⎠

P7.7. Fie funcţia f:R→R, f(x)= sin( x ) + x . Să se determine toate punctele de extrem

local din intervalul (-6,6), precum şi valorile funcţiei în aceste puncte, precizând
totodată şi tipul de extrem pentru fiecare punct în parte.
Matematici Asistate de Calculator – L7 15

P7.8. Să se rezolve următoarea problemă de optimizare fără restricţii, folosind


funcţia Matlab bazată pe metode cvasi-Newton:

( x̂ , ŷ ) = arg min f ( x , y ), f ( x , y ) = x 2 − y 2 , (x,y)∈R2


( x ,y )

pornind de la aproximarea (1,0).

P7.9. Să se rezolve următoarea problemă de optimizare fără restricţii, folosind


funcţia Matlab bazată pe metoda de căutare simplex:

x
( x̂ , ŷ , ẑ ) = arg min f ( x , y , z ), f ( x, y, z ) = , (x,y,z)∈R3
( x , y ,z ) x + y + z2 +1
2 2

pornind de la aproximarea (0.6,-0.2,-0.1).

7.4. Întrebări recapitulative

Î7.1. Definiţi noţiunea de „sistem de ecuaţii neliniare”.


Î7.2. Câte soluţii poate avea un sistem de ecuaţii neliniare?
Î7.3. Precizaţi paşii de rezolvare a unui sistem de ecuaţii neliniare în Matlab, pe cale
numerică, atunci când se cunoaşte numărul de soluţii şi unde sunt acestea
localizate.
Î7.4. Precizaţi forma canonică a unui sistem de n ecuaţii neliniare cu n
necunoscute.
Î7.5. Enumeraţi funcţiile Matlab destinate rezolvării sistemelor de ecuaţii neliniare
pe care le cunoaşteţi (denumire, din ce toolbox-uri fac parte).
Î7.6. Numerele reale q, u şi w sunt în progresie aritmetică. Precizaţi care este relaţia
dintre cele 3 numere.
Î7.7. Numerele reale h, k şi p sunt în progresie geometrică. Precizaţi care este relaţia
dintre cele 3 numere.
Î7.8. Cum se poate transforma o problemă de maximizare într-o problemă de
minimizare şi cum se determină în acest caz maximul?
Î7.9. Precizaţi pentru fiecare din funcţiile Matlab fminbnd, fminunc şi fminsearch,
tipul de extrem (maxim sau minim) pe care îl determină.
Î7.10. Ce metode stau la baza funcţiei Matlab fminbnd?
Î7.11. Ce metode stau la baza funcţiei Matlab fminunc?
Î7.12. Ce metode stau la baza funcţiei Matlab fminsearch?
Î7.13. Precizaţi care din funcţiile Matlab fminbnd, fminunc şi fminsearch, se poate
folosi pentru minimizarea unei funcţii reale de o variabilă reală.
Î7.14. Precizaţi care din funcţiile Matlab fminbnd, fminunc şi fminsearch, se poate
folosi pentru minimizarea unei funcţii reale de cinci variabile reale.
Matematici Asistate de Calculator – L7 16

ANEXA M7. ELEMENTE DESPRE REZOLVAREA


SISTEMELOR DE ECUA II NELINIARE.
ELEMENTE DESPRE REZOLVAREA
PROBLEMELOR DE OPTIMIZARE

M7.1. Sisteme de ecua ii neliniare

Se numeşte sistem de n ecuaţii neliniare cu n necunoscute orice sistem


care poate fi adus la forma:

⎧ f1( x1 , x 2 ,K , xn ) = c1
⎪ f ( x , x ,K , x ) = c
⎪ 2 1 2 n 2

⎪LLLLLLLL
⎪⎩ f n ( x1 , x 2 ,K , x n ) = c n

unde:
• c1, c2, …, cn, sunt constante reale;
• f1, f2, …, fn, sunt pe domeniul de interes funcţii continue de variabilele reale x1,
x2, …, xn, şi nu conţin termeni constanţi;
• cel puţin una din funcţii, fi, este neliniară în raport cu cel puţin o
necunoscută.

Comentariu: Funcţia fi este liniară dacă ∀ x, y vectori n-dimensionali din domeniul de


interes şi ∀ a,b∈R, este îndeplinită relaţia:
fi(a·x+b·y) = a·fi(x)+b·fi(y).

Un sistem de ecuaţii neliniare poate avea un număr finit de soluţii (compatibil


determinat), o infinitate de soluţii (compatibil nedeterminat) sau nici o soluţie
(incompatibil).

Rezolvarea sistemelor de ecuaţii neliniare cu ajutorul metodelor numerice


presupune – la fel ca şi rezolvarea ecuaţiilor transcendente - parcurgerea
următoarelor două etape:
I. separarea (localizarea) soluţiilor, adică descompunerea domeniului de
interes într-o partiţie de subdomenii, astfel încât fiecare subdomeniu să
conţină cel mult o soluţie;
II. calculul soluţiilor cu o precizie apriori fixată, de obicei pornind de la
seturi de valori aproximative ale acestora.
Matematici Asistate de Calculator – L7 17

Progresii aritmetice. Progresii geometrice


Progresii aritmetice
Se numeşte progresie aritmetică un şir de numere în care, fiecare termen,
începând cu al doilea termen, se obţine din cel precedent prin adăugarea la acesta a
unui număr real constant, numit raţia progresiei aritmetice.
Suma primilor n termeni ai unei progresii aritmetice a1, a2, ..., ak, ... este
(a1 + a n ) ⋅ n
Sn = .
2
Condiţia necesară şi suficientă pentru ca trei numere reale a, b şi c să formeze
o progresie aritmetică (cu termenul din mijloc b) este ca ele să satisfacă relaţia
2·b = a + c (adică, termenul din mijloc să fie media aritmetică a celorlalţi doi termeni).

Progresii geometrice
Se numeşte progresie geometrică un şir de numere în care, fiecare termen,
începând cu al doilea termen, se obţine din cel precedent prin înmulţirea acestuia cu
un număr real nenul constant, numit raţia progresiei geometrice.
Suma primilor n termeni ai unei progresii geometrice b1, b2, ..., bk, ... de raţie
1− qn
q neunitară este S n = b1 ⋅ .
1− q
Condiţia necesară şi suficientă pentru ca trei numere reale a, b şi c să formeze
o progresie geometrică (cu termenul din mijloc b) este ca ele să satisfacă relaţia
b2 = a · c (adică, termenul din mijloc în valoare absolută să fie media geometrică a
celorlalţi doi termeni).

M7.2. Probleme de optimizare

a. Problema de optimizare

Fiind dată o funcţie f: D → R, unde D este o mulţime oarecare, de obicei,


D⊆Rn, Rn fiind spaţiul euclidian, se cere determinarea unui element x0∈D, astfel
încât f(x0)≤f(x), ∀x∈D, în cazul criteriului de minimizare, respectiv, f(x0)≥f(x), ∀x∈D,
în cazul criteriului de maximizare.

Un element oarecare x din D se numeşte soluţie admisibilă. f se numeşte


funcţie-obiectiv. O soluţie admisibilă pentru care se obţine optimul funcţiei
obiectiv (minimul sau maximul, în funcţie de criteriul dorit) se numeşte soluţie
optimală (se mai folosesc şi denumirile punct de minim global, în cazul unei
probleme de minimizare, respectiv, punct de maxim global, în cazul unei
probleme de maximizare). D se numeşte spaţiul soluţiilor admisibile.

Dacă D=Rn, problema de optimizare este o problemă fără restricţii.

Un element xl∈D, cu proprietatea că există o vecinătate V⊂D a sa astfel încât


f(xl)≤f(x), ∀x∈V, în cazul criteriului de minimizare, respectiv, f(xl)≥f(x), ∀x∈V, în cazul
criteriului de maximizare, se numeşte punct de optim local (punct de minim
local, respectiv punct de maxim local), iar valoarea funcţiei f în xl poartă
denumirea de optim local.
Matematici Asistate de Calculator – L7 18

Rezolvarea unei probleme de optimizare presupune utilizarea unei metode


de optimizare pentru determinarea soluţiei optimale.

Se poate observa că o problemă de maximizare poate fi transformată într-o


problemă de minimizare, şi invers, prin înlocuirea funcţiei obiectiv f cu opusa
acesteia, -f.

În continuare se consideră doar probleme de minimizare fără restricţii.

b. Metode de optimizare în cazul problemelor de optimizare fără restric ii


Metodele clasice de optimizare în cazul problemelor de optimizare fără restricţii
pot fi grupate în următoarele categorii:
• metode neiterative (într-un pas), care se bazează pe anumite proprietăţi ale
funcţiei obiectiv, cum ar fi derivabilitatea, convexitatea etc.;
• metode iterative (în mai mulţi paşi), care pornesc cu o soluţie iniţială şi
determină la fiecare pas o nouă soluţie; cele mai cunoscute metode din
această categorie sunt metodele de descreştere (de relaxare, de coborâre),
caracterizate prin faptul că valoarea funcţiei obiectiv scade (descreşte, coboară)
la fiecare pas, care pot fi încadrate în următoarele subcategorii:
o metode de ordinul zero – necesită doar calculul valorilor funcţiei
obiectiv (de exemplu, algoritmii genetici, metoda secţiunii de aur);
o metode de ordinul I – necesită atât calculul valorilor funcţiei obiectiv,
cât şi al valorilor gradientului acesteia (de exemplu, metoda
gradientului, metode de gradient conjugat);
o metode de ordinul II – necesită atât calculul valorilor funcţiei obiectiv,
cât şi a gradientului şi a hessianului acesteia (de exemplu, metoda
clasică a lui Newton).
Matematici Asistate de Calculator – L8 1

8. APROXIMAREA NUMERICą A FUNCĥIILOR

Obiectivele lucrĆrii:
• familiarizarea cu câteva din metodele de aproximare numerică bazate pe
utilizarea polinoamelor,
• fixarea de cunoştinţe privitoare la rezolvarea problemei de aproximare
numerică a funcţiilor prin diferite metode, utilizând mediul Matlab,
prin studierea unor exemple şi prin rezolvarea unor probleme.
Se recomandă parcurgerea anexei M8 înaintea studierii paragrafelor 8.1 şi 8.2.

8.1. ELEMENTE DESPRE APROXIMAREA NUMERICą A


FUNCĥIILOR ÎN MATLAB

Aproximarea numerică a funcţiilor


Fie f o funcţie precizată printr-un set de n puncte (xi,yi=f(xi)), i=1,2,...,n.

a. Interpolare liniarĆ. Interpolare cu polinom Hermite. Interpolare cu funcĦii


spline
Pentru aproximarea numerică a funcţiei f de o variabilă reală prin
interpolare liniară, interpolare cu polinom Hermite sau interpolare cu funcţii
spline, Matlab pune la dispoziţia utilizatorului funcţia interp1 cu următoarea
sintaxă de apel:
vy=interp1(x,y,vx,'metoda')
unde:
- x este vectorul punctelor {xi};
- y este vectorul punctelor {yi};
- vx este vectorul punctelor în care se doreşte aproximarea funcţiei f;
- vy este vectorul obţinut prin aproximarea funcţiei f în punctele vx;
- metoda reprezintă un şir de caractere prin care se precizează metoda de
interpolare dorită:
o linear – pentru interpolare liniară (este metoda implicită);
o cubic sau pchip – pentru interpolare cu polinom Hermite cubic pe
porţiuni;
o spline – pentru interpolare spline cubică.
Matematici Asistate de Calculator – L8 2

Interpolarea cu funcţii spline se mai poate realiza şi cu funcţia Matlab


spline. Sintaxa de apel a funcţiei spline este:
vy=spline(x,y,vx)
în care parametrii x,y,vx şi vy au aceleaşi semnificaţii ca şi în cazul funcţiei
interp1.

Comentariu: De fapt, methoda 'spline' a funcţiei interp1 apelează fără implicarea


utilizatorului funcţia Matlab spline pentru realizarea interpolării.

b. Aproximare cu metoda celor mai mici pĆtrate


Aproximarea funcţiei f cu metoda celor mai mici pătrate se realizează
în Matlab prin parcurgerea următoarelor două etape:

1. Determinarea polinomului de interpolare folosind funcţia Matlab polyfit,


care are sintaxa:
P=polyfit(x,y,m)
unde:
- x este vectorul punctelor {xi};
- y este vectorul punctelor {yi};
- m este gradul polinomului de aproximare, 0 ≤ m≤ n-1;
- P este vectorul coeficienţilor polinomului de interpolare, coeficienţii fiind
în ordinea descrescătoare a puterilor nedeterminatei polinomului.

2. Calculul valorilor polinomului de aproximare în punctele dorite, utilizând


funcţia Matlab polyval, care are sintaxa:
vy=polyval(P,vx)
unde:
- vx este vectorul punctelor în care se doreşte aproximarea funcţiei f;
- P este vectorul coeficienţilor polinomului de interpolare, obţinut în prima
etapă;
- vy este vectorul obţinut prin aproximarea funcţiei f în punctele vx cu
valorile polinomului P.

8.2. Exemple de studiat

Exemplul 8.1: Fie f o funcţie reală de o variabilă reală, precizată prin tabelul
de valori:
Tabelul 8.1. Tabel de date pentru exemplul 8.1.
xi 0 1.2 1.6 2 2.7 3
yi=f(xi) -2.5 0 2 1.7 -4 1
Matematici Asistate de Calculator – L8 3

Să se determine valorile de aproximare ale funcţiei f în punctele 0.7, 1.3, 1.7, 2.5,
2.9, folosind:
a) metoda de interpolare liniară;
b) metoda de interpolare cu polinom Hermite cubic pe porţiuni.

Soluţie: a) Se execută următoarea secvenţă de instrucţiuni Matlab:


% vectorul punctelor xi
x=[0 1.2 1.6 2 2.7 3];
% vectorul valorilor yi ale functiei in punctele xi
y=[-2.5 0 2 1.7 -4 1];
% vectorul punctelor in care se face aproximarea
vx=[0.7 1.3 1.7 2.5 2.9];
% aproximarea prin interpolare liniara
disp('Valorile lui f obtinute prin interpolare liniara:')
vy=interp1(x,y,vx,'linear')
Executând secvenţa de mai sus se obţin rezultatele:
Valorile lui f obtinute prin interpolare liniara:
vy = -1.0417 0.5000 1.9250 -2.3714 -0.6667
b) Se execută următoarea secvenţă Matlab, care diferă de cea de la punctul a)
numai prin metoda de interpolare precizată:
% vectorul punctelor xi
x=[0 1.2 1.6 2 2.7 3];
% vectorul valorilor yi ale functiei in punctele xi
y=[-2.5 0 2 1.7 -4 1];
% vectorul punctelor in care se face aproximarea
vx=[0.7 1.3 1.7 2.5 2.9];
% aproximarea prin interpolare Hermite cubica
disp(['Valorile lui f obtinute prin interpolare '...
'Hermite cubica: '])
vy=interp1(x,y,vx,'cubic')
obţinând valorile:
Valorile lui f obtinute prin interpolare Hermite cubica:
vy = -1.4777 0.4901 1.9771 -2.9221 -1.3678

Exemplul 8.2: Să se reprezinte grafic în aceeaşi fereastră grafică funcţiile de


interpolare liniară, respectiv spline cubică, pentru funcţia f definită prin tabelul de
valori:
Tabelul 8.2. Tabel de date pentru exemplul 8.2.
xi -1.5 0 1 3
yi=f(xi) 7.8 5 6.3 6.8

precum şi punctele tabelului.


Soluţie: Intervalul de reprezentare este dat de cea mai mică valoare xi şi cea mai
mare valoare xi: [-1.5,3]. Se execută următoarea secvenţă Matlab:
% vectorul punctelor xi
x=[-1.5 0 1 3];
Matematici Asistate de Calculator – L8 4

% vectorul valorilor yi ale functiei in punctele xi


y=[7.8 5 6.3 6.8];
% vectorul punctelor intervalului de aproximare
vx=-1.5:0.1:3;
% aproximarea prin interpolare liniara
vy_liniar=interp1(x,y,vx,'linear');
% aproximarea prin interpolare spline cubica
vy_spline=spline(x,y,vx);
% reprezentarile grafice
plot(x,y,'ro',vx,vy_liniar,'g',vx,vy_spline,'b--')
legend('puncte','interpolare liniara','spline')

Graficele rezultate sunt prezentate în figura 8.1.:

8
puncte
interpolare liniara
7.5
spline

6.5

5.5

4.5
-1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3

Fig.8.1. Graficele funcţiilor de aproximare din exemplul 8.2.

Exemplul 8.3: Fie funcţia f dată prin tabelul de valori:


Tabelul 8.3. Tabel de date pentru exemplul 8.3.
xi -8 -6 -4 -2 0 2 4
yi=f(xi) 30 10 9 6 5 4 4

a) Să se aproximeze, în sensul celor mai mici pătrate, funcţia f în punctele -7,


-4.2, -0.75, 1, 2.15, 3, folosind regresia parabolică, regresia cubică şi regresia
cu polinom de gradul 6.
b) Să se reprezinte grafic în aceeaşi fereastră grafică polinoamele de aproximare
de la punctul a) şi punctele din tabel.
Soluţie: a) Pentru aproximarea funcţiei date prin metoda celor mai mici pătrate
(regresie polinomială), se parcurg cele două etape precizate în paragraful 8.1. Se
execută secevnţa Matlab:
Matematici Asistate de Calculator – L8 5

% Etapa 1: determinarea polinoamelor de aproximare


% vectorul punctelor xi
x=-8:2:4;
% vectorul valorilor yi ale functiei in punctele xi
y=[30 10 9 6 5 4 4];
% vectorii coeficientilor polinoamelor de interpolare
P2=polyfit(x,y,2); % regresie parabolica
P3=polyfit(x,y,3); % regresie cubica
P6=polyfit(x,y,6); % regresie de gradul 6

% Etapa 2: aproximarea
% vectorul punctelor in care se face aproximarea
vx=[-7 -4.2 -0.75 1 2.15 3];
% aproximarea prin regresie parabolica
disp('cmmp: regresie parabolica:')
vy2=polyval(P2,vx)
% aproximarea prin regresie cubica
disp('cmmp: regresie cubica:')
vy3=polyval(P3,vx)
% aproximarea prin regresie de gradul 6
disp('cmmp: regresie de gradul 6:')
vy6=polyval(P6,vx)
obţinând următoarele rezultate:
cmmp: regresie parabolica:
vy2 =
20.8929 9.9529 3.1473 2.5119 3.1266 4.1071
cmmp: regresie cubica:
vy3 =
20.0595 7.1222 4.9833 5.6786 5.6114 4.9405
cmmp: regresie de gradul 6:
vy6 =
13.6680 9.2095 5.0584 4.8867 3.7901 2.6289
b) Şi pentru reprezentarea grafică a funcţiilor de aproximare este necesară
parcurgerea celor două etape precizate în paragraful 8.1. Prima etapă este însă
identică cu prima etapa de la punctul a). Mai jos este redată secvenţa de
instrucţiuni corespunzătoare celei de a doua etape, iar graficele obţinute sunt
redate în figura 8.2.:
% Etapa 2: graficele polinoamelor de aproximare
% intervalul de reprezentare grafica
vxg=min(x):(max(x)-min(x))/100:max(x);
% aproximarea prin regresie parabolica
vy2g=polyval(P2,vxg);
% aproximarea prin regresie cubica
vy3g=polyval(P3,vxg);
% aproximarea prin regresie de gradul 6
vy6g=polyval(P6,vxg);
% grafice
% punctele tabelului
plot(x,y,'bd')
hold on
% polinoamele de aproximare
plot(vxg,vy2g,'r',vxg,vy3g,'--g',vxg,vy6g,'k:')
axis([min(x)-1 max(x)+1 ...
min([y vy2g vy3g vy6g])-5 max([y vy2g vy3g vy6g])+5])
Matematici Asistate de Calculator – L8 6

legend('puncte','regresie parabolica', ...


'regresie cubica','regresie de gradul 6')
hold off

35
puncte
regresie parabolica
30
regresie cubica
regresie de gradul 6
25

20

15

10

-8 -6 -4 -2 0 2 4

Fig.8.2. Graficele funcţiilor de aproximare din exemplul 8.3.

8.3. Probleme de rezolvat

P8.1. Să se scrie o funcţie Matlab langrange care realizează interpolarea


polinomială Lagrange. Argumentele funcţiei Matlab vor fi: vectorul punctelor {xi} şi
vectorul punctelor {yi} ale unei funcţii f cunoscută prin puncte şi vectorul vx al
punctelor în care se doreşte realizarea aproximării. Funcţia Matlab va returna
vectorul vy al valorilor obţinute prin aproximarea funcţiei f cu polinomul de
interpolare Lagrange în punctele vx.

P8.2. Se consideră tabelul următor care reprezintă valorile vitezei unui mobil în
mişcare citite la diverse momente de timp:

timp [sec] 0 1 2 3 4 5 6
viteza
15 30 75 60 60 40 55
[m·sec-1]

Să se estimeze valorile vitezei la momentele t1=0.5 sec, t2=3.2 sec şi t3=5.7 sec,
utilizând:
a) interpolarea liniară;
Matematici Asistate de Calculator – L8 7

b) interpolarea polinomială Lagrange (se va folosi funcţia de la P8.1.);


c) interpolarea cu polinom Hermite cubic pe porţiuni;
d) interpolarea spline cubică;
e) regresia parabolică;
f) aproximarea cu metoda celor mai mici pătrate cu polinom de grad 5.

P8.3. În ipotezele problemei P8.2., să se reprezinte grafic în aceeaşi fereastră


grafică punctele din tabel şi funcţiile de aproximare corespunzătoare punctelor a)-f).

P8.4. Să se scrie o funcţie Matlab care primeşte ca argumente vectorul punctelor


{xi}, vectorul punctelor {yi} ale unei funcţii f cunoscută prin puncte, şi vectorul vx
al punctelor în care se doreşte realizarea aproximării. Funcţia Matlab returnează
vectorii obţinuţi prin interpolare liniară şi prin regresie cubică a funcţiei f în
punctele vx.

P8.5. Să se scrie o funcţie Matlab care primeşte ca argumente vectorul punctelor


{xi} şi vectorul punctelor {yi} ale unei funcţii f cunoscută prin puncte. Funcţia
Matlab reprezintă grafic în aceeaşi fereastră grafică, punctele de coordonate (xi, yi) şi
funcţiile de aproximare corespunzătoare obţinute prin interpolarea spline cubică şi
interpolare cu polinom Hermite cubic pe porţiuni.

8.4. ÎntrebĆri recapitulative

Î8.1. Definiţi problema de aproximare a unei funcţii reale de o variabilă reală.


Î8.2. În ce situaţii se pune, de obicei, problema aproximării unei funcţii?
Î8.3. Definiţi noţiunile de interpolare, respectiv extrapolare.
Î8.4. Precizaţi formula polinomului de interpolare Lagrange, pentru o funcţie f,
cunoscută prin puncte (xi, yi=f(xi)), i=1,2,...,n.
Î8.5. Enumeraţi funcţiile Matlab (pe care le cunoaşteţi) destinate aproximării
funcţiilor de o variabilă reală (denumire, metoda de aproximare).
Î8.6. Care din următoarele metode de aproximare a funcţiilor impun ca funcţia de
aproximare g să aibă în punctele {xi} aceleaşi valori ca funcţia care este aproximată f
(adică, g(xi)=f(xi)): interpolare cu polinom Hermite, regresie parabolică, aproximare cu
funcţii spline, aproximare polinomială cubică prin metoda celor mai mici pătrate,
interpolare cu polinom Lagrange?
Matematici Asistate de Calculator – L8 8

ANEXA M8. ELEMENTE DESPRE


APROXIMAREA NUMERICą A FUNCĥIILOR

M8.1. Aproximarea numericĆ a funcĦiilor

a. Problema aproximĆrii unei funcĦii


Fie o funcţie f : I ⊆ R → R şi [a,b] un subinterval al domeniului de definiţie I.
Se pune problema determinării unei alte funcţii g : I → R, de expresie relativ simplă,
care să aproximeze cât mai bine funcţia f pe intervalul [a,b], adică g(x) ≈ f(x),
∀x∈[a,b].

Problema aproximării unei funcţii se pune în următoarele două situaţii:


a) expresia funcţiei f este cunoscută, dar suficient de complicată, astfel încât
utilizarea ei în calcule este incomodă sau duce la erori mari de calcul;
b) expresia funcţiei f nu este cunoscută, funcţia fiind precizată doar printr-un set
de n puncte {(xi, yi)}, yi = f(xi), i = 1, n , cu x1 = a, xn=b, xi ∈(a,b), i = 2, n − 1 .
Situaţia cea mai întâlnită este a doua, caz în care, valorile funcţiei f sunt date de
obicei sub formă tabelară:

xi x1=a x2 ... xn=b


yi = f(xi) y1 y2 ... yn

În majoritatea aplicaţiilor, valorile {xi} sunt echidistante, cu pasul de discretizare


b−a
h= , adică xi+1 = xi+h, i = 1, n − 1 .
n
În multe situaţii practice, nu este necesară determinarea expresiei funcţiei de
aproximare g, ci doar a valorilor de aproximare g(x) pentru orice x din intervalul [a,b].
În cazul b), dacă pentru funcţia de aproximare g se impune condiţia g(xi) = yi,
i = 1, n , problema de aproximare este denumită şi problemă de interpolare. Dacă
problema se extinde şi în afara intervalului [a,b], adică se doreşte aproximarea
funcţiei f într-un punct x∈I-[a,b], atunci se utilizează termenul de extrapolare.

b. Câteva metode numerice de aproximare a funcĦiilor


În continuare se presupune că funcţia f este precizată printr-un set de n
puncte, {(xi, yi)}, yi = f(xi), i = 1, n , cu x1=a şi xn=b.

Interpolare liniară
Se cere să se determine funcţia de aproximare g care să fie afină pe fiecare
subinterval [xi ,xi+1], i = 1, n − 1 , şi să treacă prin punctele date, deci să verifice
condiţiile:
Matematici Asistate de Calculator – L8 9

g ( xi ) = yi , i = 1, n .
Funcţia g cu proprietăţile cerute există şi este unică. Ea este dată de
expresia:
yi +1 − yi x y − xi yi +1
g ( x) = ⋅ x + i +1 i , x ∈ [xi , xi +1 ], i = 1, n − 1
xi +1 − xi xi +1 − xi

Interpolare polinomială Lagrange


Se cere să se determine polinomul Pn-1 (funcţia g este, deci, o funcţie
polinomială, g=Pn-1), grad Pn-1 = n-1, de forma:

Pn −1 ( x ) = a1 + a 2 x + a3 x 2 + ... + a n x n −1 , ∀x ∈ [ a, b], ai ∈ R, i = 1, n ,
care să treacă prin punctele date, deci să verifice condiţiile:

Pn −1 ( xi ) = yi , i = 1, n .
Se obţine astfel următorul sistem de ecuaţii liniare, în necunoscutele a1, a2,
..., an:
⎧a1 + a2 x1 + a3 x12 + ... + an x1n−1 = y1
⎪ n −1
⎪a1 + a2 x2 + a3 x2 + ... + an x2 = y 2
2


⎪LLLLLLLLLLLLLL
⎪a + a x + a x 2 + ... + a x n−1 = y
⎩ 1 2 n 3 n n n n

Deoarece determinantul sistemului este un determinant Vandermonde şi punctele


xi, i = 1, n , sunt distincte două cîte două, sistemul are soluţie unică. Prin urmare,
există un polinom unic de gradul n-1 care să treacă prin punctele date. Acest polinom
se numeşte polinom de interpolare al punctelor (xi,yi), i = 1, n .
Există mai multe modalităţi de determinare a polinomului de interpolare,
care duc, de fapt, la exprimări echivalente ale acestuia: de tip Newton, de tip Gauss,
de tip Stirling, de tip Bessel, de tip Lagrange ş.a. În continuare se face referire doar
la ultimul.
Polinomul de interpolare Lagrange se determină în modul următor: se
alege polinomul de aproximare de forma:
n
Ln−1 ( X ) = ∑ yk pk ( X ) ,
k =1

⎧1, i = k
unde polinoamele pk sunt de grad n-1 şi au proprietatea p k ( xi ) = ⎨ .
⎩0 , i ≠ k
Expresia acestor polinoame se poate deduce uşor:
n
X − xi
pk ( X ) = ∏
i =1 xk − xi
i≠k

obţinând, în final, expresia polinomului de interpolare Lagrange:


Matematici Asistate de Calculator – L8 10

⎛ ⎞
n
⎜ n
X − xi ⎟
Ln−1 ( X ) = ∑ ⎜ y k ∏ ⎟
k =1 ⎜ i =1 x k − xi ⎟
⎝ i≠k ⎠

Interpolare cu polinom Hermite


Se presupune că se cunosc pentru funcţia f şi valorile derivatelor până la un
anumit ordin în anumite puncte {xi}:

f (r ) ( xi ) = yir , r = 0, ri , ri ∈ N , i = 1, n
Se cere să se determine polinomul P de grad minim care să îndeplinească
următoarele condiţii:

P (r )( xi ) = yir , r = 0 , ri , i = 1, n
n
Un astfel de polinom există, este unic şi are gradul m = n + ∑ r . Se numeşte
i =1
i

polinom de interpolare Hermite.

Aproximarea cu funcţii spline


Se cere să se aproximeze funcţia f cu o funcţie g spline polinomială de grad
m << n , astfel încât:
g ( xi ) = yi , i = 1, n
Prin funcţie spline polinomială de grad m se înţelege o funcţie de clasă
C[ma−,b1 ] , ale cărei restricţii g i pe fiecare subinterval [xi-1, xi] sunt polinoame de grad
m << n :
g i ( x ) = Pmi ( x), ∀x ∈ [ xi −1 , xi ], i = 2, n, gradPmi = m .
Dacă m=3 funcţia g este numită funcţie spline cubică.

Aproximarea cu metoda celor mai mici pătrate


Se cere să se determine polinomul Pm , grad Pm = m , m < n , de forma:

Pm ( x) = a1 + a2 x + a3 x 2 + ... + am+1 x m , ∀x ∈ [a, b] ,


care să aproximeze funcţia f astfel încât să fie minimizată suma pătratelor
diferenţelor dintre valorile aproximate şi cele exacte în punctele {xi}.
Problema enunţată este o problemă de optimizare:
n
Pˆm = {Pm | min
a1 ....am +1
∑ [P ( x ) − y ] } .
i =1
m i i
2

Metoda de calcul rezultată se numeşte metoda celor mai mici pătrate


(CMMP). Această metodă se foloseşte atunci când fie perechile (xi, yi = f(xi)) , i = 1, n ,
nu sunt cunoscute cu exactitate fie n este foarte mare.
Aproximarea funcţiei f printr-un polinom de forma de mai sus prin metoda
CMMP este numită în general şi regresie polinomială, în particular regresie
Matematici Asistate de Calculator – L8 11

liniară dacă m=1, regresie parabolică dacă m=2, respectiv regresie cubică dacă
m=3.
Aproximarea prin metoda CMMP poate fi aplicată însă şi altor funcţii de
aproximare g, diferite de cele polinomiale.
Matematici Asistate de Calculator – L9 1

9. INTEGRARE NUMERIC . REZOLVAREA


ECUA IILOR DIFEREN IALE ŞI A SISTEMELOR
DE ECUA II DIFEREN IALE

Obiectivele lucr rii:


• fixarea cunoştinţelor privitoare la calculul integralei definite a unei funcţii
prin metoda trapezelor, respectiv metoda lui Simpson,
• familiarizarea cu modalităţi de calcul a integralei definite a unei funcţii
folosind mediul Matlab,
• fixarea de cunoştinţe privitoare la rezolvarea ecuaţiilor diferenţiale ordinare şi
a sistemelor de ecuaţii diferenţiale ordinare folosind mediul de programare
Matlab,
• însuşirea modului de a aduce ecuaţiile diferenţiale ordinare, respectiv
sistemele de ecuaţii diferenţiale ordinare de ordin superior, la o formă
echivalentă cu cea a sistemelor de ecuaţii diferenţiale de ordinul I,
prin studierea unor exemple şi prin rezolvarea unor probleme.
Se recomandă parcurgerea anexei M9 înaintea studierii paragrafelor 9.1 şi 9.2.

9.1. Elemente despre integrarea numeric în Matlab. Elemente


despre rezolvarea ecua iilor diferen iale şi a sistemelor de
ecua ii diferen iale în Matlab

Integrare numerică
Pentru calculul integralelor definite prin metoda trapezelor, în Matlab se
utilizează funcţia trapz. Această funcţie presupune că funcţia de integrat f este
precizată sub formă de valori numerice, {yk = f(xk)}k=1,...,n, în puncte echidistante
{xk}k=1,...,n (x1=a, xn=b) ale intervalului de integrare [a,b]. Sintaxa de apel a funcţiei
trapz este:
I=trapz(x,y)
unde:
- x reprezintă vectorul valorilor {xk};
- y reprezintă vectorul valorilor {yk = f(xk)};
b
- I reprezintă aproximarea cu metoda trapezelor a integralei definite ∫ f(x)dx
a
Matematici Asistate de Calculator – L9 2

Comentariu: n reprezintă aici numărul de puncte. Prin urmare pasul de integrare –


care este calculat implicit- este dat de:
b−a
h=
n −1

Funcţia Matlab quad realizează calculul integralei definite a unei funcţii prin
metoda adaptativ-recursivă Simpson (o variantă mai performantă a metodei lui
Simpson, pasul de parcurgere a intervalului de integrare este calculat implicit de
către funcţia Matlab). Funcţia quad presupune că funcţia de integrat f este
cunoscută prin expresia sa analitică, y = f(x). Două sintaxe de apel ale funcţiei
quad sunt:
I=quad(nume_fisier,a,b)
I=quad(nume_fisier,a,b,precizia)
unde:
- nume_fisier reprezintă un şir de caractere care conţine numele fişierului-
funcţie în care a fost scrisă expresia funcţiei de integrat f;
- a şi b reprezintă limitele de integrare (capetele intervalului [a,b] pe care se
realizează integrarea);
- precizia este un argument opţional prin care se poate modifica precizia
implicită 10-6;
b
- I reprezintă aproximarea integralei definite ∫ f(x)dx .
a

Rezolvarea ecuaţiilor diferenţiale şi a sistemelor de ecuaţii diferenţiale


Matlab pune la dispoziţia utilizatorului mai multe funcţii Matlab de rezolvare
a ecuaţiilor diferenţiale şi a sistemelor de ecuaţii diferenţiale de diferite ordine.
Aceste funcţii implementează diverse metode numerice. Astfel:
ƒ funcţia Matlab ode23 foloseşte o combinaţie a metodelor Runge-Kutta de
ordinele 2, respectiv 3;
ƒ funcţia Matlab ode45 are implementată o combinaţie a metodelor Runge-
Kutta de ordinele 4, respectiv 5;
ƒ funcţia Matlab ode113 implementează o variantă a metodei Adams-
Bashforth-Moulton.

Cele trei funcţii Matlab menţionate mai sus au aceleaşi sintaxe de apel. Două
din aceste sintaxe sunt:
[xval,yval] = functie_Matlab(nume_fisier,dom,y0)
[xval,yval] = functie_Matlab(nume_fisier,dom,y0,optiuni)
unde:
- functie_Matlab este una din funcţiile ode23, ode45, ode113;
- nume_fisier reprezintă un şir de caractere care conţine numele fişierului-
funcţie în care a fost definită expresia derivatei funcţiei-necunoscute, în
Matematici Asistate de Calculator – L9 3

cazul unei ecuaţii diferenţiale de ordinul I, respectiv, vectorul expresiilor


derivatelor de ordin I al funcţiilor-necunoscute, în cazul sistemelor de ecuaţii
diferenţiale de ordinul I sau al ecuaţiilor şi sistemelor de ecuaţii diferenţiale
de ordin superior, care au fost aduse în prealabil la o formă echivalentă cu
un sistem de ordinul I;
- dom reprezintă vectorul capetelor intervalului [a,b] al variabilei independente
(a se vedea anexa M9);
- y0 reprezintă valoarea funcţiei-necunoscute din condiţia iniţială în cazul
unei ecuaţii diferenţiale de ordinul I, respectiv, vectorul valorilor funcţiilor-
necunoscute din condiţiile iniţiale, în celelalte cazuri;
- optiuni reprezintă o structură care conţine opţiuni de optimizare a
calculării soluţiei / soluţiilor; este un argument opţional; opţiunile de
optimizare pot fi schimbate folosind funcţia Matlab optimset (paragraful
6.1);
- xval reprezintă un vector ce conţine valorile variabilei independente, în care
se determină valorile soluţiei / soluţiilor;
- yval reprezintă vectorul valorilor funcţiei soluţie în punctele xval, în cazul
unei ecuaţii diferenţiale de ordinul I, respectiv o matrice ale cărei coloane
reprezintă valorile funcţiilor soluţie în punctele xval, în celelalte cazuri.

9.2. Exemple de studiat

Exemplul 9.1: Fie funcţia f dată prin puncte de relaţiile

sin (x ) ⎛ i ⎞ π
⎟⎟ , xi = π + i ⋅ , i = 1,2 ,...,150 . Să se calculeze
6⋅π
f(xi ) = 2 i ⋅ cos ⎜⎜
i +1 ⎝ xi ⎠ 30 ∫ f(x)dx .
π
π+
30

Soluţie: Funcţia fiind cunoscută prin puncte, se va folosi metoda trapezelor pentru
calculul integralei cerute. Se execută următoarea secvenţă Matlab:
% generarea vectorilor x si y
for i=1:150
x(i)=pi+i*pi/30;
y(i)=sin(x(i))/(i^2+1)*cos(i/x(i));
end

% calculul integralei folosind metoda trapezelor


I=trapz(x,y)
rezultând următoarea valoare a integralei:
I = -0.0025

π
Exemplul 9.2: Să se calculeze ∫ ln (x + 1 ) ⋅ sin (x)dx .
0

Soluţie: Funcţia de integrat având expresia cunoscută, integrala ei va fi calculată


cu ajutorul metodei lui Simpson.
Se defineşte expresia funcţiei de integrat într-un fişier-funcţie (de exemplu, f.m):
Matematici Asistate de Calculator – L9 4

function y=f(x)
y=log(x+1).*sin(x);
Pentru calculul integralei se apelează funcţia Matlab quad:
I=quad('f',0,pi)

rezultând valoarea:
I = 1.8113

Exemplul 9.3: Să se rezolve prin metoda Runge-Kutta de ordinul 2-3 ecuaţia


diferenţială de ordinul I:

y ′ = x 2 ⋅ ( y + 1)
cu condiţia iniţială y(1)=1, pe intervalul [1,2].
Soluţie: Se parcurg următoarele două etape:
• se defineşte expresia derivatei funcţiei necunoscute y într-un fişier-funcţie, de
exemplu ecdif1.m:
function dy=ecdif1(x,y)
dy=x.^2.*(y+1);
• se rezolvă ecuaţia diferenţială folosind funcţia Matlab ode23, executând
următoarea secvenţă Matlab (de exemplu, fişier script):
% conditia initiala
y0=1;
% domeniul (intervalul)
dom=[1,2];
% rezolvarea ecuatiei diferentiale
[xval,yval]=ode23('ecdif1',dom,y0)
% reprezentarea grafica a solutiei
plot(xval,yval)
Se obţine soluţia sub formă de seturi de valori:
xval =
1.0000 1.0400 1.1400 1.2400 1.3400 1.4368
1.5280 1.6140 1.6950 1.7717 1.8443 1.9133
1.9789 2.0000
yval =
1.0000 1.0850 1.3482 1.7055 2.1955 2.8512
3.7058 4.8171 6.2622 8.1423 10.5908 13.7830
17.9494 19.6011
Soluţia este reprezentată grafic în figura 9.1.
Matematici Asistate de Calculator – L9 5

Fig.9.1. Graficul soluţiei ecuaţiei diferenţiale din exemplul 9.3.

Exemplul 9.4: Să se rezolve prin metoda Adams-Bashforth-Moulton


următoarea ecuaţie diferenţială de ordinul II:

y ′′ = 2 ⋅ y ′ − 3 ⋅ x 2 ⋅ y
cu condiţiile iniţiale y(0)=-1, y'(0)=2, pe intervalul [1,2.5].
Soluţie: Se rescrie ecuaţia sub forma unui sistem de 2 ecuaţii diferenţiale de ordinul
I, prin introducerea notaţiilor y1=y, y2=y'. Se obţine sistemul:

⎧ y1′ = y 2

⎩ y 2′ = 2 ⋅ y 2 − 3 ⋅ x ⋅ y1
2

cu condiţiile iniţiale y1(0)=-1, y2(0)=2.


Rezolvarea sistemului de mai sus presupune parcurgerea celor două etape descrise
la exemplul 9.3.:
• se defineşte vectorul expresiilor derivatelor funcţiilor y1 şi y2 într-un fişier-
funcţie (de exemplu ecdif2.m):
function dy=ecdif2(x,y)
dy=zeros(2,1); % initializarea vectorului
dy(1)=y(2);
dy(2)= 2*y(2)-3*x.^2.*y(1);
• se rezolvă ecuaţia diferenţială executând următoarea secvenţă Matlab (de
exemplu, fişier script):
% conditiile initiale
y0=[-1; 2];
% domeniul (intervalul)
dom=[1,2.5];
Matematici Asistate de Calculator – L9 6

% rezolvarea ecuatiei diferentiale


[xval,yval]=ode113('ecdif2',dom,y0)
% reprezentarea grafica a solutiei
plot(xval,yval(:,1))
Se obţine soluţia (prima coloană a matricei yval) şi derivata sa (a doua coloană a
matricei yval) sub formă de seturi de valori:
xval = yval =
1.0000 -1.0000 2.0000
1.0023 -0.9955 2.0158
1.0068 -0.9863 2.0478
1.0158 -0.9675 2.1124
1.0339 -0.9281 2.2451
1.0700 -0.8420 2.5236
1.1423 -0.6381 3.1282
1.2869 -0.0908 4.4597
1.3591 0.2558 5.1217
1.4314 0.6480 5.7155
1.5037 1.0787 6.1732
1.6483 1.9980 6.3409
1.7928 2.8318 4.8694
1.9229 3.2723 1.5840
1.9880 3.2996 -0.8232
2.0530 3.1549 -3.6957
2.1181 2.8109 -6.9292
2.2482 1.4658 -13.7100
2.3783 -0.6870 -18.9046
2.5000 -3.0793 -19.5740

Soluţia este reprezentată grafic în figura 9.2.

-1

-2

-3

-4
1 1.5 2 2.5

Fig.9.2. Graficul soluţiei ecuaţiei diferenţiale din exemplul 9.4.


Matematici Asistate de Calculator – L9 7

Exemplul 9.5: Să se rezolve prin metoda Runge-Kutta de ordinul 4-5


sistemul de ecuaţii diferenţiale de ordinul I:

⎧ y1′ = y1 + y 2

⎩ y 2′ = x − y1
cu condiţiile iniţiale y1(0)=0.1, y2(0)=0.2, pe intervalul [0,10].
Soluţie: Se parcurg etapele:
ƒ se defineşte vectorul expresiilor derivatelor într-un fişier-funcţie (de exemplu
sistdif.m):
function dy=sistdif(x,y)
dy=zeros(2,1); % initializarea vectorului
dy=[y(1)+y(2); x-y(1)];
ƒ se rezolvă sistemul de ecuaţii diferenţiale prin execuţia următorului set de
instrucţiuni Matlab (fişier script):
% conditiile initiale
y0=[0.1; 0.2];
% domeniul (intervalul)
dom=[0,10];
% rezolvarea ecuatiei diferentiale
[xval,yval]=ode45('sistdif',dom,y0)
% reprezentarea grafica a solutiei
plot(xval,yval(:,1),'b',xval,yval(:,2),'r--')
legend('y1','y2')
obţinând soluţiile sub formă de puncte (prima coloană a matricei yval reprezintă
funcţia soluţie y1, a doua coloană reprezintă funcţia soluţie y2):
xval = 0 yval = 0.1000 0.2000
0.0167 0.1051 0.1984
0.0335 0.1102 0.1970
0.0502 0.1153 0.1959
0.0670 0.1206 0.1949
0.1507 0.1480 0.1927
0.2344 0.1778 0.1952
0.3182 0.2107 0.2021
0.4019 0.2472 0.2131
0.5658 0.3317 0.2452
0.7296 0.4381 0.2886
0.8935 0.5718 0.3393
1.0573 0.7386 0.3922
1.2445 0.9770 0.4479
1.4317 1.2747 0.4886
1.6188 1.6396 0.5024
1.8060 2.0787 0.4763
2.0402 2.7407 0.3648
2.2744 3.5344 0.1375
2.5087 4.4600 -0.2361
2.7429 5.5095 -0.7860
2.9548 6.5508 -1.4585
3.1667 7.6588 -2.3146
3.3787 8.8049 -3.3654
3.5906 9.9509 -4.6147
3.8182 11.1274 -6.1710
Matematici Asistate de Calculator – L9 8

4.0458 12.1810 -7.9312


4.2734 13.0335 -9.8593
4.5010 13.5968 -11.8983
4.7510 13.7696 -14.1717
5.0010 13.3529 -16.3547
5.2510 12.2286 -18.2881
5.5010 10.2933 -19.7796
5.7510 7.4709 -20.6124
6.0010 3.7225 -20.5593
6.2510 -0.9331 -19.3946
6.5010 -6.4021 -16.9022
6.7027 -11.2909 -13.7945
6.9043 -16.4650 -9.6271
7.1060 -21.7488 -4.3594
7.3077 -26.9177 2.0060
7.5085 -31.6833 9.3849
7.7094 -35.7634 17.6997
7.9103 -38.8186 26.7816
8.1111 -40.4739 36.3831
8.3315 -40.2090 47.1212
8.5518 -37.2497 57.5623
8.7721 -31.0862 67.0658
8.9924 -21.2531 74.8667
9.2185 -6.9471 80.1954
9.4446 11.9206 81.8218
9.6706 35.4431 78.7156
9.8967 63.4540 69.8396
9.9225 66.9222 68.4123
9.9484 70.4427 66.8955
9.9742 74.0143 65.2878
10.0000 77.6362 63.5879

Graficul soluţiilor este redat în figura 9.3.:

Fig.9.3. Graficul soluţiilor sistemului de ecuaţii diferenţiale din exemplul 9.5.


Matematici Asistate de Calculator – L9 9

9.3. Probleme de rezolvat

0
P9.1. Să se calculeze ∫ f(x)dx , unde funcţia f este dată prin relaţiile:
−1

j ⋅ x 2j 2
f(x j ) = − , x j = −1.1 + 0.1 ⋅ j, j = 1,2 ,...11
x j −1 j +1

π
2
1
P9.2. Să se calculeze integrala ∫ sin (x) + cos (x) dx .
π
3

P9.3. Să se rezolve următoarele probleme Cauchy pe intervalele menţionate. Soluţia


/ soluţiile se va / vor reprezenta grafic (în cazul sistemelor, reprezentarea soluţiilor
se va face în aceeaşi fereastră grafică):

a) y'+ y2=3⋅x, y(-1)=2, pe [-1,5];

b) y" - y'=2⋅y⋅sin(t) , y(0)=-1, y'(0)=2, pe [0,6];

c) -y'''+y''-x⋅y'+2⋅y⋅sin(x)-x3=0, y(1)=0.5, y'(1)=-0.5, y''(1)=0.3, pe [1,4];

⎧ x' +2 x = y − 2 z + sin( t ), x( 0 ) = 0

d) ⎨ y' +2 y = x + 2 z − cos( t ), y( 0 ) = 0.2 , pe [0,3].
⎪ z' −5 z = 3 x − 3 y , z( 0 ) = −0.1

P9.4. Să se aproximeze valorile funcţiilor-soluţie obţinute la problema P9.3. în
punctele menţionate mai jos:

a) -1, -0.5, 0, 1, 2.3, 5 pentru soluţia de la P9.3.a);

b) 0, 1.5, 2.3, 3.7, 4, 5.45, 6 pentru soluţia de la P9.3.b);

c) 1, 2.2, 3.5, 4 pentru soluţia de la P9.3.c);

d) 0, 0.75, 1.1, 1.16, 2, 3 pentru soluţiile de la P9.3.d).

P9.5. Se consideră un robot cu trei grade de libertate de tip translaţie-translaţie-


rotaţie, ale cărui ecuaţii dinamice ale mişcării sunt:

⎧(m1 + m2 + m3 )q&&1 = F1

⎨(m2 + m3 )q&&2 = F2 − m2 g − m3 g ,
⎪ J q&& = M
⎩ 3 3 3

în care au fost utilizate următoarele notaţii:


ƒ q1, q2, q3 - coordonatele generalizate (funcţii de timp, t);
Matematici Asistate de Calculator – L9 10

ƒ m1, m2, m3 - masele ansamblelor element-cuplă ale robotului;


ƒ F1, F2 - forţele care produc mişcările cuplelor de translaţie;
ƒ M3 - momentul care produce mişcarea cuplei de rotaţie;
ƒ J3 - momentul de inerţie axial al ansamblului cuplă 3 - element 3.
Cunoscând masele (m1=10 kg, m2=4.15 kg, m3=0.5 kg), momentul de inerţie axial
(J3=0.015 kgm2), expresiile analitice ale forţelor şi momentului:

F1(t)=-58.6⋅sin(2⋅t) F2(t)=23.25⋅e-t⋅(sin(4⋅t)-3cos(4⋅t))+45.601 M3(t)=0.004⋅t2


şi condiţiile iniţiale q1(0)=0, q'1(0)=2, q2(0)=1, q'2(0)=-1, q3(0)=-0.5, q'3(0)=0, să se
determine şi să se reprezinte grafic variaţia coordonatelor cuplelor cinematice în
intervalul de timp [0,3] (secunde).

9.4. Întreb ri recapitulative

Î9.1. Definiţi problema integrării numerice a unei funcţii f:[a,b]->R.


Î9.2. Precizaţi ce funcţii Matlab destinate calculului integralelor numerice
cunoaşteţi (denumire) şi care sunt metodele numerice care stau la baza acestor
funcţii.
Î9.3. Descrieţi principiul metodei trapezelor pentru calculul aproximativ al
integralelor definite.
Î9.4. Descrieţi principiul metodei lui Simpson pentru calculul aproximativ al
integralelor definite.
Î9.5. Definiţi problema de rezolvare a unei ecuaţii diferenţiale de ordinul I cu condiţii
iniţiale.
Î9.6. Precizaţi care sunt etapele de rezolvare în Matlab a ecuaţiilor diferenţiale /
sistemelor de ecuaţii diferenţiale.
Î9.7. Precizaţi ce funcţii Matlab destinate rezolvării ecuaţiilor diferenţiale cunoaşteţi
(denumire, metoda numerică care stă la baza funcţiei, cea mai simplă sintaxă).
Î9.8. Scrieţi sistemul de ecuaţii diferenţiale de ordinul I care reprezintă o formă
echivalentă a ecuaţiei diferenţiale de ordinul III: x'''+2⋅x''+x'-x+2⋅t2=1.
Î9.9. Scrieţi sistemul de ecuaţii diferenţiale de ordinul I care reprezintă o formă

⎧ x ′′ + y = sin( u )
echivalentă a sistemului de ecuaţii diferenţiale de ordinul II: ⎨ .
⎩x′ − y ′ + u = 0
Matematici Asistate de Calculator – L9 11

ANEXA M9. ELEMENTE DESPRE INTEGRAREA


NUMERIC . ELEMENTE DESPRE REZOLVAREA
ECUA IILOR DIFEREN IALE ŞI A SISTEMELOR
DE ECUA II DIFEREN IALE

M9.1. Integrare numeric

Problema integrării numerice se enunţă astfel: Se consideră o funcţie reală


de variabilă reală f : [a,b] → R, integrabilă pe intervalul [a,b]. Se cere să se calculeze
integrala definită:
b
I f = ∫ f ( x )dx .
a

Modalităţile de calcul numeric a integralei de mai sus se bazează de regulă pe


aproximarea funcţiei f printr-o altă funcţie g, a cărei integrală poate fi uşor calculată.
În continuare vor fi prezentate două metode bazate pe această modalitate: metoda
trapezelor şi metoda lui Simpson.

Metoda trapezelor
Intervalul pe care se calculează integrala, [a,b], este împărţit în n secţiuni
egale, pasul şi abscisa curentă fiind:
b−a
h= , x k = a + k ⋅ h , k = 0,1,..., n
n
În cazul metodei trapezelor, funcţia de integrat f se aproximează cu o funcţie
g afină pe porţiuni, având proprietatea că g(xk)=f(xk), k=0,1,...,n. Metoda trapezelor
constă în folosirea formulei de aproximare:
xk +1 xk +1
[ f (xk +1 ) + f (xk )] ⋅ h
∫ f ( x)dx ≈ ∫ g ( x)dx =
xk xk
2

În final se obţine expresia:


n −1
h⎡ ⎤
If = ⎢ a
2 ⎢⎣
y + y b + 2 ⋅ ∑ yk ⎥ ,
⎥⎦
k =1

unde yk = f(xk), k=1,...,n-1, ya = f(a), yb = f(b).

Metoda lui Simpson


Intervalul pe care se calculează integrala, [a,b], este divizat în 2⋅n secţiuni
egale, pasul şi abscisa curentă fiind:
Matematici Asistate de Calculator – L9 12

b−a
h= , x k = a + k ⋅ h , k = 0,1,...,2 ⋅ n
2⋅n
În cazul metodei lui Simpson, aproximarea funcţiei f se face cu o funcţie g
pătratică pe porţiuni, cu proprietatea că g(xk)=f(xk), k=0,1,...,2⋅n. Metoda lui Simpson
constă în folosirea formulei de aproximare:
x2⋅k + 2 x2⋅k + 2

∫ f ( x )dx ≈ ∫ g( x )dx = 3 ⋅ [ f (x2⋅k ) + 4 ⋅ f (x2⋅k +1 ) + f (x2⋅k +2 )]


h
x2⋅k x2⋅k

În final, integrala poate fi exprimată prin următoarea expresie, cunoscută sub


denumirea de formula generalizată a lui Simpson:

If =
h
[ y a + yb + 4 ⋅ ( y1 + y3 + ... + y 2⋅n−1 ) + 2 ⋅ ( y 2 + y 4 + ... + y 2⋅n−2 )] ,
3
unde yk = f(xk), k=1,...,n-1, ya = f(a), yb = f(b).

Dintre cele două metode prezentate, metoda lui Simpson are pentru acelaşi
număr de secţiuni ale intervalului [a,b] o precizie mai bună decât metoda trapezelor.

M9.2. Ecua ii diferen iale

Problema rezolvării unei ecuaţii diferenţiale de ordinul I cu condiţie


iniţială se pune astfel:

Fiind dată ecuaţia diferenţială:


y ′ = f ( x, y ), f : [a, b] × I → R, [a, b], I ⊂ R
(I fiind un interval) şi condiţia iniţială:
y(x0) = y0, x0 = a
să se determine funcţia y : [a,b] → R, x→y(x), care verifică relaţiile de mai sus.
Problema rezolvării unei ecuaţii diferenţiale cu condiţie iniţială se mai numeşte
problemă Cauchy.

Prin utilizarea metodelor numerice pentru rezolvarea problemei enunţate, se


obţin valorile y1, y2,..., yn care aproximează valorile y(x1), y(x2),..., y(xn) ale funcţiei-
soluţie y într-un set de n puncte ale intervalului [a,b], x1<x2<…<xn, x1 =a, xn = b.
În funcţie de numărul de puncte anterior calculate utilizate în determinarea
punctului curent (xi,yi), metodele numerice de rezolvare a ecuaţiilor diferenţiale se
împart în două categorii:
i) metode monopas (numite şi metode cu paşi separaţi), care utilizează doar
valorile corespunzătoare punctului precedent (xi-1, yi-1);
ii) metode multipas (numite şi metode cu paşi legaţi), care utilizează valorile
corespunzătoare mai multor puncte anterior determinate, (xi-1, yi-1),
(xi-2, yi-2),... .
Din prima categorie face parte metoda Runge-Kutta.
Matematici Asistate de Calculator – L9 13

Din a doua categorie fac parte metoda Adams-Bashforth-Moulton, diferite


variante îmbunătăţite ale metodei Runge-Kutta ş.a.

B9.3. Sisteme de ecua ii diferen iale

Problema rezolvării unui sistem de n ecuaţii diferenţiale de ordinul I cu


condiţii iniţiale este:

Fiind dat sistemul de ecuaţii diferenţiale:

⎧ y1′ = f1 ( x, y1 , y 2 ,K , y n )
⎪ y ′ = f ( x, y , y , K , y )
⎪ 2 2 1 2 n

⎪LLLLLLLLLLL
⎪⎩ y n′ = f n ( x, y1 , y 2 ,K , y n )
f i : [a, b] × I 1 × I 2 × L × I n → R, i = 1,2,..., n, [a, b], I 1 , I 2 K , I n ⊂ R
(Ii fiind intervale, i=1,2,...,n) şi condiţiile iniţiale:
y1(x0) = y01, y2(x0) = y02, ..., yn(x0) = y0n, x0 = a
să se determine funcţiile y1 : [a,b] → R, x→y1(x), y2 : [a,b] → R, x→y2(x), ...,
yn : [a,b] → R, x→yn(x), care verifică relaţiile de mai sus.
Pentru rezolvarea sistemelor de ecuaţii diferenţiale de ordinul I cu condiţii
iniţiale se utilizează metode numerice având ca punct de plecare metodele de
rezolvare din cazul ecuaţiilor diferenţiale de ordinul I cu condiţii iniţiale.

B9.4. Ecua ii diferen iale de ordin superior. Sisteme de ecua ii


diferen iale de ordin superior

Problemele de rezolvare a ecuaţiilor diferenţiale de ordin superior, respectiv a


sistemelor de ecuaţii diferenţiale de ordin superior, se pun în mod asemănător
problemelor corespunzătoare formulate la punctele 2 şi 3, cu adăugarea şi a
condiţiilor iniţiale referitoare la derivatele de ordin superior ale funcţiilor-
necunoscute.
Pentru rezolvarea acestor probleme, ecuaţia diferenţială de ordin superior,
respectiv sistemul de ecuaţii diferenţiale de ordin superior, trebuiesc aduse la forma
unui sistem de ecuaţii diferenţiale de ordinul I.

În continuare se exemplifică aducerea unei ecuaţii diferenţiale de ordinul n la


forma unui sistem de n ecuaţii diferenţiale de ordinul I:
Fie ecuaţia diferenţială de ordinul n:

y ( n ) = f ( x , y , y ′, y ′′,..., y ( n −1 ) ),
f : [ a ,b ] × I × I 1 × I 2 × L × I n −1 → R , [ a ,b ], I , I 1 , I 2 ,K , I n −1 ⊂ R
şi condiţiile iniţiale:
Matematici Asistate de Calculator – L9 14
( n −1 )
y ′( x 0 ) = y 01 , y ′′( x 0 ) = y 02 ,..., y ( x 0 ) = y 0 n , x0 = a
Pentru rezolvarea problemei, se introduc notaţiile yi = y(i), i = 1,2,...,n.

( )′
Se observă că y i′ = y (i ) = y ( i +1) = y i +1 , i = 1,2,...,n-1. Prin urmare, ecuaţia
diferenţială de ordinul n cu condiţii iniţiale este echivalentă cu următorul sistem de n
ecuaţii diferenţiale de ordinul I:
⎧ y1′ = y 2
⎪ y′ = y
⎪⎪ 2 3

⎨LLLLLLLLLL
⎪ y′ = y
⎪ n −1 n


⎩⎪ y n = f ( x, y1 , y 2 , K , y n )
cu condiţiile iniţiale:
y1(x0) = y01, y2(x0) = y02, ..., yn(x0) = y0n.

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