Laborator3 Mni.pdf

  • Uploaded by: Stefan Niculcea
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Laborator3 Mni.pdf as PDF for free.

More details

  • Words: 4,995
  • Pages: 23
Laborator 3 Grafica în Matlab 1. Obiectivul lucrării

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

MATLAB oferă numeroase facilităţi pentru prezentarea vizuală a datelor atât în mod interactiv, apelând la instrumente de editare dedicate, cu interfaţă grafică pentru utilizator, cât şi cu ajutorul funcţiilor specializate, apelate direct în fereastra de comenzi sau introduse în fişiere script (M-file). Se prezintă principalele facilităţi puse la dispoziţie de mediul MATLAB pentru reprezentarea grafică bidimensională şi tridimensională a curbelor şi suprafeţelor, în diverse formate: explicit, implicit, parametric, polar, cilindric, sferic. Pe lângă problemele legate de reprezentarea grafică propriu-zisă, se prezintă şi o serie de moduri în care se pot edita stilurile de desenare a liniilor, culorile, marcajele, modalităţile prin care se pot adauga mai multe reprezentări pe acelaşi grafic sau se pot salva imaginile rezultate în diverse formate.

2. Mersul lucrării

2.1 Reprezentări grafice 2D

a) Reprezentări grafice elementare

Se definesc în linia de comandă a Matlab-ului cei doi vectori: >> x = [0, 2, 4, 8, 16, 32, 64, 128, 256, 512]; >> y = [0 1 2 3 4 5 6 7 8 9];

Reprezentarea grafică a celoi doi se poate realiza direct în mediul Workspace a Matlab-ului. Se selectează celor două variabile existente în Workspace, astfel labelul de plot(x,y) va deveni activ în partea de sus conform Fig. 1 prezentate mai jos.

Fig. 1 Reprezentarea grafică a variabilelor direct din spaţiul de lucru

Prin apasarea label-ului va aparea o figură (vezi Fig. 2) ce descrie reprezentarea grafică a vectorilor x şi y în planul 2D. Reprezentarea grafică poate fi schimbată dacă selectorul reprezentării grafice este activat conform Fig. 3. Prin click+dreapta pe curba grafică se obţine un meniu care permite selectarea culorii de reprezentare grafică, grosimea liniei precum şi alte particularităţi.

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o Fig 2. Reprezentarea grafică a vectorilor x şi y

Fig. 3. Selectarea tipului de reprezentare grafică

Rezultatul din Fig. 2 poate fi obţinut şi în linia de comandă a Matlab-ului prin apelarea funcţiei plot.

plot(y) - reprezintă grafic argumentul y funcţie de indici, cu următoarele precizări: a) - dacă argumentul y este complex, plot(y) este echivalent cu plot(real(y),imag(y)) ; b) - dacă y este vector (linie sau coloană), funcţia plot trasează graficul y=y(i), unde i=1,2,...n este numărul de ordine al elementului y; c) - dacă y este o matrice m x n, funcţia plot trasează graficele yj = yj(i), unde i=1,2,...n este numărul de ordine al elementului de pe coloana j;

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

plot(x,y) - reprezintă grafic vectorul y funcţie de vectorul x, cu următoarele precizări: a) - dacă x este vector, iar y este matrice, atunci coloanele lui y sunt trasate funcţie de vectorul x; b) - dacă x şi y sunt matrice de aceeaşi dimensiune, se reprezintă coloanele lui y funcţie de coloanele lui x. De obicei reprezentarea grafică se face implicit cu culoare albastră, însă utlizatorul are posibilitatea, în afară de varianta deja menţionată în Fig. 2, să schimbe reprezentarea grafică din linia de comandă. Astfel apelul de plot va fi realizat astfel : plot(x,y,’culoare&/marcaj&/tip_linie’) reprezentare grafică în coordonate x-y liniare cu setare proprietăţi; Caracterele ce pot fi apelate pentru setarea culoare şi/sau marcaj grafic şi/sau tip de linie la reprezentarea grafică sunt: Tabel 1 Caractere ce pot fi utilizate in reprezentarea grafică Caracter Culoare Caracter Marcaj Caracter Tip linie albastru (blue) punct continuă b  verde (geen) cerc punctată g O : roşu (red) semnul x linie-punct r X -. turcoaz (cyan) plus întreruptă c + -purpuriu stea m * (magenta) galben (yellow) pătrat (square) y S black (black) romb (diamond) k D alb (white) triunghi (cu vârful w V în jos) triunghi (cu vârful ^ în sus) triunghi (stânga) < triunghi (dreapta) > pentagon P hexagon H Exemplu: pentru exemplul anterior pentru a schimba reprezentarea grafică în linie punctată, de culoare neagră cu marcări de tip cerculeţ se apelează linia de comandă: plot(x,y,’ko--’)

