You are on page 1of 10

MTODOS NUMRICOS II CLASE: MATLAB/OCTAVE COMO GRAFICADOR DE FUNCIONES Problematizador: JUAN CARLOS SOTILLO MENESES

Introduccin
Como ya sabemos, podemos usar MATLAB y OCTAVE como una calculadora bastante avanzada, que adems permite el aprovechamiento de las bondades de contar con las capacidades grficas propias de un computador. Las calculadoras, por ms avanzadas y grficas que sean, no cuentan con procesadores grficos y niveles de nitidez grfica como los que posee un computador; acaso los telfonos de nueva generacin tengan mejores rendimientos grficos, pero en ellos no son muy usuales las aplicaciones dedicadas a matemticas, aunque ya vemos unas cuantas que ms temprano que tarde podrn ofrecer lo que aqu haremos con MATLAB y OCTAVE. Como sabemos, Matlab y Octave hacen uso de las matrices como su objeto bsico de cmputo. Un nmero es una matriz de dimensiones 1x1 y un vector en un espacio numrico de dimensin n es una matriz 1xn [vector fila] o una de dimensin nx1 [vector columna]. As las cosas, no es raro que para graficar tambin sean ciertas matrices [en realidad, sern vectores fila] los que tomen el protagonismo. Aqu vamos a tener que hacer distincin entre dos conceptos que, en principio, se pueden considerar equivalentes en MATLAB y OCTAVE, pero que en el mbito de la computacin en general tienen significados y usos distintos. Se trata de los conceptos de vector y de arreglo. Para nosotros, conocedores de la matemtica y la fsica, un vector es un arreglo ordenado de nmeros que tiene la forma ; cuando decimos que dicho arreglo es que ordenado estamos diciendo, simplemente, que hay una distincin esencial entre dos vectores si cambiamos de lugar cualesquiera dos de sus componentes (las componentes son, en el caso de cada uno de los nmeros lo componen); es decir, por ejemplo: como vectores o tripletas ordenadas.

Cuando decimos que MATLAB y OCTAVE trabajan basados en matrices (o vectores) estamos diciendo, implcitamente, que ambos programas ven a las matrices y vectores como objetos matemticos, para los que existen, por tal razn, varias reglas mediante las cuales se puede operar con ellos. As, MATLAB y OCTAVE conocen la reglas para suma, resta y multiplicacin de matrices y vectores tal y como se definen en el lgebra lineal (rea de las matemticas que estudia dichos objetos, sus consecuencias y resultados)

Pero desde el punto de vista computacional podemos tambin ordenar objetos en general (y no nmeros solamente, como hace la teora de vectores y matrices en matemticas) y a dicho conjunto almacenarlo en alguna variable. A estas estructuras que pueden contener nmeros u objetos en general (cul ser va a depender del uso que de ellos haremos) se les denomina arreglos, y no llevan con ellos necesariamente a diferencia de las matrices y vectores del lgebra lineal- las operaciones usuales que se hacen con vectores y matrices. En las rutinas de graficacin que veremos ahora, vamos a tener el uso necesariamente entremezclado de los conceptos de matrices y arreglos. Veamos.

GRAFICACIN EN MATLAB Y OCTAVE (nivel [muy] bsico) Primero, recordemos cmo graficbamos funciones en matemtica bsica. Primero, se nos daba la funcin luego, nosotros elegamos los valores de la
1

que bamos a utilizar. A partir de estos valores de , elegidos


2

arbitraria pero inteligentemente, obtenamos los valores de En MATLAB/OCTAVE la cosa va ms o menos igual. Hagmoslo con un ejemplo. Queremos graficar la funcin

correspondientes a cada valor de .

Primero, definamos, en un vector, quin va a ser nuestro dominio. Una de las formas de hacerlo es mediante la funcin linspace. Esta funcin tiene la siguiente sintaxis: linspace(min, max, cantidad) donde: min = valor mnimo de la variable independiente max = valor mximo de la variable independiente cantidad = cantidad de valores entre min y max, ambos inclusive. Por ejemplo, vamos a graficar la anterior funcin entre tomar 200 puntos entre -5 y 5. Para ello, la instruccin ser: y , (diremos que ) y vamos a

