Sunteți pe pagina 1din 46

Laborator 3B

MATLAB

reprezentari grafice
Functii - Exercitiu 1
a) Folosind functia fplot, sa se reprezinte graficul functiei
f(x)=xsin(x) pe intervalul [-pi,pi].
b)Se da functia:f(x)=(x4-5x2+4)/(x6+4). Sa se reprezinte
grafic, sa se determine minimumul functiei pe intervalul
[-3, 0] si maximumul pe intervalul [-1,1];
c) Sa se calculeze pentru f(x) de la pct a):

d) Sa se calculeze ptr xmin=0, xmax=1, ymin=0, ymax=1


Functii - Rezolvare Exercitiu 1

a)>> f= inline('x.*sin(x)');
% sau f =@(x)(x.*sin(x))
>>fplot(f,[-pi pi],'r')
b)>> fminbnd(inline('(x.^4-5*x.^2+4)./(x.^6+4)'),-3,0)
ans = - 1.3072
>>fminbnd(inline('-(x.^4-5*x.^2+4)./(x.^6+4)'),-1,1)
ans =1
c)>> quad(inline('x.*sin(x)'),-1,1)
ans=0.6023
d)>>dblquad(inline('x.^2./(y.^2+1)'),0,1,0,1)
ans= 0.2618
Functii - Exercitiul 2

a) Sa se rezolve ecuatia:
x2sqrt( x2 + 3) + xln (x2 +1)- 2 - ln 2 = 0 , x=0.5;

b) Sa se reprezinte grafic functia


f (x) = (x -1)ex sin(x)+ x3 - x
si apoi sa se determine toate radacinile pe intervalul
[-2, 2].
Functii -Rezolvare exercitiul 2