Obs : Între apostroafe caracterele pot fi puse în orice ordine, de ex. ‘ok--’ sau ‘--ok’. Specificarea culorii şi dimensiunii liniilor Caracteristicile liniilor se pot controla prin specificarea unor valori pentru proprietăţile linilor: LineWidth – specifică lăţimea unei linii. MarkerEdgeColor – setează culoarea markerului sau culoarea marginilor markerului în cazul anumitor forme (cerc, pătrat etc.)  MarkerFaceColor – setează culoarea interiorului markerelor.  MarkerSize – specifică dimensiunea markerului.

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

 

x = -2*pi:2*pi; y = sin(tan(x)); plot(x,y,'--rs','LineWidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',10) 1

0.8 0.6 0.4 0.2

0

-0.2 -0.4 -0.6 -0.8

-1 -10

-5

0

5

10

În multe situaţii poate apărea necesitatea reprezentării, în aceeaşi fereastră, a mai multor curbe, pentru o analiză comparativă. În MATLAB există mai multe modalităţi prin care se poate realiza acest lucru, fie suprapus, în acelaşi sistem de axe, fie alăturat. O prima variantă presupune utilizarea comenzii hold. hold on; - „memorează" graficul curent şi toate proprietăţile axelor, adăugând următoarele grafice peste cel curent; hold off; - returnează starea iniţială prin care fiecare comandă plot şterge graficul anterior şi proprietăţile axelor înainte de a desena unul nou. ishold ;- testează starea funcţiei hold şi returnează 1 dacă hold este activă (suprapune reprezentările grafice) şi 0 dacă este dezactivată (fiecare nouă reprezentare o şterge pe cea anterioară);

Exemplu: Să se reprezinte, în acelaşi grafic, funcţiile sin şi cos pentru intervalul [0, 4  ] 1

x = linspace(0, 4*pi, 200); y1 = sin(x); plot(x,y1,'b-'); hold on; ishold

ans = 1 >> >> >> >> >>

y = sin(x) y = cos(x) 0.5

0

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

>> >> >> >> >>

y2 = cos(x); plot(x,y2,'r--'); legend('y=sin(x)','y=cos(x)'); hold off; ishold

-0.5

-1

ans = 0

0

2

4

6

8

10

12

14

Fig. 4 Reprezentare grafică suprapusă utilizând hold on

Funcţia legend(‘string1’, ‘string2’, …) permite introducerea unei descrieri a reprezentărilor grafice din fereastra respectivă. Cea de-a doua variantă presupune utilizarea funcţiei plot cu mai multe argumente. Lista celor trei argumente prezentată anterior poate fi multiplicată pentru a include mai multe reprezentări grafice simultan: plot(x1,y1,x2,y2) - reprezintă simultan mai grafice în acelaşi sistem de coordonate. plot(x, y1, ’culoare&/marcaj&/tip_linie’, x, y2, ’culoare&/marcaj&/tip_linie’) setare proprietăţi pentru fiecare reprezentare grafică în parte; Exemplu: Se consideră x,y1 şi y2 anterior şi se apelează comanda >> plot(x,y1,'b-',x,y2,'r--');

Rezultatul obţinut este similar cu cel deja prezentat în Fig. 4.

A treia variantă presupune utilizarea funcţiei subplot.

plot(x1,y1,x2,y2) - reprezintă simultan mai grafice în acelaşi sistem de coordonate. Funcţia subplot(m,n,p) împarte ecranul într-o matrice mxn, creează axele în subfereastra p şi returnează identificatorul de control al noilor axe. Argumentele m, n şi p trebuie să fie numere întregi în intervalul [1, 9].

p 1

p2

p3

p4

p5

p6

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

m2

n3

Fig. 5 Exemplu de împărţire în subferestre folosind subplot(2,3,p), unde p  1,6 Scalarul m precizează pe câte rânduri sunt dispuse subferestrele, n specifică împărţirea pe orizontală, iar p specifică subfereastra (elementul) vizat. Comanda clf sau subplot(1,1,1) restaurează fereastra grafică iniţială, ştergând toate celelalte axe şi reprezentări. Exemplu: 1

0.5

y = sin(x)

0

>> >> >> >> >> >> >> >> >>

x = linspace(0, 4*pi, 200); y1 = sin(x); y2 = cos(x); subplot(211); plot(x,y1,'b-'); legend('y = sin(x)'); subplot(212); plot(x,y2,'r--'); legend('y = cos(x)');

-0.5

-1

0

2

4

6

8

10

12

14

1

