Sunteți pe pagina 1din 17

Copyright © 2022

LABORATOR 3

GRAFICĂ 2D ȘI 3D ÎN MATLAB ȘI
GNU OCTAVE

INFORMATICĂ APLICATĂ
Eliza-Isabela TICĂ, Angela NEAGOE și Sanda-Carmen GEORGESCU

Catedra de Hidraulică, Mașini Hidraulice și Ingineria Mediului, Facultatea de


Energetică, Universitatea POLITEHNICA din București
FUNCȚII GENERALE

Funcţia Descriere și exemple


grid Adaugă graficului un caroiaj.
sau În MATLAB, precum şi în noile versiuni de GNU Octave,
grid on sau caroiajul poate fi afișat cu comanda simplă: grid
grid('on')
xlabel('abscisa') Adaugă pe axa Ox a graficului eticheta (șirul de
caractere) 'abscisa'
ylabel('ordonata') Adaugă pe axa Oy a graficului eticheta (șirul de
caractere) 'ordonata'
zlabel('verticala') În graficele 3D (tridimensionale), adaugă pe axa Oz a
graficului eticheta 'verticala'
title('nume grafic') Adaugă graficului un titlu, inserat ca string în funcţia
title; implicit, titlul este poziţionat în partea de sus a
graficului. Cuvintele default, factory și remove sunt
cuvinte rezervate care nu trebuie să apară în titlu ca
un string normal. Pentru a le include în titlu, se va utiliza
sintaxa '\default', '\factory' respectiv '\remove'
legend('c1','c2') Adaugă graficului o legendă.
De exemplu, dacă sunt reprezentate două curbe diferite
c1 și c2, semnificaţia primei curbe trasate se trece ca
string 'c1' pe prima poziţie din funcţia legend, iar
semnificaţia celei de-a doua curbe 'c2' se trece pe a doua
poziție. Implicit, legenda este poziţionată în colțul de sus-
dreapta al graficului.
Opțiunea 'location' permite poziționarea legendei
legend('c1','c2', în locul specificat de opțiunea 'pozitia', care poate fi:
'location', 'pozitia') 'north', 'south', 'east', 'west', 'northeast' (im-
plicită), 'northwest', 'southeast', 'southwest',
'outside', 'northoutside', 'southoutside', ...,
'northeastoutside'. Pentru detalii privind poziţionarea
legendei, tastați help legend
axis Permite scalarea automată a axelor şi afişează limitele
axelor.
axis('auto') Permite scalarea automată a axelor.
axis([xs, xd, yj, ys]) Trasează graficul cu axa Ox de la valoarea numerică xs
(limita din stânga), până la valoarea numerică xd
(limita din dreapta), respectiv cu axa Oy de la valoarea
numerică yj (limita de jos), până la ys (limita de sus).
axis equal scalează axele cu unitatea pe axa Ox egală
axis equal sau cu unitatea de pe axa Oy.
axis('equal')

Laboratorul 3 Informatică Aplicată 2


axis square sau axis square scalează axele astfel încât graficul să se
axis('square') încadreze într-un pătrat.
axis off sau axis off inhibă afișarea axelor graficului.
axis('off') Exemplul 1:
 axis([0 100 -5 10]) % scalează graficul de la 0 la
100 pe axa Ox şi de la -5 la 10 pe Oy.
hold on Menține activă fereastra graficului 2D curent și permite
sau suprapunerea unei/unor alte curbe, peste curba curentă.
hold('on') Funcția hold nu poate fi utilizată în grafica 3D.
Stopează suprapunerea unei noi curbe, peste curbele deja
hold off sau trasate.
hold('off')
clf Şterge graficul (curbe, axe, legendă etc) și afișează
fereastra grafică goală.
[x,y] = meshgrid(x0,y0) Într-un sistem de coordonate carteziene (xOyz), comanda
meshgrid este folosită în grafica 3D pentru generarea rețelei
de perechi de coordonate {x,y}, necesare trasării supra-feţei
tridimensionale z = z(x,y).
Dacă y0 este omis, se consideră că y0 = x0.
[x,y] = meshgrid(x0) Comanda meshgrid generează 2 matrice x și y, care definesc
o reţea dreptunghiulară cu n linii și m coloane în planul xOy,
pe baza vectorului x0 (cu m elemente x0(j); j = 1÷m) de pe axa
Ox şi a vectorului y0 (cu n elemente y0(i); i = 1÷n) de pe axa
Oy.
Dacă n = m, reţeaua este pătratică.
În fiecare punct definit de linia i şi coloana j din reţeaua de
dimensiuni nm, unde i = 1÷n și j = 1÷m, coordonatele sunt
x(i,j) și y(i,j).
Exemplu:
 x0 = [1 2]; y0 = [3 4 5];
