Sunteți pe pagina 1din 16

Funcţii matematice uzuale în Matlab

1. Obiectivul lucrării

Introducerea diferitelor funcţii existente în Matlab pentru prelucrarea numerică a vectorilor,


scalarilor şi matricelor.

2. Mersul lucrării

Matlab-ul are o serie de funcții predefinite. Ele operează asupra fiecărui element al unei matrice sau al
unui vector şi se apelează cu sintaxa:

nume_funcţie(argument)

unde: - nume_funcţie este numele uneia dintre funcţiile apelată;


- argument poate fi un scalar, un vector sau o matrice.
Dacă elementele din argumentul funcţiei sunt numere complexe, funcţiile de mai sus operează
independent asupra fiecărei părţi (reală şi imaginară).

2.1. Funcţii pentru aproximarea numerelor

Fie vectorul ce tebuie definit în Matlab şi ale cărei numere trebuiesc aproximate:

>> V = [0 2 2.3 4.7 -5.2 -7.8 ];

Următoarele variante de aproximări pot fi aplicate numerelor întreci și zecimale:

a) Aproximarea cu numere întregi

Funcţiile MATLAB ce pot fi apelate pntru aproximarea numerelor acestui vector sunt:

ceil( ) returnează un număr întreg, rotunjit la cel mai apropiat întreg spre plus infinit (+∞);
>> ceil(V)
ans =
0 2 3 5 -5 -7

fix( ) returnează un număr întreg, rotunjit la cel mai apropiat întreg spre zero;
>> fix(V)
ans =
0 2 2 4 -5 -7

floor( ) returnează un număr întreg, rotunjit la cel mai apropiat întreg spre minus infinit (-∞);
>> floor(V)
ans =
0 2 2 4 -6 -8
round( ) returnează un număr întreg, rotunjit la cel mai apropiat întreg;
>> round(V)
ans =
0 2 2 5 -5 -8

b) Aproximarea cu numere raţionale

rats( ) returnează aproximarea unui număr cu numere raţionale;


>> rats(V)
ans =
0 2 23/10 47/10 -26/5 -39/5

c) Aproximarea cu fracţii continue

rat( ); [a, b]=rat( ); returnează aproximarea unui număr cu fracţii raţionale continue;
a şi b - numărătorul si numitorul fracţiei care aproximează;
>> rat(V) >> [a,b]=rat(V)
ans = a =
0 0 2 23 47 -26 -39
2 b =
2 + 1/(3 + 1/(3)) 1 1 10 10 5 5
5 + 1/(-3 + 1/(-3))
-5 + 1/(-5)
-8 + 1/(5)

rat(x, tol); [a, b]=rat(x, tol);


x - este numărul care trebuie aproximat cu fracţii continue (în cazul nostru vectorul V);
tol - este toleranţa care se acceptă între numărul x și numărul returnat ca raspuns y (y-
x<=tol); implicit, tol=1e-6;
a şi b - numărătorul și numitorul fracţiei care aproximează pe x cu toleranţa tol.
>> rat(V,0.0001) >> [a,b]=rat(V,0.0001)
ans = a =
0 0 2 23 47 -26 -39
2 b =
2 + 1/(3 + 1/(3)) 1 1 10 10 5 5
5 + 1/(-3 + 1/(-3))
-5 + 1/(-5)
-8 + 1/(5)

d) Funcţia rest

rem( ) returnează restul împărţirii argumentelor;


>> X=[2.5 6 -7];Y=3;
>> Z1=rem(X,Y)
Z1 =
2.5000 0 -1.0000

>> Z2=rem(Y,X)
Z2 =
0.5000 3.0000 3.0000
e) Funcţia semn

Funcţia sign asociază fiecărui element al vectorului X elementele -1, 0, 1, după următoarea regulă:
1, daca x  0

sgn( x)  0, daca x=0
-1, daca x  0

sign( ) returnează semnul argumentului


>> X=[2.5 6 -7];Y=0;
>> Z3=sign(X)
Z3 =
1 1 -1

>> Z4=sign(Y)
Z4 =
0

2.2. Funcţii ce pot fi aplicate numerelor complexe

a) Definirea numerelor complexe în Matlab

