Sunteți pe pagina 1din 14

Departamentul A.I.A.

Matematici Asistate de Calculator

Lucrarea de laborator 1 Introducere n Matlab


Exerciii - Rezolvri 1.1. Fie A=[2 5 6], B=[4 3 2], p=2. S se calculeze: C=A.*B, D=A./B, E=A.\B, F=A.^B, G=B.^p, H=p.^A. Soluie A=[2 5 6]; B=[4 3 2]; p=2; C=A.*B C = 8 15 12 D=A./B D = 0.5000 1.6667 3.0000 E=A.\B E = 2.0000 0.6000 0.3333 F=A.^B F = 16 125 36 G=B.^p G = 16 9 4 H=p.^A H = 4 32 64 Exerciiul are ca scop nelegrea celui de-al doilea tip de operaii cu matrice operaiile cu tablouri. De exemplu, D conine elementele a(1)/b(1), a(2)/b(2) i a(3)/b(3), iar E este format din elementele b(1)/a(1), b(2)/a(2) i b(3)/a(3).
1 1+ i

1.2. Fie Z= . S se calculeze Z1=Z.' i Z2=Z' i s se constate diferenele i 3 2i aprute. Soluie Z=[1 1+i;i 3-2i]; Z1=Z' Z1=Z.' Z1 = 1.0000 1.0000 + 1.0000i

0 + 1.0000i 3.0000 - 2.0000i

Departamentul A.I.A.

Matematici Asistate de Calculator

Z2=Z' Z2 = 1.0000 0 - 1.0000i 1.0000 - 1.0000i 3.0000 + 2.0000i Se observ c operatorul .' (punct-apostrof) genereaz transpusa unei matrice cu elemente numere complexe, pe cnd operatorul ' (apostrof) genereaz conjugata transpusei matricei respective. Deoarece n cazul numerelor reale, acestea nu difer de conjugatele lor, pentru transpus se folosete doar simbolul apostrof (fr punct nainte), . 1.3. Se cere:

s se determine codurile ASCII ale irului de caractere Matlab; s se compare irurile test i Test i s se afieze rezultatul; s se afle poziia irului de caractere S2=test n irul de caractere S1=Acest test este interesant.. Soluie Exemplificm pe acest exerciiu utilizarea help-ului n linie de comand. Vom cuta funciile Matlab care rezolv cele 3 puncte ale problemei: - se d comanda: help Aceast comand are ca efect afiarea listei tuturor directoarelor cu funcii predefinite Matlab. La nceputul listei se afl directoarele cu funciile din nucleu (subdirectoare ale directorlului matlab). Parcurgnd coloana din dreapta a listei, gsim directorul care conine funcii pentru prelucrarea irurilor de caractere: matlab\strfun Character strings. - se apeleaz help-ul subdirectorului gsit, pentru a-i vizualiza coninutul (fiierele Matlab pe care le conine): help strfun - se caut funcia care determin codurile ASCII ale unui ir de caractere; se gsete funcia double sau unicode2native (n versiunile Matlab mai vechi codurile ASCII se determinau cu funcia abs. Versiunile mai noi, folosesc funcia double sau funcia unicode2native, dar au pstrat i variantele vechi): unicode2native - Convert Unicode characters to bytes . - se apeleaz help-ul funciei gsite, pentru a cunoate sintaxa de apel a acesteia: help unicode2native n acest mod se obin i cteva explicaii referitoare la funcie. Precizare: n help, cuvintele cheie apar scrise cu majuscule pentru a fi scoase n eviden. Cnd sunt folosite, cuvintele cheie trebuiesc scrise cu litere mici (Matlab este case-sensitive). - se rezolv primul punct al problemei: >> s='Matlab';
2

Departamentul A.I.A.

Matematici Asistate de Calculator

>> unicode2native(s) ans = 77 97 116 108 97 98 >> double(s) ans = 77 97 116 108 97 98 >> abs(s) ans = 77 97 116 108 97 98 n continuare se caut funcia pentru compararea irurilor de caractere (strcmp, care returneaz 1 dac irurile sunt identice, 0 n caz contrar), i cea pentru cutarea unui subir al unui ir de caractere (findstr i strfind; prima caut irul de lungime mai mic n irul de lungime mai mare; a doua caut al doilea ir n primul ir; ambele returneaz poziia n care ncepe subirul n ir, n cazul n care a fost gsit, respectiv matricea vid, n caz contrar). n continuare dm ca exemple, apelul celor dou funcii de cutare: S2='test'; S1='Acest test este interesant.'; findstr(S1,S2) ans = 7 strfind(S1,S2) ans = 7 findstr(S2,S1) ans = 7 strfind(S2,S1) ans = [] abs('Matlab') ans = 77 97 116 108 97 98 strcmp('test','Test') ans = 0 S2='test'; S1='Acest test este interesant.'; findstr(S1,S2) ans = 7 1.4. a) S se efectueze operaiile: G = (X2 +X2)(X+1) i H =
X 3 + 2X 2 2 X2 + 1