unde i = 1÷3 (n = 3) și j = 1÷2 (m = 2)
 [x,y] = meshgrid(x0,y0)
returnează următoarele matrice 32:
1 2 3 3
1 2  
x=   y = 4 4 
1 2 5 5
De exemplu, în reţeaua dreptunghiulară de dimensiuni 32,
elementul {x(i,j),y(i,j)} aflat, pe linia i = 2 și coloana j = 1, are
coordonatele {x, y} = {1, 4}.

Laboratorul 3 Informatică Aplicată 3


 Opţiunile (proprietăţile) ce se pot apela în cadrul funcţiilor pentru grafică sunt prezentate în
tabelul următor:

Sintaxa Descriere și exemple


'cod stil linie' Setează stilul liniei (curbei) trasate, conform codului aferent
acestei opțiuni, inserat ca string în 'cod stil linie', anume:
'-' pentru linie continuă (este stilul implicit şi nu este nevoie
să fie explicitat);
':' pentru linie punctată trasată cu puncte fine;
'.' pentru linie punctată trasată cu puncte mai mari în GNU
Octave; în MATLAB, acesta e stil de marker;
'-.' pentru linie punct;
'--' pentru linie întreruptă.
Stilurile pentru linie punct și linie întreruptă nu au fost
implementate în versiunile vechi de GNU Octave.
'linewidth', val Setează grosimea liniei (curbei) trasate, la valoa-rea
specificată în val (număr natural).
'simbol marker' Setează tipul de marker specificat, inserat ca string în
'simbol marker'. Se poate utiliza:
'*' pentru asterisc;
'o' (litera o) pentru cercuri deschise;
'+' pentru plusuri;
'x' (litera x) pentru x-uri;
'^' pentru triunghi cu vârful în sus;
'v' (litera v) pentru triunghi cu vârful în jos;
'<' pentru triunghi cu vârful către stânga;
'>' pentru triunghi cu vârful către dreapta;
's' pentru pătrate (s de la square);
'd' pentru romburi (d de la diamond);
'p' pentru pentagon;
'h' pentru hexagon;
'.' pentru punct (tip de marker doar în MATLAB).
Doar primele 4 tipuri de marker enumerate mai sus au fost
implementate în versiunile vechi de Octave.
'markersize', val Setează mărimea (dimensiunea) marker-ului la valoarea
numerică val specificată (număr natural).
'culoarea' Colorează linia (curba) cu 'culoarea' specificată ca string,
conform codului de culori atașat denumirii culorii în
engleză (pot fi apelate atât prima literă a cuvântului, cât și
întregul cuvânt):
'r' sau 'red' pentru roşu;
'g' sau 'green' pentru verde (verde fluorescent);
'b' sau 'blue' pentru albastru;
'm' sau 'magenta' pentru ciclamen;
'c' sau 'cyan' pentru turcoaz;
'w' sau 'white' pentru alb;
'y' sau 'yellow' pentru galben;

Laboratorul 3 Informatică Aplicată 4


