You are on page 1of 18

Laboratorio I Instituto de Fsica Facultad de Ingeniera

LABORATORIO 1 2008 PRACTICA 1 INTRODUCCIN AL MATLAB


Resolveremos algunos problemas de fsica utilizando el Matlab como herramienta. De esta forma podremos familiarizarnos con el Matlab y comprender programas que utilizaremos ms adelante.

PROBLEMA 1
Una masa de 1 kg se encuentra unida a un resorte de constante 25 N/m. a) Sabiendo que la ecuacin de movimiento de la masa es de la forma x (t ) = x 0 cos ( t + ) k m x(t) x

y que en el instante t=0 la masa se suelta (sin velocidad inicial) desde una distancia de 10 cm de la posicin de equilibrio, escribir una expresin para el desplazamiento y la velocidad de la masa en funcin del tiempo ( recordar que = k m ). b) Graficar la posicin y la velocidad de la masa durante los primeros tres ciclos de movimiento. c) Hallar y graficar la energa cintica y potencial en funcin del tiempo. d) Graficar la suma de ambas energas en funcin del tiempo (en la misma grfica de la parte anterior).

PROBLEMA 2

r r Fb = b v

Considere el movimiento de un paracaidista de masa m = 80 kg, que cae en forma vertical por la accin de la gravedad, r r P = mg frenado por una fuerza de rozamiento r r Fb = bv , con b = 100 Ns/m. a) Halle una expresin para la posicin y la velocidad del paracaidista en funcin del tiempo, si a t = 0 inicia su salto sin velocidad inicial a una altura h = 1000 m del suelo. b) Grafique las expresiones halladas en la parte (a). Utilice una escala de tiempo de 0 a 2 segundos para ver la parte inicial del movimiento y otra mayor para estudiar el movimiento del paracaidista cuando ste se aproxima al suelo. c) Cunto tarda el paracaidista en llegar al suelo?

Laboratorio I Instituto de Fsica Facultad de Ingeniera

PROBLEMA 3
Considere un proyectil lanzado desde la superficie de la Tierra con velocidad vo cuya direccin forma un ngulo con la horizontal. Escribir un programa en MATLAB que permita: del tiempo. Tanto como vo sern ingresados como datos por el usuario. b) Obtener una grfica de la trayectoria del proyectil para varios valores de con vo=100 m/s. Para qu valor del ngulo es mximo el alcance: 30, 45 o 60?
a) Obtener los grficos de las componentes de la velocidad (horizontal y vertical) en funcin

NOTA: Se considerar que el movimiento est afectado solamente por la aceleracin de la gravedad (constante y uniforme). INFORME: El grupo deber entregar un informe que contendr la resolucin de los ejercicios propuestos, las grficas obtenidas en MATLAB y el listado de los programas realizados.

r v0

alcance x

Laboratorio I Instituto de Fsica Facultad de Ingeniera

INTRODUCCIN AL MATLAB
Este material es simplemente una introduccin para el uso en Laboratorio 1, no pretende ser un manual del programa. Los estudiantes debern concurrir a clase con dos disquetes: uno para el uso en el Laboratorio, el otro para uso personal, y para llevarse lo hecho durante la clase. Los disquetes sern formateados cada vez que entren al Laboratorio, por lo que deben dejar siempre toda la informacin necesaria para elaborar el informe en el disquete del laboratorio.

MATLAB, abreviatura de MAtrix LABoratory, es un programa desarrollado para resolver problemas matemticos. Entre los usos ms frecuentes se encuentran: Anlisis numricos Clculo estadstico Resolucin de ecuaciones y sistemas Resolucin de ecuaciones diferenciales Integrales Procesamiento de seales Grficos Existen bibliotecas especficas que son de gran ayuda en la vida del ingeniero, proporcionando herramientas especficas para una gran variedad de situaciones. La operacin del MATLAB utiliza comandos, es decir un conjunto de instrucciones que le indican al programa que acciones debe tomar (por ejemplo efectuar una operacin, mostrar un grfico, etc). Los comandos se ingresan a travs de la consola del programa o prompt, digitando los mismos en la secuencia deseada1.
Ejemplo: >> 7+3 ans = >> 10 presione Enter (Intro)

()
MATLAB muestra el resultado: 7+3 = 10