Numerele complexe sunt permise în toate operaţiile şi funcţiile din MATLAB. Acestea sunt
introduse utilizând variabilele speciale i și j, ca în exemplele: z  2  3i sau z  2  3 j .
 2  3i 1 
Pentru a defini matricea: M   există două metode:
 i 2  i 
- ca sumă a două matrice cu elemente numere reale, una reprezentând partea reală iar cealaltă partea
imaginară;

>> M=[2 1; 0 2] +[3 0;-1 -1]*i

M =
2.0000 + 3.0000i 1.0000
0 - 1.0000i 2.0000 - 1.0000i

- ca o matrice cu elemente numere complexe.

>> M=[2+3*i 1; -i 2-i]

M =
2.0000 + 3.0000i 1.0000
0 - 1.0000i 2.0000 - 1.0000i

Prin al doilea procedeu trebuie evitat orice spaţiu liber (blanc) între părţile reală şi imaginară ale
aceluiaşi număr complex; altfel apar ambiguități ca cea ilustrată în exemplul de mai jos, unde notaţia b
este vazută, datorită spațiului alb, ca un vector cu două numere: 2 şi 3i.

>> a=[2+3*i]
a =
2.0000 + 3.0000i

>> b=[2 +3*i]


b =
2.0000 0 + 3.0000i

>> C=2-a*i

C =

2.0000 - 3.0000i

>> C=2 -a*i

C =

2.0000 - 3.0000i

Dacă variabilele i sau j au fost deja utilizate în alte scopuri, pentru calculul cu numere complexe
poate fi declarată o nouă unitate imaginară, în modul următor: i1=sqrt(-1).

b) Modulul şi argumentul numerelor complexe

Un număr complex z se definește sub una dintre formele:


- carteziană: z  x  i  y
- polară: z  rei
unde x şi y sunt părţile reală şi imaginară ale numărului complex z, iar r şi φ sunt modulul şi argumentul
numărului complex z.

abs( ) calculează valoarea absolută (modulul) a argumentului;


Obs: Modulul unui număr complex este z  x 2  y 2 .
>> x=1; y=1; z=x+i*y; r=abs(z)
r =
1.4142

>> x=-10; r1=abs(x)


r1 =
10

angle( ) calculează argumentul elementelor unui vector sau unei matrice, în radiani;
>> x=1; y=1; z=x+i*y; r=angle(z)
r =
0.7854

imag( ) extrage partea imaginară a argumentului; real( ) extrage partea reală a


argumentului;
>> z=-10+20*i; z_re=real(z), z_im=imag(z)
z_re =
-10
z_im =
20

conj( ) calculează conjugatul unui număr complex;


>> z=-10+20*i; z_conjugat=conj(z)
z_conjugat =
-10.0000 -20.0000i

2.3. Funcţiile putere, radical, logaritm şi exponenţială

a) Funcţia putere

^ pentru a ridica un număr a la puterea n ( x  an )


>> 10^2
ans =
100
>> 10^(-2)
ans =
0.0100

pow2( ) pentru a ridica 2 la puterea n


>> pow2(5)
ans =
32
pow2(m,n) calculează m * 2n
>> pow2(10,5)
ans =
320

b) Funcţia radical

sqrt( ) Calculează radicalul de ordinul doi dintr-un număr.


>> sqrt(49)
ans =
7
n
m n
u^(n/m) calculul radicalului de ordin superior lui 2 ( u u m )
3 4
De exemplu pentru 5 scriem în Matlab:
>> 5^(4/3)
ans =
8.5499

Argumentul poate fi orice număr real sau complex. Dacă numărul este negativ sau complex, rezultatul
calculului este un număr complex.

>> sqrt(-4)
ans =
0 + 2.0000i
c) Funcţia logaritm

log( ) Calculează logaritmul natural (ln);


>> log(23)
ans =
3.1355

log2( ) Calculează logaritmul în baza 2  log 2  ;


>> log2(4)
ans =
2

log10( ) Calculează logaritmul zecimal  log10  ;


>> log10(100)
ans =
2

Dacă argumentul funcţiilor log şi log10 este un număr negativ, sau complex, z=x+iy, rezultatul este
calculat cu relaţiile:

log(z) = log(abs(z)) + i*atan2(y,x) şi

log10(z) = log10(abs(z)) + i*atan2(y,x)

unde atan2 este funcţia MATLAB ce calculează arctangenta numărului complex.

Exemple:

>> log(-23)
ans =
3.1355 + 3.1416i

>> log10(-100)
ans =
2.0000 + 1.3644i

d) Funcţia exponenţială

exp( ) Calculează exponenţiala ( e x ); e= 2.71828182845...


>> exp(2)
ans =
7.3891

Dacă argumentul este numărul complex z=x+iy, rezultatul este calculat cu relaţia:
e z  e x  cos  y   i *sin( y) 

Exemple:

>> z=10+20*i; exp(z)


ans =
8.9886e+003 +2.0109e+004i

>>a=exp(10)
a =
2.2026e+004

>> b=cos(20), c=sin(20)


b =
0.4081
c =
0.9129

2.4. Funcţii trigonometrice

a) Funcţiile trigonometrice directe


Funcţiile trigonometrice directe în MATLAB sunt:
sin( ) Calculează sinusul argumentului;
cos( ) Calculează cosinusul argumentului;
tan( ) Calculează tangenta argumentului;
cot( ) Calculează cotangenta argumentului;
sec( ) Calculează secanta argumentului;
csc( ) Calculează cosecanta argumentului.

Pentru argumente numere complexe, z  x  i  y , relaţiile de calcul sunt:


sin  z   sin  x   cosh  y   i  cos  x   sinh  y 
cos  z   cos  x   cosh  y   i  sin  x   sinh  y 
tan  z   sin  z  cos  z 

b) Funcţiile trigonometrice inverse


Funcţiile trigonometrice inverse în MATLAB sunt:
asin( ) Calculează arcsinusul argumentului;
acos( ) Calculează arccosinusul argumentului;
atan( ) Calculează arctangenta argumentului;
atan2( ) Calculează arctangenta unui argument complex;
acot( ) Calculează arccotangenta argumentului;
asec( ) Calculează arcsecanta argumentului;
acsc( ) Calculează arccosecanta argumentului.

c) Funcţiiie hiperbolice
c.1) Funcţiiie hiperbolice directe
Funcţiile hiperbolice directe în MATLAB sunt:
sinh( ) Calculează sinusul hiperbolic al argumentului.
cosh( ) Calculează cosinusul hiperbolic al argumentului.
tanh( ) Calculează tangenta hiperbolică a argumentului.
coth( ) Calculează cotangenta hiperbolică a argumentului.
sech( ) Calculează secanta hiperbolică a argumentului.
csch( ) Calculează cosecanta hiperbolică a argumentului.

c.2) Funcţiiie hiperbolice inverse


Funcţiile hiperbolice inverse în MATLAB sunt
asinh( ) Calculează arcsinusul hiperbolic al argumentului;
acosh( ) Calculează arccosinusul hiperbolic al argumentului;
atanh( ) Calculează arctangenta hiperbolică a argumentului;
acoth( ) Calculează arccotangenta hiperbolică a argumentului;
asech( ) Calculează arcsecanta hiperbolică a argumentului;
acsch( ) Calculează arccosecanta hiperbolică a argumentului.

Dacă argumentul este o matrice, funcţiile trigonometrice operează asupra fiecărui element.

2.5. Alte funcţii aplicate matricelor şi vectorilor

a) Redimensionarea unei matrice

reshape( ) redimensionează o matrice A cu dimensiunea l x p într-o altă matrice B, cu


dimensiunea m x n. Pentru ca operaţia de redimensionare să fie posibilă este necesar ca
matricea A să aibă acelaşi număr de elemente cu matricea B (l x p = m x n). Se apelează
cu sintaxa:
B=reshape(A, m, n)

Elementele matricei B - în ordinea succesivă a coloanelor şi pe fiecare coloană de sus în


jos – sunt elementele matricei argument A (citite de sus în jos şi de la stânga la dreapta).
>> A=[1 3 7 9;11 13 15 17;19 21 23 25];
>> B=reshape(A,4,3)
B =
1 13 23
11 21 9
19 7 17
3 15 25