'k' sau 'black' pentru negru.
În versiunile vechi de GNU Octave, ultimele două culori ('y' și
'k') nu au fost implementate.
'cifra culoare' În Octave, pe lângă codul atașat denumirii culorii în engleză,
culorile pot fi definite și prin cifre de la 1 la 6, atașate unei
anumite culori, cifre inserate în string-ul 'cifra culoare', după
cum urmează:
'1' pentru roşu (red);
'2' pentru verde fluorescent (green);
'3' pentru albastru (blue);
'4' pentru ciclamen (magenta);
'5' pentru turcoaz (cyan);
'6' pentru maron (brown).
Setarea culorii prin cifre de la 1 la 6 este posibilă numai în GNU
Octave, iar cifra 6 nu mai este recunoscută în versiunile noi de
GNU Octave, deși este menționată în help plot.
Se recomandă utilizarea literelor atașate culorilor ('r', 'g', 'b'
etc), fiind implementate atât în Octave, cât și în MATLAB,
respectiv fiind ușor de reținut, ca primă literă a culorii în
engleză (cu excepția 'k' pentru black).
Pentru setarea culorii liniei/curbei, poate fi utilizat și codul
RGB (red-green-blue), cu ajutorul unui vector linie [r g b], ale
[r g b] cărui 3 elemente sunt valorile numerice ale intensităților
culorilor de bază red, green și blue, valori cuprinse între 0 și 1.
Fiecare culoare de bază din codul RGB are o valoare de bază
cuprinsă între 0 și 255. Intensitatea fiecărei culori de
bază se obține ca raport între valoarea de bază și valoarea
maximă: 255.
(legenda) Este un alt mod de a scrie legenda: se apelează opțiunea
';nume;' ';nume;' în interiorul funcției de grafică (de exemplu, în funcția
plot din paragraful 4.2), pentru a atribui curbei trasate
semnificația nume inserată ca string (dacă este utilizată
această variantă, nu mai este necesară apelarea funcției
legend).

 Pentru scrierea indicilor, exponenților și simbolurilor (de exemplu, litere grecești) în cadrul unui
string, se va utiliza sintaxa din editorul de texte TeX, sau din editorul de texte LaTeX, astfel:

Semnificația Exemple de utilizare ca string


indice Se utilizează simbolul underscore _ înaintea literei ce va apare ca
indice:
F5 se scrie 'F_5'
Fmax se scrie 'F_m_a_x'

exponent Se utilizează simbolul (operatorul) ^ înaintea literei ce va apare ca


exponent:
x 3 se scrie 'x^3'

Laboratorul 3 Informatică Aplicată 5


x 56 se scrie 'x^5^6'
indice și C93 se scrie 'C_9^3' sau 'C^3_9'
exponent
4
Fmin se scrie 'F_m_i_n^4' sau 'F^4_m_i_n'

litere mici Se utilizează operatorul backslash \ înaintea literei grecești, scrise în


grecești extenso în engleză:
α se scrie '\alpha'
β se scrie '\beta'
δ se scrie '\delta'
ε se scrie '\espilon' și așa mai departe;
α 2 se scrie '\alpha^2'.
Lista completă a simbolurilor din TeX sau LaTeX poate fi accesată la
adresa web [19]: https://www.caam.rice.edu/
~heinken/latex/symbols.pdf
majuscule Se utilizează operatorul backslash \ înaintea literei grecești, scrise în
grecești extenso în engleză, cu prima literă majusculă:
Δ se scrie '\Delta'
Γ se scrie '\Gamma'
Σ se scrie '\Sigma' și așa mai departe [19].
alte Se utilizează operatorul backslash \ înaintea simbolului, scris în
simboluri extenso ca mai jos:
matematice  se scrie '\infty'
 se scrie '\nabla'
 se scrie '\partial' și așa mai departe.
Lista completă a simbolurilor din TeX sau LaTeX poate fi accesată la
adresa web [19]: https://www.caam.rice.edu/ ~heinken/
latex/symbols.pdf
litere italice Se utilizează \it înaintea literei sau textului care se dorește a fi scris cu
caractere italice:
Fmax se scrie '\it F_m_a_x'
litera  scrisă italic se obține cu '\it \alpha'

Laboratorul 3 Informatică Aplicată 6


REPREZENTAREA GRAFICĂ 2D (PLANĂ) A
FUNCŢIILOR

Funcția Descriere, exemple


plot(x, y) Trasează graficul y = y(x), unde x și y sunt vectori cu același
număr de elemente (vezi help plot).
plot(x, y, 'opțiuni') Numeroasele opțiuni (proprietăți) ce pot fi utilizate au fost
explicitate în paragraful 4.1.
Dacă nu se specifică culoarea în comanda plot, se va utiliza
automat ordinea culorilor din proprietatea ColorOrder

Laboratorul 3 Informatică Aplicată 7