0.5

y = cos(x)

0

-0.5

-1

0

2

4

6

8

10

12

14

Fig. 4 Reprezentare grafică în aceiaşi fereastră folosind subferestre generate prin instrucţiunea subplot( )

Pentru a adăuga mai multe explicaţii sau detalii unei reprezentări grafice pot fi folosite, pe lângă funcţia legend, următoarele funcţii: Funcţii

xlabel( ), ylabel( ) title( ) text(‘text’) Gtext(’text’) line( ) grid

Utilizare

permit adăugarea etichetelor text de-a lungul axelor de coordonate permite adăugarea unui titlu (text) deaspura graficului permite adăugarea unui text oriunde în grafic (trebuie specificate coordonatele) permite plasarea unui text pe grafic folosind mouse-ul primitivă care permite trasarea unei linii (utilă pentru a desena axele sistemului de coordonate) permite adăugarea unei grile pe grafic

Exemplu: Graficul functiilor sin si cos 1 y = sin(x) y = cos(x)

Axa Oy

0.5

0

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

>> x = linspace(0, 4*pi, 200); >> y1 = sin(x); >> y2 = cos(x); >> plot(x,y1,'b-',x,y2,'r--'); >> title('Graficul functiilor sin si cos'); >> xlabel('Axa Ox'); >> ylabel('Axa Oy'); >> ox=[3,9];oy=[0.6,0.6]; line(ox,oy) >> grid on >> legend('y = sin(x)','y = cos(x)');

-0.5

-1

0

2

4

6 8 Axa Ox

10

12

14

Fig. 5 Reprezentare grafică cu explicaţii

Alte trei instrucţiuni adesea utilizate în manipularea reprezentărilor grafice sunt: figure(n) fereastra utilizată pentru reprezentarea graficelor; n reprezintă numărul ferestrei. axis( ) axele pentru reprezentarea grafică în cadrul unei figuri; cadrul care conţine reprezentarea grafică; apelarea se realizează în panul 2D astfel: axis([ox1 ox2 oy1 oy2] ) unde ox1 şi ox2 sunt limitele din grafic considerate la nivelul abscisei, iar oy1 şi oy2 sunt limitele din grfic considerate la nivelul ordonatei. cla şterge axele curente.

x = linspace(0, 4*pi, 200); y1 = sin(x); y2 = cos(x); figure(10); plot(x,y1,'b-') title('Graficul functiei sin'); xlabel('Axa Ox'); ylabel('Axa Oy'); legend('y = sin(x)'); axis([6 10 -1 1]); figure(20); plot(x,y2,'r--'); title('Graficul functiei cos'); xlabel('Axa Ox'); ylabel('Axa Oy'); axis([6 10 -1.5 1.5]); legend('y = cos(x)');

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>

Fig. 6 Reprezentare grafică în figuri diferite şi trunchiate folosind instrucţiunea axes([])

Adăugarea textelor Prin utilizarea funcţiei text se poate plasa un text (şir de caractere) oriunde pe grafic. Exemplu: text(3*pi/4,sin(3*pi/4),... '\leftarrowsin(t) = .707',... 'FontSize',16) text(pi,sin(pi),'\leftarrowsin(t) = 0',... 'FontSize',16) text(5*pi/4,sin(5*pi/4),'sin(t)=-.707\rightarrow',... 'HorizontalAlignment','right',... 'FontSize',16)

b) Reprezentarea grafică în coordonate logaritmice şi semilogaritmice În afară de reprezentarea clasică liniară se mai poate apela și la reprezentarea grafică cu scară logaritmică fie pe axa x, fie pe axa y, fie atât pe axa x cât și pe axa y :

loglog(x,y) ambele axe ox şi oy sunt scalte logaritmic în baza 10; semilogx(x,y), scalează logaritmic numai axa ox, în timp ce axa oy este păstrată la scară lineară; semilogy(x,y) scalează logaritmic numai axa oy, în timp ce axa ox este păstrată la scară lineară.

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

Exemplu: 1500

>> >> >> >> >> >>

x=-10:10; y=12*x.^2+5*x+1; subplot(221);plot(x,y) subplot(222);loglog(x,y) subplot(223);semilogx(x,y) subplot(224);semilogy(x,y)

4

10

plot  x, y 

3

1000

10

500

10

0 -10

1500

loglog  x, y 

2

1

-5

0

5

10

10 0 10 4

10

semilogx  x, y 

1

10

semilogy  x, y 

1000

2

10

500

0 0 10

0

1

10

10 -10

-5

0

5

10

Fig. 7 Reprezentări grafice în coordonate logaritmice şi semilogaritmice

c) Reprezentarea grafică a poligoanelor

