Professional Documents
Culture Documents
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.
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.
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.
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.
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.
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.
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
(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))
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