b) Rotirea matricei în jurul unei coloane sau linii

fliplr( ) returnează matricea rezultată prin rotire coloanelor matricei argument în jurul
coloanei(lor) centrală(e)
>> A=[11 12 13;21 22 23;31 32 33]

A =
11 12 13
21 22 23
31 32 33

>> B=fliplr(A)

B =
13 12 11
23 22 21
33 32 31

flipud( ) returnează matricea rezultată prin rotire liniilor matricei argument în jurul
liniei(lor) centrală(e)
>> C=flipud(A)

C =
31 32 33
21 22 23
11 12 13

c) Rotirea matricei cu multipli de 90 de grade în jurul unul element

rot90( ) rotirea unei matrice cu 90 de grade, în sens trigonometric (contrar sensului orar)
>> D=rot90(A)

D =
13 23 33
12 22 32
11 21 31
rot90(A,k ) rotirea unei matrice cu k  90 de grade. Dacă k este pozitiv rotirea este în
sens trigonometric şi în sens contrar, dacă este negativ
>> E=rot90(A,2)

E =
33 32 31
23 22 21
13 12 11

d) Extragerea matricei triunghiulare

tril( ) extrage matricea inferior triunghiulară dintr-o matrice;


>> F=tril(A)

F =
11 0 0
21 22 0
31 32 33
triu( ) extrage matricea superior triunghiulară dintr-o matrice;
>> G=triu(A)

G =
11 12 13
0 22 23
0 0 33

e) Analiza matriceală

det( ) calculează determinantul unei matrice;


>> H=det(A)

H =
0

>> W=[2 4;5 6];det(W)

ans =
-8.0000

inv( ) calculează inversa unei matrice;


Observaţii: - inversa unei matrice A este A 1 ;
- A1 *A=A*A1  I , unde I este matricea identitate;
- o matrice este inversabilă numai dacă determinantul acesteia este diferit de
zero, adică dacă este nesingulară.
>> K=inv(A)
Warning: Matrix is singular to working precision.

K =
Inf Inf Inf
Inf Inf Inf
Inf Inf Inf

>> W=[2 4;5 6];


>> K=inv(W)

K =
-0.7500 0.5000
0.6250 -0.2500

rank( ) calculează rangul matricei; o matrice X nenulă cu m linii şi n coloane are rangul
k, dacă X are un minor nenul de ordin k, iar toţi minorii de ordin mai mare decât k (dacă
există) sunt nuli. Rangul unei matrice este un scalar 1≤k≤min(m,n).
>> L=rank(A)

L =
2
trace( ) calculează urma unei matrice - suma elementelor de pe diagonala principală;

>> M=trace(A)

M =
66

norm( ) calculează norma vectorului sau matricei;


Exemplu: Norma unui vector v  a  i  b  j  c  k este v  a 2  b2  c 2
În Matlab vectorul va fi: V=[a b c]; norm(V)
>> norm([5 6 7])
ans =
10.4881

2.6. Prelucrarea datelor şi calcule statistice

cumsum( ) calculează suma cumulată; dacă argumentul este un vector, funcţia returnează
un vector care conţine suma cumulată a elementelor vectorului argument, iar dacă
argumentul este o matrice, funcţia returnează o matrice care pe fiecare coloană conţine
suma cumulată a elementelor din coloana respectivă.
>> V=[1 2 3 4 5]; cumsum(V)

ans =
1 3 6 10 15

>> A=[1 2 3;4 5 6;1 2 3];cumsum(A)

ans =
1 2 3
5 7 9
6 9 12

cumprod( ) calculează produsul cumulat; dacă argumentul este un vector, funcţia


returnează un vector care conţine produsul cumulat al elementelor vectorului argument,
iar dacă argumentul este o matrice, funcţia returnează o matrice care pe fiecare coloană
conţine produsul cumulat al elementelor din coloana respectivă.
>> V=[1 2 3 4 5];cumprod(V)

ans =
1 2 6 24 120

>> A=[1 2 3;4 5 6;1 2 3];cumprod(A)

ans =
1 2 3
4 10 18
4 20 54

