Está en la página 1de 11

APNDICE 1 INTRODUCCIN AL MATLAB

Matlab (abreviatura de MAtrix LABoratory) es un utilitario que permite resolver problemas matemticos. Realiza anlisis numricos (clculo estadstico, resolucin de ecuaciones y sistemas, ecuaciones diferenciales e integrales, etc.), procesamiento de seales y grficos mediante un mecanismo sencillo, utilizando comandos (conjunto de instrucciones que le indican al programas que acciones debe tomar); tambin existen bibliotecas especficas que son de gran ayuda en la vida del ingeniero. Por esta razn es importante que todos los integrantes de los grupos aprendan a usarlo, especialmente aquellos estudiantes que no tiene experiencia en programacin. Este material es simplemente una introduccin para el uso en Laboratorio 1, pero no pretende ser un manual del programa. Matlab utiliza como herramienta fundamental las matrices rectangulares de elementos reales o complejos (de ah su nombre) ; tngase en cuenta que los vectores son matrices de una fila (o una columna) y que los escalares son matrices de una fila y una columna.

1.- Cmo Empezamos?


Los estudiantes debern concurrir a clase con dos disquetes, uno permanecer en el laboratorio y el otro se lo quedarn los estudiantes. Los disquetes sern formateados cada vez que entren al Laboratorio, por les pongan informacin que necesiten y controlenlos por si se contaminaran. Es importante mencionar que nosotros utilizaremos la versin ... de Matlab para DOS y que existen ciertas diferencias con la versin para Windows. Primeramente se deja cargar el sistema operativo (conjunto de comandos bsicos para la comunicacin con el ordenador), luego abrimos matlab: C: \matlab Una vez que aparezca la indicacin de MATLAB, que es el smbolo >>, ya se pueden teclear los comandos que se explicarn en esta seccin. Para salir de Matlab teclee: >>quit En Windows se entra y sale como en cualquir aplicacin. En el Laboratorio existe un programa que al prender la mquina ya abre MATLAB.

Ayuda: Si no entiende bien el significado de un comando, teclee help y el nombre del comando en cuestin. Por ejemplo, queremos saber que hace el comando quit: >> help quit QUIT Quit MATLAB session. QUIT terminates MATLAB without saving the workspace. To save your workspace variables, use SAVE before quitting. See also SAVE.

2.- Cmo usar Matlab?


MATLAB normalmente se usa en su modo manejado por comandos, cuando se ingresan stos se ingresan en su lnea de comandos (aquella con el smbolo >>), el programa los procesa inmediatamente y despliega el resultado. Los comandos ingresados anteriormente pueden ser accedidos por medio de la tecla flecha arriba. Tambin es capaz de ejecutar secuencias de comandos almacenadas en archivos, estos son los archivos .m (nombrearchivo.m) y se detallrn ms adelante.

3.- Variables en MATLAB


Una variable es un espacio en memoria al cual se le asigna una etiqueta (nombre) que lo caracteriza del resto y un contenido, este puede ser numrico, lgico o carcter. La etiqueta debenser 8 caracteres que deben empezar con una letra Como ya dijimos en Matlab las variables sern matrices, dos variables no pueden tener la misma etiqueta como as tampoco un archivo .m puede tener el mismo nombre que una variable. Para Matlab no es lo mismo una variable en maysculas.que en minsculas: valor Valor y es importante al asignarle la etiqueta que esta este relacionado con el significado de la misma, ej. si quiero agregarle el IVA a un precio, a la variable la llamar: prec_iva La forma ms sencilla de definir matrices es ingresar en forma explcita la lista de sus elementos: A = [3 9 5 208 1 4] Esta misma matriz se puede escribir de la siguiente manera: Operador ; como ltimo elemento de una frase, el comando es ejecutado pero el resultado no se mostrar; en el ingreso de matrices indica el final de una fila (salvo la ltima) A = [3 9 5; 2 0 8; 1 4] Veamos ahora un vector fila de 4 elementos: v= [3/5 1 -4 2.77]