a) >> fzero(inline('x.^2.*sqrt(x.^2+3)+x.*log(x.^2+1)-2-
log(2)'),0.5);
ans=1
b)>> g=inline('(x-1).*exp(x).*sin(x)+x.^3-x');
>> fplot(g, [-2,2],'b');
>>fzero(inline('(x-1).*exp(x).*sin(x)+x.^3-x'),-1);
ans=-1.2255
>> fzero(inline('(x-1).*exp(x).*sin(x)+x.^3-x'),0.1)
ans= 0
>>fzero(inline('(x-1).*exp(x).*sin(x)+x.^3-x'),0.9)
ans= 1
Reprezentari grafice 2D – functia ezplot, ezpolar

Pentru desenarea rapida a unei expresii introduse direct ca


argument se face usor cu functia ezplot, sau in coordonate
polare ezploar care se poate apela:
• ezplot(f), ca de exemplu ezplot('cos(x)'), care considera implicit
pentru x din f=f(x), domeniul -2*pi < x < 2*pi;
• ezplot(f, [xmin,xmax,ymin,ymax]), care ploteaza f(x,y)=0 pe
domeniul xmin < x < xmax, ymin < y < ymax;
• ezplot(f), ca de exemplu ezplot('x^2 - y^2 - 1'), care ploteaza
f(x,y)=0 si in care -2*pi < x < 2*pi si -2*pi < y < 2*pi
• ezplot(' f ',[a, b]), ca de exemplu ezplot('x^3 + y^3 - 5*x*y + 1/5',
[-3,3]), care ploteaza f(x,y)=0 si in care a=-3 < x < b=3 si a=-3
< y < b=3;
>> ezpolar('1 + cos(t)')
>> ezpolar('1 - 2*sin(3*t)')
Reprezentari grafice in plan 2D

Matlab permite reprezentarea in plan a graficelor de


functii si a suprafete poligonale.

Reprezentarile grafice ale functiilor pot fi realizate in mai


multe tipuri de coordonate:

carteziene,

polare,

logaritmice,

semilogaritmice
Reprezentari grafice in plan- 2D
Cateva functii Matlab destinate reprezentarilor grafice 2D:

plot(x,y, speclinie) - grafice in coordonate X-Y liniare; x
si y sunt vectorii ce definesc punctele de reprezentat, iar
speclinie este un sir de caractere intre ` ` reprezentand tipul
liniei ce uneste punctele definite de x si y, markerul cu care
se reprezinta punctele definite de x si y si culoarea liniei,
toate in aceasta ordine.

line(x,y) -reprezentarea grafica a liniilor poligonale

fill (x,y,s) - reprezentarea grafica a poligoanelor

loglog(x,y,s) -grafice in coordonate X-Y logaritmice

semilogx (x,y,s), semilogy(x,y,s) -grafice in coordonate X-
Y semilogaritmice (in baza 10)

polar(theta,rho,s) -grafice in coordonate polare
Reprezentari grafice in plan - 2D


Tipul de linie poate fi unul din simbolorile:
- continua (implicit) , -- intrerupta, : puncte, -. linie-punct

Tipul marker-ului:
+ ( semnul +), o (cerc), * (asterisc), . (punct), x (cruce),
s (patrat), d (romb), p (pentagon), h (hexagon), ^ (triunghi
cu un varf in sus), v (triunghi cu un varf in jos), > (triunghi
cu un varf la dreapta), < (triunghi cu un varf la stanga)

Culorile pot fi urmatoarele simboluri:
r (rosu), g (verde), b (albastru), c (bleu), m (mov),
y (galben), k (negru), w (alb).
Reprezentari grafice in spatiu- 3D
In Matlab pot fi reprezentate grafic in spatiul 3D: curbe, suprafete
si corpuri 3-dimensionale. O parte din functiile Matlab destinate
reprezentarilor grafice 3D:

plot3(x,y,z, speclinie) - reprezentarea liniilor in spatiu, x,y,z sunt
vectorii ce definesc punctele de reprezentat, iar speclinie este un sir
de caractere intre ` ` reprezentand tipul liniei ce uneste punctele
definite de x si y, markerul cu care se reprezinta punctele definite de
x si y si culoarea liniei, toate in aceasta ordine.

mesh(x,y,z,c) - reprezentarea grafica a suprafetelor 3D sub forma
unei retele (“mesh”)

surf(x,y,z), surfl(x,y,z,s) - reprezentarea grafica a suprafetelor
pline, cu iluminare

contour(x,y,z) , contourf(x,y,z,v) – reprezentarea grafica doar a
liniilor de contur

fill3 - reprezentarea grafica spatiala a poliedrelor

cylinder (y,n), sphere(n), ellipsoid(xc,yc,zc,rx,ry,rz) -
reprezentarea grafica a unor corpuri tridimensionale
Functii auxiliare pentru reprezentari grafice
Cateva functii auxiliare ce pot controla proprietatile modului de
reprezentare:

title - inserarea unui titlu pentru reprezentarea grafica

axes, axis - controlul aparitiei si stabilirea lungimii unitatilor de
reprezentare pe axele sistemului de coordonate

xlabel, ylabel, zlabel - inserarea etichetelor axelor sistemului de
coordonate

text, gtext - plasarea unui text pe grafic la o anumita pozitie, sau
selectata cu mouse-ul.

hold- pastrarea graficului curent si al proprietatilor sale

subplot - impartirea ferestrei de reprezentare grafica in mai multe
regiuni grafice.

grid - suprapunerea unei retele de linii pe grafic

meshgrid -definirea sub forma de retea de puncte a domeniului de
reprezentare 3D a suprafetelor.

colormap - stabilirea sau returnarea matricei de culoare

shading- stabilirea modului de umbrire pentru suprafetele 3D
Reprezentari grafice 2D – Observatii
1) Pentru reprezentarea grafica a functiilor in Matlab este necesar
ca domeniul de reprezentare sa fie definit prin puncte. Distanta
dintre orice doua puncte consecutive ale graficului trebuie sa fie
suficient de mica pentru ca reprezentarea grafica sa fie corecta.
O distanta prea mica necesita mai mult timp de calcul !

2) Reprezentarea mai multor grafice de functii in acelasi grafic


Se poate face prin enumerarea functiilor sub forma: variabila,
functie si, optional, setari de culoare, marker si/sau tip de
linie, pentru fiecare functie in parte in acelasi apel al
functiei plot:
>> plot(x, y1, 'b-', x, y2, 'g.-')
sau
in apeluri diferite ale functiei plot, dar cu conditia ca inainte sau
imediat dupa primul apel sa se dea comanda hold on, iar dupa
ultimul apel sa fie data comanda hold off.
Reprezentari grafice 2D - Exercitiul 1

Sa se reprezinte grafic functiile y 1, y2:[-5,5]→R


definite prin relatiile:

y1=e-0.4x cos(8x) si

y2= e-0.4x sin(8x)

Schimbati pasul la 0.5 si reprezentati din nou.