1 2

A esta la llamamos variable independiente. A estos valores los llamamos variables dependientes.

>> x= linspace(-5, 5, 200) ;

[E]

OJO: este smbolo indica pulsar la tecla

ENTER Ahora generemos el vector de variable dependiente. Recuerde, en este punto, que la variable independiente guardada en un vector de longitud 200. est

Llamemos

al vector de variable dependiente. As,

>> y = sin(4*x).* exp(- x.^2 /4); Unas explicaciones acerca de lo que ve en la lnea anterior: 1. La funcin sin(x) calcula el seno del valor x en radianes. 2. Note el punto antes del operador binario de multiplicacin (.*) Ese punto all indica que la multiplicacin del vector3 sin(4*x)por el vector exp(- x.^2 /4) se est haciendo componente a componente [o sea, pensando los vectores mencionados como si fuesen arreglos y no como vectores de lgebra lineal] 3. Note tambin el punto que aparece antes del operador ^ (potenciacin) Ello es debido a las mismas razones del punto anterior: MATLAB/OCTAVE no tiene claro qu significa elevar al cuadrado un vector. Formalmente, sera multiplicar el vector por s mismo, pero cul multiplicacin de vectores?escalar?vectorial? Si se intenta realizar la multiplicacin matricial por de un vector por s mismo, matemticamente habr una inconsistencia de dimensiones (vector 1x200 multiplicado por vector 1x200 no tiene sentido si pensamos estos vectores como matrices e intentamos multiplicarlos como matrices) 4. Note que en el argumento de la funcin sin() no aparece el punto antes del operador de multiplicacin por qu? 5. MORALEJA: si queremos multiplicar la componente 1 del vector 1 por la componente 1 del vector 2, tenemos que colocar el punto antes del operador de multiplicacin. Si queremos elevar a una potencia la componente 1 del vector 1, la componente 2 del vector 1, etc. tenemos que colocar el punto antes del operador de potenciacin, etc. Y, finalmente, para obtener un grfico de apariencia bsica para la funcin indicada, escribimos: >> plot(x,y) Los pasos anteriores producen el siguiente grfico:

ve usted por qu sin(x) es un vector?

Si escribimos el comando grid a continuacin, obtendremos:

Si queremos graficar varias funciones en una sola grfica, usando el mismo dominio para la variable independiente x, lo nico que tenemos que hacer es generar un nuevo vector de variable dependiente para la nueva funcin y escribirlo en el mismo comando plot, como ilustramos a continuacin. Grafiquemos la funcin anterior junto con su envolvente exp(- x.^2 /4)en una misma grfica. Para ello, generemos un vector z que contenga estos valores, calculados con los mismos valores de x: >> z= exp(- x.^2 /4);

Y graficamos as: >> plot(x,y,x,z)


Note que hemos repetido el vector x. de algn modo, estamos graficando dos pares de pares ordenados

Obtenemos el siguiente grfico:

EJERCICIO #1: grafique, en MATLAB/OCTAVE las siguientes funciones. Si aparece ms de una, debe graficarlas en una misma ventana grfica: 1. 2. 3. 4. 5. + + + + + + cos
6

para cos + y y para 3 3 0 para para + +


6

y su envolvente

para

6. Grafique 7. Grafique 8. Grafique

y su derivada para cos y su derivada para y su derivada para

Por supuesto, las opciones de graficacin bsica de funciones con MATLAB y OCTAVE no se limitan a las que acabamos de aprender, sino que, usando ciertos comandos extra, podemos lograr que nuestros grficos tengan algunas apariencias personalizadas y/o que permitan una comprensin mejor de nuestros grficos. Tambin existen distintas maneras de obtener grficos tridimensionales, de apariencias bastante atractivas. Pero estos los revisaremos ms adelante. Por ejemplo, el siguiente grfico

