Sunteți pe pagina 1din 21

UNIVERSITATEA „AUREL VLAICU” ARAD

FACULTATEA DE ȘTIINȚE EXACTE


- ADVANCED STUDIES
IN APPLIED COMPUTER SCIENCE -
MASTER AN 1

COLOCVIU
-Cursul “Computational Mathematics”-

„Metode computaționale pentru


reprezentarea grafică a curbelor în
plan și spațiu”

Masterand,
Coordonator,
Gabriel MOȘ
Prof. Univ. Dr. Ghiocel MOȚ

Arad, 2019
СUPRINS

Pаginа
1. Intrоduсеrе ……………………………………………………………….. 3
2. Considerente teoretice ................................................................... 3
3. Reprezentarea grafică a curbelor în plan ...................................... 4
3.1. Reprezentarea în plan prin ecuaţii parametrice …………… 4
3.2. Reprezentarea în plan prin ecuaţii polare........................... 5
3.3. Reprezentarea în plan prin ecuaţii implicite........................ 7

4. Reprezentarea grafică a curbelor în spațiu .................................. 9


4.1. Reprezentarea în spațiu prin ecuații parametrice ................ 9
4.2. Reprezentarea grafică a curbelor în spațiu implicit........... 11

5. Reprezentarea grafică a spiralelor .................................................... 13


6. Reprezentarea grafică a conicelor .................................................... 17
6.1. Crearea unui con .................................................................... 19
6.2. Crearea unui trunchi de piramidă ........................................... 20

7. Вibliоgrаfiе ………………………………………………………………..... 21
1. Introducere în software-ul matematic MATLAB

MATLAB (de la Matrix Laboratory) este un mediu de dezvoltare pentru calcul


numeric și analiză statistică ce conține limbajul de programare cu același nume,
creat de MathWorks. MATLAB permite manipularea matricilor, vizualizarea
funcțiilor, implementarea algoritmilor, crearea de interfețe și poate interacționa cu
alte aplicații. Chiar dacă e specializat în calcul numeric, există pachete care îi
permit să interacționeze cu motoarele de calcul simbolic gen Maple. Un pachet
adițional, Simulink, oferă posibilitatea de a realiza simulări ale sistemelor dinamice
și îmbarcate utilizând modele matematice. MATLAB e utilizat pe larg in industrie, în
universitați și e disponibil cross-platform, sub diverse sisteme de operare: Windows,
GNU/Linux, UNIX și Mac OS.

2. Considerații teoretice

Traim intr-o lume cu trei dimensiuni si o mare parte din informatiile noastre,
sunt cel mai bine evidentiate, cu ajutorul tehnicilor de interpretare 3-D. Din fericire,
MATLAB-ul ofera un pachet de functii, de reprezentare grafica, in sistem de
coordonate 3-D, care permit vizualizarea rapida a datelor introduse.
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).
Această lucrare 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.
3. Reprezentarea grafică a curbelor în plan

Această secţiune pune accent pe reprezentarea grafică a curbelor plane date


prin ecuaţii parametrice. Nu există diferenţe majore din punctul de vedere al
utilizării comenzilor şi funcţiilor MATLAB. Abordarea se bazează, ca de obicei, pe
identificarea coordonatelor punctelor din plan care satisfac respectivele ecuaţii
parametrice. Aşadar, singura problemă care trebuie rezolvată mai întâi este dată de
calculul valorilor coordonatelor x şi y în funcţie de cele ale parametrului t.

3.1. Reprezentarea în plan a curbelor date prin ecuaţii parametrice

Să se reprezinte grafic curba dată prin ecuaţia:

x = 1 + | t|
y = |1 – t2|, pentru t Î [-1, 1]
Soluţie:

Comenzile MATLAB sunt următoarele:


0 t = linspace(-1,1,500);
1 x = 1+abs(t); y = abs(1-t.^2);
2 subplot(1,3,1); plot(t,x); title('x(t)');
3 subplot(1,3,2); plot(t,y); title('y(t)');
4 subplot(1,3,3); plot(x,y); title('y(x)');

Această secvenţă de comenzi realizează atât reprezentarea grafică a


coordonatelor în funcţie de parametrul t, x = x(t), y = y(t), cât şi a legăturii între
coordonate y = y(x).

