Documente Academic
Documente Profesional
Documente Cultură
Lucrare de laborator 14
Scripturi. Funcții. Reprezentări grafice
Scopul lucrării
Scopul lucrării de laborator este familiarizarea studenților cu noțiunile referitoare la rularea scripturilor, la folosirea
funcțiilor și la reprezentarea grafică a rezultatelor obținute.
Această construcție formată din semnul % şi un set de caractere, poate include şi operatori suplimentari care permit
configurarea modului de scriere a datelor, aceştia fiind ilustraţi în figura următoare.
L14:MATLAB
Precizia este un număr care se introduce după semnul punct (.) şi reprezintă:
- pentru %f, %e şi %E numărul de zecimale care vor apărea în dreapta punctului;
- pentru %g şi %G numărul de cifre semnificative care să fie afişate.
Şi pentru acesta se poate folosi semnul (*) urmând ca valoarea să apară separat în lista de parametri.
În câmpul de formatare, formatSpec se poate introduce şi text, care va fi tratat ca un şir de caractere (string) care va fi
reprodus exact în aceeaşi formă şi în plus se definesc o listă de caractere speciale după cum urmează:
- ’’ – introduce caracterul ghilimele;
- %% - introduce caracterul %;
- \\ - introduce caracterul \ (backslash);
- \a – generează o alarmă;
- \b – şterge ultimul caracter;
- \f – introduce un caracter gol (spaţiu);
- \n – trece pe o linie nouă;
- \r – introduce caracterul Enter (carriage return);
- \t – introduce un tab orizontal;
- \v – introduce un tab vertical;
-\xN – introduce numărul N în format hexazecimal (baza 16);
-\N – introduce numărul N în format octal (baza 8).
Verificați pe calculatorul dvs. următorul exemplu: Programul generează un vector de valori pentru care determină
valorile unor funcţii (sinus şi cosinus) şi le salvează într-un fişier. Apoi valorile sunt citite, salvate într-o variabilă nouă şi
afişate.
clear, clc
L14:MATLAB
x=-2*pi:pi/4:2*pi;
A=[x cos(x) sin(x)];
fileID=fopen('sin_cos.txt','w');
fprintf(fileID,'Tabel cu valori pentru \n x sin(x) cos(x)\n');
fprintf(fileID,'%6.2f %10.4f %10.6f\n',A);
fclose(fileID);
%%citirea valorilor
fileID=fopen('sin_cos.txt','r');
frewind(fileID);
titlu_linie1=fgets(fileID);
titlu_linie2=fgets(fileID);
AA=fscanf(fileID,'%6f %10f %10f');
AA=AA';
fclose(fileID);
disp(titlu_linie2);
fprintf('%6.2f %10.4f %10.6f\n',AA);
Trasarea graficelor
Funcţia plot
Plot(x) - Funcţia va reprezenta grafic valorile din variabila X, pe axa ordonatelor, cea verticală fiind poziţionate valorile
lui X iar pe abscisă, pe axa orizontală va fi reprezentat indexul valorilor.
1. Să se reprezinte grafic funcţiile sin(x) şi cos(x), pe câte un grafic independent, unde x ia valori de la 0 la 2 ∙ 𝜋 cu pas
de 0.05.
Rezolvare
>> x=0:0.05:2*pi
x =
Columns 1 through 9
0 0.0500
…
>> y=sin(x);
>> y=plot(x,y)
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
>> y=cos(x);
>> plot(x,y)
L14:MATLAB
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
2. Să se reprezinte grafic funcţiile sin(x), sin(2x) şi sin (3x) , pe un singur grafic unde x ia 100 de valori de la 0 la 2 ∙ 𝜋.
Rezolvare
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
>> plot(x,sin(x),'r-')
>> hold on
>> plot(x,sin(2*x),'g--')
>> plot(x,sin(3*x),'b-.')
>> legend('sin(x)','sin(2x)','sin(3x)')
>>
1
sin(x)
0.8 sin(2x)
sin(3x)
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
L14:MATLAB
. Exerciţiu. Să se reprezinte grafic funcţiile cos(2), cos(2x) şi cos(3x) pe acelaşi grafic, unde x ia 150 de valori în intervalul
−2 ∙ 𝜋, 2 ∙ 𝜋.
Pentru rezolvare folosiţi ALTE moduri de reprezentare ale curbelor pe care le puteţi găsi în documentaţia MATLAB
pentru comanda plot.
5. Să se ruleze următorul script pentru reprezentarea grafică a unor funcții. Observați utilizarea funcției subplot().
figure('Name','Exemple de plotari');
subplot(2,2,1);
x=-2*pi:pi/3:2*pi;
plot(x,sin(x));
title('Nr mic de puncte');
x=-2*pi:pi/20:2*pi;
subplot(2,2,2);
plot(x,cos(x),x,sin(x));
title('Nr mare de puncte si doua functii');
a=5;
b=[1 2 3 4 5];
subplot(2,2,3);
plot(a,b,'*','MarkerSize',10)
title('Plot vector vs scalar')
X=magic(4);
Y=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]';
subplot(2,2,4);
plot(X,Y)
title('Plotarea unor matrice 4x4')
6. Revenind la primul grafic să se modifice valorile axelor încât să ofere o imagine mai sugestivă a valorii funcţiei sin(x)
şi sin (2x).
!! Atenţie unde puneţi „;” şi unde nu.
>> x=-2*pi:.1:2*pi;
>>y1=sin(x);
>>y2=sin(2*x);
>>plot(x,y1,'r-',x,y2,'b-.')
>>set(gca,'XTick',-pi:pi/2:pi)
>>set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})
>>
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-pi -pi/2 0 pi/2 pi
Dacă dorim să vedem ce se întâmplă doar în zona [–pi, pi], vom defini limitele axelor de reprezentare:
>> axis(-pi,pi,-1,1)
??? Error using ==> axis>LocSetLimits at 234
Vector must have 4, 6, or 8 elements.
!!!! Atenţie, chiar dacă funcţia axis() are paranteze rotunde, pentru a defini limitele pe cele două axe, va trebui să folosim
şi parantezele [] care reprezintă vectorul de valori limită ale axelor.
>> axis([-pi,pi,-1,1])
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-pi -pi/2 0 pi/2 pi
2 x + 1, daca x −5 x+7
, daca x 4
x − 5, daca − 5 x −2 x−3
2x + 3
f ( x) = x + 1 f ( x) = , daca 4 x 10
x( x − 3) , daca − 2 x 8 x −8
x + 1, daca x 10
x + 6, daca x 8
Reprezentarea discretă a datelor
Exerciţiu. Reprezentaţi funcţia cos(x) pentru 𝑥 ∈ [−𝜋, 𝜋], utilizând reprezentarea discretă.
−𝜋 𝜋
Reprezentaţi, pe acelaşi grafic, funcţia tan(x) şi 2 ∙ tan(𝑥) pentru 𝑥 ∈ [ , ].
2 2
Exerciţii
Să se realizeze un program care să rezolve o ecuaţie de gradul II, la care se vor citi coeficienţii ecuaţiei de forma 𝑓 =
𝑎 ∙ 𝑥 2 + 𝑏 ∙ 𝑥 + 𝑐, unde 𝑎 ≠ 0. Se va reprezenta grafic funcţia, iar dacă aceasta are rădăcini acestea se vor marca, cu
culoare roşie, pe grafic.
Să se reprezinte grafic funcţiile cos(x), cos(2x), sin(x), şi sin(2x) pe un singur grafic unde x ia 100 de valori de la −2 ∙ 𝜋
la 2 ∙ 𝜋. Se vor folosi culori diferite pentru fiecare reprezentare, şi se va face legenda graficului.
Pe un nou grafic să se reprezinte aceleaşi curbe doar in domeniul −𝜋 , 𝜋.
Să se reprezinte grafic funcţiile sin(x), sin(2x) şi 2·sin(x) , pe un singur grafic unde x ia 150 de valori de la 0 la 2 ∙ 𝜋. Să se
utilizeze culori şi tipuri diferite de linii pentru fiecare curbă şi să se reprezinte şi legenda graficului.
Să se citească un şir de la tastatură. Să se verifice dacă şirul este simetric şi anume dacă primul element este egal cu
ultimul, al doilea cu penultimul, etc. În cazul în care nu există egalitate între cele două elemente comparate să se
schimbe valorile elementelor respective în 0 şi să se afişeze noul şir.
Exemplu:
Se dă funcţia:
2 x + 1, daca x −3
f(x) = 5 − x , daca 0 x 8
x 2 + 4x − 5, daca x 8
Să se determine valoarea funcţiei pentru un interval de valori [a,b] împărţit în q subintervale. Se va verifica şi dacă
capătul din stânga al intervalului este mai mare decât cel din dreapta, caz în care se inversează cele două valori. Să se
reprezinte grafic funcţia, şi să se noteze axele sistemului de coordonate.
Se citesc de la tastatură două matrice pătratice Anxn şi Bnxn. Să se inverseze elementele de pe diagonala secundară între
cele două matrice.
Se citeşte o matrice. Să se determine elementul maxim, elementul minim, şi, dacă matricea este pătratică să se calculeze
media aritmetică a elementelor de pe diagonala principală.