Cvičení v matlabu

Týden 11

lekci 5 jsme se seznámili s 2D grafikou (grafy funkcí jedné proměnné). MATLAB umožňuje vizualizovat také funkce dvou proměnných. Používáme podobný postup:

  1. příprava dat (nezávisle proměnné, závisle proměnná)
  2. výběr grafického okna, případně podokna (lekce 5!)
  3. vykreslení 3D grafu
  4. úpravy grafu
  5. uložení grafu do souboru (lekce 5!)

Příprava dat

Potřebujeme mít dvě matice (např. X,Y), jejichž prvky X(i,j),Y(i,j) budou obsahovat souřadnice bodů v rovině. Ke snadnému generování těchto matic slouží funkce meshgrid:
[X,Y]=meshgrid(v1,v2)
- vektor v1 určuje interval na ose x s daným krokem a vektor v2 určuje interval na ose y s daným krokem
[X,Y]=meshgrid(v)
- vektor v určuje interval na ose x i na ose y

Ukázka:

>> [X,Y]=meshgrid([-3:1],[-1:2:7])X =
    -3    -2    -1     0     1
    -3    -2    -1     0     1
    -3    -2    -1     0     1
    -3    -2    -1     0     1
    -3    -2    -1     0     1Y =
    -1    -1    -1    -1    -1
     1     1     1     1     1
     3     3     3     3     3
     5     5     5     5     5
     7     7     7     7     7

Kromě nezávisle proměnných potřebujeme vytvořit také matici funkčních hodnot.
Např. pro funkci f(x,y)=cos(x2)-sin(y3) vytvoříme matici Z:
>> Z=cos(X.^2)-sin(Y.^3);   (uvědomte si, proč je nezbytné používat operátory "s tečkou"...)

Vykreslení grafu funkce dvou proměnných

Při vykreslení grafů funkce dvou proměnných máme na výběr:

  • plot3(X,Y,Z), případně plot3(X,Y,Z,řetězec) ... vykreslí graf jako jednotlivé čáry, pomocí řetězce můžeme nastavit barvu, značky a typ čar
  • mesh(X,Y,Z) ... vykreslí 3D graf, body spojuje navzájem ve směru obou os (výsledkem je "drátěný model" nebo "síť")
  • surf(X,Y,Z) ... vykreslí 3D graf, body spojuje navzájem ve směru obou os a vzniklé plošky vyplní barvou
  • contour(Z) ... vykreslí vrstevnice funkce dvou proměnných (2D graf)
    contour(Z,n) ... vykreslí vrstevnice v n rovinách, např. contour(Z,5)
    contour(Z,v) ... vykreslí vrstevnice v rovinách zadaných vektorem v, např. contour(Z,[-2 0 .5 .8 1])
  • meshc(X,Y,Z) ... vykreslí 3D "síťový" graf a navíc i vrstevnice
  • surfc(X,Y,Z) ... vykreslí 3D "ploškový" graf a navíc i vrstevnice


Příklad - ukázka skriptu, který vykreslí funkci dvou proměnných (funkce peaks je knihovní funkce MATLABu):

[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
meshc(X,Y,Z);
axis([-3 3 -3 3 -10 5])