Sunteți pe pagina 1din 14

Noiuni introductive- laborator 2013-2014

Matlab este un pachet de programe performante, care rezolv numeric i probleme ale calculului tiinific. Probleme
complicate pot fi rezolvate rapid, permindu-ne astfel s folosim timpul gndind i experimentnd. Algoritmii folosii
sunt de foarte bun calitate, aa c putem avea ncredere deplin n rezultatele obinute. n plus resursele de grafic sunt
excelente.
Cu siguran Matlab ne va fi de un real folos pentru a nelege si a folosi rezultatele calculului tiinific. Exist un
singur mod de a nva cum poate fi folosit i anume lucrnd ct mai multe i mai variate exemple.

Aritmetic n Matlab
n Matlab operaiile aritmetice de baz ( + , - , * , /, ^ ) sunt folosite mpreun cu parantezele ( ). Ordinea
operaiilor este cea cunoscut din aritmetica elementar.
6*7-4/9+2^5
Importana parantezelor este reamintit prin urmtorul exemplu:
-3^4+2/5*7
(-3)^4+2/5*7
(-3)^4+2/(5*7)
S urmrim urmtorul calcul:
2-7/3
ans =
-0.3333
ans^2
ans =
0.1111
Rezultatul n urma calculului primei expresii a fost etichetat de Matlab cu ans (answer). Putem atribui nume pentru
a stoca numerele:
x=2-7/3
y=x^2
i astfel valorile lui x i y pot fi folosite n calcule ulterioare.
n cazul n care nu dorim afiarea rezultatelor intermediare, la sfritul expresiei sau atribuirii, scriem punct i
virgul (semi-colon):
x=2-7/3; y=x^2; z=y^2+2
Prezentm cteva funcii elementare din Matlab:

abs = valoarea absolut

sqrt = radical
de reinut: pentru a calcula

abs(3-5*2^3)
sqrt(3)
n

a , a 0 vei scrie a

1
n

sin = funcia sin

sin(pi/6)

cos = funcia cos

cos(pi/10)

tan = funcia tg

tan(pi/12)

asin = funcia arcsin

asin(-sqrt(3)/2)

acos = funcia arccos

acos(-1)

atan = funcia arctg

atan(-1)

exp = funcia exponeial

exp(3)

de reinut: n Matlab pentru a scrie numrul irational e vei scrie exp(1)

log = funcia logaritm natural

log(1)

log10 = funcia logaritm n baza 10

log10(1)

de reinut: pentru a calcula loga b, a, b 0, a 1 , veti folosi formula: log a b

ln b
ln a

Matrice n Matlab
Pentru a scrie o matrice n Matlab folosim urmtoarea sintax:

- fiecare linie a matricei poate fi considerat a fi o list de numere, separate ntre ele de virgul sau spaiu liber;
- fiecare linie a matricei este desprit de urmtoarea prin punct i virgul;
- elementele matricei se scriu ntre paranteze drepte.
M=[1 -2 3 -4;2 1 5 2;-2 3 1 0; 3 1 2 -5]
M1=[2 1 -1 3; 1 3 2 -5]
Pentru a obine matricea transpus a matricei M scriem M:
M'
M1'
Operaiile cu matrice sunt cele cunoscute; eventualele greeli, legate de dimensiunea matricelor sunt semnalate de
soft:

M2=[1 0 -2 1;3 1 2 -3]; M1+M2


(-3)*M2
M+M1
??? Error using ==> plus
Matrix dimensions must agree.

Calculul matricei inverse se face cu funcia inv(.)


inv(M)
Soft-ul atenioneaz urmtoarele greeli:
-

se cere s se calculeze inversa unei matrice care nu este ptratic;

se cere calcularea inversei unei matrici singulare

inv(M1)
??? Error using ==> inv
Matrix must be square.

M4=[1 -2 3 ;1 0 1 ;-2 4 -6]; inv(M4)


Warning: Matrix is singular to working precision.
(Type "warning off MATLAB:singularMatrix" to suppress this warning.)

Pentru a calcula determinantul matricei, folosim funcia det( )

1 3 3 3 3 3 3

3 1 3 3 3 3 3
3 3 1 3 3 3 3

Fie matricea A 3 3 3 1 3 3 3 ; calculai determinantul matricei i inversa ei.


3 3 3 3 1 3 3

3 3 3 3 3 1 3
3 3 3 3 3 3 1