Figura 3.1. Reprezentare grafică a curbelor date prin ecuaţii parametrice


După cum se poate observa în reprezentările grafice din fig. 3.1, valorile
coordonatei x, în funcţie de valorile parametrului, mai întâi scad şi apoi cresc, cele
ale coordonatei y mai întâi cresc şi apoi scad în timp ce, în aparenţă, valorile
coordonatei y scad odat ă cu creşterea valorilor coordonatei x. În realitate lucrurile
nu stau chiar aşa. Pentru a obţine o informaţie corectă, se poate utiliza funcţia
comet. Această funcţie realizează o animaţie în care se poate vedea foarte clar
sensul în care se modifică valorile unei coordonate în funcţie de cealaltă (fig 3.2.).

Figura 3.2. Animaţie creată cu ajutorul funcţiei comet

3.2. Reprezentarea în plan a curbelor date prin ecuaţii polare

Este cunoscut faptul că sistemul de coordonate carteziene nu reprezintă


singura modalitate de a descrie poziţia punctelor în plan. În loc de 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. 3.3).

Figura 3.3. Sistemul de coordonate polare


Dificultatea în cazul sistemului de coordonate polare, ţinând cont de
periodicitatea funcţiilor trigonometrice, constă în faptul că punctele pot avea
reprezentări multiple. De aceea trebuie tratate cu atenţie aceste tipuri de
reprezentări grafice.
În MATLAB, reprezentarea în sistemul de coorodonate polar se face cu
ajutorul funcţiei polar.

Exemplu:
Să se reprezinte grafic, în coordonate polare, curba dată prin ecuaţia
r = 2 sin 2q, q Î [0, p].

Soluţie:
Comenzile MATLAB necesare acestei reprezentări grafice sunt următoarele:
teta = linspace(0,pi);
r = 2 * sin(2*teta);
polar(teta,r);

Rezultatul poate fi observat în figura următoare.

Figura 3.4. Reprezentarea grafică, în coordonate polare, a funcţiei r = 2 sin 2

Ţinând cont de legăturile existente între sistemele de coordonate cartezian şi


polar:
x = r cos q
y = r sin q
MATLAB pune la dispoziţia utilizatorilor două funcţii de trecere de la un
sistem de reprezentare la celălalt: cart2pol şi pol2cart. Ambele primesc drept
argumente coordonatele punctelor într-un sistem de coordonate şi le returnează pe
cele din celălalt sistem. Ordinea în care trebuie furnizate coordonatele este
următoarea: pentru sistemul de coordonate cartezian, ordinea naturală, mai întâi x
şi apoi y, iar pentru cel polar, mai întâi unghiul q şi apoi raza r.
Aşadar, reprezentarea curbei din figura 3.4. se poate obţine utilizând funcţiile
plot sau comet, după ce, în prealabil, coordonatele carteziene sunt calculate în
funcţiile de cele polare:
[x,y] = pol2cart(teta,r);
plot(x,y); axis equal;

Ultima comandă este utilizată pentru a asigura utilizarea aceleiaşi scări de


reprezentare pe cele două axe de coordonate. În caz contrar, este posibil ca
graficul să fie turtit (alungit), în funcţie de forma şi dimensiunea ferestrei în care se
efectuează reprezentarea grafică.

3.3. Reprezentarea în plan a curbelor date prin ecuaţii implicite

În practică există şi situaţii în care nu există o relaţie explicită sau


parametrică între coordonatele punctelor curbei. În această situaţie, funcţiile plot,
comet sau polar nu sunt de niciun ajutor. Sistemul MATLAB pune la dispoziţie însă
un set de funcţii simple (easy) care să ajute utilizatorul atunci când legătura între
coordonate este implicit ă. Dintre acestea, în secţiunea curent ă se va exemplifica
doar utilizarea funcţiei ezplot. În mod similar se poate utiliza şi funcţia ezpolar.
Exemplu:
Să se reprezinte grafic funcţia dată prin ecuaţia:
(x2+ y2)2 = x2 – y2 , în intervalul [-2, 2].

Soluţie:
Comanda MATLAB care generează acest grafic este următoarea:
>> ezplot('(x.^2+y.^2).^2-(x.^2-y.^2)',[-2,2,-1,1])
Rezultatul poate fi observat în figura următoare:

2 2 2 2 2
Figura 3.5. Reprezentarea grafică a funcţiei (x + y ) = x - y
4. Reprezentarea grafică a curbelor în spațiu
4.1. Reprezentarea grafică a curbelor în spațiu prin ecuații parametrice

Comenzile plot şi comet utilizate pentru reprezentarea curbelor în plan au un


echivalent atunci când se discută despre reprezentarea curbelor în spaţiu: plot3 şi
respectiv, comet3.
Exemplu:
Să se reprezinte grafic curba dată prin următoarele ecuaţii parametrice:

x = a cos w t
y = a sin w t
z = bt
unde a = 2, b = 0.1, w = 2 şi 0 £ t £ 12p.

Soluţie:
Se iniţializează valorile constantelor care dau amplitudinea a şi rata de
creştere b.
a = 2;
b = 0.1;
w = 2;

Se încarcă un vector cu valorile parametrului.

t = linspace(0, 12*pi, 1000);

Se calculează valorile tripletelor (x, y, z) care determină coordonatele


punctelor curbei, în funcţie de cele ale parametrului t.

x = a * cos(w * t);
y = a * sin(w * t);
z = b * t;

Pentru a identifica sensul mişcării se foloseşte comanda:

>> comet3(x, y, z);

Pentru a reprezenta punctele curbei se foloseşte comanda:

>> plot3(x, y, z);


Eventual, se adaugă informaţii suplimentare pentru axe şi titlu:

xlabel('axa Ox');
ylabel('axa Oy');
zlabel('axa Oz');
title('x=2 cos(t), y=2 sin(t), z=0.1t');

Curba dată parametric, prin ecuaţiile parametrice de mai sus, se numeşte


helix şi poate fi observată în figura următoare:

Figura 3.6. Curba helix


4.2. Reprezentarea grafică a curbelor în spațiu implicit

La fel ca şi în cazul curbelor plane, în cazul curbelor şi suprafeţelor în spaţiul


tridimensional se pot ivi situaţ ii în care relaţiile între coordonatele punctelor de pe
curbă sau suprafaţă sunt date implicit şi nu explicit. Sistemul MATLAB pune la
dispoziţie o serie de funcţii simple numite EZ (easy) care permit schiţarea unei
curbe sau a unei suprafeţe cu un minim de cerinţe suplimentare. Aceste funcţii nu
oferă aceleaşi performanţe ca funcţiile plot sau surf, însă pot fi ectrem de utile
atunci când se doreşte doar o reprezentare grafică rapidă şi fără pretenţii.
Funcţiile care pot fi utilizate în cazul reprezentărilor grafice în spaţiul 3D sunt
prezentate în următorul tabel.

Funcţii Utilizare
ezcontour desenează curbele de nivel corespunzătoare unei funcţii reale de
două variabile reale f(x, y) pe un domeniu specificat sau pe
domeniul implicit –2 < x, y < 2

ezcontourf are acelaşi efect ca ezcontour la care se adaugă umplerea cu


culoare a spaţiilor dintre curbele de nivel

ezmesh schiţează o suprafaţă tridimensională corespunzătoare unei


funcţii reale de două variabile reale f(x, y) dată implicit sau
parametric pe un domeniu specificat sau pe un domeniu implicit

ezmeshc schiţează suprafaţa şi curbele de nivel corespunzătoare


desenează o curbă reprezentată parametric un domeniu
ezplot3 specificat sau pe un domeniu implicit al parametrului

ezsurf desenează o suprafaţă tridimensională colorată, corespunzătoare


unei funcţii reale de două variabile reale f(x, y) dată implicit sau
parametric pe un domeniu specificat sau pe un domeniu implicit

ezsurfc desenează suprafaţa şi curbele de nivel corespunzătoare

Tabelul 1 Funcţiile din categoria EZ


Funcţiile pot fi definite separat şi apoi pot fi apelate cu ajutorul unui handler
sau pot fi specificate sub forma unui şir de caractere. De exemplu:

>> ezplot3(@sin,@cos,'t')
sau
>> ezplot3('cos(t)', 'sin(t)', 't')

Exemplu:
Să se schiţeze suprafaţa şi curbele de contur în cazul suprafeţei dată
prin ecuaţia implicită x2 – y2 = 0.

