Laborator 3-Teoria probabilitatilor si statistica matematica Sef lucrari dr.mat. Daniel N.Pop Departamentul de calculatoare si inginerie electrica (24.oct.2017) 1 Plotarea functiilor 1.1 Interpolarea Interpolarea este un proces de estimare a valorilor dintre date (puncte) cunoscute. Aplicaţiile interpolării sunt numeroase în domenii cum ar fi procesarea numerică a semnalelor şi imaginilor. MATLAB-ul dispune de mai multe tehnici de interpolare, alegerea unei metode sau alteia făcându-se în funcţie de acurateţea necesară, de viteza de execuţie şi de gradul de utilizare a memoriei. Funcţiile de interpolare se află în directorul polyfun. Exemplu >[x,y] = meshgrid(-3:1:3); >z = peaks(x,y); > surf(x,y,z); Generarea unei suprafeţe mesh fine pentru interpolare: [xi,yi] = meshgrid(-3:0.25:3); Interpolarea cu metoda celei mai apropiate vecinătăţi: zi1 = interp2(x,y,z,xi,yi, nearest ); Interpolarea cu metoda biliniară: zi2 = interp2(x,y,z,xi,yi, bilinear ); Interpolarea cu metoda bicubică: zi3 = interp2(x,y,z,xi,yi, bicubic ); 1
1.2 Calcul de arii Exemplu: trasarea graficului funcţiei humps pentru limitele [-5 5] ale axei x tastam in linia de comanda: >fplot( humps,[-5 5]); Dacă dorim şi precizarea limitelor de reprezentare pe axa y (realizarea unui zoom) folosim comanda: >fplot( humps,[-5 5-10 25]); Se poate realiza şi reprezentarea mai multor funcţii pe acelaşi grafic >fplot( [2*sin(x+3), humps(x)],[-1 1]); O plotare tri-dimensională a unei curbe poate fi obţinută cu >t = 0:0.1:3*pi; > plot3(sin(2*t),cos(t),t); Aria delimitata de graficul unei functii si axele de coordonate se calculează folosind formule de cuadratura. In Matlab există funcţia quad. Example 1 Sa se calculeze π. 2π (y sin(x) + x cos)y)dydx Tastam in linia de comanda 0 >>Q = quad2d(@(x,y) y.*sin(x)+x.*cos(y),pi,2*pi,0,pi); >>Q Q = -9.8696 π 2 Grafica tridimensionala 2.1 Reprezentarea 3d prin mesh si surf Example 2 1 Să se reprezinte grafic functia: pe domeniul z = f(x, y) = 1 2π exp( 1 2 (x2 + y 2 )) (1) D = [ 1, 1] [ 1, 1] odata cu instructiunea mesh si apoi cu instructiunea surf 2
Deschidem un fisier...m Introducem codul > >m=input( m= ); >h=1/m;x=-1:h:1; >[X,Y]=meshgrid(x); >Z=1/(2*pi)*exp(-0.5*(X.^2+Y.^2)); >subplot(1,2,1),mesh(x,y,z) >title ( Grafica prin mesh ) >xlabel( x ),ylabel( y ),zlabel( z ) >subplot(1,2,2),surf(x,y,z) >title( Grafica prin surf ) >xlabel( x ),ylabel( y ),zlabel( z ) \textbf{iar in linia de comanda tastam: } Example 3 Sa se scrie un program care efectueaza umbrirea suprafetei date de functia (1) Exista posibilitatea de umbrire cu comanda shading tip tip =faceted (implicit)=umbreste fiecare patrulater de pe suprafata trasata cu o intensitate fixa cu trasarea laturilor patrulaterelor tip =flat (fara trasarea laturilor patrulaterelor) tip =interp= umbrirea fiecarui patrulater de pe suprafata trasata se face in mod gradat printrun procedeu de interpolare, fara trasarea liniilor patrulaterului Deschidem un fisier...m Introducem codul m=input( m= ); h=1/m;x=-1:h:1; [X,Y]=meshgrid(x); Z=1/(2*pi)*exp(-0.5*(X.^2+Y.^2)); subplot(1,3,1),surf(x,y,z), shading faceted title( Umbrire faceted ) subplot(1,3,2),surf(x,y,z), shading flat title( Umbrire flat ) 3
xlabel( x ),ylabel( y ),zlabel( z ) subplot(1,3,3),surf(x,y,z) title( Umbrire interp ) shading interp Iar in linia de comanda tastam: 2.2 Reprezentarea curbelor de nivel Se face prin contour si contourf.diferenta dintre ele doar prin faptul ca ariile delimitate de curbele de nivel sunt umbrite. Aceste functii permit reprezentarea grafica a functiilor implicite. Example 4 Sa reprezentam n curbe de nivel pentru functia (1). Reprezentarile acestor curbe de nivel vor fi facute atat cu contour cat si contourf. Deschidem un fisier...m si introducem codul m=input( m= );n=input( n= ); h=1/m;x=-1:h:1; [X,Y]=meshgrid(x); Z=1/(2*pi)*exp(-0.5*(X.^2+Y.^2)); subplot(1,2,1),contour(z,n), title([ n=,num2str(n), curbe de nivel ]) subplot(1,2,2),contourf(z,n), title([ n=,num2str(n), curbe de nivel umbrite ]) xlabel( x ),ylabel( y ),zlabel( z ) >>n=5 Iar in linia de comanda tastam: 2.3 Instructiunile ezmesch,ezsurf,ezmeshc, ezsurfc Tastam in linia de comanda: >>subplot(1,2,1); >> ezmesh( sin(x)*sin(y),[-pi,pi], circ ); >> subplot(1,2,2) >>ezmeshc( sin(x)*sin(y),[-pi,pi], circ ); >>colormap spring 4
Diferenta dintre cele doua grafice este ca primul nu face curbele de nivel iar cel de-al doilea da. Pentru a ilustra ca reprezentarea grafica prin ezmesh si ezsurf este aceasi dam urmatorul exemplu: Deschidem un fisier...m si introducem codul subplot(1,2,1) ezsurf( x*exp(-x^2-y^2),[-2,2],20) title( Reprezentarea cu ezsurf ) subplot(1,2,2) ezmesh( x*exp(-x^2-y^2),[-2,2],20) colormap autumn title( Reprezentare cu ezmesh ) Salvam cu numele...apoi Run (butonul verde) 5