El smbolo >> indica que MATLAB aguarda que ingresemos un comando. Luego de escribir 7+3 y presionar , se efecta el clculo y se muestra la respuesta. ans = es la abreviatura de answer, que significa respuesta, que en este caso es 10.

MATLAB tambin incorpora un lenguaje de programacin sumamente intuitivo. Los programas consisten simplemente de una secuencia de comandos (que tambin podran ser ejecutados en la consola), guardada en un archivo de extensin .m sin ningn formato especial: directamente escribimos el comando deseado2. Algunas estructuras de control permiten la toma de decisiones, como por ejemplo la sentencia if. El modo de trabajo fundamental del MATLAB es a travs de matrices rectangulares (de ah su nombre). Las matrices se utilizan como casilleros donde se almacena la informacin utilizada en las operaciones. Las matrices adems cumplen ciertas reglas operativas (por ejemplo el producto matricial) pero por el momento no usaremos estas propiedades.

MATLAB es un programa que ha ido evolucionando desde las primeras pocas de PCs. En las versiones actuales gran parte de la funcionalidad es accesible mediante mens y comandos con el ratn. 2 MATLAB funciona como intrprete de comandos. Es decir, no compila los programas como otros lenguajes. 3

Laboratorio I Instituto de Fsica Facultad de Ingeniera

Para los casos especiales en que las matrices constan de una nica fila o columna tenemos vectores. En el caso extremo, un nmero individual se puede considerar como una matriz de 1x1.
Columna: Fila: 1 2 ... 1 1 1 2 1 3 1 0 ... 2

elemento (2,3)=0
Fila: 1 Columna: 12 1 10 2 1 3 2 ...

elem.(1,2) = elem.(2) = 10

1. Inicio y salida del MATLAB


Para comenzar primeramente se inicia WINDOWS (simplemente se enciende el PC) y luego abrimos MATLAB mediante doble-click en el cono correspondiente:

Una vez que aparezca la indicacin del prompt de MATLAB, que es el smbolo >>, ya se pueden ingresar los comandos3.

Al comienzo debe pasar a la disquetera de 3 (alias A: ). Para eso ingrese el comando cd (change directory) el cual indica la carpeta de trabajo: >> cd a:
Si desea salir de MATLAB teclee4:

>> quit
3 4

El PROMPT indica al usuario que el programa esta preparado para recibir rdenes.

Tambin se puede cerrar como con cualquier aplicacin de WINDOWS; la informacin no se guarda automticamente vea Lectura y escritura de datos. 4

Laboratorio I Instituto de Fsica Facultad de Ingeniera

2. Para saber qu hace cada comando: comando de 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. your workspace variables, use SAVE before quitting. See also SAVE. El comando help sin ningn parmetro muestra todas las categoras de ayuda del MATLAB. Se puede acceder al archivo de ayuda en formato de Windows a travs del men de ayuda (en la mayora de los casos la informacin es la misma). Aunque en la ayuda las funciones aparecen en mayscula, deben ser escritas con minsculas o se provoca un error.
SUGERENCIA: Aprenda ingls si todava no sabe. Es ms sencillo que el espaol y le permitir el acceso a una cantidad de informacin enorme, no slo en el caso de MATLAB. No es estrictamente necesario saber hablarlo. Con ser capaz de entenderlo en forma escrita es ya un avance sustancial.

To save

3. Variables en MATLAB
Una variable es un espacio en memoria al cual se le asigna una etiqueta o nombre que lo caracteriza y un contenido. La etiqueta puede tener hasta ocho caracteres y debe empezar con una letra. El contenido puede ser numrico, lgico o carcter. Es conveniente que el nombre de las variables o archivos est relacionado con sus contenidos para evitar confusiones y prdidas de tiempo. En MATLAB las variables sern matrices. Dos variables no pueden tener la misma etiqueta ni tampoco un archivo .m puede tener el mismo nombre que una variable5. Se distingue entre maysculas y minsculas: valor Valor VALOR. Existen algunas variables que MATLAB tiene por defecto: pi = 3.14159...; i o j la unidad imaginaria compleja: i 2 = j 2 = -1; ans la ltima respuesta dada por el programa. Estos nombres de etiqueta no estn restringidos y se pueden redefinir, aunque no es recomendable.
Nota: Mencionar a una variable no definida previamente (y que por lo tanto MATLAB desconoce) provoca el siguiente mensaje de error: >>m .??? Undefined function or variable m.

