Sunteți pe pagina 1din 14

Noiuni introductive- laborator 2009-2010

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 abs(3-5*2^3) sqrt = radical sqrt(3)


1

de reinut: pentru a calcula n a , a > 0 vei scrie a 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(1) de reinut: n Matlab pentru a scrie numrul irational e vei scrie exp(1) log = funcia logaritm natural log(0) log10 = funcia logaritm n baza 10

log10(1) de reinut: pentru a calcula log a 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' Pentru a scrie matricea identitate notat de obicei I n utilizm eye(n) eye(4) 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 b1 b = . Ecuaia are o soluie unic x = A 1 b . b n

x1 + 3x2 + 3 x3 + 3x4 + 3x5 + 3x6 + 3 x7 = 1 3x + x + 3x + 3x + 3x + 3x + 3x = 3 3 4 5 6 7 1 2 3 x1 + 3 x2 + x3 + 3x4 + 3x5 + 3x6 + 3 x7 = 5 Rezolvai cu Matlab sistemul: 3x1 + 3x2 + 3 x3 + x4 + 3 x5 + 3x6 + 3x7 = 2 3 x + 3 x + 3 x + 3 x + x + 3 x + 3 x = 4 2 3 4 5 6 7 1 3x1 + 3x2 + 3 x3 + 3x4 + 3x5 + x6 + 3x7 = 2 3 x1 + 3 x2 + 3x3 + 3 x4 + 3 x5 + 3x6 + 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 y k 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, instruciunile:

x ,

x 1,

unde x = ( x1 , x 2 ,...x n ) , se calculeaz n Matlab folosind

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 P 1 = (162, 255, 74, 258) i P 2 = (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'

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


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

arc sin x n punctele 0.1; 0.2; 0.3;0.4; 0.5. x

Introducere n programarea n Matlab


Instruciunea for

Calculai urmtoarea sum: 1 +


s=0; for i=1:20 s=s+1/i^2; end

1 1 1 + + .... + 2 . 22 32 20

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 Dac dorim ca rezultatul s apar sub forma unui vector coloan vom scrie: s(1)=1; for i=1:19 s(i+1)=s(i)+1/(i+1)^2; end s' n 1 Dac dorim s calculm 2 , pentru a nu scrie de fiecare dat codul vom defini i salva ntr-un m-file o funcie ce are ca i =1 i 1 1 variabil numrul de pai: suma( n) = 1 + 2 + ... + 2 . 2 n
Pentru a deschide un m-file dm click pe File_New_m-file

Salvm fiierul sub numele de suma(n). Dac dorim s calculm

i
i =1

30

1
2

vom scrie:

suma(30) s=

1.6122
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 n=1; x=2;

2n 1 2n =0. < , Problema fiind posibil deoarece lim n n ! n ! 10

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


Pentru a rezolva inecuaia

kn 1 < , pentru diferite valori ale lui k, vom construi o funcie numit ineg ntr-un m-file. n ! 10

Salvm fiierul sub numele de Inec(k). Dac dorim s rezolvm inegalitatea

13n 1 < vom scrie: n ! 10

Inec(13)

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 + 2y = 5 x 3 y + 5 z 7t = 12 x + 2 y + 3 z = 14 3 y + 4 z = 18 3x 5 y + 7 z t = 0 y + 2 z + 3t = 20 ; ; 5 z + 6u = 39 5 x 7 y + z 3t = 4 3x + z + 2t = 14 7u + 8v = 68 7 x y + 3 z 5t = 16 2 x + 3 y + t = 12 9v + 10 x = 55
fiind dai vectorii x = (2,3, , 1) i y = ( 5, 0,1, e 2 ) calculai: 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 ) = -0.3; -0.2; -0.1; 0.1; 0.1; 0.2; 0.3;0.4; 0.5. 2. Calculai urmtoarea sum:
1 ; 2 k =2 utiliznd instruciunea for i afind rezultatul final; utiliznd instruciunea for i afind rezultatele pariale sub forma unui vector coloan; scriind o funcie sumaln intr-un m-file; folosind functia sum 1 ln k
20

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

3. Calculai urmtoarea sum:

1 k k =1 utiliznd instruciunea for i afind rezultatul final; utiliznd instruciunea for i afind rezultatele pariale sub forma unui vector coloan; scriind o funcie sumarm intr-un m-file; folosind functia sum

(1)

40

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:
limea petalei 21 13 lungimea petalei 56 42 limea sepalei 28 26 lungimea sepalei 64 57

I1 I1

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 scriind: x=a:h:b y=f(x)

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

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.
, ). 2 2 Dac vom considera vectorul x = -pi/2:.1:pi/2; rezultatul va fi catasrofal, deoarece lim tgx = + i lim tgx =
x

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

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 x 2 ) : 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') Warning: Divide by zero. subplot(122); x=-2.95:.1:2.95; y=(3-2*x)./sqrt(9-x.^2);plot(x,y,'b')

pe [-3,3] i respecriv pe

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.') 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))


Desenai graficul funciei: f ( x ) =
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) :

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 Desenai graficul funciei f ( x) = ln
x+2 x3 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.

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

f ( x) = cos x, x [0, 2 ] syms x ezplot(cos(x),[0,2*pi])


, ) 2 2 ezplot(tan(x), [-1.55,1.55])
f ( x ) = ln(16 x 2 ) ezplot(log(16- x^2),[3.95,3.95])

f ( x) = tgx, x (

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

f ( x) =

3 2x

x2 + 1 ezplot((2*x-1)/sqrt(x^2+1),[-20,20])

f ( x) =

2x 1

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


Desenai graficul funciei f ( x) = ln
x+2 x3 n Symbolic Math nu putem folosi multiplot pe domenii de definiie diferite, dar problema este rezolvat corect chiar dac cerem ca x [20, 20]

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. 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

+ y2 )
4

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

x + 2x y 6x y + y x4 + y 4 + 1
4 3 2 2

[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
1

({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 : [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)


f ( x, y ) = ye
Pentru a desena n acelai sistem de axe, att suprafaa, ct i curbele sale de nivel n R2, folosim funcia surfc.

( x2 + y2 )

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

+ y2 )

ct i curbele sale de nivel n R2 .

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

; 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

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

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) = x 3 3x + 2 ;
f3 ( x) = x +1 x 2x + 4
2

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

f5 ( x) =

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 f 3 ( 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

f 1 ( x, y ) = x 2 + y 2 4 x + 4 ;
f 2 ( x, y ) = 8 x 2 y 2 + 2 x ;
f3 ( x, y ) = ( x 1) ( y + 2) ;

f 4 ( x, y ) = 1 x 2 + y 2 + 4 x 2 y + 5 ;
f 5 ( x, y ) = x2 + y2 + x2 y 2 ( x 2 + y 2 + 1) 2

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

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