Reprezentari grafice 2D – Rezolvare Exercitiul 1
1) Redarea domeniului (intervalului) de reprezentare prin
definirea unui vector cu pas liniar:
>>x=-5:0.05:5;
2) Definirea functiilor folosind operatorii corespunzatori:
>> y1=exp(-0.4*x).*cos(8*x);
>> y2=exp(-0.4*x).*sin(8*x);
3) Trasarea graficelor si, eventual, precizarea anumitor proprietati
ale reprezentarii grafice:
>> plot(x,y1,'b-')
>> hold on
>> plot(x,y2,'g:o')
>> hold off
4) Setarea altor proprietati ale reprezentarii grafice (etichetele
axelor, text pe grafic etc):
>>title('Grafic 2D'); xlabel('x'); ylabel('y');
>>grid; gtext('Doua grafice')
Reprezentari grafice 2D

Pentru a salva figura curenta intr-un fisier *.ps, pentru a fi printata


sau introdusa intr-un alt document, tastati comanda :

>> print -dps vasile.ps


Operatori logici - Ex1

Creati vectorul x=randperm(35) si evaluati urmatoarea


functie utilizand indexarea logica:

2 x<6
y(x) = x-4 6 <= x < 20
36-x 20 <= x <= 35

Verificati, desenand graficul functiei y(x).


Rezolvare - Ex1
Cream vectorul x:
>>x=randperm(35);
Cream vectorul y de aceeasi dimensiune cu vectorul x, dar plin de
1:
>> y= ones(1,35)
Calculam valorile lui y facand indexarea logica:
>> y(x<6)=2
>> y((x >= 6) & (x < 20))=x((x >= 6) & (x < 20))-4
>> y((x >= 20) & (x <= 35))=36-x((x >= 20) & (x <= 35))

Desenam graficul functiei:


>>plot(x,y,'ok')
% am marcat fiecare punct de pe grafic cu semnul o, si k
%pentru a seta culoarea neagra
Operatori logici - Ex2

Desenati graficul functiei de semnal sinusoidal


discontinuu utilizand indexarea logica:

sin(t) sin(t) > 0


x(t) = t=1, 2, ...10
0 sin(t)<= 0
Rezolvare - Ex2

Definim timpul t:
>>t=0:0.1:10;
Definim funcia x(t):
>> x=sin(t);
Punem valoarea 0 în locul valorilor negative ale lui x:
>> x=x.*(x>0);
Facem graficul si punem etichetele:
>> plot(t,x)
>> axis([0 10 -0.1 1.1])
>> xlabel('Timpul [s]')
>> ylabel('Amplitudinea')
>> title('Semnal sinusoidal discontinuu').
Reprezentari grafice 2D– functia legend
Adaugarea unei legende la un grafic se face prin comanda
legend.
Cea mai comoda si comuna apelare este data in exemplu:
>>x = 0:.2:12;
>>plot(x,besselj(1,x),x,besselj(2,x),x,besselj(3,x));
>>legend('First','Second','Third',-1);

In locul valorii „0” se mai pot utiliza: 1 sau lipsa, ceea ce


pozitioneaza legenda in partea dreapta superioara in
interior; 2, ce pozitioneaza legenda in partea stanga
superioara in interior; 3, care plaseaza legenda in partea
de jos stanga si in interior; 4, ce plaseaza legenda in
partea inferioara stanga si in interior; -1, care plaseaza
legenda în partea dreapta sus si în exterior.
Reprezentari grafice 2D – Exercitiu 1*
Sa se deseneze pe acelasi grafic functia y=cos(2πft),
t intre 0 si 4, iar frecventa f ia valorile 0.7 , 1, 1.5 si 2.

fs = ['r-';'b.';'go';'m*']; %Cream un vector ptr stilurile liniilor


x=1; %Initializam variabila x
t=0:.01:4;
for f=[0.7 1 1.5 2]
y=cos(2*pi*f*t);
plot(t,y,fs(x,1:end)); %stilul linei indexat de x
hold on
x=x+1; % incrementam x cu unu
end
xlabel('t');
ylabel('cos(2 pi f t)');
legend('f=0.7','f=1','f=1.5','f=2');
Reprezentari grafice 2D - Exercitiul 2

Sa se scrie o functie Matlab care primeste ca