Definicin de variables Para asignar un valor a una variable utilizamos el smbolo de igualdad, =, en la forma general etiqueta = valor

Como veremos, la manera de ejecutar un archivo .m es mediante su nombre, y por ello no debe tener el mismo nombre que una variable. 5

Laboratorio I Instituto de Fsica Facultad de Ingeniera

La etiqueta es cualquier nombre vlido para la variable. El valor normalmente ser una matriz, escribiendo directamente sus elementos o el resultado de algn clculo o funcin. La variable permanecer con este valor hasta ser borrada o ser definida nuevamente. Al definir matrices de la forma ms sencilla ingresamos en forma explcita la lista de sus elementos utilizando corchetes rectos, [ y ] para indicar el comienzo y el final. Los elementos de una fila se separan con un espacio en blanco, y enter o intro, , indica el final de una fila: >>A = [3 9 5 2 0 8 pi 1 4] Para separar filas tambin se utiliza el punto y coma, ;. La misma matriz se puede escribir de la siguiente manera: >>A = [3 9 5; 2 0 8; pi 1 4] Cuando el punto y coma utiliza al final de una lnea de comandos o despus de definir una variable, indica que el resultado, ans , no se muestre en la pantalla. 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 apstrofe6, ', indica la matriz transpuesta de la anterior. La transposicin intercambia el lugar de las filas y columnas: elemento ( i, j) elemento ( j, i).

Generacin de vectores: Operador : Una forma rpida de crear un vector cuyos elementos estn igualmente espaciados es mediante los dos puntos, :. La forma general de usarlos es valor inicial : valor final o valor inicial : paso : valor final Esto indica la generacin de un vector fila cuyo primer elemento es el valor inicial indicado. Los valores sucesivos se calculan sumando el paso al valor inicial. En caso de no indicar ningn paso, el valor por defecto es 1. Se generan todos los valores hasta que, o bien se alcanza el valor final, o el prximo elemento superara el valor final (lo que ocurre si no se alcanza este valor en un nmero exacto de pasos). Ejemplos:
6

Utilice el tilde que est bajo el signo de interrogacin, a la derecha del cero en los teclados de distribucin en espaol. 6

Laboratorio I Instituto de Fsica Facultad de Ingeniera

>>C = 1:5 es equivalente a

>>C = [1:5]

>>C = [1 2 3 4 5] y >>D = 0:0.25:1 equivale a >>D = [0 0.25 0.5 0.75 1] Seleccionar elementos de una matriz: Una vez definida una matriz podemos acceder a los valores guardados en ella mediante su nombre: >>A Este comando provoca que se muestre todo el contenido de la matriz en la pantalla (cuando las matrices son muy grandes el resultado se separa en varias pantallas). Cuando en una operacin o funcin aparece la etiqueta de la matriz, equivale a poner los valores que sta almacena. Si deseamos acceder a un valor particular dentro de un vector o matriz utilizamos los parntesis curvos, ( y ). En general A(i,j) es el elemento de la fila i y la columna j. Si v es un vector, un nico ndice es suficiente, es decir v(n,1) v(n) si v es un vector columna o v(n) v(1,n) si es un vector fila7. Por ejemplo, A(1,4) es el elemento de la primer fila y la cuarta columna, y v(10) el dcimo elemento de v. Para seleccionar un rango de elementos utilizamos nuevamente los dos puntos. En este caso el paso necesariamente debe ser entero. Como ejemplo, >>v(3:7) devuelve los valores del vector del tercer al sptimo elemento: v(3), v(4), v(5), v(6) y v(7). Por ltimo, si no indicamos los valores inicial y final en los dos puntos se selecciona automticamente todo el rango disponible correspondiente de la matriz. Es decir: A(:,2) es toda la segunda columna de la matriz A. A(3,:) es toda la tercer fila. Borrar variables Al ejecutar los comandos, MATLAB memoriza las variables utilizadas. Sus valores permanecen en memoria hasta salir del programa o hasta que se borran las variables explcitamente, lo cual se hace con el comando clear, lo cual elimina todas las variables definidas hasta el momento. Si slo se desea borrar algunas variables, sus nombres se indican despus de la palabra clear. Por ejemplo: >>clear x y z

