Sie sind auf Seite 1von 11

Graficacin en dos y tres dimensiones

Graficacin en dos y tres dimensiones.

Graficas en dos dimensiones.

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.

Graficar la funcin f(x)=seno(x)e(-0.4x) para x = [0, 10].


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.

Tambin se pueden utilizar vectores columna para realizar grficas.

Ejemplo 2.

p= 0: 0.05: 8*pi;
z = (cos(p) + i*sin(2*p)).*exp(-0.05*p) + 0.01*p;
plot(real(z), imag(z));
xlabel('Real(z)');
ylabel('Imaginario(z)');

Graficacin utilizando nicamente marcas.

Los datos pueden graficarse solo con marcas sin estar conectados por
lneas. Se dispone de cinco tipos de marcas o letras.
http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (1 de 11) [03/05/2009 06:09:21 p.m.]
Graficacin en dos y tres dimensiones

Tipo de marca Smbolo


Punto .
Mas +
Estrella *
Circulo o
Marca x x

Tambin se pueden utilizar lneas

Tipo de lnea Smbolo


continua -
guiones --
Punteada :
Guiones y puntos -.

y colores.

Color de lnea Smbolo


rojo r
amarillo y
magenta m
turquesa c
verde g
azul b
blanco w
negro k

Es posible hacer combinaciones de colores y marcas as, por ejemplo:

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.

Graficacin de funciones con fplot.

Otra forma de grafica funciones individuales es con fplot.

http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (2 de 11) [03/05/2009 06:09:21 p.m.]


Graficacin en dos y tres dimensiones

fplot(archivo, [xmin, xmax]);

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.

Podemos hacer grficas en coordenadas polares utilizando la instruccin:

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, q.

tetha = 0: 0.05: 4*pi+0.1;


r = sin(4*tetha);
polar(tetha, r);
title('Rosa de ocho hojas');
grid on;

tetha = 0.01: 0.05: 2*pi+0.1;


r = 2-5*cos(tetha);
polar(tetha, r);
title('Caracol de Pascal');

http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (3 de 11) [03/05/2009 06:09:21 p.m.]


Graficacin en dos y tres dimensiones

grid on;

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.

Grficas Logartmicas y semilogaritmicas.

Las funciones pueden graficarse en una escala log-log utilizando el


comando

loglog(x,y);

y tambin podemos representar una curva en una escala semilogartmica


utilizando

semilogx(x,y); % en la direccin de x
semilogy(x,y); % en la direccin de y

Ejemplo 3.

El siguiente ejemplo muestra como trazar una funcin en una escala


logartmica-locartmica.

x = 0:0.1:10;
y = x.^2;
loglog(x,y);

x = 0:0.1:10;
y = x.^2;
%loglog(x,y);
semilogy(x,y);

http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (4 de 11) [03/05/2009 06:09:21 p.m.]


Graficacin en dos y tres dimensiones

Graficacin de mltiples curvas.

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.

x = 0: 0.05:5;
y = sin(x);
z = cos(x);
plot(x, y, x, z);

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);

Retencin (Sobre poner grficas).

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.

http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (5 de 11) [03/05/2009 06:09:21 p.m.]


Graficacin en dos y tres dimensiones

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.

Podemos agregar ttulos a nuestras grficas utilizando la instruccin

title (texto para la grafica);

y leyendas en cualquier posicin con el comando

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)

donde m y n se refiere al arreglo de graficas y k al nmero de grafica sobre al que se


trabaja.

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.

function y1 = RL1(Tf, inc)

global V R L H

V = 10;
R = 5;
L = 1;

http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (6 de 11) [03/05/2009 06:09:21 p.m.]


Graficacin en dos y tres dimensiones

H = inc;
Ic(1) = 0;

num_iter = Tf/inc;

t = 0:inc:Tf;
Ir = (V/R)*(1-exp(-R*t/L));
for iter = 1: num_iter
Ic(iter+1) = f(Ic(iter));
end;

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;

function I1 = f(Io)
global V R L H
I1 = (Io + (2*V-R*Io)*H/(2*L))/(1+R*H/(2*L));

Grficas en tres dimensiones.

Una funcin tridimensional puede ser definido como una funcin z = z(x,
y) . Una matriz es el mejor ejemplo de una funcin en tres dimensiones
donde x y y representan los ndices del arreglo y z(x,y) el contenido de la
matriz.

http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (7 de 11) [03/05/2009 06:09:21 p.m.]


Graficacin en dos y tres dimensiones

Para grficar una funcin en tres dimensiones utilizamos el comando

mesh(z)

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)');

Si deseas nicamente graficar las lneas de contorno se


utiliza la instruccin contour.

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.

http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (8 de 11) [03/05/2009 06:09:21 p.m.]


Graficacin en dos y tres dimensiones

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.

Graficar el vector gradiente correspondiente a la curva z = x*exp(-x2-y2).


[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(z),hold on, quiver(px,py), hold off

Ejemplo 8.
http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (9 de 11) [03/05/2009 06:09:21 p.m.]
Graficacin en dos y tres dimensiones

Determinar la grfica correspondiente a un tiro parablico.


clear;
Vo = 10;
tetha =45*pi/180;
g = 9.81;
yo = 15;

t = 0:0.1:3;

x = Vo*cos(tetha)*t;

[tm xm] = meshgrid(t,x);

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.

Determinar la distribucin de potencial elctrico en un conductor


cuadrado, utilizando diferencias finitas.
clear;
N = 50;
z = zeros(N,N);

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);

http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (10 de 11) [03/05/2009 06:09:21 p.m.]


Graficacin en dos y tres dimensiones

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;

Regresar.

http://lc.fie.umich.mx/~calderon/Matlab/Graficas.html (11 de 11) [03/05/2009 06:09:21 p.m.]