Y un vector columna de 3 elementos: Vec= [86.1 5*i sqrt(8)] que tambin puede escribirse: Vec= [ 86.1; 5*i; sqrt(8)]' donde el apstrofe indica la matriz traspuesta de la anterior. Operador :utilizado para crear vactores, indexar matrices, y para especificar iteraciones for (por ms informacin teclee help for). Por ejemplo, j:k es equivalente a [j j1...k], A(:,j) es la columna j de A. Ejemplos: C= 1:5 indica un vector fila cuyos elementos son 1,2,3,4,5. D= 0:.25:1 indica un vector fila cuyos elementos son 0,.25,.5,.75,1 Cmo borrar variables: Al ejecutar los comandos, MATLAB memoriza las variables utilizadas. Sus valores permanecen en memoria hasta que se sale de MATLAB o hasta que se borran las variables, lo cual se hace con el comando clear. Si slo se desea borrar algunas variables, sus nombres se indican despus de la palabra clear, por ejemplo: clear x y z Como borrar la ventana de comandos: Si desea borrar la ventana, utilice el comando clc 4.- COMO SELECCIONAR ELEMENTOS DE UNA MATRIZ A(i,j) esel elemento de la fila i columna j. A(1,4) es el elemento a14 A(:,2) es toda la segunda columna de la matriz A. A(3,:) es toda la tercer fila. A(:) es un vector columna formado con las columnas de A una debajo de la otra.

5.- COMENTARIOS EN MATLAB


Para escribir comentarios en un programa (sin que aparezcan en pantalla) se utiliza el smbolo % al comienzo de cada rengln. Comentar un programa es muy importante, aclarar cada paso para que otra persona o el mismo programador lo comprendan mejor. Ej: Edad = 21; % Tengo 21 aos y no quieroque se muestre en pantalla

6.- OPERACIONES CON MATRICES


S =A + B define una matriz S cuyos elementos son la suma de los elementos correspondientes de las matrices A y B respectivamente. D = A - B define una matriz D cuyos elementos son la diferencia de los elementos

correspondientes de las matrices A y B respectivamente. En los dos casos anteriores las matrices A y B deben tener las mismas dimensiones a menos que una de ellas sea un escalar. Si B denota un escalar entonces el resultado S (o D) ser una matriz cuyos elementos sern los elementos de la matriz A sumados al (o disminuidos en el) escalar. P = AB asigna a la matriz P el producto de las matrices A con B. El nmero de columnas de A debe ser igual al nmero de filas de B (si ni A ni B denotan un escalar). Si A (o B) es un escalar entonces todos los elementos de B quedan multiplicados por ese escalar. p= bu con b un vector fila y u un vector columna asigna a la variable p el producto escalar de b con u. A/B es equivalente al producto de la matriz A por la matriz inversa de B, es decir Ainv(B). Colocando un punto delante del operador, este actua elemento a elemento: A.B (A./B) denota multiplicacin (divisin) elemento por elemento. Ej.: sea q = [ 4 5 6 7], entonces, q.q = [ 16 25 36 49], que es lo mismo que q.^2. La solucin de un sistema de ecuaciones lineales Ax=b se obtiene directamente con la sentencia x=A\b.

7.- LECTURA Y ESCRITURA


Muchas veces se necesita introducir y guardar datos desde MATLAB, para ello existen distintas opciones: a) Lectura de entradas de un teclado: MATLAB puede aceptar datos de entrada a travs del teclado mediante el comando input. Sise desea leer un nmero, un enunciado bsico sera: z = input(Teclee el radio: ) La parte Teclee el radio: es un mensaje de solicitud que se exhibe en la pantalla. Cuando se teclee el valor del radio y se pulse reeturn (intro), el dato se guardar en z. El valor introducido puede ser uyn escalar o un vector si se coloca entre parntesis rectos: Teclee el radio: [0.1 0.2 0.5] Tambien es posible introducir cadena de caracteres desde el teclado. Un enunciado bsico podra ser: z = input(Indique su nombre: ,s) El segundo argumento, s , indica que la entrada del teclado es una cadena. b) Guardar y cargar datos desde archivos: Si utiliza el comando save slo: save Todas las variables se guardarn en el archivo por omisin matlab.mat. La orden

load es el inverso de save y recupera las variables guardadas en matlab.mat. Se puede especificar el nombre de archivo colocndolo despus de save: Ej: save nom_arch