Obviamente no se puede acceder a un elemento inexistente. Si los ndices no estn dentro de las dimensiones de la matriz o vector se produce un mensaje de error. 7

Laboratorio I Instituto de Fsica Facultad de Ingeniera

borra las variables x, y y z.


ATENCIN: Una vez borrada el valor de la variable es destruido y no se puede recuperar.

Obtener informacin sobre las variables Para saber que variables estn actualmente en uso, se utilizan los comandos who o whos Las dimensiones de una matriz se obtienen mediante size(A) (esta informacin tambin se muestra con whos) Para desplegar un texto o variable puede utilizar la funcin disp: disp(Programa para resolver la ecuacin del pndulo) disp(A)

Limpiar la ventana de comandos Si desea borrar la pantalla, utilice el comando clc.

4. Operaciones y funciones:
Una operacin aritmtica tiene la forma general de (matriz 1) operador (matriz 2) y el resultado es otra matriz con los valores correspondientes a la operacin. Los smbolos para los operadores son los usuales8: + * / ^ suma resta producto (asterisco) divisin (barra inclinada) potencia (acento circunflejo)9

En las operaciones combinadas, la potencia tiene mayor precedencia que el producto y la divisin, que tienen mayor procedencia que la suma y la resta. Esto seala en qu orden se efectan las operaciones. Se pueden utilizar parntesis para establecer otro orden deseado. Veamos algunos ejemplos: >>S = A + B define una matriz S cuyos elementos son la suma de los elementos correspondientes de las matrices A y B (se suma elemento a elemento). >>D = A - B define una matriz D cuyos elementos son la diferencia de los elementos correspondientes de las matrices A y B (se resta elemento a elemento). En los dos casos anteriores las matrices A y B deben tener las mismas dimensiones.

La tecla para el acento circunflejo est a la derecha de la de la P en los teclados en espaol. A su derecha se encuentra el asterisco. La barra de dividir est junto con el 7. Tambin se puede usar el teclado numrico. 9 En la potencia la segunda matriz debe ser un nmero simple. Ms an, la primer matriz necesariamente debe ser cuadrada. A^n denota la multiplicacin matricial de la matriz cuadrada A a la n-sima potencia. Existen formas generalizadas para potencias matriciales, pero no nos resultarn de utilidad. 8

Laboratorio I Instituto de Fsica Facultad de Ingeniera

>>P = AB asigna a la matriz P el producto de la matriz A con la matriz B. El nmero de columnas de A debe ser igual al nmero de filas de B. Este es el producto matricial y no es igual al producto elemento a elemento. O sea, si >>p = bu con b un vector fila y u un vector columna, se le asigna a la variable p el producto escalar de b con u. Asimismo, >>A/B es equivalente al producto de la matriz A por la matriz inversa de B, es decir >>Ainv(B) (suponiendo que la matriz B sea invertible; en caso contrario se produce un error).
Nota: Si la operacin no es posible debido a que las dimensiones de las matrices no son correctas, MATLAB especificar el error en forma semejante a: >>A*B .???Error using ==> * Inner matrix dimensions must agree.

Operaciones con escalares Una manera muy til en MATLAB de efectuar operaciones es el caso especial en que una de las matrices es escalar, o sea, simplemente un nmero (matriz 1x1). En este caso, la operacin tiene el aspecto10 (matriz) operador (escalar) o (escalar) operador (matriz)

Este abuso de notacin permite simplificar enormemente muchas operaciones. El resultado de una operacin realizada en esta manera es una matriz cuyos elementos son el resultado de operar cada elemento de la matriz dada con el escalar. Esto es, >>[0 1 1 0 2 5 2] + 1 da como resultado el vector [1 0 2 1 3 6 1]. En forma anloga podramos hacer un producto por un escalar (o resta, o divisin) Operar elemento a elemento: Muchas veces nos interesa efectuar operaciones entre matrices elemento a elemento, en contraste con el producto o potenciacin matricial. La forma para indicar esto es agregando un punto, ., delante del operador: (matriz 1) . operador (matriz 2)

10

Esto es correcto para todas las operaciones salvo la potenciacin. 9

Laboratorio I Instituto de Fsica Facultad de Ingeniera