Matlab-ul oferă posibilitatea reprezentarii grafice a diferitelor forme geometrice plane prin unirea unor puncte folosind instrucțiunea: fill(x,y,c) reprezintă un poligon definit de vectorii x şi y, cu nuanţele de culoare precizate de c. Coordonatele vârfurilor poligonului sunt specificate prin perechile (x,y). Dacă argumentul c este un singur caracter dintre lista de culori 'r','g','b','c','m','y','w','k', sau un vector cu trei componente [r g b], poligonul va fi colorat într-o singură culoare, în cazul în care c este un vector cu aceeaşi dimensiune ca x şi y, elementele acestuia sunt scalate cu funcţia caxis şi apoi utilizate ca indici într-o matrice care specifică culorile vârfurilor. Culorile dintre vârfuri sunt obţinute prin interpolare biliniară a culorilor vârfurilor. Dacă x şi y sunt două matrice de aceeaşi dimensiune, fill(x,y,c) reprezintă câte un poligon pentru fiecare coloană, în acest caz, c este un vector linie pentru poligoane cu o singură culoare si respectiv o matrice pentru poligoane cu culori interpolate. fill(x1,y1,c1,x2,y2,c2,...) reprezentarea grafică a mai multor poligoane

>> >> >> >> >> >>

x=[-1 0 1 0];y=[0 1 0 -1]; x1=[-1 0 1];y1=[0 1 0]; x2=[0 1 0];y2=[0 0 -1]; fill(x,y,'b'); hold on; fill(x1,y1,'r',x2,y2,'y')

(0, 1)

1

0.5

(-1, 0)

(0, 0)

(1, 0)

0

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

-0.5

-1 -1

-0.5

0

(0, -1)

0.5

1

Fig. 8 Reprezentare grafică a poligoanelor

d) Reprezentarea grafică în coordonate polare

Sistemul de coordonate carteziene nu reprezintă singura modalitate de a descrie poziţia punctelor în plan. Pentru a furniza coordonatele pe cele două axe (Ox şi Oy), se poate identifica locaţia punctului în funcţie de distanţa acestuia faţă de origine şi de unghiul pe care dreapta ce uneşte punctul şi originea îl face cu una din axele de coordonate. Acest sistem de reprezentare poartă numele de sistem de coordonate polare (Fig. 9).

 r, 

r



axa polară

Fig. 9 Sistemul de coordonate polare

polar( ) reprezentarea în coordonate polare; sintaxa de apelare poate fi polar(theta,r) sau polar(theta, r, 'linie-tip'). Modul de folosire al opţiunii linie-tip este identic cu cel al funcţiei plot. Exemplu: Să se reprezinte grafic, în coordonate polare, curba dată prin ecuaţia r  2sin  2 ,   0,   . Comenzile MATLAB necesare acestei reprezentări grafice sunt următoarele:

90 120

2 1.5

60

1

150

30

0.5

>> teta = linspace(0,pi); >> r = 2 * sin(2*teta); >> polar(teta,r);

180

0

330

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

210 240

300

270

Fig.10 Reprezentare grafică în coordonate polare

e) Reprezentarea graficelor cu bare

Reprezentarea grafică cu bare se face cu funcţia bar( ), se apelează cu una dintre sintaxele: bar(y) - trasează un grafic de bare cu elementele vectorului y, adică y=yi.

bar(x,y) - trasează un grafic de bare cu elementele vectorului y la locaţiile specificate de vectorul x, adică y=y(x). Valorile lui x trebuie să fie crescătoare şi să nu fie duplicate. bar(x,y,lăţime) sau bar(y,lăţime) are ca argument şi variablila lăţime care permite să se specifice lăţimea barelor. O valoare maim mare ca 1 produce o suprapunere a barelor. Valoarea implicită este 0.8. Exemplu:

14 12

data1 data2

10

>>x=[1 3 5 7 9 11];y=[10 12 14 8 6 4];bar(x,y); hold on; bar(x,y,0.2,'r');

8 6 4 2 0

1

3

5

7

9

11

Fig. 11 Reprezentare grafică cu bare

f) Reprezentarea discretă a datelor

Reprezentarea grafică a semnalelor discrete se face cu funcţia stem( ), sub forma unor linii terminate cu cerculeţ la extremitatea opusă axei; se apelează cu una dintre sintaxele: stem(y) – reprezentarea grafică sub formă discretă (linii perpendiculare cu cerculeţe la capăt), cu elementele vectorului y; stem(x,y) - trasează un grafic din linii terminate cu cerculeţ, cu locaţiile specificate de vectorul x, adică y=y(x). Valorile lui x trebuie să fie crescătoare şi să nu fie duplicate.