b) Fie funciile polinomiale A(x) = x2 + 2x 1 i B(x) = x 1. S se calculeze derivatele: Ad(x) = A'(x) , Bd(x) = B'(x) , Cd(x) = (A(x)B(x))' ,

Departamentul A.I.A.

Matematici Asistate de Calculator

Dd(x) =

M( x ) A( x ) = ; N( x ) B( x )

c) S se determine rdcinile polinomului: F=X32X23X+10 ; d) S se determine coeficienii polinomului care are rdcinile: r = [1 1 3] ; e) S se evalueze polinomul P=X3-2X2+X+3 n punctele -4, 0 i 5 utiliznd cele trei metode de evaluare a polinoamelor. Soluie G1=[1 1 -2]; G2=[1 1]; G=conv(G1,G2) G = 1 2 -1 -2 H1=[1 2 0 -2]; H2=[1 0 1]; [Q R]=deconv(H1,H2) Q = 1 2 R = 0 0 -1 -4 A=[1 2 -1]; B=[1 -1]; Ad=polyder(A) Ad = 2 2 Bd=polyder(B) Bd = 1 Cd=polyder(A,B) Cd = 3 2 -3 [M N]=polyder(A,B) M = 1 -2 -1 N = 1 -2 1 F=[1 -2 -3 10]; roots(F) ans = 2.0000 + 1.0000i 2.0000 - 1.0000i -2.0000 r=[-1 1 3]; poly(r) ans = 1 -3 -1 3 p1=(-4)^3-2*(-4)^2-4+3 p1 = -97 p2=0^3-2*0^2+0+3 p2 =
4

Departamentul A.I.A.

Matematici Asistate de Calculator

3 p3=5^3-2*5^2+5+3 p3 = 83 x=[-4 0 5]; p=x.^3-2*x.^2+x+3 p = -97 3 83 P=[1 -2 1 3]; X=[-4 0 5]; polyval(P,x) ans = -97 3 83 Observaii: 1. Funcia deconv trebuie apelat cu doi parametri de ieire, deoarece la mprirea polinoamelor se obin polinomul-ct i polinomul-rest. 2. Pentru derivarea produsului a dou polinoame, preferabil este s apelm doar funcia de derivare cu doi parametri. n cazul derivrii unei fracii polinomiale se obine tot o fracie polinomial (nu un ct i un rest!, i nici derivata ctului i derivata restului!).
1 i 0 2 i 0 1 + i i 1 i ; s se realizeze 2 i 2 1 5i

1.5. Fie matricele

A=

B=

comparaiile: C=A>=B i D=A= =B. Soluie A=[1 -i 0;2-i 0 1+i]; B=[1 -i i;2-i 2 1-5*i]; C=A>=B C = 1 1 1 1 0 1 C=A==B C = 1 1 0 1 0 0 1.6. S se genereze: matrice Hilbert de ordinul n=4, ale crei elemente sunt date de expresia:
H(i, j) = 1 ; i + j 1

s se genereze o matrice A cu 4 linii i 5 coloane, ale crei elemente sunt:

3, 3, A= 1, 0,

dac i = j dac i j = 2 dac i + j = 3 n rest


.

Departamentul A.I.A.

Matematici Asistate de Calculator

Soluie for i=1:4 for j=1:4 H(i,j)=1/(i+j-1); end end H H = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 0.2500 0.2000 0.1667 hilb(4) ans = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 0.2500 0.2000 0.1667 for i=1:4 for j=1:5 if i==j A(i,j)=3; elseif abs(i-j)==2 A(i,j)=-3; elseif i+j==3 A(i,j)=1; else A(i,j)=0; end end end A A = 3 1 -3 0 0 1 3 0 -3 0 -3 0 3 0 -3 0 -3 0 3 0

0.2500 0.2000 0.1667 0.1429

0.2500 0.2000 0.1667 0.1429

1.7. S se scrie un program, utiliznd o bucl while, care calculeaz produsul elementelor vectorului x=[5 2 9 10 -1 9 1] pn cnd ntlnete un numr negativ. Soluie Se creeaz fiierul M "produs.m": x=[5 2 9 10 -1 9 -1]; p=1; i=1; while(i<=length(x) & x(i)>0) p=p*x(i); i=i+1; end disp(p) Acest fiier se apeleaz din linia de comand: produs 900
6

Departamentul A.I.A.

