Está en la página 1de 17

Mtodos Numricos en Recursos Hdricos

(Aplicaciones con MATLAB)


Representacin
Grfica con
MATLAB
Jess Abel Meja Marcacuzco, Ph.D.
Lima - Per
Universidad Nacional Agraria La Molina
Facultad de Ingeniera Agrcola
Departamento de Recursos Hdricos
Graficando Datos
El mdulo bsico de MATLAB ofrece una gama amplia de
opciones para realizar representaciones grficas. Permite
realizar grficos de curvas planas y superficies,
posibilitando la agrupacin y la superposicin; con colores,
mallas y marcos apropiados. Las representaciones de
funciones pueden realizarse en coordenadas implcitas,
explcitas y paramtricas. MATLAB es, por tanto, un
software matemtico con elevadas capacidades grficas, lo
que le distingue de muchos otros paquetes de clculo
simblico. Tambin permite MATLAB realizar grficos de
barras, lneas, estrellas, histogramas, poliedros, mapas
geogrficos y animaciones. La creacin de un grfico suele
acoplarse al siguiente procedimiento:
Paso Ejemplo
Preparar los datos x = 0:0.2:12; y 1 = bessel (1,x);
y2 = bessel (2,x); y3 = bessel (3, x);
Elegir ventana y situar posicin figure (1); subplot (2, 2, 1)
Usar funcin de grfico h = plot (x, y1, x, y2, x, y3);
Elegir caractersticas de lneas y
Marcadores (anchura, colores, ...)
set (h, LineWidth, 2, {LineStyle};
set (h, {Color}, {r; g; b})
Situar lmites de ejes, marcas y
mallas
axis ([0 12 0.5 1]) grid on
Situar anotaciones, etiquetas y
leyendas
xlabel (Time) ylabel (Amplitude)
legend (h, First, Second, Third)
title (Bessel Functions)
[y, ix] = min (y1);
Exportar el grfico print -depsc -tiff -r200 migrafico
Procedimiento para la creacin de un grfico
A continuacin se presenta
un grfico de barras definidas
por la funcin e
-x*x
cuando x
vara de -3 a 3 cada 0.2.
>> x=-2.9:0.2:2.9;
>> bar(x,exp(-x.*x))
Como primer ejemplo se
presenta un grfico de
sectores, de acuerdo a la
siguiente sintaxis:
>> x=[20 30 10 25 15];
>> pie(x)
-3 -2 -1 0 1 2 3
0
0.2
0.4
0.6
0.8
1
20%
30%
10%
25%
15%
Grficos 2D: Barras, Sectores,
Histogramas, Racimo y Flechas
Grfico escalonado relativo a
la funcin e
-x*x
>> x=-2.9:0.2:2.9;
>> stairs(x,exp(-x.^2))
Grfico de errores para la funcin
de densidad de una distribucin
normal (0,1), entre -4 y 4, siendo
definidos los errores por 40
valores aleatorios uniformes
(0,10):
>> x=-4:.2:4;
>> y=(1/sqrt(2*pi))*exp(-(x.^2)/2);
>> e=rand(size(x))/10;
>> errorbar(x,y,e)
-3 -2 -1 0 1 2 3
0
0.2
0.4
0.6
0.8
1
-5 0 5
-0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
Grfica de la funcin f(x) = sen(x)e
-
0.4x
en el intervalo [0,10]; mediante
la siguiente sintaxis:
>> x=0:0.05:10;
>> y=sin(x).*exp(-0.4*x);
>> plot(x,y)
Alternativamente, la misma curva
puede ser obtenida:
>>ezplot(sin(x).*exp(-0.4*x),[0,10]
Grfico sobre los mismos ejes de las
curvas sen(x), sen(2x) y sen(3x);
usando trazos diferentes, mediante la
siguiente sintaxis:
>>fplot('[sin(x),sin(2*x),sin(3*x)]',[0,2*pi])
Grficos 2D: Funciones Explcitas, Paramtricas y Polares
0 2 4 6 8 10
-0.2
0
0.2
0.4
0.6
0 1 2 3 4 5 6
-1
-0.5
0
0.5
1
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('Re(z)');ylabel('Im(z)')
Grfico en coordenadas
polares, mediante la
siguiente sintaxis:
>> t=0:0.1:2*pi;
>> r=sin(2*t).*cos(2*t);
>> polar(t,r)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Re(z)
I
m
(
z
)
0.25
0.5
30
210
60
240
90
270
120
300
150
330
180 0
0.01p )) 2 sin( ) (cos(
: compleja Funcin
05 . 0
+ + =
p
e p i p z
Ttulos, Etiquetas y Texto en Grficos
Grfico de la funcin y = abs(e
-0.5x
sen(5*x)), en escala normal,
logartmica y semilogartmica; sobre un mismo grfico:
0 1 2 3
0
0.5
1
normal
10
-2
10
0
10
2
10
-4
10
-2
10
0
logaritmica
10
-2
10
0
10
2
0
0.5
1
semilogaritmica en x
0 1 2 3
10
-4
10
-2
10
0
semilogaritmica en y
>> x=0:0.01:3;
>> y=abs(exp(-0.5*x).*sin(5*x));
>> subplot(2,2,1)
>> plot(x,y)
>> title('normal')
>> hold on
>> subplot(2,2,2)
>> loglog(x,y)
>> title('logaritmica')
>> subplot(2,2,3)
>> semilogx(x,y)
>> title('semilogaritmica en x')
>> subplot(2,2,4)
>> semilogy(x,y)
>> title('semilogaritmica en y')
Grfico en escala semilogartmica de la funcin y = e
t*t
en el
rango [0.1,3]:
>>t=.1:.1:3;
>>semilogy(t,exp(t.*t))
>>grid
>>xlabel('t');ylabel('exp(t.*t)');
0 0.5 1 1.5 2 2.5 3
10
0
10
1
10
2
10
3
10
4
t
e
x
p
(
t
.
*
t
)
Grfico de Relacin de Presin Vs. Nmero
de Mach.
Se recomienda generar un archivo M:
clear;clf;hold off;
M=[0:0.01:1]';
k=1.4;
rp=(1+(k-1)/2*M.^2).^(k/(k-1));
hold on
axis('square');
plot(M,rp)
xlabel('M,numero de Mach')
ylabel('Po/P')
title('Relacion de Presion,
P(estancamiento)/P(estatica)')
text(0.45,1.55,'compresible')
Mb=[0:0.01:0.7]';
rpb=1+k/2*Mb.^2;
plot(Mb,rpb,'--')
text(0.5,1.1,'Incompresible')
1
2
0
2
1

|
.
|

\
|

=
k
k
M
k
P
P
0 0.2 0.4 0.6 0.8 1
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
M,numero de Mach
P
o
/
P
Relacion de Presion, P(estancamiento)/P(estatica)
compresible
Incompresible
Grfico de Lneas 3D:
El mdulo bsico de MATLAB permite realizar grficos en tres
dimensiones, tanto en lneas como de mallas y superficies.
Tambin permite realizar coordenadas paramtricas y
explcitas. Los pasos que se siguen en general para realizar
un grfico tridimensional se presentan en la siguiente tabla:
Paso Ejemplo
1. Preparar los datos z = peaks (20);
2. Seleccionar ventana y posicin figure(1)
subplot(2,1,2)
3. Usar funcin grfica 3-D h = surf(Z);
4. Situar color y sombra colormap hot
shading interp
set (h, EdgeColor, k)
5. Aadir iluminacin light (Position, [-2,2,20])
lighthing phong
material ([0.4, 0.6, 0.5, 30])
set (h, FaceColor, [0.7 0.7 0],
BackFaceLighting, lit)
6. Situar punto de vista view ([30, 25])
set (gca, CameraViewAngleMode, Manual)
7. Situar lmites y marcas
en los ejes
axis ([5 15 5 15 8 8])
set (gca ZTickLabel, Negative| |Positive)
8. Situar radio de aspecto set (gca, PlotBoxAspectRatio, [2.5 2.5 1])
9. Situar anotaciones y
leyendas, grfico y ejes
xlabel (X Axis)
ylabel (Y Axis)
zlabel (Function Value)
title (Peaks)
10. Imprimir el grfico set (gcf, PaperPositionMode, auto)
print -dps2
Grfico de la hlice paramtrica
x(t) = sen(t), y(t) = cos(t), z(t) = t,
para valores de t entre 0 y 10t
separados t/50:
>> t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> grid on
>> axis square
-1
0
1
-1
0
1
0
10
20
30
40
Grfico de tallos para visualizar una
funcin de dos variables
>> X=linspace(0,1,10);
>> Y=X./2;
>> Z=sin(X)+cos(Y);
>> stem3(X,Y,Z,'fill')
Superficies Explcitas, Paramtricas y Lneas de Contorno
( )
2 2
2 2
y x
y x Sen
z
+
+
=
>> [X,Y]=meshgrid(-7.5:0.5:7.5);
>> Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
>> meshc(X,Y,Z)
-10
-5
0
5
10
-10
0
10
-0.5
0
0.5
1
>> [X,Y]=meshgrid(-7.5:0.5:7.5);
>> Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
>> surf(X,Y,Z)
-10
-5
0
5
10
-10
0
10
-0.5
0
0.5
1
Curvas de nivel bidimensional y tridimensional para el grfico del
ejemplo anterior
>> [X,Y]=meshgrid(-7.5:0.5:7.5);
>> Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
>> contour(Z)
>> [X,Y]=meshgrid(-7.5:0.5:7.5);
>> Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
>> contour3(Z,50)
5 10 15 20 25 30
5
10
15
20
25
30
10
20
30
10
20
30
-0.5
0
0.5
1
Grfica de un cilindro en coordenadas
paramtricas siguientes: x(t)=t,
y(t)=Sen(t), z(t)=u cuando t varia en
[0.2] y u varia en [0.4].
>> t=(0:0.1:2*pi)';
>> r=(0:0.1:4);
>> X=sin(t)*ones(size(r));
>> Y=cos(t)*ones(size(r));
>> Z=ones(1,size(t))'*r;
>> mesh(X,Y,Z)
Grfico de contorno para la superficie
>> [X,Y]=meshgrid(-2:.2:2,-2:.2:3);
>> Z=X.*exp(-X.^2-Y.^2);
>> contour(X,Y,Z,50)
-1
-0.5
0
0.5
1
-1
0
1
0
1
2
3
4
2 2
y x
xe Z

=
-2 -1 0 1 2
-2
-1
0
1
2
3
Generando los cilindros definidos por los
perfiles de las funciones:
2 + cos(t) y 2 + sen(t)
>>t=0:pi/10:2*pi;
>>cylinder(2+cos(t));
>>axis square
Evaluacin y Grfica de la funcin
en el rango [-2 , 2]; [-2, 2]:
>> [x,y]=ndgrid(-2:.2:2,-2:.2:2);
>> z=x.*exp(-x.^2-y.^2);
>> mesh(z)
2 2
) , (
y x
xe y x f

=
-5
0
5
-5
0
5
0
0.2
0.4
0.6
0.8
1
0
10
20
30
0
10
20
30
-0.5
0
0.5