Exemplu:

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

stem(x,y, linie_tip) - trasează un grafic din linii de tipul şi culoarea precizată în şirul de caractere linie_tip, aşa cum a fost precizat la funcţia plot.

1400 1200 1000

>> >> >> >>

x=-10:10; y=12*x.^2+5*x+1; stem(x,y,'k--'); hold on; plot(x,y,'r');

800 600 400 200

0 -10

-5

0

5

10

Fig. 12 Reprezentare grafică folosind funcţia stem

Funcţiile plot şi stem pot fi folosite şi pentru reprezentări grafice în spaţiul 3D: plot3(x,y,z) – trasarea în cordonate liniare ox, oy şi oz, în planul tridimensional; stem3(x,y,z) - reprezintă grafic sub formă discretă (util pentru semnale discrete) în planul tridimensional; Exemplu:

35 30 25

t = 0:0.5:10*pi; plot3(t,cos(t),t,'r'); hold on; stem3(t,cos(t),t,'k--'); view([-5 40 10])

20 15 10 -1

5

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

>> >> >> >> >>

0 35

30

25

20

15

10

5

0

0 1

Fig. 13 Reprezentare grafică în spaţiu folosind funcţiile stem3 şi plot3

Instrucţiunea view([X Y Z]) utilizată în exemplul de mai sus, are rolul de a permite observarea suprafeţei reprezentate grafic dintr-un punct de coordonate X, Y şi Z. g) Reprezentarea graficelor în trepte

Graficele în trepte sunt utilizate la reprezentarea diagramelor sistemelor numerice de eşantionare si prelucrare a datelor. Reprezentarea grafică în trepte se face cu funcţia stairs( ), care se apelează cu una dintre sintaxele: stairs(y) - trasează graficul în trepte al elementelor vectorului y. stairs(x,y) - trasează graficul în trepte al elementelor vectorului y la locaţiile specificate în x. Valorile lui x trebuie să fie crescătoare şi să nu fie duplicate. Exemplu:

1400 1200 1000

>> x=-10:10; >> y=12*x.^2+5*x+1; >> stairs(x,y);

800 600 400 200

0 -10

-5

0

5

Fig. 14 Reprezentare grafică în scări

h) Reprezentarea grafică a histogramelor

10

Calculul şi reprezentarea grafică a histogramelor se face cu funcţia hist, se apelează cu una dintre sintaxele: hist(y) - trasează histograma cu 10 segmente a datelor vectorului y; hist(y,nb) - trasează histograma cu nb segmente a datelor vectorului y; hist(y,x) - trasează histograma datelor vectorului y la abscisele specificate în x;

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

[n,x]=hist(y), [n,x]=hist(y,nb), [n,x]=hist(y,x) - returnează vectorii n şi x conţinând frecvenţa de apariţie şi localizarea segmentelor; Exemplu: Să se reprezinte grafic notele obţinute de o grupă de 20 studenţi la examenele susţinute în anul II la disciplina Matematică şi distribuţia acestora. Se consideră următoarele note: 2, 4, 7, 2, 8, 3, 10, 3, 8, 2, 3, 1, 6, 7, 6, 5, 7, 7, 7, 7.

6 4

>> a = [2,4,7,2,8,3,10,3,8,2,3,1,6,7,6,5,7, 7,7,7]; >> subplot(311); >> hist(a) >> subplot(312); >> hist(a,20) >> x=linspace(1,max(size(a))); >> subplot(313); >> hist(a,x)

2 0

0

2

4

6

8

10

0

2

4

6

8

10

0

5

10

15

20

25

6 4 2 0 6 4 2 0

Fig. 15 Reprezentare grafică a historgramelor

Reprezentarea unei histograme în coordonate polare se face cu funcţia rose; se apelează cu una dintre sintaxele: rose(x), rose(x,N), unde x trebuie să fie în intervalul [0, 2  ], iar N este numărul de subintervale în care se împarte intervalul [0, 2  ]. Valoarea implicită pentru N este 20. Exemplu: Să se reprezinte grafic histograma a 50 numere aleatoare, distribuţie normală, în coordonate polare. >> x=randn(50,1); rose(x,10)

90

15

120

60 10

150

30 5

0

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

180

210

330

240

300

270

Fig. 16 Reprezentare historgramei în coordinate polare

i) Reprezentarea grafică a vectorilor