Matematici Asistate de Calculator

1.8. Folosind comanda help s se precizeze efectele comenzilor grafice: xlabel, ylabel, grid, gtext; shading, colormap . Soluie xlabel ylabel grid gtext shading colormap precizeaz eticheta axei x precizeaz eticheta axei y traseaz o reea de linii orizontale i verticale pe grafic plaseaz un text pe grafic la poziia selectat cu mouse-ul stabilete modul de colorare al suprafeelor stabilete sau returneaz matricea de culoare folosit pentru reprezentarea grafic

1.9. S se reprezinte grafic funciile: sin(t), dac {- 10 t < -4} {4 t 10} a) y(t) = cos(5t), dac 4 t < 4 b) f(t)=sin(2t) cu linie-punct de culoare verde i g=f+0.2 cu markere-stea de culoare roie, t[-2,2]. Soluie Verificm dac funcia este continu n 4 i 4: lim1s=sin(-4) limd2=sin(4) ans = ans = 0.7568 -0.7568 lim1d=cos(5*(-4)) lims2=cos(5*4) ans = ans = 0.4081 0.4081 Se observ c limitele stnga i dreapta n cele 2 puncte nu sunt egale, deci funcia este deiscontinu att n 4, ct i n 4. % impartim functia de reprezentat in 3 functii, corespunzator celor 3 % subintervale t1=-10:0.1:-4.1; y1=sin(t1); t2=-4:0.1:3.9; y2=cos(5*t2); t3=4:0.1:10; y3=sin(t3);
plot(t1,y1,'b',t2,y2,'b',t3,y3,'b')

Departamentul A.I.A.

Matematici Asistate de Calculator

Observaie: Matlab creaz un grafic continuu, deoarece unete punctele adiacente, n cazul considerat a unete punctele ce marcheaz discontinuitile. Aceast modalitatea (unirea subintervalelor i a funciilor pariale) se utilizeaz pentru funcii continue, cu expresii distincte pe subintervale. n consecin, urmtoarele 2 variante sunt greite pentru problema considerat, dar metodele prezentate sunt corecte pentru funcii continue: Fiierul "graf1_9a.m"; t=-10:0.1:10; for i=1:length(t) if (t(i)>=-4) & (t(i)<4) y(i)=cos(5*t(i)); else y(i)=sin(t(i)); end end plot(t,y,'b')

Fiierul "graf1_9a2.m"; % impartim functia de %reprezentat in 3 functii, %corespunzator celor 3 %subintervale t1=-10:0.1:-4.1; % t<-4 cu pasul 0.1 -> t<=(-4%0.1), adica t<=-4.1 y1=sin(t1); t2=-4:0.1:3.9; % t<4 cu pasul 0.1 -> t<=3.9 y2=cos(5*t2); t3=4:0.1:10; y3=sin(t3); % unim subintervalele si %construim functia y alaturand %vectorii %partiale celor 3 functii

t=[t1 t2 t3]; y=[y1 y2 y3]; % reprezentam grafic functia plot(t,y)

Departamentul A.I.A.

Matematici Asistate de Calculator

Fiierul "graf1_9b.m"; t=-2:0.05:2; f=sin(2*pi*t); g=f+.2; plot(t,f,'-.g',t,g,'*r')

1.10. S se reprezinte n coordonate polare funcia f(t)=sin(2t)cos(2t) , t[-2,2]. Soluie Fiierul "graf1_10.m": t=-2*pi:pi/60:2*pi; f=sin(2*t).*cos(2*t); polar(t,f)

1.11. S se reprezinte n coordonate logaritmice i semilogaritmice funcia f(t)=e3t, t[0,5]. Soluie Fiierul "graf1_11.m": t=0:0.1:5; f=exp(3*t); loglog(t,f) pause semilogx(t,f) pause semilogy(t,f)

Departamentul A.I.A.

Matematici Asistate de Calculator

Cele trei funcii pot fi reprezentate n aceeai fereastr grafic prin utilizarea funciei subplot: Fiierul "graf1_11_2.m": t=0:0.1:5; f=exp(3*t); %impartim grafica dipuse pe coloane, grafic in fereastra in 4 parti 2 linii si 2 punem primul partea 1 subplot(2,2,4); semilogy(t,f)

subplot(2,2,1); loglog(t,f) % pastrand impartirea facuta, punem al doilea grafic in partea a 3-a subplot(2,2,3); semilogx(t,f)

1.12. S reprezinte grafic poligonul ABCDE, unde A(0,-1), B(3,-1), C(5,3), D(2,2), E(-1,2), ABDE de culoare albastr, BCD de culoare roie. Soluie Fiierul "graf1_12.m": X1=[0 3 2 -1]; Y1=[-1 -1 2 2]; X2=[3 5 2]; Y2=[-1 3 2]; fill(X1,Y1,'b',X2,Y2,'r')