A=[1 3 3 3 3 3 3;3 1 3 3 3 3 3;3 3 1 3 3 3 3;3 3 3 1 3 3 3 ; 3 3 3 3 1 3 3 ; 3 3 3 3 3 1 3; 3 3 3 3 3 3 1];


det(A)

inv(A)
Vectori n Matlab
Vectorii linie sunt matrici cu o linie i n coloane. Ei pot fi considerai a fi liste de numere, separate ntre ele de
virgul sau spaiu liber. Numrul de input-uri reprezint lungimea (length) vectorului; deseori folosim pentru inputurile vectorului, termenul de component. Astfel, un element din Rn este un vector linie de lungime n n loc de vector de
dimensiune n.
x=[1 -2 7 15]
Prin instruciunea a:b:c unde a < c, b > 0 obinem un vector de forma:
a a+b a+2b a+3b a+mb
unde a+mb este cel mai mare numr de acest tip, mai mic sau egal cu c.
y=0:2:8
-2:5:2
1:2:-1
n ultimul exemplu rezultatul este mulimea vid deoarece dac a > c este necesar ca numrul b s fie negativ, cum
se ntmpl n exemplul urmtor:
1:-5:-14
Operaiile cu vectori sunt cele cunoscute din Rn: adunarea i nmulirea cu scalari.
x=[1 -2 7 15]; y=0:2:6; x+y
0.2*x
Vectorii coloan sunt matrici cu n linii i o coloan. In Matlab elementele sunt separate de punct i virgul.
u=[-2;3;1;4]
Adunarea a doi vectori de aceeai dimensiune i respectiv nmulirea cu scalar se definesc ca n cazul vectorilor linie.
u=[3;2;1;-10];u+v
(-3)*u
Putem transforma un vector linie ntr-un vector coloan prin procedeul numit transpunere, notat :
x=[2 -1 4 19]; x'

Rezolvarea unui sistem de n ecuaii cu n necunoscute, compatibil determinat:

a11 x1 ... a1n xn b1


...............................
an1 x1 ... ann xn bn
a11 ... a1n
x1


se reduce la rezolvarea ecuaiei matriceale A x b , unde matricea A ... ... ... este nesingular, x ,
a

x
n1 ... a nn
n
b
1

b . Ecuaia are o soluie unic x A 1 b .
b
n

x1 3 x2 3 x3 3 x4 3 x5 3 x6 3 x7 1
3x x 3x 3x 3x 3x 3x 3
3
4
5
6
7
1 2
3 x1 3 x2 x3 3 x4 3 x5 3 x6 3 x7 5

Rezolvai cu Matlab sistemul: 3 x1 3 x2 3 x3 x4 3x5 3x6 3x7 2


3 x 3 x 3 x 3 x x 3 x 3 x 4
2
3
4
5
6
7
1
3 x1 3 x2 3 x3 3 x4 3 x5 x6 3 x7 2

3 x1 3 x2 3 x3 3 x4 3 x5 3 x6 x7 10

A=[1 3 3 3 3 3 3;3 1 3 3 3 3 3;3 3 1 3 3 3 3;3 3 3 1 3 3 3 ; 3 3 3 3 1 3 3 ; 3 3 3 3 3 1 3; 3 3 3 3 3 3 1];


b=[1 3 5 2 -4 2 -10]; x=inv(A)*
Pentru a obine soluia sistemului putem scrie i: x=A\b:
x=A\b'
Am definit noiunea de produs scalar pe Rn.
In general produsul scalar este produsul dintre un vector linie i un vector coloan, amndoi avnd aceeai
y1

n
y
xk yk
dimensiune: dac x ( x1 , x 2 ,...,x n ) i y 2 , atunci se definete: x, y x * y
...
k 1

y
n

x=[3 2 1 -7]; u=[4;-1;2;13]; x*u


Dac avem:
x=[3 2 1 -7]; y=[4 2 -2 12];x*y
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Eroarea se datoreaz faptului c vectorii al cror produs scalar vrem s-l calculm sunt vectori linie; pentru a evita
aceast situaie folosim vectorul y (vectorul transpus).
x=[3 2 1 -7]; y=[4 2 -2 12];x*y
Calculm produsul scalar a doi vectori linie sau doi vectori coloan. Comentariile sunt precedate de % , avnd doar
rolul de a da explicaii cititorului.
x=[3 2 1];y=[2 4 5];x*y' % x si y sunt vectori linie
x=[3 2 1];x*x' % x este vector linie
u=[2;0;-3];v=[-1;2;3];u'*v % u si v sunt vectori coloana
Cele trei norme definite pe Rn,

x , x 1, x

