Documente Academic
Documente Profesional
Documente Cultură
1. INTRODUCERE ÎN MATLAB
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
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).
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) .
Calcul matriceal
În tabelul 1.2 sunt redate pe scurt principalele funcţii destinate calculului
matriceal.
Ş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
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.
⎡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
⎡ 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 ⎦⎥
⎢ 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).
⎢ M M O M ⎥
⎢ ⎥
⎢⎣ A1,n A2,n L A p ,n ⎥⎦
−1 1
4. det ( A ) = , ∀ A∈Mn(K), A - inversabilă;
det A
Matematici Asistate de Calculator – L1 13
⎡ 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
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
• 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
• 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
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).
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
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:
Calcul vectorial
În tabelul 2.4 sunt redate principalele funcţii utilizate în calculul vectorial.
⎧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
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 = []
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 = []
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
⎧ 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
⎧ 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
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 î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
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
0.5
graficele a 2 functii
0
y
-0.5
-1
-1.5
-2 -1 0 1 2 3 4 5 6
x
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
0.5
-0.5
10
5 10
0 5
0
-5 -5
-10 -10
b c
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
2r
0.5r
r
3.4. Întreb ri recapitulative
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.
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.
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
• ⎧ 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
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.
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.
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.
⎧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
⎧2 x1 − 3x 2 = 7
⎪
⎨− 6 x1 + 8 x 2 − x3 = −5
⎪3 x + 4 x = 1
⎩ 2 3
⎧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
⎧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
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
⎧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
% 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
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
⎧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.
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.
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
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.
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.
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
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);
(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
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ă.
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.
⎡ 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
-0.4303
-0.3923
0.8130
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
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)
% 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
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.
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
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.
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.
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.
>> 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.
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 ).
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
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)
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
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);
− 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.)
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:
{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ă
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.
⎧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
⎧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
⎧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).
⎧ 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
⎧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.
⎧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 − 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.
⎧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.
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
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).
⎧⎪ 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
% 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
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
f(x)=x – sin(x·π) – 3, x ∈ R.
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.
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
-1
-2
-8 -6 -4 -2 0 2 4 6 8 10
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
⎧m + p − 2 ⋅ n = 0
⎪
⎪n ⋅ q − p = 0
2
⎨
⎪m + q − 37 = 0
⎪⎩n + p − 36 = 0
⎧x 2 + y ⋅ a − z = 0
⎪
⎨x
⎪ =a
⎩z
în necunoscutele x, y, z.
⎛ 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
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
⎧ 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ă.
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).
a. Problema de optimizare
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.
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.
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
% 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
35
puncte
regresie parabolica
30
regresie cubica
regresie de gradul 6
25
20
15
10
-8 -6 -4 -2 0 2 4
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
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
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
⎧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
⎛ ⎞
n
⎜ n
X − xi ⎟
Ln−1 ( X ) = ∑ ⎜ y k ∏ ⎟
k =1 ⎜ i =1 x k − xi ⎟
⎝ i≠k ⎠
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
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
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
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
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
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
π
Exemplul 9.2: Să se calculeze ∫ ln (x + 1 ) ⋅ sin (x)dx .
0
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
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
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
-1
-2
-3
-4
1 1.5 2 2.5
⎧ 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
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
⎧ 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:
⎧(m1 + m2 + m3 )q&&1 = F1
⎪
⎨(m2 + m3 )q&&2 = F2 − m2 g − m3 g ,
⎪ J q&& = M
⎩ 3 3 3
⎧ 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
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
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
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.
⎧ 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.
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.