De esta manera se obtiene una matriz cuyos elementos son el resultado de la operacin entre los elementos correspondientes de las matrices.
Ejemplos:

>>A.B >>A./B denotan la multiplicacin y divisin elemento a elemento (en este caso la divisin est bien definida aunque B no sea invertible; en cambio, sus elementos deben ser distintos de cero).
Podemos elevar un vector al cuadrado (esto es, elevar cada elemento al cuadrado)

>>q = [ 4 5 6 7] entonces >> q.q ans = 16 25 36 49 o utilizando el ^ >>q.^2 ans = 16

25

36

49

Una expresin vlida puede ser >>A.^(-1/pi) Observe los parntesis. Cul sera la diferencia con escribir A.^(-1)/pi? Una aplicacin interesante es la resolucin de un sistema de ecuaciones lineales representado matricialmente por A x = b (A son los coeficientes de las variables en el vector x que se quieren determinar para que el producto coincida con los valores dados en b). La solucin es: >>x = A\b. Funciones MATLAB incorpora una extensa variedad de funciones comunes en matemtica y en fsica. Para utilizar una funcin se escribe su nombre seguido por la matriz a la que se le aplica, escrita entre parntesis: funcin( matriz ) Esto da como resultado una matriz formada con los elementos que resultan de aplicar la funcin matemtica a cada elemento. Ciertas funciones no matemticas dan como resultado otra matriz cuyas dimensiones, en principio, pueden ser cualquiera (como en el caso de la funcin size, que devuelve una matriz de 1x2 con los valores de las dimensiones de la matriz a la que se aplica). Es usual utilizar muchas funciones en una sola expresin (ej.: log((cos(x^3))/(4+atan(y))) ). Si una funcin requiere ms de un parmetro, se separan con coma. Recuerde que para obtener ayuda sobre una funcin o comando se utiliza help.

10

Laboratorio I Instituto de Fsica Facultad de Ingeniera Funciones matemticas (se aplican a una matriz x) seno* sin(x) coseno* cos(x) tangente* tan(x) raz cuadrada sqrt(x) exponencial exp(x) arcotangente* atan(x) arcocoseno* acos(x) arcoseno* asin(x) Otras funciones tiles

round(x) fix(x) floor(x) ceil(x) sum(x) prod(x) rem(x,n) ones(size(A)) ones(m,n) ones(n) zeros(n) eye(A) inv(A) rand(A)

redondea los elementos de x al entero ms cercano. elimina las cifras decimales de x. 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 iguales a 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 x n ceros. es una matriz unitaria del mismo formato que la matriz cuadrada 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).

* Las funciones trigonomtricas operan sobre ngulos en radianes. Notacin cientfica Se utiliza automticamente la notacin cientfica en MATLAB (lo cual resulta bastante prctico en casi todos los casos). Como muchos otros programas, se usa la letra E o e a continuacin de una cifra para indicar multiplicado por 10 elevado a. Ejemplo: 1.05x10-3 1.05E-003, -68.7x105 -6.87e+004

5. Lectura y escritura de datos:


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 la funcin input. Esto provoca que el programa aguarde hasta la introduccin de un valor, el cual es el resultado devuelto y puede ser utilizado por otra funcin. Digamos que se desea que el usuario ingrese un nmero. Un enunciado bsico sera: >>z = input('Ingrese el radio: ')
11

Laboratorio I Instituto de Fsica Facultad de Ingeniera

MATLAB despliega lo siguiente: Ingrese el radio: 15 z = 15 >>


En este lugar el usuario debe ingresar un vector o escalar El usuario ingres 15 en este caso.

La parte ' Ingrese el radio: ' es un mensaje de solicitud que se exhibe en la pantalla. Las comillas indican que se trata de un texto y no una variable. Cuando se teclee el valor del radio y se pulse return / intro, el dato se guardar en z. El valor introducido puede ser un escalar o un vector si se coloca entre parntesis rectos11. Ingrese el radio: [0.1 0.2 0.5] z= 0.1 0.2 0.5 >>
Nota: Si se olvida cerrar la comilla final, MATLAB especificar el error:
>>z = input(Ingrese el radio:) | Missing at end of string or misplaced transpose operator

Si se olvida poner un parntesis:


>>z =input(Ingrese el radio | Improper function reference. A , or ) is expected.