Guarda todas las variables en el archivo nom_arch.mat. Si slo deseo guardar ciertas variables, escriba sus nombres despus del nombre del archivo: save nom_arch a b c En el ejemplo, a, b y c se guardan en el archivo llamado nom_arch.mat. No separe el nombre del archivo del nombre de las variables por una coma. Observacin: las mismas opciones vistas para save sirven para load. Guardar y cargar en formato ASCII: Los comando save y load con la opcin ASCII son importantes en la interaccin de MATLAB con otros lenguajes (por ejemplo PASCAL) Si se desea el formato ASCII, agregue ascii despus del nombre de las variables; por ejemplo: save datos.tmp x ascii guarda la variable x en formato ASCII de 8 dgitos en el archivo datos.tmp. El comando load lee un archivode datos y lo guarda en una variable, pero la carga de un archivo en formato ASCII no es exactamente el inverso de save en formato ASCII. La razn es que si bien save en ASCII puede escribir mltiples variables, load lee todo el archivo de datos y lo coloca en una variable que tiene como nombre el nombre del archivo. Por ejemplo, cargamos un archivo llamado y_datos.e con: load y_datos.e el contenido se carga en la variable y_datos sea cual sea la extensin.

8.- FUNCIONES TILES


sin(x), cos(x), tan(x), sqrt(x), exp(x), atan(x), acos(x) son funciones que operan sobre cada elemento de la matriz que figura como argumento. round(x) fix(x) floor(x) ceil(x) sum(x) prod(x) rem(x,n) ones(A) ones(m,n) ones(n) zeros(n) eye(A) redondea los elementos de x al entero ms cercano. elimina las cifras decimales. indica el entero ms cercano menor o igual a x. indica el entero ms cercano mayor o igual a x. suma los elementos de cada columna de la matriz x expresando esos resultados en un vector fila. multiplica los elementos de cada columna de la matriz x expresando esos resultados en un vector fila. indica el resto de la divisin de x por n. es una matriz de las mismas dimensiones que A pero cuyos elementos son 1. es una matriz de m filas por n columnas cuyos elementos son 1 es una matriz n x n de unos. es una matriz de n*n ceros. es una matriz unitaria del mismo formato que la matriz cuadrada A.

inv(A) rand(A)

es la matriz inversa de la matriz cuadrada A. es una matriz del mismo formato que A cuyos elementos son tomados al azar en el intervalo (0,1).

9.- ARCHIVOS .M
Muchas veces tenemos que ejecutar muchas lneasde comandos, hacerlo en la ventana de comandos no es ventajoso pues dificulta la correccin de errores y al salir del programa uno pierde lo escrito. Lo ms conveniente es que el usuario escriba las lneas en un archivo de texto que tenga como extensin .M que MATLAB ejecutar secuencialmente (paso a paso). Reciben el nombre indicado anteriormente debido a que el Matlab solamente los reconocer (y, por lo tanto, los ejecutar) si sus nombres terminan en ".M". Otro tipo de "ARCHIVOS . M" son los llamados "archivos-funcin", los cuales permiten agregar nuevas funciones a las ya existentes. La creacin de estos archivos requiere del empleo de un "editor", en la clase utilizaremos el NORTON EDITOR pero existen otras posibilidades (editor de MS-DOS, xtgold o bloc de notas). Se debe asegurar que MATLAB conoce la ruta de acceso al archivo (debe estar en algunos de los directorios de trabajo). Cmo escribir funciones de usuario propias? Las funciones en MATLAB, que se guardan como archivos .M independientes, equivalen a las subrutinas y funciones de otros lenguajes. Ej: quiero una funcin que verifique la siguiente ecuacin para todo x :

f ( x) =

2 x 3 + 7 x 2 + 3x 1 x 2 3x + 5 e x

Suponiendo que el archivo M se guarda como demof.m , su guin sera el siguiente: function y = demof(x) %doy el nombre a la salida (y) e indico que tiene una entrada (x) y=(2*x.^3+7*x.^2+3*x-1). / (x.^2 - 3*x+5*exp(-x)); %doy la expresin de la %salida en funcin de la entraday no lo muestro.

10.- GRFICAS CON MATLAB


El empleo de grficas es importante desde la educacin inicial hasta la superior, as como para ingenieros y cientficos profesionales por la misma razn. Los comandos que se utilizan son: plot(x,y) hace un grfico que pasa por los puntos (x,y) unindolos mediante segmentos. plot(x,y(:,1)) grafica la primer columna del vector y en funcin de x.

plot(x,y, '* ')

representa, en un sistema de ejes coordenados, los puntos (x,y) mediante asteriscos.

En lugar de * se pueden emplear los siguientes caracteres:+, . , o , x para el dibujo de los puntos. plot(x,y,'* w ') representa, en un sistema de ejes coordenados, los puntos(x,y) mediante asteriscos en color blanco.(En nuestro caso, esto ser importante pues el monitor de nuestra computadora es monocromtico. Por consiguiente, no se vern grficos en los colores azul ni rojo). Color de lnea rojo amarillo magenta turquesa verde azul blanco negro Para borrar una grfica utilice: DOS: clg Windows: clf Otros comandos grficos importantes: subplot, hold, xlabel, ylabel, title, grid, text, axis (buscarlos en help) Ejemplo: Smbolo r y m c g b w k

