SESIÓN 2 GRÁFICAS 3D EN MATLAB 1 GRÁFICAS DE FUNCIONES z=f(x,y) z=f(x,y)se deben generar Para elaborar graficas de funciones de la forma z=f(x,y)se valores para x e y , estos valores se elaboran mediante el comando meshgrid, el cual genera un plano XY acotado por los valores suministrados. Los valores generados vienen siendo el dominio de la función a evaluar. El comando meshgrid puede puede evaluarse con los comandos colon y linspace, denotando el dominio de las variables. La sintaxis de este comando se presenta a continuación.
[x,y]=meshgrid(valores x, valores y) [x,y]=meshgrid(-1:0.1:1,-1:0.1:2);en
este ejemplo se están definiendo valores para x entre -1 y 1, mientras que para y se definieron valores entre -1 y 2. De igual forma se puede definir el mismo dominio para ambos mencionando una sola serie de valores, como se muestra a continuación. [x,y]=meshgrid(-1:0.1:1);
Posterior a haber creado los valores para x e y, se evalúa la función y se grafica utilizando los siguientes comandos:
Plot3(x,y,z): representa la superficie por medio de curvas. Mesh(x,y,z): representa la superficie por medio de una malla. Surf (x,y,z) Surf (x,y,z), shading flat.
Un ejemplo de estos comandos se presenta a continuación: %% Gráficas 3D [x,y]=meshgrid(-1:0.1:1,-1:0.1:2); z=cos((x.*y)./(x.^2+y.^2+1)); subplot(2,2,1) plot3(x,y,z) gridon gridon title('Gráfica title('Gráfica con PLOT3') PLOT3' ) subplot(2,2,2) mesh(x,y,z) title('Gráfica title('Gráfica con MESH') MESH' ) subplot(2,2,3) surf(x,y,z)
CURSO DE MATLAB – BÁSICOGRÁFICAS EN MATLAB
title('Gráfica con SURF') subplot(2,2,4) surf(x,y,z),shadingflat title('Gráfica con PLOT3 + Shading flat' )
Gráfica con PLOT3
Gráfica con MESH
1
1
0.98
0.98
0.96
0.96
0.94
0.94
0.92 2
0.92 2 1 0 -1 -1
-0.5
0
0.5
1
1 0 -1 -1
Gráfica con SURF
1
0.98
0.98
0.96
0.96
0.94
0.94
0.92 2
0.92 2 1 -1 -1
-0.5
0
1
Gráfica con PLOT3 + Shading flat
1
0
-0.5
0.5
0
0.5
1
1 0 -1 -1
-0.5
0
Otro comando útil es el colormap, el cual muestra el valor que representan los colores en las gráficas surf. Este comando se debe ejecutar después de haber presentado la figura, tal como gridon. Así mismo se pueden presentar los vectores normales a las superficies por medio del comando surfnorm(x,y,z).
%% Gráfica 3D [x,y]=meshgrid(-1:0.1:1,-1:0.1:2); z=cos((x.*y)./(x.^2+y.^2+1)); figure;
0.5
1
CURSO DE MATLAB – BÁSICOGRÁFICAS EN MATLAB
surfnorm(x,y,z) colorbar
1
0.99
1.02 1
0.98
0.98 0.97
0.96 0.94
0.96
0.92 2 1
2
0.95
1
0
0
-1 -2
-1
0.94
-2
2 CURVAS DE NIVEL Para presentar curvas de nivel se deben ejecutar los comandos contour(x,y,z,# de curvas) y countour3(x,y,z,,# de curvas). %% Gráfica 3D contorno [x,y]=meshgrid(-2:0.1:2); z=y.^2 - x.^2; subplot(2,2,1) surf(x,y,z) subplot(2,2,2) contour(x,y,z,10) subplot(2,2,3) contour3(x,y,z,10)
CURSO DE MATLAB – BÁSICOGRÁFICAS EN MATLAB
2 1.5 4 1 2 0.5 0 0 -2
-0.5
-4 2
-1 1
2
-1.5
1
0
0
-1
-1 -2
-2 -2
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
4 2 0 -2 -4 2 1
2 1
0
0
-1 -2
-1 -2
3 VOLÚMENES DE REVOLUCIÓN Para efectuar volúmenes en revolución MATLAB posee el comando cylinder(r(t)), en donde r(t) es la curva guía. %% Vólumenes en revolución t=1:0.1:10; r=exp(-t./4).*cos(pi*t)+1; subplot(1,2,1) cylinder(r) subplot(1,2,2) plot(r,t) 10
9
1 8
0.9 0.8
7
0.7 0.6
6
0.5 0.4
5
0.3 0.2
4
0.1 0 2
3 1
2 1
0
2
0 -1 -1 -2
-2
1 0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
CURSO DE MATLAB – BÁSICOGRÁFICAS EN MATLAB
Un ejemplo más claro: t=0:0.1:4*pi; r=2*sin(t)+1; cylinder(r); figure; plot(r); t=0:0.1:4*pi;
r=2*sin(t)+1
3 2.5 2 1.5 Y E J E
1 0.5 EJE DE ROTACIÓN
0 -0.5 -1
0
20
40
60
80
100
120
140
EJE X Note que el comando realiza la rotación con respecto al eje Y.
Note además en las siguientes figuras que el cilindro generado tendrá siempre una magnitud máxima de 1 en el eje Z. y que además los ejes x e y del plot no guardan relación, pero la grafica final corresponde a la rotación de la figura plot(r=2*sin(t)+1); con respecto a Y=0.
CURSO DE MATLAB – BÁSICOGRÁFICAS EN MATLAB
Z
0
0.4
0.2
E J E
0.6
0.8
1
2
1
EJE X
0
-1
-2
2
0 -2 EJE Y
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 2
1
0
-1
-2
-2
-1
0
1
2