predefinită. Dacă nu se specifică tipul liniei, se va trasa implicit
o linie continuă. Dacă nu se specifică tipul marker-ului, nu se
va insera niciun marker.
Exemplu:
 x = 0:0.1:10; y1 = x.^3.*sin(x);
 y2 = x.^3.*cos(x);
 plot(x,y1, 'r', 'linewidth', 2), grid
 hold on, plot(x,y2, '*b', 'markersize', 5)
 legend('y_1 = x^3 sin(x)','y_2 = x^3 cos(x)',
'location','northwest')
 xlabel('x'), ylabel('y_1 si y_2')
 title('Exemplu de grafic 2D')
rezultă graficul din figura 1:
Exemplu de grafic 2D
600
y 1 = x 3 sin(x)
400
y 2 = x 3 cos(x)

200

0
2
y si y

-200
1

-400

-600

-800

-1000
0 1 2 3 4 5 6 7 8 9 10
x
Fig.1. Graficul 2D al vectorilor x și y
subplot(n,m,poziția) Funcția subplot permite desenarea unor grafice dispuse într-o
matrice nm (cu n linii și m coloane), fiecare grafic fiind trasat
în poziția specificată (cu numerotarea pozițiilor pornind din
colțul de stânga-sus: de la stânga la dreapta și de sus în jos).
Exemple de dispunere a graficelor: pentru a obține grafice
dispuse ca în matricele A și B care urmează, în cadrul funcției
subplot se vor tasta următoarele combinații (n,m,poziția):
1 1 1 1

0.8 0.9
0.5 0.5
0.6
0.8
0 0 0.4
0 0.5 1 0 0.5 1 0.7
0.2
1 1
0.6
0
0 0.5 1
0.5 0.5 0.5

1 0.4
0 0
0 0.5 1 0 0.5 1 0.8
0.3
1 1
0.6
0.2
0.4
0.5 0.5
0.2 0.1

A= și B =
0 0 0 0
0 0.5 1 0 0.5 1 0 0.5 1 0 0.5 1

(3,2,1) (3,2,2)
(2,2,1)
(3,2,3) (3,2,4) și (1,2,2)
(2,2,3)
(3,2,5) (3,2,6)

Laboratorul 3 Informatică Aplicată 8


Exemplu:
 x = 0:0.1:20; y1 = sin(x); y2 = cos(x);
 y3 = x.^3.*sin(x); y4 = sin(x)./(x+eps);
 subplot(2,2,1), plot(x, y1, 'r', 'linewidth', 2), grid,
title('y_1(x)')
 subplot(2,2,2), plot(x, y2, 'b', 'linewidth', 2), grid,
title('y_2(x)')
 subplot(2,2,3), plot(x, y3, 'k', 'linewidth', 2), grid,
title('y_3(x)')
 subplot(2,2,4), plot(x, y4, 'm', 'linewidth', 2), grid,
title('y_4(x)')
returnează graficul matrice 22 prezentat în figura 2:

Fig.2. Reprezentarea matricei grafice dată de funcțiile y1, y2, y3 și


y4

Laboratorul 3 Informatică Aplicată 9


GRAFICĂ 3D (TRIDIMENSIONALĂ) ÎN MATLAB ȘI
GNU OCTAVE

 În tabelul următor sunt prezentate principalele funcții specifice graficii 3D (tridimensionale).

Funcția Descriere și exemple


sombrero(n) Funcția built-in sombrero este implementată numai în GNU Octave și
trasează o suprafață 3D asemănătoare cu o pălărie mexicană. Această
suprafață este descrisă de urmă-toarea ecuație:

Laboratorul 3 Informatică Aplicată 10


sin

(x
+ y 2 
2
)
 , cu x  − 10;10 și y = x ,
z=
(
x +y
2 2
)
considerând o discretizare cu câte n puncte sau (n−1) subintervale pe fiecare
axă din planul xOy.
Exemplu:
 sombrero(51)
returnează graficul din figura 3:

Fig.3. Trasarea suprafeței 3D aferente funcției sombrero


