Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Int prog matlab

421 views

Published on

  • Be the first to comment

  • Be the first to like this

Int prog matlab

  1. 1. Álgebra II Introducción a la Programación en MatLab Introducción a la Programación en MATLABLa programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Selos denomina de esta forma debido a su extensión “.m”.Estos archivos son simple archivos ASCII o scripts, y como tales, pueden ser creados ymodificados desde cualquier editor de texto común; por ejemplo, el Bloc de Notas. ElMatLab incluye un editor de archivos M, orientado a la programación sobre estesoftware. Si se opta por otro editor , se debe vigilar siempre que los archivos escritos seguarden con esta extensión.De acuerdo a como se definan, estos archivos pueden separarse en dos tipos: 1. Archivos de comandos. 2. Funciones.1. Archivos de ComandosLos archivos de comandos son simplemente archivos M que contienen instrucciones delMATLAB. Una vez editados, se los guarda con un nombre en algún directorio que seencuentre dentro del path de búsqueda del MATLAB.Por defecto, la carpeta de trabajo es el directorio work, que se encuentra dentro de lacarpeta de instalación del MATLAB. Para cambiar este directorio o carpeta de trabajo,así como agregar nuevas carpetas de biblioteca, se debe usar el Path Browser, o el SetPath. El primero se encuentra en el editor de archivos M que trae el MATLAB incluido.Para convocar los archivos M escritos, solo se debe escribir el nombre del archivoguardado en la ventana de comandos, y las instrucciones que hayan sido escritas seránejecutadas.Aquí se debe notar algo importante; todas las variables que se hayan definido o creadodentro de este archivo, luego de su ejecución, pasarán a formar parte de nuestro Espaciode Trabajo, o Workspace. Se debe tratar de que las variables del workspace nocoincidan con las que aparecen en los archivos M que se han de ejecutar.Ejemplo: Se utilizará el ya clásico “Hola Mundo”. Primeramente, abrimos undocumento de texto, ya sea desde el editor de archivos M que incluye el MATLAB, odesde cualquier otro que nos permita editar ASCII. En él, escribimos la siguiente línea,tal como lo muestra la figura 1.disp(‘Hola Mundo’)La función disp muestra en la ventana de comandos el string que se le envía comoparámetro.Guardamos ahora el documento como Saludar.m, o el nombre que se desee, con suextensión .m. 1 Ricardo Gustavo Miranda
  2. 2. Álgebra II Introducción a la Programación en MatLab Figura 1. Primer programa.Ahora, ingrese el nombre del archivo guardado en la ventana de comandos, sin laextensión .m esta vez. Para el ejemplo de arriba:>> SaludarHola MundoEste es un ejemplo bastante simple y claro de que es lo que hace un archivo decomandos cuando es llamado. Ahora vamos a ver que sucede cuando se definenvariables dentro de éstos.Ejemplo: Suponemos ahora que tenemos los valores 5 y 3, los dos almacenados en lasvariables a y b respectivamente. Definimos ahora un archivo de comandos queintercambie los valores de esas variables. Escribimos sobre un archivo nuevo lo que seleen en la figura 2, y lo guardamos con el nombre de Intercambiar.m. Figura 2. Ejemplo de archivo de comandos con creación de variables.Al llamarlo en la ventana de comandos obtendremos: 2 Ricardo Gustavo Miranda
  3. 3. Álgebra II Introducción a la Programación en MatLab Figura 3. Ejecución del archivo M.Puede verse ahora que las variables que se habían definido durante esta ejecución, a y b,forman ahora parte de nuestro workspace; es decir, forman parte de nuestro conjunto devariables que tenemos definidas en la ventana de comandos. Esto puede verse al escribira o b: Figura 4. Variables definidas dentro de la ventana de comandos.2. FuncionesUna función es un archivo M similar al archivo M de comandos, con una diferencia ensu definición. La primera línea de una función posee la siguiente estructura:function[argumentos_salida] = nombre(argumentos_entrada) • Nombre corresponde al nombre de la función. • Argumentos_salida representa una lista de elementos o variables de retorno de la función. El valor de cada uno de los elementos de salida varía a medida que se ejecuta el algoritmo. Los valores devueltos por la función convocada serán los valores que se encuentren en argumentos_salida en el momento en que termina la 3 Ricardo Gustavo Miranda
  4. 4. Álgebra II Introducción a la Programación en MatLab ejecución de la función. La definición de esta salida es opcional; de no aparecer, la función se convertiría en un procedimiento, puesto que no devuelve nada; sólo acepta parámetros y ejecuta el algoritmo dado. • Argumentos_entrada son los parámetros que recibe la función para poder realizar su procesamiento. Estos argumentos, durante de la ejecución, son parámetros recibidos por valor (By value); es decir, se hacen duplicados de los parámetros, y es en éstos sobre los cuales se realizan todas las modificaciones.Contrario a los archivos M de comandos, todas las variables que se definan dentro delcuerpo o definición de la función, si la función es convocada desde la ventana decomandos, no pasarán a formar parte de nuestro workspace. IMPORTANTE El nombre de la función debe coincidir con el nombre de archivo M con el cual se la guarda. De no hacer esto, podrían existir errores de directorio y/o de ejecución.Dentro del cuerpo de la función, uno puede “salir” de la función mediante el comandoreturn. Este comando detiene la ejecución del programa, y devuelve el valor actual delas variables de salida a la función, procedimiento o rutina que lo convocó.Ejemplo: Vamos a crear una función que obtenga el conjunto solución para un sistemade ecuaciones lineales compatible determinado, haciendo uso de una matriz A decoeficientes, y un vector dado B de términos independientes; es decir, obtendremos unX0 tal que AX0 = B. Dicho vector X0 será devuelto por la función que se escribe en unarchivo M.Para esto, se hará uso de la función predefinida rref, la cuál obtiene una matriz deescalones reducida.Nuestra función ha de recibir dos parámetros, A y B. por lo tanto éstos se convertirán enlos argumentos de la función, quedando como se ve en la figura 5. Figura 5. Ejemplo de definición de una función.Supongamos que tenemos dos matrices A y B, tal que  1 0 2  12 A=  5 4 1 , y B =  4 .     − 2 1 − 1    − 8  En el la ventana de comandos esto queda>> A=[1,0,2;5,4,1;-2,1,-1] 4 Ricardo Gustavo Miranda
  5. 5. Álgebra II Introducción a la Programación en MatLabA = 1 0 2 5 4 1 -2 1 -1>> B=[12,4,-8]B = 12 4 -8>> solucion(A,B)ans = 0.5714 -1.1429 5.7143Verificándose que:>> A*ansans = 12 4 -8Como puede verse, esta función siempre devuelve una “solución”, la cuál puede no sercorrecta si estamos ante un sistema incompatible.Tampoco se consideran casos de indeterminabilidad.Además, y este es tal vez el error más grande, no se toma en cuenta el hecho de que lamatriz A puede no ser ampliable con el vector de términos independientes B.Con estas consideraciones, se puede concluir que este programa no es útil, o no estácompleto.Consigna: Ejecutar el algoritmo con otras matrices y vectores de términos independientes. Investigar sobre el funcionamiento de la instrucción size. Realizar algunos casos de prueba con sistemas de ecuaciones incompatibles e indeterminados.3. ComentariosUna de las herramientas más útiles para los programadores son los comentarios.Mediante éstos, se puede hacer más legible el código fuente, estructurado y mantenible.Los comentarios se introducen con el símbolo “%”; cuando este símbolo aparece, todolo que sigue a partir de él hasta el final de la línea se considera como un comentario.Todo lo que sea un comentario dentro de un programa, es simplemente ignorado por elintérprete. 5 Ricardo Gustavo Miranda
  6. 6. Álgebra II Introducción a la Programación en MatLabAdemás de las utilidades antes mencionadas, los comentarios en MatLab se usan paracrear el archivo Help de una función.El archivo Help de una función es una especie de “Léeme” que indica el funcionamientobásico de la función, así como su definición y los argumentos que puede recibir.Para definir un archivo Help, o simplemente Help, de una función o un archivo decomandos, se escribe como comentario todo lo que se quiere que este Help contenga,justo después de la definición de la función, para el caso de los archivos de función; o alinicio del archivo, en los archivos de comandos. El final del Help de un archivo semarca con una separación mediante una línea en blanco.Ejemplo: Vamos a modificar el programa antes escrito, e introduciremos un Help queindique que es lo que el programa hace, y cuál es la forma correcta de ser convocado.En la figura 6 puede verse como en la línea 7 se encuentra la separación antesmencionada (línea en blanco), la cuál establece el final del archivo Help de Solución.m. Figura 6. Uso de los comentarios para crear el Help para un archivo M.Consigna: Convocar al archivo Help de la función modificada y extraer conclusiones sobre su funcionamiento. 6 Ricardo Gustavo Miranda
  7. 7. Álgebra II Introducción a la Programación en MatLab4. Valores, Operadores y Expresiones BooleanasLas valores booleanos, en general, sólo pueden tomar dos valores: Verdadero o Falso(True y False en los lenguajes de programación).MatLab no maneja los valores True y False para este tipo de expresiones, sino querepresenta a True con un 1, y a False con un 0.Los operadores de comparación son operadores que devuelven un valor booleano.Estos operadores se listan a continuación: <: Menor que >: Mayor que <=: Menor o igual que >=: Mayor o igual que ~=: Distinto que ==: Igual queExisten también los operadores que trabajan directamente sobre los valores booleanos,para devolver otro valor booleano. Estos se conocen como operadores booleanos, yaparecen a continuación: &: ‘y’ lógico (And) |: ‘ó’ lógico (Or) ~: ‘no’ lógico (Not)Consigna: En la Command Window del MatLab escribir las siguientes líneas y sacar conclusiones: 1. 23==23 2. 51~=51 3. 0&1 4. ~0Las expresiones booleanas son expresiones cuyo resultado es un valor booleano. Deesto puede deducirse que en una expresión booleana intervienen operadores booleanos yde comparación.Consigna: En la ventana de comandos escribir las siguientes sentencias y extraer conclusiones: 1. (23>25)|(23<25) 2. (23>22)&(23<25) 3. (29==71)|1 4. (29<71)|((31==30)&(25==26)) 5. ((29<71)|(31==30))&(25==26) Explicar la diferencia entre el punto 4 y el punto 5. Investigar o desarrollar otra forma realizar las operaciones booleanas, definiendo mediante el anillo de las clases residuales módulo 2. 7 Ricardo Gustavo Miranda
  8. 8. Álgebra II Introducción a la Programación en MatLab5. Estructuras de control5.1 BifuraccionesLa estructura básica para la bifurcación es el if…then…else…end. En MatLab, se escribeif <condición> <acciones a realizar por respuesta afirmativa>else <acciones a realizar por respuesta negativa>endEn donde <condición> es un valor, expresión, o función booleana.Una forma de ampliar esta estructura es haciendo uso del elseif. Esta palabra permitehacer varias evaluaciones, y, por lo tanto, obtener más de dos posibles alternativas.Abajo se muestra la sintaxis para el uso del elseif.if <condición 1> <acciones a realizar para condición 1>elseif <condición 2> <acciones a realizar para condición 2>else <acciones a realizar si ninguna condición se cumple>endEjemplo:Vamos a continuar mejorando la función “solución” planteada haciendo uso de loscomandos if... then…else…end.Puede verse claramente que en la función nunca se controla el hecho de que la matriz Atenga la misma cantidad de filas que el vector de términos independientes B; por lotanto agregamos un pequeño control que monitoree que se cumpla esta condición.Además, tenemos que vigilar que el sistema sea compatible determinado para obtener lasolución correcta.Luego, pediremos que el rango de la matriz A coincida con el rango de la ampliada, asícomo con el número de incógnitas.Estas modificaciones sobre la función pueden apreciarse en la figura 5.Consigna: Ejecutar la función con la nueva modificación desde la ventana de comandos para valores válidos e inválidos de matrices A y B. Extraer conclusiones: 1. ¿Qué devuelve el programa al ingresar dos matrices con el mismo número de filas? 2. ¿Qué devuelve el programa el ingresar dos matrices con distinto número de filas? 3. ¿Qué devuelve el programa al ingresar una matriz de coeficientes correspondiente a un sistema de ecuaciones incompatible? 4. ¿Qué respuesta se obtiene ante un sistema que admite infinitas soluciones? 5. ¿Cómo funciona el comando size dentro del programa? 6. ¿Cómo funciona el comando error dentro del programa? 8 Ricardo Gustavo Miranda
  9. 9. Álgebra II Introducción a la Programación en MatLab Figura 7. Función “Solución” con el control implementado5.2 Multifurcación (Switch)La sentencia switch se usa para crear una estructura Case de control como la que semuestra en la figura 6.Esta estructura puede entenderse como varios elseif anidados, con la diferencia de queen la estructura case no se controlan expresiones booleanas, sino valores de unadeterminada expresión. Expresión a evaluar Valor 1 Valor 2 … Valor N Sentencias 1 Sentencias 2 … Sentencias N Sentencias en otro caso Figura 8. Esquema de una estructura Case genérica. 9 Ricardo Gustavo Miranda
  10. 10. Álgebra II Introducción a la Programación en MatLabPara llevar este esquema a MatLab, se utiliza la siguiente sintaxis:switch <Expresión a evaluar> case <Valor 1> <Sentencias 1> case <Valor 2> <Sentencias 2> case <…> <…> case <Valor N> <Sentencias N> otherwise <Sentencias en otro caso>end5.3 Estructura ForEn MatLab, la forma universal de la estructura for es:for <Variable> = <Arreglo de elementos> <Sentencias>endLa variable tomará el valor de cada columna y ejecutará las sentencias definidas, hastallegar al final del arreglo.En los casos particulares para los cuales será usada esta instrucción, el arreglo deelementos no es más que un vector de una fila y N columnas; por lo tanto, la variablesólo tomará valores escalares, como en el ejemplo de código que sigue:for i=1:N <Sentencias>endAquí, el arreglo, o vector, está dado por 1:N, es decir, una matriz de la forma[1, 2, 3,…, N].Ejemplo:A continuación se presenta un pequeño ejemplo del uso de esta instrucción. Elalgoritmo busca un elemento dentro de un vector que recibe como parámetro.Para este sencillo algoritmo no se consideraron todos los posibles casos, sino que se lopresenta más bien a modo de ilustración del funcionamiento del comando For.En la figura 9 aparece el programa, con su correspondiente Help, y algunos comentariosque explican algunas variables. 10 Ricardo Gustavo Miranda
  11. 11. Álgebra II Introducción a la Programación en MatLab Figura 9. Función “Buscar”.5.4 Estructura WhilePara definir una estructura While…Do…se usa la siguiente sintaxis:while <Condición> <Sentencias>end 11 Ricardo Gustavo Miranda

×