Lo habitual es utilizar input dentro de un archivo de comandos .m. b) Guardar y cargar datos desde archivos Al cerrar MATLAB toda la informacin guardada en la memoria se destruye. Por lo tanto es importante poder guardar los datos de los clculos en archivos independientes. Adems esto permite utilizar datos de una computadora en otra. Los datos se pueden recobrar en cualquier momento a partir del archivo en que fueron guardados. Ms an, en muchos casos podemos tener datos provenientes de otros programas y los podemos cargar en MATLAB. La funcin save se encarga de guardar la informacin, en el siguiente modo: save nombre-del-archivo lista-de-variables opciones
y la funcin load de recuperarla:

load nombre-del-archivo lista-de-variables opciones En principio todo lo que est a continuacin de save (load) es opcional. Al no indicar el nombre del archivo los valores se guardan (cargan) en un archivo creado con el nombre matlab.mat en la carpeta de trabajo actual (la cual debera ser el disquete si se escribi cd A:). Al no indicar las variables que se desean guardar, se guardan todas las que estn definidas en el momento de ejecutar
11

Tambin es posible introducir un texto 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 de caracteres o texto (string). 12

Laboratorio I Instituto de Fsica Facultad de Ingeniera

el save. Al nombre del archivo se le agrega la extensin .mat (a menos que en las opciones se indique otra cosa) que lo seala como archivo de datos de MATLAB. Ejemplos: La instruccin >>save guarda todas las variables en un archivo matlab.mat (si este exista previamente, su contenido es eliminado). Si luego efectuamos >>clear >>load volvemos al principio, ya que clear elimina todas la variables y load las carga nuevamente desde el archivo matlab.mat. Comnmente usamos save en formas como >>save datos1 a v t Lo cual guarda las matrices a, v y t en el archivo datos1.mat de la carpeta actual. La mayor parte de las veces en que se usa load no se indica qu variables se desean cargar, para que automticamente cargue todas aquellas contenidas en el archivo. Guardar y cargar archivos provenientes de otros programas: Si no indicamos ninguna opcin, los comandos save y load trabajan con un formato de archivos binario, propio de MATLAB. Esto es, solamente con MATLAB podemos interactuar con la informacin guardada en ellos12. En este formato se guarda completamente la informacin de una matriz, su nombre y los valores contenidos en ella, y por lo tanto se recuperan al cargar los datos. Cuando necesitamos poder interactuar con los datos guardados en un archivo nos conviene ms que los nmeros estn escritos directamente. Esto es conocido como formato A. S. C. I. I.13, que es lo mismo que decir que se guarda en formato de texto puro. Indicamos que se desea esto agregando la opcin ascii (incluyendo el guin) al comando save o load. En este caso se debe aclarar la extensin del archivo. >>save datos.tmp x ascii Guarda la variable x en formato ASCII en el archivo datos.tmp. Este archivo se puede editar con Word o con el bloc de notas (u otros editores). Los nombres de las variables no se guardan; tan slo su contenido. La carga a travs de load de un archivo en formato ASCII no es exactamente igual que save. La razn es que si bien save en ASCII puede escribir mltiples variables a un mismo archivo, load lee todo el archivo ASCII de datos numricos colocados en un arreglo rectangular y lo coloca en una nica variable que tiene como nombre el mismo que el del archivo (descartando la extensin). Por ejemplo, cargamos un archivo llamado y_datos.e con: >>load y_datos.e

12

Si se trata de abrir una archivo .mat con un editor como Word o el bloc de notas observar que el texto resulta ilegible.g 13 ASCII se pronuncia usualmente asqui 13

Laboratorio I Instituto de Fsica Facultad de Ingeniera

El contenido se carga en la variable y_datos. Esta ser una matriz de un tamao acorde con la cantidad de datos guardados en el archivo. Observe que este archivo puede incluso haber sido editado manualmente!

6. Programacin de MATLAB: Archivos .m