colormap(p)
sau Funcția colormap, apelabilă cu oricare dintre cele 3 variante, are ca efect
colormap p setarea paletei de culori 'p'.
sau Codul comun de culori presetate pentru paleta 'p' atât în GNU Octave, cât
colormap('p') și în MATLAB este: 'jet', 'hsv', 'hot', 'spring', 'summer', 'autumn',
'winter', cool', 'copper', 'gray', 'bone', 'pink' și 'lines' − vezi help
colormap.
În MATLAB, paleta de culori setată implicit pentru trasarea inițială a unui
grafic 3D corespunde variantei 'jet'.
Paleta coloristică a suprafeței din figura 4.16 se numește 'viridis' și este
setată în mod implicit (by default) în GNU Octave 4.x.x (în MATLAB nu este
implementată paleta de culori 'viridis'). GNU Octave conține 21 de variante
ale paletei de culori, dintre care 13 se regăsesc și în MATLAB. Pentru a
asigura compatibilitatea limbajelor, se recomandă setarea unei palete
comune de culori.
surf(x, y, z) Trasează o suprafață 3D, z = z (x, y ) , cu fațete colorate. Variabilele x, y și
z sunt matrice de aceleași dimensiuni. Dacă inițial x0 și y0 sunt vectori,
aceștia se transformă în x matrice și y matrice cu ajutorul funcției meshgrid.
Aplicarea comenzii shading interp are ca efect interpolarea culorilor din
shading interp fațetele suprafeței.
Exemplu: Funcția surf se va exemplifica pentru ecuația cu care se trasează
pălăria mexicană sombrero:
(
sin x 2 + y 2 
 ,
)
z=
(x 2
+ y2 )
definită pentru x  − 10;10 și y = x . Se discretizează domeniul cu câte n
puncte (fie n = 51) pe fiecare axă din planul xOy.
 x0 = linspace(-10, 10, 51);
 % sau x0 = -10:20/50:10;

Laboratorul 3 Informatică Aplicată 11


 y0 = x0; [x, y] = meshgrid(x0, y0);
 r = sqrt(x.^2+y.^2); z = sin(r)./(r+eps);
s-a adăugat constanta eps la numitor pentru a evita împărțirea cu 0 când x
=y=0
 surf(x, y, z), xlabel('x'), ylabel('y'), zlabel('z')
 title('Sombrero'), colormap jet
returnează graficul din partea stângă a figurii 4
 shading interp
returnează graficul din dreapta figurii 4:

Fig.4. Trasarea suprafeței 3D a funcției z = z(x,y) sombrero

mesh(x, y, z) Trasează o suprafață 3D, z = z (x, y ) , formată dintr-o rețea 3D (mesh 3D)
de linii colorate.
Exemplu: Se va trasa aceeași suprafață ca cea din Exemplul de mai sus,
deci valorile x, y, z vor fi identice:
 mesh(x, y, z)
 xlabel('x'), ylabel('y'), zlabel('z')
 title('Sombrero'), colormap jet
returnează graficul din figura 5:

Fig.5. Trasarea suprafeței tip mesh 3D a funcției z = z(x,y)

peaks(n) Funcția built-in peaks (implementată atât în MATLAB [20], cât și în GNU
Octave) permite trasarea unei suprafețe 3D, z = z (x, y ) , obținute translatând și
scalând distribuții Gaussiene. Această suprafață este definită prin ecuația:
( )
z = 2(1 − x )2 exp − x 2 − (y + 1)2 −
x
5

( )
− 10 − x 3 − y 5 exp − x 2 − y 2 −

(
− exp − (x + 1)2 − y 2
1
3
)

Laboratorul 3 Informatică Aplicată 12


unde x  − 3; 3 și y = x , considerând o discretizare cu câte n puncte sau (n-
1) subintervale pe fiecare axă din planul xOy.
Exemplu:
 peaks(51), colormap jet
returnează graficul din figura 6:

Fig.6. Trasarea suprafeței 3D a funcției z = z(x,y) peaks


Suprafața din figura 4.19. se obține și cu comenzile:
 x0 = linspace(-3, 3, 51); % sau x0 = -3:6/50:3;
 y0 = x0; [x, y] = meshgrid(x0, y0);
 z = 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);
 surf(x, y, z), colormap jet
 xlabel('x'), ylabel('y'), zlabel('z'), title('Peaks')
Prin aplicarea comenzii:
 shading interp %rezultă graficul din stânga figurii 7
 colormap cool % rezultă graficul din dreapta fig. 7:

Fig.7. Personalizarea suprafeței funcției z = z(x,y) peaks

surfc(x, y, z) Trasează o suprafață 3D, z = z (x, y ) , cu fațete colorate și cu curbe de nivel