Funcţia compass reprezintă grafic vectori cu originea în originea sistemului de oordonate; se apelează cu una dintre sintaxele: compass(z), compass(x,y) unde z este numărul complex x+iy, iar x şi y sunt numere reale - proiecţia vectorului pe abscisă şi ordonată. Funcţia feather reprezintă grafic vectori cu originea plasată echidistant pe axa Ox; se apelează cu una dintre sintaxele: feather(z), feather(x,y) unde z este numărul complex x+iy, iar x şi y sunt numere reale proiecţia vectorului pe abscisă şi ordonată. Exemplu: Să se reprezinte grafic vectorii: zl = 2-5i, z2 = -2 + i, z3 = 3 + 2i >> z=[2-5*i, -2+i, 3+2*i]; >> compass(z); grid

>> z=[2-5*i, -2+i, 3+2*i]; >> feather(z); grid

sau

sau

>> x=[2 -2 3]; >> y=[-5 1 2];compass(x,y)

>> x=[2 -2 3]; >> y=[-5 1 2];feather(x,y)

90

2

6

120

60

1

4 150

0

30 2

-1 180

0

-2 -3

330

-4

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

210 240

300

270

Fig. 17 Reprezentare grafică a vectorilor folosind funcţia compass

-5

0

1

2

3

4

5

6

Fig. 18 Reprezentare grafică a vectorilor folosind funcţia feather

j) Reprezentări grafice dinamice 2D

Pentru a reprezenta grafic un punct care urmăreşte realizarea grafică („cometă") se foloseşte funcţia comet, se apelează cu una dintre sintaxele: comet(y), comet(x,y), comet(x,y,p) Apelată fără argumente de intrare, funcţia comet lansează demonstraţia cu acelaşi nume. Dacă se apelează cu unul sau cu două argumente de intrare, se realizează o reprezentare grafică a lui y sau y(x), urmărite de un marker („cometă"), la o distantă de 0.1 din lungimea vectorului y. Apelarea cu trei argumente realizează acelaşi lucru, însă distanţa de urmărire este setată la valoarea p din lungimea totală a vectorului y. comet3( ) reprezintă dinamic (în mişcare) traiectoria unui punct, într-o reprezentare grafică 3D. Exemple:

>> t = 0:.01:2*pi; x = cos(2*t).*(cos(t).^2); y = sin(2*t).*(sin(t).^2); comet(x,y);

>> comet3(x,y,t);

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

Fig. 19 Reprezentare grafică dinamică în plan 2D folosind funcţia comet()

Fig. 20 Reprezentare grafică a vectorilor folosind funcţia feather

k) Reprezentarea grafică în spaţiul 3D Fie f(x, y) = x + 2y – 4.

Pentru x = 2, y = 2  z = f(2, 2) = 2 + 4 – 4 = 2 ceea ce conduce la punctul M de coordonate (2, 2, 2), punct reprezentat în figura următoare folosind instrucţiunea plot3( ): >> plot3(2, 2, 2, 'bo'); >> line([2 2],[2 2],[0 2]);

plot 3( x, y, z )

2

1.5

1

0.5

0 3

2.5

3

2.5

2

2

1.5

1.5

1

1

Fig. 21 Reprezentare grafică a punctului M folosind funcţia plot3()

Dacă se doreşte reprezentarea mai multor puncte ale căror coordonate satisfac ecuaţia dată de de o funcţie de două variabile, atunci trebuie generate mai multe perechi (x, y) care să conducă la o grilă de puncte. Acest lucru este posibil în MATLAB folosind funcţia meshgrid. Se consideră aceeaşi funcţie din exemplul anterior în care atât x cât şi y iau valori din intervalul [1, 4]. >> >> >> >>

[x,y] = meshgrid(1:4); z=x+2*y-4; plot3(x, y, z, 'bo'); grid;

8 6 4 2 0 -2 4 4

3

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

3

2

2

1

1

Fig. 22 Reprezentare grafică a unei suite de puncte folosind funcţia plot3() şi meshgrid()

Dacă, mai mult, se doreşte schiţarea suprafeţei a cărei ecuaţie este dată de funcţia de două variabile de mai sus, atunci se poate folosi funcţia mesh. mesh(x,y,z) reprezintă grafic suprafeţe 3D sub forma unei „reţele" („mesh”), colorând doar liniile ce unesc punctele de definiţie a suprafeţei (punctele definite de tripletele (x, y, z)). meshc(x,y,z) reprezintă grafic combinaţia suprafaţă 3D („mesh")/linii de contur (reprezentate sub suprafaţă); >> >> >> >>

[x,y] = meshgrid(1:4); z=x+2*y-4; mesh(x,y,z); grid;

8

Sau

>> meshc(x,y,z); >> grid;

8

6

6

4

4

2

2

0

0

-2 4

-2 4

3

4

3

2

2

1

1

Fig. 23 Reprezentare grafică a suprafeţei ce descrie ecuatia lui z folosind mesh()

3

4