Muchas veces para realizar uun clculo tenemos que ejecutar varios comandos (p.ej. definir las variables, hacer varias operaciones, etc.). Hacerlo directamente en el prompt no es ventajoso pues dificulta la correccin de errores y al salir del programa se pierden los clculos efectuados. Tambin es muy frecuente tener que realizar muchas veces un mismo clculo variando algunos de los parmetros. Por todo esto conviene escribir las lineas de comando dentro de un programa14.
La estructura de un programa en MATLAB es sumamente sencilla, y utilizaremos lo mnimo esencial para el curso. Los archivos de programa no poseen ningn formato especial (son slo texto); por consiguiente, dentro de un programa creado por nosotros encontraremos: COMANDOS: todo aquello que podamos escribir en el prompt podemos escribirlo en el programa. Esto incluye definiciones de variables, cargar y guardar datos, efectuar clculos, graficar, etc. COMENTARIOS: el smbolo de porcentaje, %, indica un comentario, lo cual significa que se ignore lo que est a continuacin del mismo, hasta la prxima lnea. Realizar comentarios apropiados no es una prdida de tiempo, sino que al contrario evita que tengamos que devanarnos cada vez que leemos el programa.

Un programa debe estar guardado en un archivo de texto cuya extensin sea .m (p.ej.: term.m) en la misma carpeta en que estamos trabajando (si estamos usando el disquete, ah es donde debe estar el programa). Para correr el programa, lo llamamos desde el prompt a travs de su nombre de archivo (p. ej.: >>term).
Nota: Dado que un programa simplemente es una secuencia de comandos, tenga cuidado en que no interacte con variables definidas previamente en MATLAB. Esto se resuelve fcilmente agregando el comando clear al comienzo de su programa.

MATLAB incorpora un editor de programas, al que se accede mediante el comando edit. Este editor es bastante prctico, ya que nos muestra diferentes colores segn el comando. Otra alternativa es seleccionar en el men de la barra de herramientas que aparece en la parte superior de la pantalla de MATLAB la opcin File y luego New M file. Con cualquiera de estas maneras se ingresa al editor de archivos de MATLAB. Una vez escritas las lneas de programa en el archivo, seleccione Save as... en el men File del editor. Una ventana emerge preguntando el nombre y la ubicacin del archivo .m a guardar. Hecho esto el programa est listo para ser usado. Si posteriormente decide modificar el programa recuerde guardar los cambios antes de correrlo. Ejemplo: En el EDITOR de MATLAB se escribe el listado del programa demost.m: disp(Este es un programa ejemplo) A = 1:10 % Al no poner ; al final de la definicin de la variable aparecer en pantalla B = [3,5,7]; who Ahora para correr el programa en MATLAB (habindolo guardado previamente en la misma carpeta de trabajo) simplemente se digita:
14

Adems si se necesita automatizar la toma de decisiones, se utilizan comandos como if o for dentro de un programa. 14

Laboratorio I Instituto de Fsica Facultad de Ingeniera

>>demost En la pantalla MATLAB devolver: Este es un programa ejemplo A = 1 2 3 4 5 6 Your variables are: A B >> Definir funciones Otro tipo de archivos .m son los archivos de funcin, los cuales permiten agregar nuevas funciones a las ya existentes. Las funciones en MATLAB equivalen a las subrutinas y funciones de otros lenguajes. La diferencia fundamental entre un programa y una funcin es que la funcin devuelve un valor a partir de una entrada mientras que el programa funciona de manera independiente. El comando function al comienzo de un archivo de programa indica que se trata de una funcin. Seguido de esto, en la misma lnea, se coloca el nombre de una variable en la cual se guardar el valor devuelto por la funcin. Este se iguala al nombre de la funcin, y entre parntesis se indican los valores de entrada. El comienzo del archivo de funcin es: function salida = nombre (entrada) El nombre del archivo debe ser el mismo que el de la funcin para ser reconocida por MATLAB. Despus de la primera lnea se escriben los comandos necesarios para calcular la funcin. Se puede agregar una lnea con el comando end para indicar el final de los clculos. El ltimo valor guardado en la variable de salida es el valor que la funcin devuelve a quien la halla llamado. Las funciones de MATLAB tienen esta misma estructura. Ejemplo: Quiero una funcin que verifique la siguiente ecuacin para todo x: 2 x 3 + 7 x 2 + 3x 1 f (x) = 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)

10

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 entrada % y hago que no se muestre el resultado en pantalla usando ;

end

La forma de utilizar esa funcin es muy simple: >>x = [0,1,2]; >>demof(x) ans = -0.2000 -68.4920

-37.0280
15

Laboratorio I Instituto de Fsica Facultad de Ingeniera

