matlab como graficador (versión 2)

10
MÉTODOS NUMÉRICOS II CLASE: MATLAB/OCTAVE COMO GRAFICADOR DE FUNCIONES Problematizador: JUAN CARLOS SOTILLO MENESES Introducción Como ya sabemos, podemos usar MATLAB y OCTAVE como una calculadora bastante avanzada, que además permite el aprovechamiento de las bondades de contar con las capacidades gráficas propias de un computador. Las calculadoras, por más avanzadas y gráficas que sean, no cuentan con procesadores gráficos y niveles de “nitidez” gráfica como los que posee un computador; acaso los teléfonos de nueva generación tengan mejores rendimientos gráficos, pero en ellos no son muy usuales las aplicaciones dedicadas a matemáticas, aunque ya vemos unas cuantas que más temprano que tarde podrán ofrecer lo que aquí haremos con MATLAB y OCTAVE. Como sabemos, Matlab y Octave hacen uso de las matrices como su objeto básico de cómputo. Un número es una matriz de dimensiones 1x1 y un vector en un espacio numérico de dimensión n es una matriz 1xn [vector fila] o una de dimensión nx1 [vector columna]. Así las cosas, no es raro que para graficar también sean ciertas matrices [en realidad, serán vectores fila] los que tomen el protagonismo. Aquí vamos a tener que hacer distinción entre dos conceptos que, en principio, se pueden considerar equivalentes en MATLAB y OCTAVE, pero que en el ámbito de la computación en general tienen significados y usos distintos. Se trata de los conceptos de vector y de arreglo. Para nosotros, conocedores de la matemática y la física, un vector es un arreglo ordenado de números que tiene la forma ; cuando decimos que dicho arreglo es “ordenado” estamos diciendo, simplemente, que hay una distinción esencial entre dos vectores si cambiamos de lugar cualesquiera dos de sus componentes (las componentes son, en el caso de cada uno de los números que 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, implícitamente, que ambos programas ven a las matrices y vectores como objetos matemáticos, para los que existen, por tal razón, varias reglas mediante las cuales se puede operar con ellos. Así, MATLAB y OCTAVE conocen la reglas para suma, resta y multiplicación de matrices y vectores tal y como se definen en el álgebra lineal (área de las matemáticas que estudia dichos objetos, sus “consecuencias” y resultados)

Upload: ricardo-perez

Post on 12-Aug-2015

86 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MATLAB COMO GRAFICADOR (versión 2)

MÉTODOS NUMÉRICOS II

CLASE: MATLAB/OCTAVE COMO GRAFICADOR DE FUNCIONES

Problematizador: JUAN CARLOS SOTILLO MENESES

Introducción

Como ya sabemos, podemos usar MATLAB y OCTAVE como una calculadora bastante avanzada, que además

permite el aprovechamiento de las bondades de contar con las capacidades gráficas propias de un computador. Las

calculadoras, por más avanzadas y gráficas que sean, no cuentan con procesadores gráficos y niveles de “nitidez”

gráfica como los que posee un computador; acaso los teléfonos de nueva generación tengan mejores rendimientos

gráficos, pero en ellos no son muy usuales las aplicaciones dedicadas a matemáticas, aunque ya vemos unas cuantas

que más temprano que tarde podrán ofrecer lo que aquí haremos con MATLAB y OCTAVE.

Como sabemos, Matlab y Octave hacen uso de las matrices como su objeto básico de cómputo. Un número es una

matriz de dimensiones 1x1 y un vector en un espacio numérico de dimensión n es una matriz 1xn [vector fila] o una

de dimensión nx1 [vector columna].

Así las cosas, no es raro que para graficar también sean ciertas matrices [en realidad, serán vectores fila] los que

tomen el protagonismo.

Aquí vamos a tener que hacer distinción entre dos conceptos que, en principio, se pueden considerar equivalentes

en MATLAB y OCTAVE, pero que en el ámbito de la computación en general tienen significados y usos distintos.

Se trata de los conceptos de vector y de arreglo. Para nosotros, conocedores de la matemática y la física, un vector

es un arreglo ordenado de números que tiene la forma ⃗ ; cuando decimos que dicho arreglo es

“ordenado” estamos diciendo, simplemente, que hay una distinción esencial entre dos vectores si cambiamos de

lugar cualesquiera dos de sus componentes (las componentes son, en el caso de ⃗ cada uno de los números que

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,

implícitamente, que ambos programas ven a las matrices y vectores como objetos matemáticos, para los que existen,

por tal razón, varias reglas mediante las cuales se puede operar con ellos. Así, MATLAB y OCTAVE conocen la

reglas para suma, resta y multiplicación de matrices y vectores tal y como se definen en el álgebra lineal (área de las

matemáticas que estudia dichos objetos, sus “consecuencias” y resultados)

Page 2: MATLAB COMO GRAFICADOR (versión 2)

Pero desde el punto de vista computacional podemos también ordenar objetos en general (y no números solamente,

como hace la teoría de vectores y matrices en matemáticas) y a dicho conjunto almacenarlo en alguna variable. A

estas estructuras que pueden contener números u objetos en general (cuál 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 graficación que

veremos ahora, vamos a tener el uso necesariamente entremezclado de los conceptos de matrices y arreglos.

Veamos.

GRAFICACIÓN EN MATLAB Y OCTAVE (nivel [muy] básico)

Primero, recordemos cómo graficábamos funciones en matemática básica. Primero, se nos daba la función ;

luego, nosotros elegíamos “los valores de la 1” que íbamos a utilizar. A partir de estos valores de , elegidos

arbitraria pero inteligentemente, obteníamos los valores de 2 correspondientes a cada valor de .

En MATLAB/OCTAVE la cosa va más o menos igual.

Hagámoslo con un ejemplo.

Queremos graficar la función

Primero, definamos, en un vector, quién va a ser nuestro dominio. Una de las formas de hacerlo es mediante la

función linspace. Esta función tiene la siguiente sintaxis:

linspace(min, max, cantidad)

donde: min = valor mínimo de la variable independiente

max = valor máximo de la variable independiente

cantidad = cantidad de valores entre min y max, ambos inclusive.

Por ejemplo, vamos a graficar la anterior función entre y , (diremos que ) y vamos a

tomar 200 puntos entre -5 y 5. Para ello, la instrucción será:

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

Page 3: MATLAB COMO GRAFICADOR (versión 2)

>> x= linspace(-5, 5, 200) ; [E] OJO: este símbolo indica “pulsar la tecla

ENTER”

Ahora generemos el vector de “variable dependiente”. Recuerde, en este punto, que la variable independiente está

guardada en un vector de longitud 200.

Llamemos al vector de variable dependiente. Así,

>> y = sin(4*x).* exp(- x.^2 /4);

Unas explicaciones acerca de lo que ve en la línea anterior:

1. La función sin(x) calcula el seno del valor x en radianes.

2. Note el punto antes del operador binario de multiplicación (.*) Ese punto allí indica que la multiplicación

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 también el punto que aparece antes del operador ^ (potenciación) Ello es debido a las mismas razones

del punto anterior: MATLAB/OCTAVE no tiene claro qué significa elevar al cuadrado un vector.

Formalmente, sería multiplicar el vector por sí mismo, pero ¿cuál multiplicación de

vectores?¿escalar?¿vectorial? Si se intenta realizar la multiplicación matricial por de un vector por sí mismo,

matemáticamente 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 función sin() no aparece el punto antes del operador de multiplicación

¿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 multiplicación. 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 potenciación, etc.

Y, finalmente, para obtener un gráfico de apariencia básica para la función indicada, escribimos:

>> plot(x,y)

Los pasos anteriores producen el siguiente gráfico:

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

Page 4: MATLAB COMO GRAFICADOR (versión 2)

Si escribimos el comando grid a continuación, obtendremos:

Si queremos graficar varias funciones en una sola gráfica, 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 función y

escribirlo en el mismo comando plot, como ilustramos a continuación.

Grafiquemos la función anterior junto con su “envolvente” exp(- x.^2 /4)en una misma gráfica. Para ello,

generemos un vector z que contenga estos valores, calculados con los mismos valores de x:

>> z= exp(- x.^2 /4);

Page 5: MATLAB COMO GRAFICADOR (versión 2)

Y graficamos así:

>> plot(x,y,x,z) Note que hemos repetido el vector x. de algún modo, estamos graficando “dos pares

de pares ordenados”

Obtenemos el siguiente gráfico:

EJERCICIO #1: grafique, en MATLAB/OCTAVE las siguientes funciones. Si aparece más de

una, debe graficarlas en una misma ventana gráfica:

1. 𝑓 𝑥 𝑥 + 𝑥 + para 𝑥

2. 𝑓 𝑥 𝑠𝑒𝑛 𝑥 cos 𝑥 + para 𝑥 0 𝜋

3. 𝑓 𝑥 𝑥 + 𝑥 + y 𝑓 𝑥 𝑥3 𝑥 + 𝑥 para 𝑥

4. 𝑓 𝑥 𝑥 + 𝑥 + y 𝑓 𝑥 𝑥3 𝑥 + 𝑥 para 𝑥

5. 𝑓 𝑥 cos 𝑥 𝑒 𝑥

6 y su envolvente 𝑒 𝑥

6 para 𝑥

6. Grafique 𝑓 𝑥 𝑥 𝑠𝑒𝑛 𝑥 y su derivada para 𝑥

7. Grafique 𝑔 𝑥 𝑠𝑒𝑛 𝑥 cos 𝑥 y su derivada para 𝑥 𝜋 𝜋

8. Grafique 𝑓 𝑥 𝑥 𝑠𝑒𝑛 𝑥 y su derivada para 𝑥

Page 6: MATLAB COMO GRAFICADOR (versión 2)

Por supuesto, las opciones de graficación básica 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 gráficos tengan

algunas apariencias personalizadas y/o que permitan una comprensión mejor de nuestros gráficos.

También existen distintas maneras de obtener gráficos tridimensionales, de apariencias bastante atractivas. Pero

estos los revisaremos más adelante.

Por ejemplo, el siguiente gráfico

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 línea: la tercera entrada del comando plot, escrita entre

comillas simples, 'r+', expresa que se graficará usando red (r) símbolos de suma (+). Igualmente, si escribiésemos

'b*', obtendríamos un gráfico similar pero con “estrellas” (*) de color azul (b, de blue, azul en inglés). A

continuación, algunos comandos de este estilo, que seguramente le ayudarán a graficar funciones de un modo

mucho más variado:

Page 7: MATLAB COMO GRAFICADOR (versión 2)

Pruebe los siguientes comandos y analice los resultados obtenidos en cuanto a la apariencia de los gráficos:

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

CAMBIANDO EJES

El comando axis se usa ingresando el siguiente comando justo después del comando plot (o cualquier comando que

tiene un plot como una de sus salidas):

axis([xmin, xmax, ymin, ymax])

Por ejemplo, grafiquemos la función para 0

Escribiremos, por ejemplo:

>> t=linspace(0,5);

>> f=exp(5*t)-1;

>> plot(t,f); grid

Y obtenemos:

y amarillo . punto

m violeta o circulo

c celeste x cruz x

r rojo + suma

g verde - solido

b azul * estrella

w blanco : punteado

k negro -. punto y raya

-- a trazos

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

Note que este gráfico es algo difícil de

visualizar, y no s permite entender poco del

comportamiento de la función graficada,

puesto que ésta tiende a infinito

rápidamente.

Page 8: MATLAB COMO GRAFICADOR (versión 2)

Podemos reescalar los ejes para lograr una mejor visualización del comportamiento de la función en puntos de

interés. Por ejemplo, mediante el comando

>> axis([0,1,0,50])

podemos obtener el siguiente gráfico:

que, como se ve, “cuenta” mucho mejor del gráfico de la función , pero para 0 .

SUBPLOTS

Cuando queremos, por alguna razón, graficar varios gráficos 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)

EJERCICIOS #2:

Grafique las funciones del Ejercicio #1 pero ahora todas en el intervalo 𝑡 0

Page 9: MATLAB COMO GRAFICADOR (versión 2)

Producirá el siguiente resultado…

Note que los subplots ocupan una especie

de matriz gráfica donde la ubicación de cada

pequeño gráfico está especificada por el

comando subplot(m,n,k) donde m es

la cantidad de filas de la matriz de gráficos,

n es la cantidad de columnas y k es la

ubicación del pequeño gráfico en dicha

matriz contando como 1 la posición (1,1),

como 2 la posición (1,2), como 3 la posición

(2,1), etc. En el resultado a la izquierda de

este cuadro, note que la posición (2,2)

(dirección subplot(2,2,4)) está vacía.

EJERCICIOS #3:

1. Grafique las primeras cuatro funciones del Ejercicio #1 en una super matriz gráfica de tamaño

4x4.

2. Grafique las funciones 5, 6, 7 y 8 del Ejercicio #1 en una super matriz gráfica de tamaño 4x4.

Page 10: MATLAB COMO GRAFICADOR (versión 2)

ETIQUETAS EN LOS GRÁFICOS

Los comandos

>> clf

>> plot(x,y)

>> xlabel('Etiqueta Eje X')

>> ylabel('Etiqueta Eje Y')

>> title('T’itulo del Grafico')

producen la siguiente ventana gráfica:

Varias observaciones:

1. El comando clf borra las ventanas

gráficas (es abreviatura de clear figures)

2. Dentro de los paréntesis de las etiquetas no

se admiten caracteres acentuados; de allí que

aparezca 'T’itulo … para “simular”

la tilde de “título”

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

título del gráfico la expresión de la función que está graficando.