argumente o alta functie f si capetele unui interval inchis
[a,b] pe care este definita aceasta functie. Sa se
reprezinte grafic in coordonate semilogaritmice. Daca
reprezentarea grafica in cel putin unul din cele doua
cazuri nu poate fi realizata, se va afisa un mesaj de
eroare.
Reprezentari grafice 2D- Rezolvare Exercitiul 2
Editam fisierul grafic_log:
>> edit grafic_log
function grafic_log(f,a,b)
if a>b
disp('Interval vid (a>b) !')
return
end
n=100; % nr de puncte pentru reprezentarea intervalului
pas=(b-a)/n; % pasul submultiplu al lungimii intervalului.
if a==b x=a;
else x=a:pas:b;
end
if a<=0 | min(feval(f, x))<=0
disp('Unul din grafice nu poate fi reprezentat!')
return
end
subplot(2,1,1); semilogx(x, feval(f,x)) % coord semilog pe axa x
subplot(2,1,2); semilogy(x, feval(f,x)) % coord semilog pe axa y
Reprezentari grafice 2D – Testare Exercitiul 2
Pentru testarea programului se defineste o functie :
>> f = inline('sin(x)+2')
Apelul functiei grafic_log se face din linia de comanda:
>> grafic_log(f, 2,1)
Interval vid (a>b) !
>> grafic_log(f ,-1,10)
Unul din grafice nu poate fi reprezentat!

>> grafic_log(f,1,10)

Pentru a desena graficele pe acelasi ecran se foloseste


comanda subplot(n,m,k) unde n reprezinta numarul de
linii de subferestre, m numarul de coloane de
subferestre, iar k numarul ferestrei ce devine activa.
Reprezentari grafice 2D -Exercitiul 3

Sa se reprezinte grafic triunghiul ale carui varfuri au


coordonatele (-1,3), (2,7) si (9,-4).

Solutie: Rezolvarea se bazeaza pe utilizarea functiei line,


care primeste ca argumente vectorul tuturor absciselor si
vectorul tuturor ordonatelor varfurilor, in aceeasi ordine:

>> line([-1 2 9 -1],[3 7 -4 3]); grid

Observatie: Ce face functia Matlab line? Triunghiul e


format din 3 segmente, necesita precizarea a patru
puncte, evident, primul si ultimul punct fiind identice.
Reprezentari grafice 2D– functia comet

Pentru reprezentarea dinamica (in miscare) a traiectoriei


unui punct, care urmareste reprezentarea grafica 2D (o
„cometa”), se utilizeaza functia comet, care se apeleaza
cu una dintre sintaxele:
• comet(y) – care traseaza in miscare (animat) vectorul y;
• comet(x,y) – care traseaza in miscare vectorul y functie
de x;
• comet(x,y,p) – care traseaza in miscare vectorul y
functie de x, utilizand pentru animare (intarzierea în
plotare) timpul dat de p*length(y).
Scrieti secventa:
>>t = -pi:pi/200:pi;
>>comet(t,tan(sin(t))-sin(tan(t)))
Reprezentari grafice 2D – functia bar

Reprezentarea grafica, sub forma de bare verticale, se


realizeaza cu functia bar, care se poate apela cu sintaxa:
• bar(x,y,gros) – reprezinta grafic y, in functie de x, cu
grosimea barei date de gros, gros > 1 barele se unesc;
• bar(x,y, 'grouped') – reprezinta barele grupate pe seturi
de date si cu aceeasi culoare;
• bar(x,y, 'stacked') – reprezinta barele sectionate cu culori
diferite pentru seturile de date.

Apelata cu secventa [xb,yb]=bar(y) sau [xb,yb]=bar(x,y)


functia bar nu reprezinta graficele, dar calculeaza vectorii
xb si yb, astfel incat plot(xb,yb) sa poata trasa graficul
de bare.
Reprezentari grafice 2D – functiile bar, barh

De mentionat ca valorile lui x trebuie sa fie egal departate


si crescatoare.

Scrieti secventa:
>>subplot(3,1,1),bar(rand(10,5),'stacked'),colormap(cool)
>>subplot(3,1,2), barh(0:.25:1,rand(5),1)
>>subplot(3,1,3), bar(rand(2,3),.75,'grouped')

Reprezentarea barelor orizontale se realizeaza cu functia