>>

7. Grficas
El empleo de grficas es importante desde la educacin inicial hasta la superior, as como para ingenieros y cientficos profesionales. El comando fundamental para graficar es plot. Este comando tiene diferentes maneras de ser empleado. Cuando indicamos a MATLAB que grafique, se crea una ventana de Windows separada para realizar la grfica. Una vez que esta ventana est abierta se reutiliza cuando hacemos grficos posteriores. Si tenemos dos variables que deseamos representar en los ejes horizontal y vertical, lo conseguimos con plot en la forma: plot(eje horizontal, eje vertical, opciones) Las variables que definen cada eje deben tener la misma cantidad de elementos o se producir un error. Las opciones se indican entre comillas, y controlan el aspecto de la grfica. El uso ms simple es: >>plot(x,y) lo cual hace un grfico que pasa por los puntos de coordenadas dadas por x e y, unindolos mediante segmentos de lnea rectos en color azul. Este modo de grfica ocurre cuando no se especifica ninguna opcin. La escala del grfico se ajusta automticamente para poder mostrar todos los valores graficados. Para cambiar el aspecto de la grfica podemos agregar algn parmetro despus de la segunda variable: >>plot(x,y,'*') El haber agregado el asterisco, *, en lugar de segmentos que unen los puntos obtenemos un asterisco aislado en cada punto de coordenadas ( x, y). La forma general del parmetro es indicar un tipo de lnea o smbolo para el trazo y un color. COLOR y m c r g b w k amarillo magenta cian rojo verde azul blanco negro . o x + * s d v ^ < > p h SIMBOLO punto crculo cruz (x) cruz (+) asterisco cuadrado rombo tringulo (abajo) tringulo (arriba) tringulo (izquierda) tringulo (derecha) pentgono hexgono : -. -TRAZO slido punteado punto-raya rayas

Podramos poner >>plot(x,y,'*r')


16

Laboratorio I Instituto de Fsica Facultad de Ingeniera

lo cual representar, en un sistema de ejes coordenados, los puntos (x, y) mediante asteriscos en color rojo. La ventana de grficas es bastante independiente del resto de MATLAB. Podemos, por ejemplo grabar una grfica a travs de sus mens. La mayora de sus caractersticas son accesibles a travs del men de edicin, pero tambin se puede controlar por medio de comandos desde MATLAB. Para completar la grfica: mediante el comando xlabel le ponemos nombre al eje x, ylabel para el eje y, y finalmente con el comando title le ponemos titulo a la grfica. Para borrar una grfica: comando clf. Para superponer varias grficas: comando hold. Para controlar la escala de los ejes: comando axis. Para crear nuevas ventanas de grfico: comando figure. Otros comandos grficos importantes: subplot, grid, text Utilice help para obtener una descripcin detallada de estos comandos. Asimismo es bueno probar y experimentar para comparar los efectos de cada funcin. Ejemplo: Deseamos obtener la grafica de la funcin f ( x ) = sin ( x ) * e cada 0.2 unidades. Listado en el EDITOR: x = (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')
El resultado en MATLAB ser:
0.4 x

con x de 0 a 10, variando

17

Laboratorio I Instituto de Fsica Facultad de Ingeniera


y= f(x) 0.6

0.5 0.4

0.3

0.2 0.1

0 -0.1

-0.2

5 x

10

8. Funciones Avanzadas
Se describen a continuacin un par de comandos que resultan ser bastante tiles cuando finalmente nos enfrentamos a ciertos problemas especficos. Hallar ceros de funciones
Un problema de la forma:

F(x) = 0 se puede resolver utilizando el comando fzero de MATLAB. fzero(fun, x) intenta hallar los ceros de la funcin dada por fun cercanos a x. Para obtener ms detalles de la sintaxis help fzero desde el MATLAB. Aproximacin de funciones por polinomios Usando polyfit(x,y,n), encontramos los coeficientes de un polinomio p(x) de grado n que ajusta los datos, p(x(i)) y(i). En particular, si tenemos un conjunto de valores y(x) que deseamos aproximar por una recta, utilizamos polyfit con n=1. Los coeficientes son devueltos en grado de creciente (n, n-1, ...). El sentido exacto de lo que entendemos por ajuste y aproximacin lo veremos en las prcticas siguientes.

18

You might also like