Acelai efect se obine folosind 2 apeluri ale funciei fill, dar punnd condiia ca primul grafic s fie pstrat (instruciunea hold on). Condiia de pstrare n aceeai

10

Departamentul A.I.A.

Matematici Asistate de Calculator

fereastr grafic este oprit dup trasarea celui de-al doilea grafic (altfel, urmtoarele grafice vor fi suprapuse peste cele deja create). Fiierul "graf1_12_2.m": X1=[0 3 2 -1]; Y1=[-1 -1 2 2]; fill(X1,Y1,'b') hold on X2=[3 5 2]; Y2=[-1 3 2]; fill(X2,Y2,'r') hold off 1.13. S se reprezinte grafic (cu ambele funcii) vectorii z1=2-5i, z2=-2+i i z3=3+2i. Soluie Fiierul "graf1_13.m": z=[2-5i -2+i 3+2i]; compass(z) pause feather(z)

1.14. S se reprezinte grafic funcia f de la exerciiul 1.10. cu funcia comet. Soluie Fiierul "graf1_14.m": t=-2*pi:pi/60:2*pi; f=sin(2*t).*cos(2*t); comet(t,f) 1.15. S se reprezinte grafic o spiral n 3D (x(t)=sin(t), y(t)=cos(t), z(t)=t, t[-5,5]). Soluie Fiierul "graf1_15.m": t=-5*pi:pi/60:5*pi; x=sin(t); y=cos(t); z=t; plot3(x,y,z)

11

Departamentul A.I.A.

Matematici Asistate de Calculator

1.16. Reprezentai grafic (cu plot3, mesh, surfl) funciile: a) z(x,y)=xexp(-x2-y2), x[-3,3], y[-3,3]; b) z(x,y)=x3-3xy2, x[-3,3], y[-3,3]. Soluie Fiierul "graf1_16a.m": x=-3:0.1:3; y=-3:0.1:3; z=x.*exp(-x.^2-y.^2); [x,y]=meshgrid(x,y); z=x.*exp(-x.^2-y.^2); plot3(x,y,z) pause mesh(x,y,z) pause surfl(x,y,z) Fiierul "graf1_16b.m": x=-3:0.1:3; y=-3:0.1:3; [x,y]=meshgrid(x,y); z=x.^3-3*x.*y.^2; plot3(x,y,z) pause mesh(x,y,z) pause surfl(x,y,z) shading interp colormap(cool)

12

Departamentul A.I.A.

Matematici Asistate de Calculator

1.17. S se reprezinte grafic spirala de la exerciiul 1.15. cu funcia comet3. Soluie Fiierul "graf1_17.m": t=-5*pi:pi/60:5*pi; x=sin(t); y=cos(t); z=t; comet3(x,y,z) 1.18. S se reprezinte grafic un con de raz rc=0.5 i nlime h=7.5 i un trunchi de piramid cu baza hexagon, cu cercurile circumscrise bazelor de raze rp1=1 i rp=0.5 i nlime h. Soluie Fiierul "graf1_18a.m": rc=0.5; h=7.5; [xc,yc,z]=cylinder([rc zc=z*h; surf(xc,yc,zc) 0],60);

Fiierul "graf1_18b.m": rp1=1; rp=0.5; h=7.5; [xc,yc,z]=cylinder([rp1 zc=z*h; surf(xc,yc,zc) rp],6);

Funcia cylinder reprezint grafic 3D implicit obiecte (n cazul exemplului, conul i trunchiul de piramid) de nlime 1. Astfel, pentru a modifica nlimea, s-a apelat funcia cu parametri de ieire. Astfel sunt obinute coordonatele punctelor obiectului grafic. n acest caz, reprezentarea grafic se realizeaz dup modificarea nlimii
13

Departamentul A.I.A.

Matematici Asistate de Calculator

cu una din funciile de reprezentare a suprafeelor (de exemplu, surf=). Pentru a obine raportul corect al dimensiunilor pe axe, se d la final (dup apelul de realizare a graficului), comanda: axis('equal')

1.19. S se genereze i s se reprezinte grafic o sfer i un elipsoid. Soluie Fiierul "graf1_19.m": sphere pause sphere(50)

Pentru a reprezenta grafic o sfer de raz neunitar se procedeaz ca n cazul exerciiului precedent. n mod analog, se poate obine un elipsoid. Fiierul "graf1_19_2.m": [x,y,z]=sphere(30); x=6*x; y=4*y; z=2*z; surfl(x,y,z) axis('equal')

14

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