sum( ) calculează suma; dacă argumentul este un vector, funcţia returnează un scalar egal
cu suma elementelor vectorului, iar dacă argumentul este o matrice, funcţia retumează un
vector linie care conţine suma elementelor pe fiecare coloană.
>> V=[1 2 3 4 5];sum(V)

ans =
15

>> A=[1 2 3;4 5 6;1 2 3];sum(A)

ans =
6 9 12
prod( ) calculează produsul; dacă argumentul este un vector, funcţia returnează un scalar
egal cu produsul elementelor vectorului, iar dacă argumentul este o matrice, funcţia
retumează un vector linie care conţine produsul elementelor pe fiecare coloană.
>> V=[1 2 3 4 5];prod(V)

ans =
120

>> A=[1 2 3;4 5 6;1 2 3];prod(A)

ans =
4 20 54

max( ) determină cea mai mare componentă;


min( ) determină cea mai mică componentă;
Dacă argumentul este un vector, aceste funcţii returnează un scalar egal cu cel mai mare
(mic) element, iar dacă argumentul este o matrice, funcţiile returnează un vector linie
care conţine elementele maxime (minime) din fiecare coloană.
>> V=[1 2 3 4 5];a=max(V),b=min(V)\

a =
5
b =
1

>> A=[1 2 3;4 5 6;1 2 3];a=max(A),b=min(A)

a =
4 5 6
b =
1 2 3

[M,l]=max(X), [m,l]=min(X)
în vectorul M, respectiv m, se memorează valorile maxime (minime), iar în vectorul l,
indicii acestor valori. Dacă vectorul X are mai multe valori maxime (minime) identice, se
reţine indicele primului element maxim (minim) găsit.
>> V=[2 1 5 4 3];[M,l]=max(V),[m,l]=min(V)

M =
5
l =
3
m =
1
l =
2

mean( ) Calculează valoarea medie (media aritmetică); pentru vectori, funcţia mean
returnează un scalar egal cu valoarea medie a elementelor, iar pentru matrice, returnează
un vector linie conţinând valoarea medie a fiecărei coloane (media pe coloană).

>> V=[1 2 3 4 5];mean(V)

ans =
3

median( ) calculează valoarea mediană; mediana este elementul de la mijlocul unui set de
date ordonat crescător. Dacă numărul N al valorilor setului este impar, valoarea mediană
este cea din poziţia (N+1)/2, iar dacă acesta este par, valoarea mediană este media
elementelor din poziţiile (N/2) şi (N/2)+1
>> V=[1 2 4 4];median(V)

ans =
3

>>A=[1 2 4 4; 3 4 6 6; 5 6 8 8; 5 6 8 8];median(A)

ans =
4 5 7 7

sort( ) sortează elementele în ordine crescătoare;

>> V=[5 1 4 3 5];sort(V)

ans =
1 3 4 5 5

[Y,l] = sort(X) returnează în matricea Y elementele coloanelor sortate în ordine


ascendentă şi în matricea l indicii(poziţiile din Vectorul iniţial) elementelor sortate ale
matricei X.
>> V=[5 1 4 3 5];[Y,l]=sort(V)

Y =
1 3 4 5 5
l =
2 4 3 1 5

diff( ) calculează diferenţele dintre numere succesive;

>> V=[5 1 4 3 5]; diff(V)


ans =
-4 3 -1 2

Interpretare: 1-5=-4, 4-1=3; 3-4=-1; 5-3=2

hist( ) reprezintă histograma;

>> V=[5 1 4 3 5]; hist(V)


Returnează reprezentarea grafică:
2

1.5

0.5

0
1 2 3 4 5

unde pe abscisă sunt enumerate valorile existente din vector, iar pe


ordonata cifrele corspunzătoare amplitudinelor barelor revendică
numărul de incidenţă a numărului de pe abscisă în cadrul vectorului (de
ex. numărul 5 apare de 2 ori)

[N,Y]=hist(X) returnează vectorii absciselor şi ordonatelor corespunzătoare reprezentării


histogramei vectorului X. Pe baza acestori vectori returnaţi, N şi Y, histograma se mai
poate reprezenta grafic şi folosind funcţia bar(Y,N).
>> V=[5 1 4 3 5];
>> [N,Y]=hist(V)