Se obtiene mediante la secuencia de comandos >> x=linspace(-5,5,100); >> y = sin(4*x).* exp(- x.^2 /4); >> plot(x,y,'r+') >> grid Donde el comentario pertinente es acerca de la tercera lnea: la tercera entrada del comando plot, escrita entre comillas simples, 'r+', expresa que se graficar usando red (r) smbolos de suma (+). Igualmente, si escribisemos 'b*', obtendramos un grfico similar pero con estrellas (*) de color azul (b, de

blue,

azul en ingls). A

continuacin, algunos comandos de este estilo, que seguramente le ayudarn a graficar funciones de un modo mucho ms variado:

y m c r g b w k

amarillo violeta celeste rojo verde azul blanco negro

. o x + * : -. --

punto circulo cruz x suma solido estrella punteado punto y raya a trazos

Pruebe los siguientes comandos y analice los resultados obtenidos en cuanto a la apariencia de los grficos:
1. x = linspace(0,2*pi,50);
y = sin(x); z = cos(x); plot(x,y,'r', x,z,'gx')

2. x = linspace(0,2*pi,50);
y = sin(x); plot(x,y,'r') z = cos(x); hold on plot(x,z,'gx') hold off

Investigar: qu hacen los comandos hold on y hold off ?

CAMBIANDO EJES

El comando axis se usa ingresando el siguiente comando justo despus del comando plot (o cualquier comando que tiene un plot como una de sus salidas): axis([xmin, xmax, ymin, ymax]) Por ejemplo, grafiquemos la funcin Escribiremos, por ejemplo: >> t=linspace(0,5); >> f=exp(5*t)-1; >> plot(t,f); grid Y obtenemos:
Note que este grfico es algo difcil de visualizar, y no s permite entender poco del comportamiento de la funcin graficada, puesto que sta tiende a infinito rpidamente.

para

Podemos reescalar los ejes para lograr una mejor visualizacin del comportamiento de la funcin en puntos de inters. Por ejemplo, mediante el comando >> axis([0,1,0,50]) podemos obtener el siguiente grfico:

que, como se ve, cuenta mucho mejor del grfico de la funcin

, pero para

EJERCICIOS #2: Grafique las funciones del Ejercicio #1 pero ahora todas en el intervalo 0

SUBPLOTS Cuando queremos, por alguna razn, graficar varios grficos conjuntamente, podemos usar el comando subplot para lograr tal efecto. Por ejemplo, los siguientes comandos >> >> >> >> >> >> >> >> >> >>
x = linspace(0,2*pi,50); y = sin(x); z = cos(x); w = tan(x); subplot(2,2,1) plot(x,y) subplot(2,2,2) plot(x,z) subplot(2,2,3) plot(x,w)

Producir el siguiente resultado

Note que los subplots ocupan una especie de matriz grfica donde la ubicacin de cada pequeo grfico est especificada por el comando subplot(m,n,k) donde m es la cantidad de filas de la matriz de grficos, n es la cantidad de columnas y k es la ubicacin del pequeo grfico en dicha matriz contando como 1 la posicin (1,1), como 2 la posicin (1,2), como 3 la posicin (2,1), etc. En el resultado a la izquierda de este cuadro, note que la posicin (2,2) (direccin subplot(2,2,4)) est vaca.

EJERCICIOS #3:
1. Grafique las primeras cuatro funciones del Ejercicio #1 en una super matriz grfica de tamao

4x4.
2. Grafique las funciones 5, 6, 7 y 8 del Ejercicio #1 en una super matriz grfica de tamao 4x4.

ETIQUETAS EN LOS GRFICOS Los comandos >> clf >> plot(x,y) >> xlabel('Etiqueta Eje X') >> ylabel('Etiqueta Eje Y') >> title('Titulo del Grafico') producen la siguiente ventana grfica:
Varias observaciones: 1. El comando clf borra las ventanas grficas (es abreviatura de clear figures) 2. Dentro de los parntesis de las etiquetas no se admiten caracteres acentuados; de all que aparezca 'Titulo para simular

la tilde de ttulo 3. Por supuesto, usted puede colocar el nombre que usted desee entre comillas simples como argumento de xlabel, ylabel y title.

EJERCICIOS #4:
3. Coloque las etiquetas adecuadas a todas las funciones graficadas en el ejercicio #1. Coloque como

ttulo del grfico la expresin de la funcin que est graficando.