barh, care este asemanatoare functiei bar.
Reprezentari grafice 2D – functia hist
Calculul si reprezentarea grafica a histogramelor se face
cu functia hist, care se apeleaza cu una dintre sintaxele:
• hist(y) – traseaza histograma cu 10 segmente egale a
datelor vectorului y;
• hist(y, n) – traseaza histograma cu n segmente egale a
datelor vectorului y;
• hist(y, x) – traseaza histograma datelor vectorului y la
abscisele specificate in x;
• [m,z]=hist(y), [m,z]=hist(y, n), [m,z]=hist(y, x) –
returneaza vectorii m si z continand frecventa de
aparitie si de localizare a segmentelor. Cu functia
bar(z,m) se poate trasa histograma.
Exemplu: histograma cu elemente distribuite normal
(Gaussian):
>> x=-4:0.4:4; y=randn(10000,1); hist(y,x).
Reprezentari grafice 2D – functia stem

Reprezentarea grafica a semnalelor discrete, sub forma


unor linii terminate cu cerc, se face cu functia stem, care
se apeleaza cu una dintre sintaxele:
• stem(y) – traseaza un grafic din linii cu cerc, cu
elementele vectorului y;
• stem(x,y) – traseaza un grafic din linii terminate cu cerc,
cu locatiile specificate de vectorul x, adica y=y(x), iar
valorile lui x trebuie sa fie egal departate si crescatoare;
• stem(x,y,linie_tip) – traseaza un grafic linii de tipul si
culoarea precizata in sirul de caractere linie_tip, similar
cu functia plot (de exemplu stem(x,y,’:r’)).
Exemplu:
>> n=0:30; f=sin(2*pi*n/10); stem(n,f)
Reprezentari grafice 2D – functia stairs

Graficele in trepte sunt utilizate la reprezentarea


diagramelor sistemelor numerice de esantionare si
prelucrare a datelor.
Functia stairs se apeleaza cu una dintre sintaxele:
• stairs(y) – traseaza graficul in trepte al vectorului y;
• stairs(x,y) – traseaza graficul in trepte al elementelor
vectorului y la locatiile specificate in x, iar valorile lui x
trebuie sa fie egal departate si in ordine crescatoare;
• [xb,yb]=stairs(y) si [xb,yb]=stairs(x,y) – calculeaza
vectorii xb si yb, astfel încat plot(xb,yb) sa poata trasa
graficul în trepte.
Exemplu de grafic în trepte al functiei y=sin(x):
>>x=0:0.3:6; y=sin(x); stairs(x,y)
Reprezentari grafice 2D – functia pie

Realizarea unei diagrame circulare (asa numita diagrama


„placinta”) cu valorile unui vector x, avand specificata
semnificatia in eticheta, se face cu functia
pie(x,eticheta), care se poate apela

De mentionat ca valorile lui x sunt normalizate, iar daca


sum(x)<1, atunci sunt trecute valorile efective si apare
un segment de cerc.

>> pie([2 4 3 5],{'North','South','East','West'})


Reprezentari grafice 2D – functia plotmatrix

Plotarea unei matrice dispersate se face cu functia plotmatrix.

Se apeleaza cu comanda plotmatrix(x,y) si prezinta dispersia
coloanei x functie de coloana y.

Daca x este o matrice p*m, iar y o matrice p*n, atunci plotmatrix
produce o matrice n*m.

Comanda plotmatrix(y) este asemanatoare cu comanda
plotmatrix(y,y), cu exceptia faptului ca diagonala este inlocuita
prin hist(y(:,i)).
Exemplu de utilizare:
>>x = randn(50,3); y = x*[-1 2 1;2 0 1;1 -2 3;]';
>>plotmatrix(y).
Plotarea dispersiei vectorului x, functie de vectorul y (x si y
aceeasi dimensiune), cu markere (cerculete implicit) de arie
determinata de valorile vectorului s si fiecare punct colorat,
conform valorilor vectorului c, se face cu scatter(x,y,s,c). Daca s
este scalar, atunci fiecare marker va avea aceesi dimensiune.
Reprezentari grafice 2D – functia errorbar

Evidentierea erorilor datelor reprezentate grafic - errorbar(x,y,e).

Reprezentarea grafica a datelor cu bare de eroare ataseaza
fiecarei perechi (x,y) eroarea precizata intr-un vector, e, cu
aceleasi dimensiuni. Vectorul e contine lungimea barelor ce
reprezinta eroarea.

Barele de erori se reprezinta simetric in raport cu ordonata y,
ceea ce presupune o asociere de erori pozitive sau negative, cu
aceeasi probabilitate.

