Академический Документы
Профессиональный Документы
Культура Документы
Representacin grfica en 3D
La representacin de funciones 3D ( es decir, funciones f: R2 R) se puede realizar en MATLAB de forma directa, utilizando alguna de las utilidades predefinidas en dicho lenguaje. Para ello, en cualquier caso, es necesario que, previamente, se definan todos los puntos (x, y) sobre los cuales va a tomar valores la funcin f. Esta tarea se realiza discretizando, en primer lugar, los ejes x e y que definen el plano y, a partir de esta discretizacin inicial, se calculan todos los pares de puntos (x, y) utilizando la funcin meshgrid. Esta funcin devuelve dos pares de matrices en las cuales se almacenan, respectivamente, las coordenadas x e y de los puntos de R2 en que se va a representar la funcin f.
Ejemplo
Si deseamos representar una funcin f:[0,2]x[0,2] R ser necesario, en primer lugar, definir los ejes x e y correspondientes a dichos intervalos, con la discretizacin deseada: >>x=0:0.5:2; >>y=0:0.5:2; de modo que cada eje se supone discretizado en 5 puntos. Seguidamente, se construyen todos los pares (x, y) directamente utilizando >>[X Y]=meshgrid(x, y); Las matrices X e Y as generadas almacenan las coordenadas de los 25 puntos en que se discretiza el plano [0,2]x[0,2], de modo que en X se guardan las coordenadas x de los puntos, y en Y las coordenadas y. El siguiente paso consiste en calcular los valores de la funcin para cada uno de los puntos (x, y), lo cual se hace directamente manejando las matrices X e Y como si fuesen variables. As, si la funcin es >>Z=exp(X.^2+Y.^2); escribiramos
(ojo con los operadores ".", porque tanto X como Y son matrices numricas) de modo que, ahora, en las matrices X, Y y Z tenemos ya guardadas las coordenadas 3D de los puntos que queremos representar. Estas matrices son las que se utilizan con las funciones predefinidas para representacin 3D en MATLAB. Por ejemplo, puede probarse la funcin >> mesh(X,Y,Z) En este ejemplo, la representacin no es muy precisa, ya que la discretizacin escogida para los ejes (0.5) no es demasiado fina. Ejercicio 10 1. Repetir la representacin del ejemplo para una discretizacin de los ejes de 100 puntos. Editar la figura para nombrar los ejes con las etiquetas x, y, f(x,y) y titular la representacin "f(x,y)=e^(x^2+y^2)" 2. Representar en el intervalo [-2, 2] la funcin utilizando la funcin mesh. Repetir la representacin con la funcin surf(X,Y,Z). Utilizar la ayuda de MATLAB para analizar las diferencias entre ambas funciones. 3. Representar las funciones siguientes (ojo, como siempre, con el significado de los operadores, ya que estamos manipulando matrices numricas):
en [- , ] en [- /2, /2] Otras funciones de representacin En todos los casos de representacin grfica (y esto incluye a las representaciones 2D) es posible modificar el "punto de vista" del observador de la grfica. En la versin 5.3 de MATLAB esto puede hacerse de forma interactiva utilizando el ratn. Para ello basta activar el botn 3D y establecer con el ratn el nuevo punto de vista de la grfica. Los parmetros que definen el "punto de vista" son la elevacin y el azimut, que indican, respectivamente, la altura sobre el eje z y el ngulo respecto del plano XY en que se sita el observador. Adems de las funciones ya descritas, es posible, en ambos casos, aadir a la representacin grfica las curvas de nivel correspondientes a la funcin que se representa. Para ello se utilizan las funciones meshc y surfc en lugar de mesh y surf. Estas curvas de nivel se proyectan sobre el plano XY automticamente.
Ejercicio 11 Repetir las representaciones grficas del ejercicio anterior utilizando meshc y surfc. Modificar el punto de vista de las grficas hasta ver sus proyecciones sobre los planos XY, XZ e YZ. Una vez finalizados los ejercicios de representacin grfica con MATLAB, puedes pasar al ltimo de uso de MATLAB como herramienta
Ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff
Suponga que desea graficar un conjunto de puntos de datos [xi, yi], i = 1,2,3, ..., n. En necesario hacer dos arreglos, del mismo tamao, para x y y que representen los valores que deseamos graficar. Una manera de hacerlo es utilizando la instruccin plot.
Ejemplo 1.
x = 0: 0.05: 10; y = sin(x).*exp(-0.4*x); plot(x,y); xlabel('Eje x'); ylabel('Eje y'); grid on;
Los rtulos de los ejes de imprimen con los comando xlabel y ylabel.
Eje y
5 Eje x
10
Ejemplo 2.
Imaginario(z)
-0.8
-0.6
-0.4
-0.2
0 Real(z)
0.2
0.4
0.6
0.8
Los datos pueden graficarse solo con marcas sin estar conectados por lneas. Se dispone de cinco tipos de marcas o letras.
Smbolo . + * o x
Estrella Circulo
Marca x
Smbolo -: -.
y colores.
Color de lnea rojo amarillo magenta turquesa verde azul blanco negro
Smbolo r y m c g b w k
plot(x, y, +g); % grafica una curva utilizando cruces y color verde. plot(x, y, k); % grafica en color negro sin marcas plot(x, y, -.b); % grafica en color azul con linea punteda.
donde archivo es el nombre del archivo que contiene los datos a graficar y [xmin y xmax] los limites de la funcin a graficar.
Borrado de Grficas.
El comando clf borra todo lo que haya en la ventana de grficos, mientras cla borra las curvas y redibuja los ejes.
Retculas Se puede agregar un conjunto de lneas paralelas a los ejes, para hacer mas legible la lectura de datos en la grfica, a este conjunto de lneas se le llama retcula. La instruccin para ponerla es:
grid on;
Graficas polares.
polar(t, y);
Esta instruccin es muy similar a plot, la diferencia estriba en que el sistema de coordenadas ya no es un sistema cartesiano x, y, sino un sistema polar r, .
tetha = 0: 0.05: 4*pi+0.1; r = sin(4*tetha); polar(tetha, r); title('Rosa de ocho hojas'); grid on;
Rosa de ocho hojas 90 120 0.8 0.6 150 0.4 0.2 180 0 30 1 60
210
330
240 270
300
180
210
330
240 270
300
Ejes.
El mnimo y el mximo de los ejes de coordenadas son determinados automticamente, sin embargo, hay manera de ajustarlos automticamente utilizando el comando axis.
axis(square); % redibuja en forma cuadrada. axis(off); % cancela el efecto axis([x_min, x_max, y_min, ymax]) % establece los valores mnimos y mximos para cada eje.
loglog(x,y);
Ejemplo 3.
El siguiente ejemplo muestra como trazar una funcin en una escala logartmica-locartmica.
10
10
10
10
-1
10
-2
10
-1
10
10
10
10
10
10
-1
10
-2
10
Se uno desea graficar mas de una curva entonces ser necesario en la instruccin plot poner mas de un par de termino a graficar tal como se muestra a continuacin.
0.5
1.5
2.5
3.5
4.5
Automticamente se seleccionaran los colores de cada grafica y si uno desea podrn cambiarse haciendo
x = 0: 0.05:5; y = sin(x); z = cos(x); plot(x, y, '--', x, z, '*');
En algunos casos resulta til mandar a graficar utilizando solo un par de argumentos en la sentencia plot. En tal caso se procede :
clear; x = 0: 0.05:5; y(1, :) = sin(x); y(2, :) = cos(x); y(3, :) = sin(x).*cos(x); plot(x, y);
0.5
1.5
2.5
3.5
4.5
Hasta el momento hemos realizado el trazado de las curvas utilizando una sola operacin. Pero si deseamos graficar sobre una grafica ya realizada utilizaremos el comando hold on.
clear; x = 0: 0.05:5; y = sin(x); plot(x, y, 'b*'); hold on; z = cos(x); plot(x, z, 'r--'); yz = sin(x).*cos(x); plot(x, yz, 'k-.');
Ttulos y Leyendas.
text(x, y, cadena)
donde x y y representa las coordenadas de la grfica donde deseas que aparezca impresa la cadena.
Subgrficas.
Con el comando subplot podemos grficar m por n grficas en una sola figura. La sintaxis del comando es
subplot(m, n, k)
Ejemplo 4.
Calcular el voltaje y corriente transitoria que circulan por la inductancia de un circuito RL serie. Para encontrar la solucin utilice el mtodo de la regla trapezoidal y compare el resultado con la solucin real.
global V R L H
num_iter = Tf/inc;
subplot(1, 2, 1); plot(t, Ir, '.r'); title('Corriente corriente en la inductancia'); xlabel('tiempo en segundos');
ylabel('corriente en amperes'); hold on; plot(t, Ic, 'k'); text(1, 1, '... Real'); text(1, 0.5, '---calculada');
Vr = V - R*Ir; Vc = V - R*Ic;
subplot(1,2, 2); plot(t, Vr, '.r'); title('Voltaje en la inductancia'); xlabel('tiempo en segundos'); ylabel('Voltajes'); hold on; plot(t, Vc, 'k'); text(1, 1, '... Real'); text(1, 0.5, '---calculada'); hold off;
Voltaje en la inductancia 10 9 8 7 6
corriente en amperes
Voltajes
El comando mesh(z) desplegara la funcin contenida en la matriz z. Ejemplo 5. Trazar la curva de la funcin f(x,y) = (x-50)2 + (y-50)2, en el rango x = [1,100] y y =[1,100].
clear; for k=1:100; for l=1:100; z(k,l) = (k-50)^2 + (l-50)^2; end; end;
mesh(z); title ('grafica de (k-50)^2 + (l-50)^2'); xlabel ('eje x'); ylabel ('eje z'); zlabel ('z(x,y)');
eje y
50 40 30 20 10 10 20 30 40 50 eje x 60 70 80 90 100
clear; for k=1:100; for l=1:100; z(k,l) = (k-50)^2 + (l-50)^2; end; end; contour(z); title ('grafica de (k-50)^2 + (l-50)^2'); xlabel ('eje x'); ylabel ('eje y'); zlabel ('z(x,y)');
Malla. En algunos casos donde los puntos en la direccin de x y de y no son valores enteros positivos, tenemos que hacer uso del comando meshgrid. Ejemplo 6. Trazar la grfica de la funcin z = x*exp(-x2-y2) en el rango x=[-2,2] y y =[-2,2].
clear, clf; xa = -2:0.2:2; ya = -2:0.2:2; [x y] = meshgrid(xa,ya); z = x.*exp(-x.^2-y.^2); mesh(x, y, z); title ('Grafica en 3D'); xlabel('x'); ylabel('y'); zlabel('z');
Grfica Vectorial.
En ocasiones, las cantidades correspondientes a los puntos de una retcula se dan en forma vectorial. Por ejemplo la distribucin de la velocidad en un flujo, etc. Los vectores en estos puntos pueden calcularse utilizando el comando quiver y requieren de dos vectores uno en la direccin de x y otro en la direccin de y.
Ejemplo 7.
20 18 16 14 12 10 8 6 4 2 2 4 6 8 10 12 14 16 18 20
t = 0:0.1:3;
x = Vo*cos(tetha)*t;
ym = yo + Vo*sin(tetha)*tm- g*tm.^2/2;
Vy = Vo*sin(tetha)- g*tm; Vx = ones(length(t))*Vo*cos(tetha); [px,py] = gradient(ym,.1,.1); subplot(1,2,1); mesh(tm, xm, ym); Title('Desplazamiento del tiro parabolico'); xlabel('tiempo'); ylabel('x'); zlabel('y'); subplot(1,2,2); quiver(Vx,Vy); Title('Campo vectorial de desplazamiento');
Ejemplo 9.
z(N, :) = 0.1;
for iter = 1: 100 for n=2:N-1 for m=2:N-1 suma = 0; suma = suma + z(n-1,m); suma = suma + z(n+1,m); suma = suma + z(n,m-1); suma = suma + z(n,m+1); z(n,m) = suma/4; end; end; end; [c, h] = contour(z); clabel(c, h); colorbar;
0.06 0.05
.0 0.0 00 3 1 .02
50 0 .0 4 45 40 35 30 25 20 15 10
0.09
0.09
0.08 0.07
0.09
02 1 03 0. 0.0 0.
5
5 10 15 20 25 30 35 40 45 50 0.01
Regresar. Ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
\int_2^{+\infty}5x \: dx
Sumatorios
\sum_{i=1}^{12}5i+2
Sum(exp,i,m,n)