proiectate în planul xOy, obținute la intersecția suprafeței 3D cu plane paralele
cu planul xOy.
Exemplu: Aplicarea funcției built-in surfc pentru suprafața denumită
peaks.
 surfc(x, y, z), xlabel('x'), ylabel('y'), zlabel('z')
 title('Peaks cu linii de contur')
 colormap winter % returnează graficul din fig. 8

Laboratorul 3 Informatică Aplicată 13


Fig.8. Trasarea suprafeței 3D a funcției z = z(x,y) peaks cu curbe de nivel în planul
xOy (cu comanda surfc)

meshc(x,y,z) Trasează o suprafață 3D, z = z (x, y ) , formată dintr-o rețea 3D de linii


colorate, cu curbe de nivel (linii de contur) proiectate în planul xOy,
obținute la intersecția suprafeței 3D cu plane paralele cu planul xOy.
Exemplu: Aplicarea funcției built-in meshc pentru suprafața denumită
peaks
 meshc(x, y, z), xlabel('x'), ylabel('y'), zlabel('z')
 title('Peaks cu linii de contur'), colormap copper
returnează graficul din figura 9:

Fig.9. Trasarea suprafeței tip mesh 3D a funcției z = z(x,y) peaks cu curbe de nivel
în planul xOy (cu comanda meshc)

plot3(x, y,z) Trasează o curba tridimensională, unde x, y și z sunt vectori cu acceași


lungime.
Exemplu (se va trasa o spirală 3D):
 t = 0:pi/50:10*pi;
 plot3(t.*sin(t), t.*cos(t), t, 'linewidth',3)
 grid, axis square
 xlabel('t sin(t)'), ylabel('t cos(t)'), zlabel('t')
 title('Spirala 3D') % rezultă graficul din fig. 10

Laboratorul 3 Informatică Aplicată 14


Fig.10. Reprezentarea grafică a unei spirale 3D

contour(z) Trasează curbe de nivel (izolinii sau linii de egal nivel) de valori z = const.
sau în planul xOy, aferente intersecției unei suprafețe 3D, z = z (x, y ) , cu plane z =
contour(x,y,z) const.
Funcțiile contour(z) și contour(x, y, z) sunt echivalente și trasează implicit
10 curbe de nivel.
contour(z,n) Funcția contour(z,n) permite trasarea unui număr n specificat de curbe de
nivel.
Exemplu: Aplicarea funcției built-in contour pentru suprafața denumită
peaks.
 contour(z), colormap winter
rezultă graficul din stânga figurii 11
 contour(z, 20), colormap winter
rezultă graficul din dreapta figurii 11:

Fig.11. Curbe de nivel aferente suprafaței 3D peaks


Pentru a obține imaginea din stânga figurii 11, se pot apela și comenzile:
 contour(peaks(51)), colormap winter
clabel(C,h) Comanda clabel permite afișarea etichetelor (valorilor z = const.) pe
fiecare curbă de nivel (izolinie).
Exemplu: Aplicarea funcției built-in clabel pentru suprafața denumită
peaks.
 [C,h] = contour(peaks(51));
 colormap hsv, clabel(C,h) % returnează fig. 12

Fig.12. Afișarea valorilor z = const. pe curbele de nivel aferente suprafaței 3D


peaks

Laboratorul 3 Informatică Aplicată 15


surfl(x, y, z) Trasează o suprafață 3D, z = z (x, y ) , ca și funcția surf, doar că în cazul
surfl, suprafața este iluminată (vezi help surfl). Poziția sursei de lumină
este setată implicit la 45 în sens trigonometric față de vederea curentă.
Un exemplu de aplicare a funcției surfl se găsește în paragraful 4.4 care
urmează, în problema R5.
Dacă se dorește modificarea poziției sursei de lumină, atunci noua poziție
surfl(x, y, z, loc) poate fi setată în vectorul loc sub forma unui vector linie cu 2 componente
[azimut, elevație], ca la comanda view, sau sub forma unui vector linie cu 3
componente [x0, y0, z0], care definește un punct în spațiu.

PROBLEME PROPUSE

Laboratorul 3 Informatică Aplicată 16


INFORMATICĂ
APLICATĂ
MANUAL DE GNU
OCTAVE 2019
https://curs.upb.ro/2022/course/view.php?id=973&notifyeditingon=1

Laboratorul 3 Informatică Aplicată 17

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