Segmentele de eroare sunt de inaltime 2*e si se traseaza pe curba
y=y(x). Figura obtinuta reprezinta plaja de valori pe care o poate
lua functia y cu eroarea ”e”.

Daca x si y sunt matrice de aceeasi dimensiune, functia errorbar
va reprezenta graficul cu bare de eroare, pentru fiecare coloana
in parte.
Exemplu:
>> x = 1:10; y = sin(x); e = std(y)*ones(size(x)); errorbar(x,y,e)
Reprezentari grafice 3D – Exercitiul 4

Sa se reprezinte grafic in spatiul tridimensional curba 3D


data prin ecuatiile parametrice:

x=ln(t2+2),

y=t*sin(t),

z=-t-1 unde t∈[-7,7]


Reprezentari grafice 3D – Rezolvare Exercitiul 4
1)Domeniul/intervalul de reprezentare definit prin
vectorul cu pas liniar:
>> t=-7:0.1:7;
2) Definirea functiilor corespunzatoare coordonatelor:
>> x=log(t.^2+2); y=t.*sin(t); z=-t-1;
3) Trasarea graficului si precizarea anumitor proprietati:
>> plot3(x,y,z,'m')
4) Setarea altor proprietati ale reprezentarii grafice
(etichetele axelor, grid etc):
>> grid
>> xlabel('axa x');
>> ylabel('axa y');
>> zlabel('axa z');
Sensul de parcurgere a curbei se stabileste cu functia
Matlab comet3. Inlocuiti functia plot3 cu comet3.
Reprezentari grafice 3D – Exercitiul 5
Suprafata ce reprezinta graficul unei functii de doua variabile
z=f(x,y):
f(x,y) = x*y/(x2+y2+1) unde x∈[-2,2] y∈[-4,4]

Solutie: definim matricile si functiile ptr domeniul de reprezentare


>> x=-2:0.2:2; y=-4:0.4:4; [X,Y]=meshgrid(x,y);
>> Z=X.*Y./sqrt(X.^2+Y.^2+1);
>> surf(X,Y,Z)

Observatie: Domeniul de reprezentare al unei suprafete este o


retea de puncte {(xi, yj)}, ce se genereaza separat in seturile de
puncte {xi} si {yj}, apoi se formeaza produsul cartezian al
acestora cu ajutorul functiei Matlab meshgrid.
In locul comenzii surf putem utiliza comenzile mesh, surfc,
meshc. Daca se doresc doar liniile de contur folosim comenzile
contour(X,Y,Z) sau contourf(X,Y,Z) care umple cu culoare
diferentele de nivel.
Reprezentari grafice 3D – Exercitiul 6
Sa se reprezinte grafic in spatiul 3D functia “sombrero” ptr x,y
reali si nenuli:

Solutie: 1) redarea domeniului de reprezentare:


>> [x,y]=meshgrid([-8:.5:8],[-8:.5:8]);
2) definirea functiilor:
>> R=sqrt(x.^2+y.^2)+eps; z=sin(R)./R;
3) trasarea graficului si precizarea anumitor proprietati ale
reprezentarii grafice (culoare, umbra etc):
>> surfl(z); shading interp; colormap(spring);
Observatie: functia „sombrero” include si punctul (0,0), facem uz
de constanta Matlab eps foarte mica (a se vedea help-ul
constantei eps).
Reprezentari grafice 3D – Exercitiul 7

Sa se reprezinte grafic:

- o piramida dreapta de inaltime h si cu baza octogon


regulat inscris intr-un cerc de raza rc

- un elipsoid cu semiaxele rx, ry si rz.


Reprezentari grafice 3D – Rezolvare Exercitiul 7
Piramida va fi reprezentata cu ajutorul functiei Matlab
cylinder, iar elipsoidul cu una din functiile Matlab
sphere sau ellipsoid.
1) Definim raza cercului circumscris bazei, inaltimea
piramidei si numarul laturilor bazei
>>rc=1.25; h=3; n=8;
2) Determinam coordonatelor suprafetei piramidei de
inaltime 1
>>[xp,yp,z]=cylinder([rc 0],n);
3) Stabilim inaltimea ceruta
>>zp=h*z;
4) Reprezentarea grafica
>> surf(xp,yp,zp)
>> colormap(summer); axis('equal')
Reprezentari grafice 3D – Rezolvare Exercitiul 7

1) Precizam coordonatelor centrului si a semiaxelor