3

2

2

1

1

Fig. 24 Reprezentare grafică a combinţieisuprafeţă 3D („mesh")/linii de contur (reprezentate sub suprafaţă)

Spre deosebire de funcţiile mesh() şi meshc(), funcţiile surf() şi surfc() reprezintă suprafaţa plin coloarată fără şi respectiv cu linii de contur sub suprafaţă. [x,y] = meshgrid(1:4); z=x+2*y-4; surf(x,y,z); grid;

8

Sau >> surfc(x,y,z); >> grid;

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

>> >> >> >>

8

6

6

4

4

2

2

0

0

-2 4 3

4

-2 4

3

2

2

1

1

Fig. 25 Reprezentare grafică a suprafeţei plin colorată ce descrie ecuatia lui z folosind surf()

4

3

2

3

2

1

1

Fig. 26 Reprezentare grafică a combinţieisuprafeţă 3D („mesh") plin colorată/linii de contur (reprezentate sub suprafaţă)

Reprezentarea grafică în spaţiu a poliedrelor se face cu funcţia fill3, care se apelează cu una dintre sintaxele: fill3(x,y,z,’c’) ; fill3(x,y,z,’c’) ; fill(x1,y1,z1,’c1’,x2,y2,z2,’c2’,..) ; fill3(x,y,z,’c’) reprezintă un poliedru 3D, având vârfurile definite de vectorii x, y si z, cu nuanţele de culoare precizate de c. Coordonatele poliedrului sunt specificate prin tripletele (x,y,z). Dacă numai unul din argumentele x, y sau z sunt matrice, celelalte fiind vectori coloană cu acelaşi număr de linii, vectorii coloană se extind la matrice cu aceleaşi dimensiuni, prin adăugarea unor coloane identice. Exemplu:

1

>> x=[1 1 1 1 1]; >> y=[1 1 -1 -1 1]; >> z=[-1 1 1 -1 -1]; >> x1=[0.5 0.5 0.5 0.5 0.5]; >> y1=[0.5 0.5 -0.5 -0.5 0.5]; >> z1=[-0.5 0.5 0.5 -0.5 -0.5]; >> fill3(x,y,z,'r',x1,y1,z1, 'b'); >> grid;

0.5 0 -0.5

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

-1 1

0.5

0

-0.5

1 0.8

0.6

-1

0.4

Fig. 27 Reprezentare grafică a poliedrelor în spaţiul 3D

l) Primitive grafice pentru suprafeţe

Pentru cele mai cunoscute suprafeţe în spaţiu (cilindul, sfera şi elipsoidul) există o serie de primitive. Sintaxa acestor comenzi este următoarea: [x,y ,z]=cylinder(R, N) sintaxa utilizată pentru a genera un cilindru de rază R, cu cercul bazei aproximat din N puncte echidistante; Funcţia returnează matricele cu 2x(N+1) elemente, care specifică vârfurile fiecărei suprafeţe rezultate din aproximarea cercurilor bazelor cu poligoane cu N laturi. Vectorul R are două elemente [R1 R2], care precizează raza obiectului la partea inferioară (R1) şi superioară (R2), prin aceasta fiindposibilă construirea de conuri, trunchiuri de con, piramide, trunchiuri de piramide etc. Valoarea implicită este pentru R=[1 1], iar pentru N=20. Reprezentarea grafică se face cu funcţia surface(x,y,z). Omiterea argumentelor de ieşire determină reprezentarea grafică a obiectului cilindru. Exemplu: Să se reprezinte grafic un con de rază Rc1=0.5 si înălţime Hc=10 şi un trunchi de piramidă cu baza hexagon, cu cercurile circumscrise bazelor de raze Rp1=1 şi Rp2=0.5 şi înălţimea Hp=10. >> >> >> >> >>

x=[1 1 1 1 1]; Rc1=0.5; Rc2=0.5; N=30; cylinder([Rc1,Rc2],N)

>> >> >> >> >> >>

Rc1=0.5; Rc2=0.5; N=30; [xc,yc,zc]=cylinder([Rc1,Rc2],N); zc=zc*Hc; surface(xc,yc,zc);

1

10

0.8

8

0.6

6

0.4

4

0.2

2

0 0.5

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

0 0.5

0.5

0

0

0

-0.5

0.5

0

-0.5

-0.5

-0.5

Fig. 28 Reprezentare grafică a cilindrului fără a ţine cont de înălţime

Fig. 29 Reprezentare grafică a cilindrului pentru o înălţime Hc=10 ;

>> Rc1=0.5; >> Rc2=0; >>[xc,yc,zc]=cylinder([Rc1,Rc2],N ); >> zc=zc*Hc; >> surface(xc,yc,zc); >> view([-37.5 30]) >> grid;

>> >> >> >> >> >>

Rp1=1; Rp2=10; Hp=7.5; N=6; Rp1=1; Rp2=0.5; Hp=10; N=6; [xp,yp,zp]=cylinder([Rp1 Rp2],N); zp=zp*Hp; view([-37.5 30]); surface(xp,yp,zp);grid;

10

10 8

5

6 4

0 1

2 0 0.5

0

0.5

0

1

0

-1

-1

0

-0.5

-0.5

Fig. 31 Reprezentare a trunchiului de piramidă pentru o înălţime Hc=10 , folosind N=6;

Fig. 30 Reprezentare grafică a conului pentru o înălţime Hc=10 ; Dacă Rc2=0.2 se obtine un trunchi de con.

[x,y,z]=sphere(n) - generează coordonatele sferei în trei matrice (n+1)x(n+1), care pot fi reprezentate grafic cu funcţia surf(x,y,z) sau mesh(x,y,z). sphere(n) - reprezintă grafic suprafaţa unei sfere. Implicit n=20. Exemple:

>> [X,Y,Z]=sphere(20); >> mesh(X,Y,Z);grid

>> sphere(20);grid;

1

1

0.5

0.5

0

0

-0.5

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

-0.5 -1 1

1

0

-1 1

0

-1

-1

Fig. 33 Reprezentare grafică directă a sferei

0

1

0

-1

-1

Fig. 34 Reprezentare grafică indirectă a sferei folosind funcţia mesh

3. Cerinţe

1. Să se reprezinte grafic, pe intervalul [–10, 10], cât mai neted posibil, funcţia pătratică: y = x 2 + 3x + 2. 2. Să se reprezinte grafic, pe intervalul [–5, 5], cât mai neted posibil, funcţia: y = 1 / (1+ e x ).

3. Să se reprezinte în aceiaşi figură functiile y = sin 2x şi y = cos x, pe intervalul [0, 4  ]. Reprezentările grafice se vor realiza într-o prima variantă suprapus, iar apoi în subferestre. 4. Să se reprezinte în coordonate semilogaritmice (axa y) funcţia: f(x)= 10 x , pentru x care variază în intervalul [0,10]. Să se obţină apoi şi graficele în coordonate logaritmice loglog şi semilogaritmice pentru axa x. 5. Să se reprezinte grafic poligoanele: xl=[0 3 2 -1]; yl=[-l -l 2 2]; x2=[3 5 2]; y2=[-l 3 2]. 6. Să se reprezinte în coordonate polare funcţia: f(x)=sin(2t)cos(2t), pentru un t  0,2 (pasul se alege 0.01). 7. Să se reprezinte graficul cu bare al datelor conţinute în vectorul y=[1 3 7 6 5 2 3].  2  8. Să se reprezinte grafic funcţia sinus sub formă discretă: f  n   sin   , unde n  0,20 .  10n  9. Să se reprezinte grafic o spirală în 3D folosind pe abscisă funcţia sin(t), pe ordonată funcţia cos(t), iar pe oz valorile lui t, unde t  0,10 .

10. Să se reprezinte graficul în trepte ai funcţiei y=sin(x). 11. Fie un vector x=-3:.3:3; y=randn(10000,1). Să se genereze histograma unui vector cu elementele distribuite normal (Gaussian). 12. Să se reprezinte grafic histograma a 100 numere aleatoare în coordonate polare.

cop adr y ian righ a.b t re url s iba erve sa@ d to ug al.r o

13. Să se reprezinte grafic vectorii: zl = 3+2i, z2 = -1 - i, z3 = -1 + 2i;z4 = 4-2i 14. Fie funcţia y  sin( x) . Să se reprezinte dinamic atât în planul 2D, cât şi în planul 3D.





15. Reprezentaţi grafic în spaţiul 3D funcţia z  x  exp  x 2  y 2 folosind instrucţiunea plot3, meshgrid, mesh, meshc, surf şi surfc.

16. Să se reprezinte grafic un trunchi de piramidă pentru o înălţime de 20 m, razele cercurile circumscrise bazelor să fie de 5 m şi 3 m respectiv. 17. Să se represinte grafic o sferă secţionată în 30 de fâşii, şi apoi una în 1000 folosind instrucţiunea mesh. Referința :

[1] Nicoleta Breaz, Marian Crăciun, Păstorel Gaşpar, Maria Miroiu, Iuliana Paraschiv-Munteanu, MODELAREA MATEMATICĂ PRIN MATLAB, 2011

Related Documents

Laborator3 Mni.pdf
December 2019 4

More Documents from "Stefan Niculcea"