unde x ( x1 , x 2 ,...x n ) ,

se calculeaz n Matlab folosind instruciunile:


norm(x) = x ; norm(x,1) = x 1 ; norm(x,inf) = x

x=[-1 3 14 -11 2]; norm(x)


norm(x,1)
norm(x,inf)
Pentru a calcula distanele definite anterior, dintre doi vectori din Rn, folosim formula d ( x, y) x y :
x=[-1 3 14 -11 2];y=[2 -5 21 1 -10];norm(x-y)
norm(x-y,1)
norm(x-y,inf)

Unghiul dintre doi vectori linie x i y din R3 este definit de formula: cos

x, y t
. Calculai, utiliznd
x y

Matlab, cosinusul unghiului dintre x (1, 2, 3) i y (1, 2, 4) i determinai msura unghiului n grade.
x=[1 2 -3];y=[-1 2 -4]; a=(x*y')/(norm(x)*norm(y))
t=acos(a)
th=t*180/pi
V propunem s justificai formula Schwarz-Cauchy folosind formula de mai sus.
Folosind Matlab s relum problema de clustering (simplificat) cu pacienii de la gastroenterologie: stabilii
dac vectorii

P1 (162, 255,74, 258) i P2 (422, 488,183, 292)


aparin bilei deschise de centru C1 (356, 350, 134, 228) sau bilei deschise de centru C2 (184, 203, 95, 189) ?
x=[165 255 74 258]; y=[422 488 183 292];a=[356 350 134 228]; b=[184 203 95 189];
norm(x-a)
norm(x-b)
norm(y-a)
norm(y-b)
n continuare introducem un nou tip de produs a doi vectori de aceeai dimensiune i acelai tip, cunoscut sub
numele de produsul Hadamard. Aproape de loc utilizat n matematic, aa numitul dot product (.*) este o caracteristic
esenial a Matlab-ului.
Fiind dai doi vectori x ( x1 , x 2 ,...,x n ) i y ( y1 , y 2 ,..., y n ) definim:

x. * y ( x1 y1 , x 2 y 2 ,...,x n y n ) .
Dup cum se observ rezultatul este un vector n-dimensional, ale crui componente sunt componentele celor doi vectori
nmulite punctual (element cu element).

x=[2 -6 1 3];y=[-1 3 2 5];u=[4;19;2;-2];v=[4;10;-4;23];


x.*u'
x.*v'
u.*v
x'.*u
y'.*v
x.^2
u.^3

Scriei (sub forma de tabel) valorile funciei f ( x) x ln( x x 2 1) n punctele 0; 0.2; 0.4; 0.6; 0.8; 1.
x=0.2:0.2:1;y=x.*log(x+sqrt(x.^2+1));[x',y']
mprirea a doi vectori nu exist n matematic, dar n Matlab operaia (. /) este definit ca fiind mprirea element
la element, adic pentru x ( x1 , x 2 ,...,x n ) i y ( y1 , y 2 ,..., y n ) avem:

x. / y ( x1 / y1 , x 2 / y 2 ,...,x n / y n )
x=[2 -6 1 3];y=[-1 3 2 5];u=[4;19;2;-2];v=[4;10;-4;23];
x./y
v./u
u./x'
5

S scriem (sub forma de tabel) valorile funciei f ( x)

arcsin x
n punctele 0.1; 0.2; 0.3;0.4; 0.5.
x

x=[0.1:.1:.5]';y=(asin(x))./x;[x,y]

Introducere n programarea n Matlab


Instruciunea for

Calculai urmtoarea sum: 1

1
1
1
2 .... 2 .
2
2
3
20

s=0;
for i=1:20
s=s+1/i^2;
end
s
s=
1.5962
Dac renunm la punct i virgul (semi colon) vom avea afiate toate valorile intermediare ale sumei:
s=0;
for i=1:20
s=s+1/i^2
end
Un mod mai simplu, specific pentru Matlab, de a calcula aceast sum este utilizarea funciei sum:
sum(1./(1:20).^2)
Instruciunea while
Determinai cel mai mic numr natural pentru care

2n
1
2n
, problema fiind posibil deoarece lim

0.
n n !
n ! 10

n=1;
x=2;
while x>=1/10
x=x*2/n;
n=n+1;
end
n-1

Probleme propuse
1. Utiliznd Matlab

3
calculai: 7 2 ;
2e

35sin

12 ;
1 3 2

5ln 1 e ;

arctg

2
.
1+lg7

stabilii dac urmtoarele matrice sunt nesingulare i n caz afirmativ calculai matricele inverse:
1 2 0 0 0
3 5 7 2

3 2 3 0 0
1
2
3
4

; 0 4 3 4 0
0 1 9 10

0 0 5 4 5
0 1 2 0

0 0 0 0 5

rezolvai urmtoarele sisteme liniare:

x 3 y 5 z 7t 12
3x 5 y 7 z t 0
;
5 x 7 y z 3t 4
7 x y 3z 5t 16

x 2y 5

x 2 y 3z 14
y 2 z 3t 20
;
3x z 2t 14
2 x 3 y t 12

3 y 4 z 18
5 z 6u 39
7u 8v 68
9v 10 x 55

fiind dai vectorii x (2,3, , 1) i y (5,0,1, e ) calculai:


2

x y, x 3 y ;
normele cunoscute ale acestor vectori;
distanele cunoscute dintre cei doi vectori;
produsul scalar al celor doi vetori.

1
0


fiind dai vectorii u 7 i v 1 calculai:

5
3
e
2u v, u 5v ;
normele cunoscute ale acestor vectori;
distanele cunoscute dintre cei doi vectori;
produsul scalar al celor doi vetori.
Scriei (sub forma de tabel) valorile funciilor f ( x) x 2 x 4 x 2 2 i g ( x)

ln( x 1)
n punctele: -0.5; -0.4;
x

-0.3; -0.2; -0.1; 0.1; 0.1; 0.2; 0.3;0.4; 0.5.

1
;
2

k 2
utiliznd instruciunea for i afind rezultatul final;
utiliznd instruciunea for i afind rezultatele pariale sub forma unui vector coloan;
folosind functia sum
20

2. Calculai urmtoarea sum:


-

ln 1 k

40

1
k
k 1
utiliznd instruciunea for i afind rezultatul final;
utiliznd instruciunea for i afind rezultatele pariale sub forma unui vector coloan;
folosind functia sum

3. Calculai urmtoarea sum:

(1)

n 1

4. Determinati cel mai mic numr natural n pentru care


-

(n !) 2
0.001
(2 n)!

n2
0.02
5n

5 n cazul bazei de date cu florile de Iris, prezentat la nceputul paragrafului s-a calculat c iriii de acelai tip sunt
grupai ntr-o bil deschis i anume
- Setosa n bila de centru C1 (2.4, 14.6, 34.3, 50.1),
-

Verginica n bila de centru C2 ( 20, 55.5, 29.7, 65.9)

- Versicolor n bila de centru C3 (13.3, 43.2, 27.7, 59.4)


Decidei crui tip i aparine un iris cu urmtoarele attribute:

I1

limea petalei
21

13
I1

lungimea petalei
56

limea sepalei
28

lungimea sepalei
64

42

26

57

Grafice de funcii n Matlab


Este evident c putem desena graficul unei funcii doar n cazul A, B R sau A R2, B R.
Pentru nceput vom desena in Matlab graficul unei funcii f : A B , unde A, B R .
Dac A [a, b] , generm doi vectori:

x (a, a h, a 2h,...,a (n 1)h, b) i

y ( f (a), f (a h), f (a 2h),..., f (a (n 1)h), f (b)) ,

scriind:
x=a:h:b
y=f(x)
Perechile ( (a ih, f (a ih)), 0 i n 1 , vor fi unite prin segmente de dreapt n urma aplicrii funciei plot(x,y)
Pentru a obine un grafic cu o bun acuratee este necesar folosirea unui pas h ct mai mic. n exemplul urmtor
dac h 1 obinem o linie poligonal ce aproximeaz funcia, n schimb dac h 0.1 obinem graficul cunoscut.

x=0:1:2*pi
y=cos(x)
plot(x,y)
x=0:0.01:2*pi; y=cos(x);plot(x,y)
Pentru a nu mai fi afiate valorile vectorilor x respectiv y am scris punct i virgul (semicolon) dup fiecare
instruciune.
Pe fiecare figur scriem un titlu i etichetm axele selectnd din Insert (apare la Figure) x-label, y-label, title i n
ferestrele ce s-au deschis nscriind axa Ox , axa Oy , respectiv titlul.
Alegerea valorii pasului h este important i penrtu a argumenta aceast afirmaie vom prezenta mai multe variante,
desennd toate graficele n acelai ecran. n acest scop vom construi nite ferestre, n care vom desena graficele,
ferestre situate ntr-o m n matrice. Fiecare element al matricei este constituit dintr-o asemenea fereastr, iar
numerotarea acestora este de la 1 la m n , ncepnd cu colul stnga sus. Funcia folosit este subplot.
subplot(411);x=0:1:2*pi;y=cos(x);plot(x,y)
subplot(412);x=0:0.5:2*pi;y=cos(x);plot(x,y)
subplot(413);x=0:0.1:2*pi;y=cos(x);plot(x,y)
subplot(414);x=0:0.01:2*pi;y=cos(x);plot(x,y)
n mod obinuit, graficul este desenat printr-o linie continu de culoare albastr; dac dorim alt culoare, sau alt stil
de linie facem precizarea n plot. Prezentm cteva opiuni pentru culori i stiluri de linie:
y galben
m mov
r
rou
g verde
b albastru
w alb
k
negru

+
*
:
-.

punct
cerc
plus
linie continu
stelu
punctat
linie punct

Aceste opiuni se scriu n cadrul funciei plot, ncadrate de apostrof, fr virgul ntre ele.

Desenai graficul funciei cos pe intervalul [2 , 2 ] , n culoarea roie, punctat, lund pasul h 0.1 .
x=-2*pi:.1:2*pi;y=cos(x);plot(x,y,'r.')
Deseori n Matlab scriem .1 n loc de 0.1

Desenai graficul funciei f ( x) tgx , folosind diferite valori ale lui h i eventual diferite culori.

Domeniul de definiie al funciei este R \ {(2k 1) } ; funcia este periodic de perioad , aadar este suficient
s desenm graficul pe (

, ).
2 2
Dac vom considera vectorul
x = -pi/2:.1:pi/2;
8

rezultatul va fi catasrofal, deoarece lim tgx i lim tgx


x

x=-pi/2:.1:pi/2;y=tan(x);plot(x,y)
Astfel vom considera un vector x a crui prim component este -1.5 i a crui ultim component este 1.5.
subplot(141);x=-1.5:.6:1.5;y=tan(x);plot(x,y,'r*')
subplot(142);x=-1.5:.4:1.5;y=tan(x);plot(x,y,'bo')
subplot(143);x=-1.5:.2:1.5;y=tan(x);plot(x,y,'k.')
subplot(144);x=-1.5:.05:1.5;y=tan(x);plot(x,y,'m-.')
Stabilirea corect a domeniului de definiie al funciei este foarte important. n unele cazri soft-ul ne avertizeaz
asupra greelilor i graficul poate prezenta erori.

Desenai graficul funciei f ( x) ln(16 x2 ) :


Domeniul de definiie este este (-4,4),
x=-4:.1:4;y=log(16-x.^2);plot(x,y)
Warning: Log of zero.

Alegem intervalul (3.95.3.95) :


x=-3.95:.1:3.95;y=log(16-x.^2);plot(x,y)
Desenm pe [-10,10]:
x=-10:.1:10;y=log(16-x.^2);plot(x,y)
Warning: Imaginary parts of complex X and/or Y arguments ignored

Desenai pe acelai ecran, n ferestre diferite, graficul funciei f ( x)

3 2x

9 x2
[2.95, 2.95] pe acelai ecran, n ferestre diferite. Comentai desenele obinute
subplot(121); x=-3:.1:3; y=(3-2*x)./sqrt(9-x.^2);plot(x,y,'k')

pe [-3,3] i respecriv pe

Warning: Divide by zero.

subplot(122); x=-2.95:.1:2.95; y=(3-2*x)./sqrt(9-x.^2);plot(x,y,'b')


n cazul funciei f : A B , unde A, B R, A fiind o submulime nemrginit a axei reale, problema const n
alegerea mulimii la care restricionm funcia, pentru a obine cel mai bun desen al grficului..

Desenai graficul funciei f ( x)

2x 1

x2 1
Vom desena n acelai ecran mai multe variante i anume graficele restriciilor la
[-1000,1000], [-100,100], [-20,20], [-10,10] i vom alege desenul care ne convine:

subplot(411);x=-1000:1:1000;y=(2*x-1)./sqrt(x.^2+1);plot(x,y)
subplot(412);x=-100:1:100;y=(2*x-1)./sqrt(x.^2+1);plot(x,y)
subplot(413);x=-20:.1:20;y=(2*x-1)./sqrt(x.^2+1);plot(x,y)
subplot(414);x=-10:.1:10;y=(2*x-1)./sqrt(x.^2+1);plot(x,y)

Desenai graficul funciei f ( x) | x 2 4 |

n Matlab funcia modul este notat abs


x=-20:.1:20;y=sqrt(abs(x.^2-4));plot(x,y)
Pentru a desena graficul unei funii al crei domeniu de definiie este o reuniune de intervale disjuncte este nevoie de
a studia problema desenrii graficelor a dou funcii n acelai sistem de coordonate. (multiplot) . Considernd cazul a
dou funcii f , g :[a, b] R vom scrie:
x=a:h:b;y1=f(x); y2=g(x);plot(x,y1,x,y2)
sau
x=a:h:b; plot(x,f(x),x,g(x))
Desenai graficele funciilor f ( x) sin x cos x i g ( x) sin x cos x pe [0,2 ] .
x=0:.05:2*pi;y=sin(x)+cos(x);y1=sin(x)-cos(x);plot(x,y,'r',x,y1,'k.')
9

Pentru a desena graficul unei funcii definite pe [a, b] [c, d ], b c vom scrie:
x1=a:h:b;y1=f(x1);x2=c:h:d,y2=f(x2);plot(x1,y1,x2,y2)
sau
x1=a:h:b; x2=c:h:d, plot(x1, f(x1),x2, f(x2))

2x 1
;
x2
Domeniul de definiie al lui f este R\{2}; funcia are asimptot vertical n x 2 .
n primul caz nu inem seama de aceast asimptot vertical, considernd un vector a crui prim component
este 10, ultim component 10 i pasul 0.1; n al doilea caz folosim metoda propus anterior, considernd
restriciile la (10, 2) respectiv la (2,10) :

Desenai graficul funciei: f ( x)

subplot(121);x=-20:.1:20;plot(x,(2*x+1)./(x-2))
Warning: Divide by zero

subplot(122);x1=-20:.1:1.95;x2=2.05:.1:20; plot(x1,(2*x1+1)./(x12),'k',x2,(2*x2+1)./(x2-2),'k')
Nu e nevoie s specificm funcia separat, formula ce o definete poate fi scris i n plot. Dac nu se specific aceeai
culoare pentru cele dou ramuri, graficul va fi desenat n culori diferite

x2
x 3
Domeniul de definiie este (, 2) (3, )
Dac ne propunem s folosim intervalul (-20,20), fr a ine seama care este domeniul de definiie, softul ne
avertizeaz c greim.

Desenai graficul funciei f ( x) ln

x=-20:.1:20;plot(x,log(sqrt((x+2)./(x-3))))
Warning: Divide by zero.
Warning: Log of zero.
Warning: Imaginary parts of complex X and/or Y arguments ignored.

Utilizm metoda prezentat anterior:


x1=-20:.1:-2.05;y1=log(sqrt((x1+2)./(x1-3)));
x2=3.05:.1:20;y2=log(sqrt((x2+2)./(x2-3)));
plot(x1,y1,'k',x2,y2,'k')
Matlab include aplicaii specifice, numite Toolbox-uri, utilizate pentru a rezolva probleme variate. Symbolic math
este un asemenea Toolbox, care cuprinde calculul simbolic i accesul la nucleul Maple. Symbolic math este folosit
pentru calculul diferenial i integral.
n Matlab exist dou noiuni distincte legate de funcii:
1
- expresia simbolic, de exemplu 2
sau log(x)
x 1
- funcia -algoritmul (regula) care produce un output numeric pentru un input numeric sau o mulime de
input-uri numerice.
Desenul graficului unei expresii simbolice se execut uor folosind ezplot; dezavantajele constau n faptul c nu se
mai poate modifica stilul sau culoarea desenului. Avantajul rezid din faptul ca nu mai lucrm cu vectori i matrice i
astfel sintaxa este mult mai simpl.
Desenai graficele funciilor prezentate anterior, utiliznd Symbolic math
1. f ( x) cos x, x [0, 2 ]
syms x
ezplot(cos(x),[0,2*pi])
2. f ( x) tgx, x (

, )
2 2
ezplot(tan(x), [-1.55,1.55])

10

3. f ( x) ln(16 x2 )
ezplot(log(16- x^2),[3.95,3.95])
4. f ( x)

3 2x

9 x2
ezplot((3-2*x)/sqrt(9-x^2),[-2.95,2.95])
5. f ( x)

2x 1

x2 1
ezplot((2*x-1)/sqrt(x^2+1),[-20,20])
6. f ( x) | x 2 4 |
ezplot(sqrt(abs(x^2-4)),[-20,20])
Pentru a desena graficele a dou funcii n acelai sistem de axe vom scrie:
ezplot(f(x),[a,b]);hold on
ezplot(g(x),[a,b]);hold off
Graficele celor dou funcii vor fi de culoare albastr i astfel nu putem distinge funciile pe baza coloritului
graficelor lor.
Desenai n acelai sistem de axe graficele funciilor f ( x) sin x cos x i g ( x) sin x cos x ;
ezplot(sin(x)+cos(x),[0,2*pi]);hold on
ezplot(sin(x)-cos(x),[0,2*pi]);hold off

x2
x 3
n Symbolic Math nu putem folosi multiplot pe domenii de definiie diferite, dar problema este rezolvat
corect chiar dac cerem ca x [20, 20]

Desenai graficul funciei f ( x) ln

ezplot(log(sqrt((x+2)/(x-3))),[-20,20])
Vom desena n Matlab (pachetul de baz) graficele funciilor reale de dou variabile reale, caz n care

G f {( x, y, f ( x, y)) | ( x, y) D R2 } R3
n termeni de informatic, putem spune c funcia f este o regul care produce dintr-un vector input ( x, y) , un
output numeric notat f ( x, y) .
n cazul f : [a, b] [c, d ] R, scriind
[x,y] = meshgrid(a:h:b,c:h:d)
vom crea o matrice ale crei elemente sunt vrfurile unei reele de ptrate de latur h, din dreptunghiul [a, b] [c, d ] ;
scriind
z=f(x,y);
crem un vector ale crui elemente sunt valorile funciei f n punctele reelei.
Funcia
surf(x,y,z)
construiete graficul funciei cu ajutorul informaiilor anterioare.

11

Desenai graficul funciei f :[2, 2] [2, 2] R, definit prin: f ( x, y) x 2 y 2 (funcia a -Saddle).


[x,y]=meshgrid(-2:.1:2,-2:.1:2);z=x.^2-y.^2;surf(x,y,z)
Graficul obinut este graficul unei poriuni de suprafa.
Desenai graficele urmtoarelor poriuni de suprafa:
f : [2,2] [2,2] R definit prin f ( x, y) x 2 y 2 ( paraboloid)
[x,y]=meshgrid(-2:.1:2,-2:.1:2);z=x.^2+y.^2;surf(x,y,z)

f : [2,2] [2,2] R definit prin f ( x, y) x 2 y 2 (con)

[x,y]=meshgrid(-2:.1:2,-2:.1:2);z=sqrt(x.^2+y.^2);surf(x,y,z)

f : [2,2] [2,2] R, definit de f ( x, y) 3 x 2 y 2

(con)

[x,y]=meshgrid(-2:.1:2,-2:.1:2);z=3-sqrt(x.^2+y.^2);surf(x,y,z)
n desenul unei poriuni de suprafa, n Matlab,exist un cod al culorilor: albastru nchis nseamn cele mai mici
valori ale lui z f ( x, y) , iar rou intens reprezint cele mai mari valori.
n general pentru a desena graficul funciei

f ( x, y) ( x a)2 ( y b)2 vom alege restrictia funciei la domeniul

definit de inegalitile: x a , y b , adic [ a, a] [ b, b]


Desenai graficul funciei f ( x, y) ( x 1)2 ( y 2)2 :
[x,y]=meshgrid(-3:.1:1,0:.1:4);z=(x+1).^2+(y-2).^2;surf(x,y,z)
Desenai graficele urmtoarelor funcii:

f :[4, 4] [4, 4] R definit prin f ( x, y) ye( x


g :[3,3] [3,3] R, g ( x, y)

y2 )

x 2x y 6x y y
x4 y 4 1
4

[x,y]=meshgrid(-4:.1:4,-4:.1:4);f=y.*exp(-x.^2-y.^2);surf(x,y,f)
[x,y]=meshgrid(-3:.1:3,-3:.1:3);
g=(x.^4+2.*x.^3.*y-6.*x.^2.*y.^2 +y.^4)./(x.^4+y.^4+1);
surf(x,y,g)
Considernd funcia f : A R, A R2 , mulimea M c f

({c}) {( x, y) f ( x, y) c} , unde c este o constant

real se numete curb de nivel constant c . Aceast mulime este proiecia n R2 a seciunii graficului lui f cu planul
z c.
Pentru a desena aceste curbe de nivel folosim funciile contour, pentru desenul n R2 i contour3 pentru desenul n
R , funcii ce se apeleaz astfel:
3

[x,y]=meshgrid(a:h:b,c:h:d); f=f(x,y); contour(x,y,f,n)


[x,y]=meshgrid(a:h:b,c:h:d); f=f(x,y); contour3(x,y,f,n)
unde n reprezint numrul de curbe de nivel ce vor fi desenate.
Desenai curbele de nivel n R2 respectiv n R3, ale funciei

f ( x, y) ye

( x2 y 2 )

f :[4, 4] [4, 4] R definit prin

[x,y]=meshgrid(-4:.1:4,-4:.1:4);f=y.*exp(-x.^2-y.^2); contour (x,y,f,15)


[x,y]=meshgrid(-4:.1:4,-4:.1:4);f=y.*exp(-x.^2-y.^2); contour3 (x,y,f,15)
Pentru a desena n acelai sistem de axe, att suprafaa, ct i curbele sale de nivel n R2, folosim funcia surfc.

12

Desenai n acelai sistem de axe, poriunea de suprafa definit de funcia f :[4, 4] [4, 4] R
f ( x, y) ye( x

y2 )

ct i curbele sale de nivel n R2 .

Fie funcia f :[4, 4] [4, 4] R , f ( x, y)

x 4 2x 3 y 6x 2 y 2 y 4

; desenai graficul, curbele de nivel n


x 4 y 4 1
R2 respectiv n R3, poriunea de suprafa i curbele sale de nivel n R2 , cele patru desene fiind n aceeai pagin

subplot(221); [x,y]=meshgrid(-4:.2:4,-4:.2:4);
f=(x.^4+2.*x.^3.*y6.*x.^2.*y.^2+y.^4)./(x.^4+y.^4+1);surf(x,y,f)
subplot(222); [x,y]=meshgrid(-4:.2:4,-4:.2:4);
f=(x.^4+2.*x.^3.*y-6.*x.^2.*y.^2+y.^4)./(x.^4+y.^4+1);contour(x,y,f,20)
subplot(223); [x,y]=meshgrid(-4:.2:4,-4:.2:4);
f=(x.^4+2.*x.^3.*y-6.*x.^2.*y.^2+y.^4)./(x.^4+y.^4+1);contour3(x,y,f,20)
subplot(224); [x,y]=meshgrid(-4:.2:4,-4:.2:4);
f=(x.^4+2.*x.^3.*y-6.*x.^2.*y.^2+y.^4)./(x.^4+y.^4+1);surfc(x,y,f)
Dac privim aceste funcii ca expresii simboloce putem folosi n Symbolic Math instruciunile ezsurf i
ezcontour pentru a desena graficul funciei., respectiv curbele de nivel in R2
x 4 2x 3 y 6x 2 y 2 y 4
Fie funcia f :[4, 4] [4, 4] R, f ( x, y )
;
x 4 y 4 1
desenai graficul i curbele de nivel corespunztoare utiliznd Symbolic Math.
syms x y
f=(x^4+2*x^3*y-6*x^2*y^2+y^4)/(x^4+y^4+1);ezsurf(f,[-4,4,-4,4])
f=(x^4+2*x^3*y-6*x^2*y^2+y^4)/(x^4+y^4+1);ezcontour(f,[-4,4,-4,4])

Probleme propuse
1. Desenai graficul funciei f ( x) arcsin x , folosind diferite valori ale lui pasului h i eventual diferite culori, n 6
ferestre pe aceeai pagin
2. Desenai graficele funciilor folosind pachetul de baz Matlab i apoi Symbolic Math:

f1 ( x) arc tg 2 x ;

f 2 ( x) 3 x 3 3 x 2 ;

f 3 ( x)

f 4 ( x) ln( x x 2 1)

f 5 ( x)

x 1
x 2x 4
2

x2 2x
x3 1

4. Desenai n acelai sistem de axe graficele funciilor:

f1 ( x) e x i g1 ( x) ln x ;

x 2 x3

;
2
6
x3 x5
f3 ( x) sin x i g3 ( x) x
6 120

f 2 ( x) e x i g 2 ( x) 1 x

5. Desenai graficul, curbele de nivel n R2 respectiv n R3, poriunea de suprafa i curbele sale de nivel n R2 , cele
patru desene fiind n aceeai pagin

f1 ( x, y) x 2 y 2 4 x 4 ;

f 2 ( x, y) 8 x 2 y 2 2 x ;
13

f3 ( x, y) ( x 1) ( y 2) ;

f 4 ( x, y) 1 x 2 y 2 4 x 2 y 5 ;

f5 ( x, y )

x2 y 2 x2 y 2
( x 2 y 2 1)2

6. Desenai graficul, curbele de nivel n R2 ale functiilor de la problema 5 utiliznd Symbolic Math.

14

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