N =
1 0 0 0 1 0 0 1 0 2
Y =
1.2000 1.6000 2.0000 2.4000 2.8000 3.2000 3.6000
4.0000 4.4000 4.8000

>> bar(Y,N)
Returnează aceiaşi histogramă de mai sus

3. Cerinţe

1.25  2.59i 7.3  5.3i 


1. Fie matricea V    . Să se apeleze funcţiile de aproximare numerică pe baza
 4.2  1.8i 2.6  1.4i 
acestei matrici.
2. Să se aproximeze cu numere raţionale, numerele: 1.25, 0.25,  şi 1.2596.
3. Să se aproximeze cu fracţii continue numerele: 0.25, 1.25, -2.25 si 1.343.
4. Să se aproximeze prin fracţii raţionale numerele: 2.25, 3.5, 6.57, 10.
5. Fie vectorii X = [l 3 -6] şi Y = [2 3 4]. Să se calculeze restul împărţirii elementelor vectorului X la Y.
6. Să se determine restul împărţirii vectorului X= [2.5 6 -7] la scalarul Y=3 şi invers a scalarului Y la
vectorul X.
 1 2i 
7. Fie matricea: M     . Să se determine partea reală, imaginară şi conjugatul elementelor
 i 
 i 4e 
4

acesteia.

8. Să se calculeze: A  23 25 213.5  folosind ridicarea la putere şi funcţia pow2( ).


9. Să se calculeze radicalul fiecărui element al matricei: X =[1 2;4 -9]
10. Să se calculeze x  3 125
11. Să se calculeze logaritmul natural şi zecimal din numerele e2 şi 100.
12. Să se calculeze logaritmul în bază 2 al elementelor matricei: A   4 23 82 10 .

i
13. Să se calculeze: e , e2 , e3 şi e 4 .
14. Să se calculeze funcţiile trigonometrice directe ale elementelor vectorului: W   4 3 4 5 4 .
15. Să se calculeze funcţiile trigonometrice inverse pentru elementele vectorului
U  0 1 2 2 .
 1 4 7 10 
 
16. Fie matrice A   2 5 8 11  . Să se redimensioneze matricea A cu dimensiunea 3x4 în matricea
 3 6 9 12 
 
B cu dimensiunea 2x6.
 1 2 3
 
17. Fie matricea A   4 5 6  . Să se:
7 8 9
 
- rotească matricea A în jurul coloanei centrale, iar apoi în jurul liniei centrale.
- rotească în jurul unui element, cu 90 de grade în sens trigonometric şi cu 180 de grade în sens orar.
 1 2 3
 
18.Pe baza matricei A de la punctul 17. să se genereze matricea A   4 5 6  folosind funcţiile tril,
7 8 9
 
triu, rot90.
 1 2 3
1 2  
19. Calculaţi determinanţii matricelor A    , B   4 5 6 .
3 4 7 8 9
 
 2 1
20. Calculaţi inversa matricei: A   .
 1 1
 3 2 5 4 
 
21. Să se determine rangul matricei A   3 1 3 3  .
 3 5 13 11 
 
 1 2 3
 
22. Să se calculeze urma matricei A   4 5 6  .
7 8 9
 
23. Să se calculeze suma, suma cumulată, produsul si produsul cumulat al elementelor unui vector V=[5
6 10].
24. Să se calculeze suma, suma cumulată, produsul şi produsul cumulat ai elementelor unei matrice.
 1 2 3
 
 4 5 6
M .
7 8 9
 
4 2 1
25. Să se determine valorile maxime şi minime ale vectorului V= [l 3 -9 0] şi ale unei matrice
1 2 3 
 
M   4 0 9  .
 13 7 10 
 
 7 2 4 
 
 5 2 0 
26. Să se schimbe ordinea liniilor matricei N  , astfel încât elementele din coloana a
 4 10 4 
 
 7 5 1 
doua să fie ordonate descrescător.
3x  2 y  z  10

27. Fie următorul sistem de trei ecuaţii cu trei necunoscute:  x  3 y  2 z  5 . Să se rezolve sistemul de
 x  y  z  1

ecuaţii pe baza operaţiilor matriceale.

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