3 Graficos
3 Graficos
3 Graficos
Representaci on gr aca 2D y 3D
Guillermo Peris Ripoll es
Aplicaci on
Optimizaci on del ujo de un canal de agua. A la hora de dise nar un canal de agua, como el que se muestra en la siguiente gura, se pretende que la velocidad de ujo sea m axima.
Las variables a considerar a la hora de dise nar el canal son su altura h, la anchura de la base c, y el angulo lateral . Puede demostrarse que la velocidad de ujo es inversamente proporcional al per metro, cuya expresi on es: p=c+ mientras que el area total de ujo es A = ch + h2 cot(). Considerando que el canal debe tener 200 cms. de area transversal (A = 200), la funci on 1/p u nicamente depender a de h y . Representa la superf cie 1/p = f (h, ), mostrando el diagrama de contornos simult aneamente. Para qu e valores aproximados de h y la velocidad de ujo es m axima?
Velocidad de flujo en un canal
2h sin()
1/p
20
120
140
160
10
20 15 Altura (cm)
Ingenier a Qu mica
Programaci on en Octave
3-2
Representaci on gr aca 2D y 3D
Contenidos
3.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 3.2. Representaciones 2D . . . . . . . . . . . . . . . . . . . . . . 3-3 3.2.1. Gr acas simples . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 3.2.2. Gr acas m ultiples . . . . . . . . . . . . . . . . . . . . . . . . 3-4 3.2.3. Mejorando el aspecto de las gr acas . . . . . . . . . . . . . . 3-6 3.3. Representaciones 3D: l neas, contornos y superf cies. . . . 3-7 3.3.1. L neas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7 3.3.2. Supercies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8 3.3.3. Contornos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10 3.4. Aplicaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-11 3.5. Ejercicios pr acticos . . . . . . . . . . . . . . . . . . . . . . . 3-13
Universitat Jaume I
3.1 Introducci on
3-3
3.1.
Introducci on
Resulta muy habitual que los ingenieros utilicen gr acos para mostrar sus ideas de una forma m as clara, ya que es m as sencillo identicar tendencias en una gura que una tabla de resultados. Octave dispone (junto con el paquete octave-forge) de un gran conjunto de funciones u tiles para la creaci on de gr acos. En este tema estudiaremos algunas de ellas.
3.2.
Representaciones 2D
Todas las funciones de que dispone Octave para la creaci on de gr acos utilizan el programa gnuplot. Este es un programa que podemos usar de forma independiente de Octave, aunque aqu aprenderemos a utilizarlo desde la interfaz de Octave.
3.2.1.
Gr acas simples
Para dibujar gr acas, Octave dispone de la orden plot(x,y), donde x e y son dos vectores de la misma dimensi on que representan las coordenadas de las abscisas y ordenadas de los datos a representar, respectivamente. Supongamos que queremos representar la gr aca de sin(x) entre 0 y 2 . Entonces, deber amos crear en primer lugar un vector con valores de x, y el vector sin(x). Para ello, podemos utilizar por ejemplo 100 puntos equiespaciados en el eje x y calcular su seno: x = linspace(0,2*pi,100); y = sin(x) ; plot(x,y) ; Al ejecutar este c odigo, nos aparece una ventana similar a la siguiente:
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 line 1
Pensemos que cuantos m as puntos utilicemos, m as el ser a la representaci on obtenida, pero m as tiempo le costar a a Octave obtener el resultado.
Ingenier a Qu mica
Programaci on en Octave
3-4
Representaci on gr aca 2D y 3D No es demasiado complicado mejorar esta gr aca. Por ejemplo, con la orden title se a nade un t tulo, con las ordenes xlabel e ylabel se a naden, respectivamente, etiquetas a los ejes de abscisas y ordenadas; adem as, la orden grid(on) a nade una rejilla a la gr aca. Estas ordenes no surten efecto hasta que no se actualiza la gr aca con la orden replot. Observa el uso de estas ordenes en el siguiente ejemplo, cuyo resultado se muestra en la Figura 3.2: title(Representacion de sin(x)), xlabel(x), ... ylabel(sin(x)), grid(on), replot F jate en que los textos deben escribirse entre comillas simples.
Representacion de sin(x) 1 0.8 0.6 0.4 0.2 sin(x) 0 0.2 0.4 0.6 0.8 1 line 1
3 x
3.2.2.
Gr acas m ultiples
Si estamos interesados en dibujar varias curvas en una misma gr aca, podemos hacerlo de forma simple utilizando varios pares de vectores. Por ejemplo, la orden plot(x,y,w,z) dibujar a en una misma gr aca las curvas de y en funci on de x, y w en funci on de z. F jate en el siguiente c odigo, que dibuja las curvas sin(x) y cos(x) en la misma gura (Figura 3.3): x = linspace(0,2*pi,100); y = sin(x) ; z = cos(x); plot(x,y,x,z),title(Grafica del seno y coseno de x), ... xlabel(x), grid(on) , replot Octave distingue las dos l neas utilizando colores, lo cual no se puede apreciar en impresiones en blanco y negro (como la que tienes entre tus manos ;) ). Ser a interesante poder distinguir las curvas bien por el formato de las l neas, bien por el formato de los puntos. Para ello, debemos indicar en la orden plot tripletes de datos, a saber: el vector x, el vector y y un formato de lineas y puntos, teniendo en cuenta las opciones que se muestran en la Tabla 3.1. Si antecedemos un gui on al indicador del
Universitat Jaume I Guillermo Peris Ripoll es
3.2 Representaciones 2D
Grafica del seno y coseno de x 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 line 1 line 2
3-5
3 x
punto, estos se unen con una l nea cont nua1 . Por ejemplo, una mejor representaci on de la curva anterior se har a con la siguiente orden (Figura 3.4): plot(x,y,-o,x,z,+),... title(Gr afica del seno y coseno de x),xlabel(x), grid(on) , replot
Grafica del seno y coseno de x 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 line 1 line 2
3 x
Hemos comprobado que, al crear una nueva gura, esta aparece en una ventana de guras, desapareciendo la gura anterior (si la hab a). Si estamos interesados en que aparezcan distintas guras (en distintas ventanas) debemos ejecutar previamente la orden figure. Por u ltimo, la orden clg limpia la ventana de gr acos. Esta orden resulta conveniente utilizarla antes de crear una nueva gura.
1
Ingenier a Qu mica
Programaci on en Octave
Representaci on gr aca 2D y 3D
Ejercicios
1 Ejecuta las l neas de c odigo necesarias en Octave para obtener las gr acas de las guras anteriores. 2 Dibuja la funci on y = sin(x) + x x cos(x) en el intervalo x ]0, 30[. A nade un t tulo y las etiquetas que creas oportunas. 3 A la hora de realizar una gr aca, es importante el muestreo que se realice de la funci on. Para entender mejor esto, compara los siguientes ejemplos y piensa en cual es la causa de que la segunda gr aca presente un mejor aspecto que la primera. n = 5; x = 0:1/n:3; y = sin(5*x) ; plot(x,y) n = 25; x = 0:1/n:3; y = sin(5*x) ; plot(x,y)
3.2.3.
En este apartado vamos a introducir algunas ordenes m as para cambiar el aspecto de los gr acos. Por ejemplo, podemos estar interesados en personalizar la leyenda explicativa de las distintas l nea de una gr aca. Esta leyenda normalmente aparece con los textos line 1, line 2, etc. Para cambiar este texto, debemos escribirlo entre punto y comas (;) del formato de l nea y punto de la orden plot. Esto se entiende mejor con el anterior ejemplo de la representaci on de seno y coseno: plot(x,y,-o;seno(x);,x,z,.;coseno(x);) title(Gr afica del seno y coseno de x),xlabel(x) grid(on) , replot En ocasiones resulta interesante tener distintos gr acos en una misma ventana. Esto es lo que se conoce como subventanas. Para ello, podemos dividir la ventana de gr acos en dos subventanas (apiladas o contiguas) o cuatro subventanas, utilizando la orden subplot. Esta orden acepta 3 argumentos, donde los dos primeros indican las divisiones en las y columnas de la ventana, y el tercero a la posici on en la que se va a situar la siguiente gr aca (las ventanas se numeran de izquierda a derecha, y de arriba y abajo). La utilizaci on de subgr acas la entender as mejor con el siguiente ejercicio.
Universitat Jaume I
3-7
3 x
Ejercicios
4 Ejecuta las siguientes lineas de c odigo y trata de entender por ti mismo la orden subplot.
Hasta ahora hemos observado que Octave ja autom aticamente la escala de los ejes, ajust andola a los valores de los datos. Podemos cambiar estos valores ejecutando la orden axis([xmin xmax ymin ymax]), donde se indican respectivamente los valores m nimos y m aximo de x, y m nimo y m aximo de y.
3.3.
Hasta ahora hemos obtenido gr acas en dos dimensiones a partir de funciones dependientes de una sola variables. Si las funciones dependen de dos variables (o m as) se necesitan representaciones de orden superior. Para ello, Octave incluye distintas funciones para la representaci on tridimensional. A continuaci on vamos a explicar las funciones b asicas para crear tres tipos de gr acas: l neas 3D, supercies y contornos.
3.3.1.
L neas
Se pueden representar l neas en el espacio tridimensional con la orden plot3(x,y,z) de Octave, donde x, y y z son funciones de un par ametro. Por ejemplo, las siguientes
Ingenier a Qu mica Programaci on en Octave
3-8
Representaci on gr aca 2D y 3D ecuaciones generan una curva en tres dimensiones a medida que var a el par ametro t: x = e0.05t sin(t) y = e0.05t cos(t) z = t Esta curva se puede representar con las siguientes ordenes Octave, dando lugar a la gura que se muestra a continuaci on: t = [0:pi/50:10*pi]; plot3(exp(-0.05*t).*sin(t), exp(-0.05*t).*cos(t), t) xlabel(x), ylabel(y), zlabel(z), grid(on), replot
line 1
0.8
0.6
0.4
0.2 x
0.2
0.4
0.6
0.8
1 1
Ejercicios
5 Ejecuta las l neas de c odigo anteriores en Octave para obtener la gr aca de la Figura 3.6.
3.3.2.
Supercies
La funci on z = f (x, y ) representa una supercie en un sistema de coordenadas xyz . Antes de realizar la representaci on, es necesario crear una malla de puntos en el plano xy para calcula el valor de z en cada uno de ellos. Para ello, Octave dispone de la funci on meshgrid. La sintaxis de esta orden es: [X, Y] = meshgrid(x,y) donde x e y son vectores con los valores de esta variables. X es una matriz en la que el vector x se copia en cada una de sus las, e Y es una matriz en la que el vector y se copia en cada una de sus columnas. De esta forma, podemos trabajar con las matrices X e Y para obtener una matriz Z en t erminos de la funci on representada. El uso de meshgrid se ilustra con el siguiente ejemplo sencillo:
Universitat Jaume I Guillermo Peris Ripoll es
3-9
x = [X, X X = 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 Y Y = 6 6 6 7 7 7 8 8 8 9 9 9 10 10
4 4 4 4 4
5 5 5 5 5
6 6 7 7 8 8 9 9 10 10 10
Una vez calculada la malla de valores X e Y, y con ellos la matriz Z, utilizaremos la funci on mesh(X,Y,Z) para crear la supercie. Veamos un ejemplo en el que se genera 2 2 2 la supercie de la funci on z = xe[(xy ) +y ] para 2 x 2 y 2 y 2 con un espaciado de 0.1. x = [-2:0.1:2]; y = x; [X, Y] = meshgrid(x,y); Z = X.*exp(-((X-Y. 2). 2+Y. 2)); mesh(X,Y,Z), xlabel(x), ylabel(y), zlabel(z)
line 1
0.5 0.4 0.3 0.2 0.1 0 0.1 0.2 0.3 0.4 0.5 1.5 2
1.5
0.5 x
0.5
1.5
2 2
1 1.5
0.5
0.5
Ejercicios
6 Ejecuta las l neas de c odigo anteriores en Octave para obtener la gr aca de la Figura 3.7.
Ingenier a Qu mica
Programaci on en Octave
3-10
Representaci on gr aca 2D y 3D
3.3.3.
Contornos
Las representaciones topogr acas muestran los contornos terrestres mediante l neas de altura constante. Estas lineas se conocen como lineas de contorno. Si caminamos a lo largo de una de estas lineas, la altura se mantiene constante. Octave dispone de la funci on contour(X,Y,X), que se utiliza de una foram similar a mesh: x = [-2:0.1:2]; y = x; [X, Y] = meshgrid(x,y); Z = X.*exp(-((X-Y. 2). 2+Y. 2)); contour(X,Y,Z), xlabel(x), ylabel(y), zlabel(z)
0.4 0.3 0.2 0.1 2.78e17 2 0.1 0.2 0.3 1.5 0.4 1 0.5 0 0.5 1 1.5 2 1.5 1 0.5 0 x 0.5 1 1.5 2 2 y
Las representaciones de contorno y supercie pueden combinarse con la funci on meshc(X,Y,Z). meshc(X,Y,Z), xlabel(x), ylabel(y), zlabel(z)
0.5 0.4 0.3 0.2 0.1 0 0.1 0.2 0.3 0.4 0.5 1.5 2
1.5
0.5 x
0.5
1.5
2 2
1 1.5
0.5
0.5
Ejercicios
7 Ejecuta las l neas de c odigo necesarias en Octave para obtener las gr acas de las Figuras 3.8 y 3.9.
Universitat Jaume I
3.4 Aplicaci on
3-11
3.4.
Aplicaci on
A continuaci on se muestra el programa que resuelve la aplicaci on expuesta al principio del tema. Las u nicas novedades que introduce son el uso de dos nuevas funciones: axis: Esta funci on recibe como argumento un vector de 4 o 6 componentes, en funci on de que la gr aca sea bidimensional o tridimensional. Por ejemplo, en el presente caso los 6 elementos del vector ser an los valores m nimos y m aximos de x, seguidos de los valores m nimos y m aximos de y , y por u ltimo los valores m nimos y m aximos de z . La gr aca utilizar a estos valores para los l mites de cada uno de los ejes. view: Esta funci on permite cambiar el punto de vista de una funci on 3D. Para entender mejor su uso, ejecuta la ayuda de Octave (help view). Por lo dem as, no presenta demasiadas complicaciones, as que trata de entenderla por ti mismo, y ejec utala en Octave para comprobar que obtienes el mismo resultado. % Limpiamos variables y graficos (si existen). clear clg % Definicion de constantes y vectores iniciales. A=200; Theta = 20:10:150; h = 2:20; % Creamos la malla de valores (x,y) y la funcion p. [alt,Th] = meshgrid(h, Theta); c = (A-alt.2./tan(Th*pi/180))./alt; p = c + (2*alt./sin(Th*pi/180)); % Realizamos la representacion grafica. meshc(Th,alt, 1./p) title(Velocidad de flujo en un canal) xlabel(Theta (Grados)), ylabel(Altura (cm)), zlabel(1/p) axis([0 160 0 20 0.008 0.03]) view(30,15), replot
Ingenier a Qu mica
Programaci on en Octave
3-12
Representaci on gr aca 2D y 3D
1/p
20
120
140
160
10
20 15 Altura (cm)
Universitat Jaume I
3-13
3.5.
Ejercicios pr acticos
Es conveniente que pienses y realices los ejercicios que han aparecido a lo largo de la unidad marcados con el s mbolo b antes de acudir a la sesi on de pr acticas correspondiente. Deber as iniciar la sesi on realizando los ejercicios marcados con el s mbolo . A continuaci on, deber as hacer el mayor n umero de los ejercicios siguientes. Ejercicios
8 Consideremos de nuevo la ecuaci on de Van der Waals para un mol de gas: P = RT a V b V2
Escribe un programa isotermas.m que pida al usuario los valores de a y b, y represente una gr aca con las isotermas del gas (P en funci on de V, para un valor constante de T) a 100, 200, 300 y 400 grados cent grados. Recuerda que en la ecuaci on de Van der Waals la temperatura debe expresarse en Kelvin. Cada curva debe ir con un trazo diferenciado, con el texto que indique la isoterma que se ha representado, as como el t tulo de la gr aca y la etiqueta de los ejes. Comprueba el funcionamiento correcto del programa con el benceno, para el cual a = 18.78 atm l/mol2 y b = 0.1208 l/mol.
Ecuacion de Van der Waals: Isotermas 25 T=100C T=200C T=300C T=400C 20
15 Presion(atm) 10 5 0 0
10
20
30
40
50 Volumen (l)
60
70
80
90
100
Ingenier a Qu mica
Programaci on en Octave
3-14
Representaci on gr aca 2D y 3D
9 Se consideran 4.003 g. de helio y 39.944 g. de arg on y se someten a cambios de presi on a la temperatura de 0 grados Celsius, obteni endose las siguientes tablas de valores: HELIO a 0o P(atm) V(l) 1.002 22.37 0.8067 27.78 0.6847 32.73 0.5387 41.61 0.3550 63.10 0.1937 115.65 a 0o ARGON P(atm) V(l) 1.000 22.4 11.10 2.000 32.79 0.667 43.34 0.500 53.68 0.400 63.68 0.333
Representa gr acamente el volumen frente a la presi on en ambos gases. Comprueba que el helio es un gas que verica la ley de Boyle-Mariotte: P V = constante, pero que el arg on no cumple exactamente esta ley. Para ello, deber as representar el producto P V para cada gas. El programa se llamar a mariotte.m.
120 Helio a 0C 110
25 Argon a 0C
100
20
90
80 Volumen(l)
15 Volumen(l) 10 5 0 0
70
60
50
40
30
20 0.1
0.2
0.3
0.4
0.5
0.8
0.9
1.1
20
40
60 Presion(atm)
80
100
120
40
22.416 Helio a 0C: P*V
22.414
36
22.412
34
22.41
32 P*V
P*V
22.408
30
28
22.406
26
22.404
24
22.402
22
22.4
1.5
2.5
3.5
4.5
5.5
20
1.5
2.5
3.5
4.5
5.5
Universitat Jaume I
3-15
A
O
R
AB
B
C
R
BC
C
O
Podemos obtener una aproximaci on a la energ a de vibraci on de este modo normal mediante el potencial de Morse, seg un la siguiente ecuaci on: Evib = VAB (RAB ) + VBC (RBC ) donde VXY (R) = dXY e2AXY (RBXY ) 2eAXY (RBXY ) . En esta ecuaci on RXY es la distancia entre los atomos X e Y , y el resto de par ametros para . el CO2 son: dAB = dBC = 7.65eV , bAB = bBC = 1.162A Variando los valores de RAB y RBC , obt en la superf cie de energ a potencial para este modo normal de vibraci on del CO2 , y la superf cie de contorno asociado.
Superficie de energia potencial del CO2
Energia (u.a.)
0.6 0.8
Ingenier a Qu mica
Programaci on en Octave