>>xc=3; yc=-1; zc=0;
>>rx=5; ry=3; rz=2;
2) Reprezentarea grafica cu functia ellipsoid
>>ellipsoid(xc,yc,zc,rx,ry,rz,30)
>>axis('equal'); colormap(spring)
>>pause
3) Reprezentarea grafica cu functia sphere
>>[x,y,z]=sphere(30);
>>xe=5*x+3; ye=3*y-1; ze=2*z;
>>surf(xe,ye,ze);
>>axis('equal'); colormap(cool)
Reprezentari grafice 3D – Exercitiul 8
Sa se deseneze :
a) trunchi de piramida cu baza octogon.

>> x=0:0.2:2;
>> y=x-3;
>>cylinder(y,8)

b) o suprafata de rotatie generata de functia:


y = 5+xarctg(x)-5sin(x)

>> x=-pi:pi/10:pi; | x=-pi:pi/10:pi;


>> y=5+x.*atan(x)-5*sin(x); | [X,Y,Z]=cylinder(y);
>> cylinder(y,30) | surf(X,Y,Z)
Reprezentari grafice 3D – functia ezmesh
Pentru plotarea facila a retelei (gridului) unei expresii introduse
direct ca argument se utilizeaza functia ezmesh, care se poate
apela:
• ezmesh(f) – ploteaza graficul functiei f(x,y) utilizând functia
mesh, unde f este un semn sau o expresie simbolica,
reprezentand o functie matematica de doua variabile, ca x si y,
considerand domeniul implicit -2*pi < x < 2*pi, -2*pi < y < 2*pi
si acordand corespunzator gridul;
• ezmesh(f, Dom) – ploteaza f pe domeniu, Dom, care poate fi un
vector de doua dimensiuni, [a b], respectiv (a < x < b, a < y < b),
de 4 dimensiuni, [xmin xmax ymin ymax] ori [xmin xmax],
[ymin ymax], respectiv (xmin < x < xmax, ymin < y < ymax)
sau valoarea implicita, 2*pi < x < 2*pi, -2*pi < y < 2*pi ;
• ezmesh(..., N) – ploteaza f pe domeniul implicit, considerand un
grid NxN, in care valoarea implicita a lui N este 60;
• ezmesh(...,'circ') – ploteaza f pe un disc, centrat pe domeniul
considerat.
Reprezentari grafice 3D – Exemple functia ezmesh

Posibilitatile de apelare a functiei ezmesh:


>>f = ['3*(1-x)^2*exp(-(x^2) - (y+1)^2)' ...
'- 10*(x/5 - x^3 - y^5)*exp(-x^2-y^2)' ...
'- 1/3*exp(-(x+1)^2 - y^2)'];
>>ezmesh(f,[-pi,pi])

>>ezmesh('x*exp(-x^2 - y^2)'); ezmesh('x*y','circ');


>>ezmesh('real(atan(x + i*y))');
>>ezmesh('exp(-x)*cos(t)',[-4*pi,4*pi,-2,2]);
>>ezmesh('s*cos(t)','s*sin(t)','t');
>>h = inline('x*y - x'); ezmesh(h);
Reprezentari grafice 3D – functia ezsurf, ezsurfc
Pentru desenarea facila a suprafetelor colorate a unei
expresii introduse direct ca argument se utilizeaza
functia ezsurf. Suprafetele sunt date parametric, x =
x(s,t), y = y(s,t), z = z(s,t).

>> ezsurf('(1-s)*(3+cos(t))*cos(4*pi*s)', …
'(1-s)*(3+cos(t))*sin(4*pi*s)', ...
'3*s + (1 - s)*sin(t)', [0,2*pi/3,0,12] );

Pentru desenarea facila a suprafetelor colorate combinate,


cu trasarea liniilor de contur a unei expresii introduse
direct ca argument, se utilizeaza functia ezsurfc

>>ezsurfc('(s-sin(s))*cos(t)','(1-cos(s))*sin(t)','s',...
[-2*pi,2*pi]);
De citit si exercitii !

Stormy Attaway, Matlab, A Practical Introduction to Programming


and Problem Solving, 3rd Edition, 2013 Elsevier Inc.

Capitolul 3 – Introduction to MATLAB programming :subcapitolul


3.5

Exercitiile din Capitolul 3: 15, 16, 42

Capitolul 11 - Advanced Plotting Techniques

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