Soluţie:
>> ezsurfc('x^2-y^2')

Figura 4.1. Reprezentarea unei suprafeţe şi curbelor de contur corespunzătoare


5. Reprezentarea grafică a spiralelor

Una din functiile de reprezentare grafică a spiralelor 3D este functia plot3.


Este similară cu funcția plot din reprezentarea 2D.
Exemplu:
Definim vectorul timp –

t=0:0.1:10*pi;

Introducem coordonatele –

x=exp(-t/20).*cos(t);
y=exp(-t/20).*sin(t);
z=t;
plot3(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
grid on
Soluție:
Obținem figura 5.1. –

Figura 5.1. Spirala 3D


Forma generală a acestei funcții este plot3(x,y,z,’string’), unde x,y,z
reprezintă coordonatele reprezentării grafice:

a. în cazul in care x,y,z sunt vectori de aceasi lungime, o linie de


reprezentare 3-D este creata prin conectarea coordonatelor specificate
de elementele vectorilor x,y,z.

b. în cazul in care x,y,z sunt matrici care au acelasi numar de lini si de


coloane, mai multe lini de reprezentare vor fi create de la coloanele
matricelor

c. dacă unele din variabilele de intrare sunt matrici, iar altele sunt vectori
si vectori au aceasi lungime fie ca numar de lini, fie ca numar de
coloane din matrice, MATLAB-ul va reproduce in aceași manieră ca în
cazurile precedente liniile de reprezentare grafica pentru ca graficul să
fie creat.

O proprietate a funcțiilor de reprezentare grafica 3D este view(u,a), care


permite vizualizarea rezultatelor sub diferite ungiuri. Primul parametru al proprietatii
view este unghiul pe care il descrie un plan vertival fix, iar al doilea parametru
reprezinta altitudinea cu care se doreste rotirea axelor.
Daca adaugam liniilor de program scrise anterior liniile de mai jos vom
evidentia rotirea unui grafic 3D:

subplot(221) subplot(222) subplot(223)


plot3(x,y,z); plot3(x,y,z); plot3(x,y,z);
xlabel('x'); xlabel('x'); xlabel('x');
ylabel('y'); ylabel('y'); ylabel('y');
zlabel('z'); zlabel('z'); zlabel('z');
view(-10,10); view(-9,56); view(0,90);
title('Reprezentare title('Reprezentare title('Reprezentare
3D') 3D cu view(-9,56)') 3D cu view(0,90)')

subplot(224)
plot3(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
view(90,0);
title('Reprezentare 3D cu view(90,0)')
Figura 5.2. Spirala 3D cu view

În figura 5.2. se observă reprezentarea 3D a funcțiilor x, y si z, vazute in


diferite unghiuri.
De cele mai multe ori prin grafica 3D se doreste reprezentarea grafica a unor
suprafete, mai mult decat simple curbe. In acest scop, MatLab-ul pune la dispozitie
doua functii speciale: surf si mesh. De cele mai multe functiile matematice sunt
functii de doua variabile X,Y si pentru fiecare pereche X,Y exista un Z. Z = f(X,Y).
Folosind o bucla iterativa (for), aceasta problema de atribuire, a unei perechi
de valori, unei necunoscute, ar putea fii usor rezolvata; dar Matlab-ul are avantajul
ca lucreaza usor cu matrici si vectori, ceea ce duce la o simplificare a problemei
noastre. Instructiunea care permite atribuirea unui pachet de valori dintr-un set,
unei necunoscute este meshgrid.
Meshgrid realizeaza o transformare a vectorilor x, y in doua matrici, in functie
de parametrii ce trebuie returnati.
Exemplu:
x = [-1 0 1];
y = [9 10 11 12];
[X,Y] = meshgrid(x,y)
Soluție:
X = -1 0 1 Y= 9 9 9
-1 0 1 10 10 10
-1 0 1 11 11 11
-1 0 1 12 12 12

Liniile matricii de iesire X vor fi copii ale vectorului x, iar coloanele matricii Y
vor fii copii ale vectorului y.
Mesh - aceasta functie realizeaza o incrucisare a liniilor de reprezentare
grafica sub forma unei plase de paianjen pe suprafata definita prin coordonatele
x,y,z. Pentru a intelege principiul de reprezentare grafica a functiei mesh vom
considera 3 matrici de dimensiune 3X3 si le vom reprezenta grafic.
Exemplu:
x=[1,2,3]
y=[1,2,3]
[X,Y]=meshgrid(x,y);
Z=X+Y;
mesh(X,Y,Z)
xlabel('x')
ylabel('y')
zlabel('Z')
title('Reprezentare 3-D mesh')
Soluție:

Figura 5.3. Reprezentare 3D mesh


6. Reprezentarea grafică a conicelor

O alta functie de reprezentare 3D este cylinder. Atunci cand o astfel de


functie se apeleaza cu sau fara argumente de intrare si iesire, se genereaza
automat o perspectiva in reprezentarea 3D a unui cilindru.
Forma acestei functii este cylinder(R,N), unde primul parametru R, reprezinta
un vector raza, care defineste raza cilindrului, distante egale ale punctelor ce
urmeaza sa fie reprezentate in inaltime.Daca acest parametru nu se seteaza,
implicit va primi valoarea [1,1]. Vectorul R este un vector de 2 elemente, ce
reprezinta razele cilindrului. Primul element al vectorului reprezinta raza bazei
cilindrului, iar al doilea element reprezinta raza varfului cilindrului.
Parametru N, reprezinta un intreg si specifica numarul de puncte ce vor fi
folosite pentru a defini circumferinta cilindrului. Daca aceasta valoare nu se
seteaza, la fel ca in cazul functiilor prezentate anterior, valoarea acestestuia este
20.
Exemplu:
r=[2,2];
n=40;
subplot(121)
cylinder;
title('Cilindru cu cylinder')
subplot(122)
[X,Y,Z]=cylinder(r,n);
Z=Z.*3;
h=surf(X,Y,Z);
set(h,'EdgeColor','y');
set(h,'FaceColor','c');
title('Cilindru cu cylinder(r,n)')
Soluție:

Figura 6.1. Cilindru

Cu ajutorul acestei functii se pot crea obiecte geometrice cunoscute:

 con: R = [0,r] sau R = [r,0]


 trunchi de con: R = [r,r/2] sau R = [r/2, r]
 piramida: R = [0,r] sau R = [r,0] si N = 3 sau N = 4
 trunchi de piramidă: R = [0,r] sau R = [r,0] si N = 3 sau N = 4
6.1. Crearea unui con
Exemplu:
r=[2,0];
n=30;
subplot(121)
[X,Y,Z]=cylinder(r,n);
h=surf(X,Y,Z);
subplot(122)
[X,Y,Z]=cylinder(r,n);
Z=Z.*3;
h=surf(X,Y,Z)
set(h,'EdgeColor','y');
set(h,'FaceColor','c');
Soluție:

Figura 6.2. Con


6.2. Crearea unui trunchi de piramidă
Exemplu:
r=[3.6,1.8];
n=4;
subplot(121)
[X,Y,Z]=cylinder(r,n);
h=surf(X,Y,Z);
subplot(122)
[X,Y,Z]=cylinder(r,n);
Z=Z.*3;
h=surf(X,Y,Z);
set(h,'EdgeColor','y');
set(h,'FaceColor','c');
Soluție:

Figura 6.3. Trunchi de piramida

Obtinerea unei forme geometrice diferite de cilindru, prin folosirea functiei


cylinder este posibila datorata numarului de fete pe care dorim sa le vizualizam.
Deci, spunem ca N da numarul de fete ale formei geometrice dorite.
7. Bibliografie
1. Scientific Books Optimization Methods and Mathematical Programming Using Matlab, Ed.
Scientific.

2. Cira, O. The Convergence Simultaneous Inclusion Methods, Ed. Matrix, București, 2012.

3. Nikolaos P. Linear Programming Using MATLAB® (Springer Optimization and Its Applications, Ed.
McMillan.

4. Moţ, G Asupra reprezentărilor grafice a curbelor şi suprafeţelor folosind programul Matcad,


Fascicola Matematică-informatică, 2000

5. Moţ, G Asupra rezolvării sistemelor liniare folosind programul Matcad, Fascicola Matematică-
informatică, 2000

Gabriel MOȘ
Masterand spec. ASACS
Arad, 14.01.2019

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