y = sin( x ) * e 0.4 x

Listado: x = (0:0.2:10) ; %genero un vector x desde 0 a 10 con paso de 0.2 y = sin(x).*exp(-0.4*x); %hallo y a partir de x plot(x,y,w) grid title(y= f(x)) xlabel(x) ylabel(y)

y = f(x ) 0.6

9.0.5 0.4

0.3

0.2

0.1

-0 . 1

-0 . 2 0 1 2 3 4 5 x 6 7 8 9 10

RESOLUCIN DE ECUACIONES DIFERENCIALES.


Para esto recurrimos a las sentencias "ODE23" u "ODE45", que emplean el mtodo de Runge-Kutta para los casos de ecuaciones diferenciales. La sentencia ODE45 es ms exacta por usar aproximaciones de 4to y 5to orden. Para exactitud media, ODE23 usa pares de frmulas de 2do y 3er orden (ver Apndice 4). En ambos casos, se deber reescribir la ecuacin como un sistema de ecuaciones de primer orden. Ejemplo: + x 2 1 x + x = 0 x

(ec. A3.1) esta ecuacin se puede reescribir como un sistema de ecuaciones diferenciales de primer orden: x1 = x1 ( 1 x 2 ^ 2) x 2 x 2 = x1 (ec. A3.2) (ec. A3.3)

El siguiente paso para simular este sistema consiste en crear un archivo-funcin .M conteniendo esta ecuacin diferencial. Llammoslo "Ecua.M": function xdot = Etex(t,x) xdot(1) = x(1) * (1-x(2)^2) - x(2); xdot(2) = x(1); RESOLUCION DE LA ECUACION : Para resolver la ecuacin,(en un archivo aparte o en el ambiente matlab) se invoca

SU H

la sentencia "ODE23", indicando el intervalo deseado (to,tf) y las condiciones iniciales (xo en este caso). Por ejemplo: to = 0; tf = 20; xo = [0 0.25]; (donde el primer valor corresponde a x(1) inicial y el segundo a x(2) inicial). La sentencia que resuelve la ecuacin es: [t,x] = ode23('ecua',to,tf,xo); la cual resuelve numricamente la ecuacin permitiendo graficar x(1) vs. t, y x(2) vs t, las cuales se obtienen mediante la sentencia: plot(t,x(:,1)) plot(t,x(:,2))

10.- RESOLUCIN DE UN PROBLEMA FSICO CON MATLAB:


A continuacin se presentar un ejemplo muy similar a losque se deben resolver para la primer clase del curso: Problema: Se dispone de un recipiente el cual se llena con un fluido incompresible partiendo de una altura inicial Ho. Sea U el caudal de entrada y Q el de salida. La seccin del recipiente es S y la vlvula cumple:
Q=K H

Planteo conservacin del volumen:


H S =U Q H S =U K H U K H H= S H (0) = Ho

Obtenemos una ecuacin diferencial de primer orden no lineal donde queremos hallar H(t), para ello utilizo MATLAB Considero la variable h representara la altura El primer paso es generar la funcin que representa la ecuacin diferencial en un archivo .M (tomo ecua.m): function alt = fun(t,h) % tomo como entradas el vector t y h global U K S % slo necesario en Windows alt(1)= U/S K* sqrt(h)/S; Ahora genero el programa principal que llama a la funcin en otro archivo .M (tomo principa.m) clear clc U=input(Ingrese caudal de entrada (m3/s): ); S=input(Ingrese superficie del recipiente (m2) : ); K=input(Ingrese constante de la vlvula (m5/2/s): ); to=input(Ingrese tiempo inicial (s): ); tf=input(Ingrese tiempo final (s): ); ho=input(Ingrese altura inicial (m): ); global U S K [t,h]=ode23(ecua,to,tf,ho) plot(t,h) title(Altura vs tiempo) ylabel(altura(m)) xlabel(tiempo(s)) Ejemplo con: U = 2m3/s S = 2m2 K= 0.9 m5/2/s Ho= 5 m

A lt u ra vs t ie m p o 5 4.995 4 .99 4.985 4 .98 a lt u ra (m ) 4.975

4 .97 4.965 4 .96 4.955 4 .95 0 2 4 6 8 t ie m p o (s ) 10 12 14 16