Preview only show first 10 pages with watermark. For full document please download

Matlab Para Principiantes 1 Matlab Para Principiantes

MATLAB para principiantes 1 MATLAB PARA PRINCIPIANTES MATLAB para principiantes 2 Universidad Nacional Autónoma de México Centro de Física Aplicada y Tecnología Avanzada MATLAB para principiantes 3 MATLAB

   EMBED

  • Rating

  • Date

    May 2018
  • Size

    589.7KB
  • Views

    2,921
  • Categories


Share

Transcript

MATLAB para principiantes 1 MATLAB PARA PRINCIPIANTES MATLAB para principiantes 2 Universidad Nacional Autónoma de México Centro de Física Aplicada y Tecnología Avanzada MATLAB para principiantes 3 MATLAB PARA PRINCIPIANTES Rafael Quintero Torres Rafael Quintero Bermúdez Centro de Física Aplicada y Tecnología Avanzada Juriquilla Querétaro Universidad Nacional Autónoma de México Universidad Nacional Autónoma de México MATLAB para principiantes 4 Matlab para principiantes D.R Universidad Nacional Autónoma de México Av. Universidad 3000 Ciudad Universitaria, Delegación Coyoacán, 04510, México,D. F. Centro de Física Aplicada y Tecnología Avanzada Boulevard Juriquilla Juriquilla, Querétaro ISBN: Diseño de cubierta: D.G. Anahit Indra Ortiz Molina Edición a cargo de: Jit Press, S.A. de C.V. General Santana 253 Col. M. Carrera México, D.F., Tel. (55) DERECHOS RESERVADOS Queda prohibida la reproducción o transmisión total o parcial del texto o las ilustraciones de la presente obra bajo cualesquiera formas, electrónicas o mecánicas, incluyendo fotocopiado, almacenamiento en algún sistema de recuperación de información, dispositivo de memoria digital o grabado sin el consentimiento previo y por escrito del editor. Impreso y hecho en México Printed in México MATLAB para principiantes 5 Emprendemos la redaccion de este texto como resultado de que el alfabetismo en MATLAB en las universidades continúa siendo muy bajo y de que la necesidad de emplear las buenas herramientas de cómputo matemático de manera más extendida esté presente. El material aquí contenido está pensado para estudiantes que desconocen MATLAB, pero que les gustaría introducirse en él de manera autodidácta. También puede ser de utilidad para estudiantes de computación y métodos numéricos ya que los ejemplos y el interés principal es el control de las acciones de la máquina por medio de la sintaxis de MATLAB. Suponemos que existe un genuino interés o una necesidad en introducirse en esta temática, que se tiene un conocimiento básico de álgebra y que se aceptan los retos con singular alegría. MATLAB para principiantes 6 Prólogo En las primeras palabras del material se evidencia la intención: ayudar a que herramientas como MATLAB sean empleadas por los estudiantes de licenciatura. Que este libro bosqueje un camino por el cual se pueda migrar de las calculadoras al cómputo científico; no se pretende que este material acompañe a los lectores hasta el final del camino, sino sólo que encienda el fuego de la curiosidad y que pueda guiar los primeros pasos y que permita que esta exploración continúe mucho más de lo aquí planteado. Una buena conclusión preliminar es que las opcines de ayuda incluidas en MATLAB son una fuente muy valiosa para reproducir lo que ya sabemos hacer con otras herramientas y aprender otras alternativas de resolver problemas. Este material sólo trata de poner orden en los primeros pasos, esperamos que muchos más sean dados a lo largo de los estudios de licenciatura y deseablemente se conviertan en una herramienta indispensable para el trabajo profesional. Si bien esperamos que este material pueda ser cubierto de manera autocontenida, la experiencia de uno de nosotros (RQT) nos obliga a advertir que la utilidad plena se dará como parte de un curso formal. Creemos que una de las virtudes de la formación universitaria es la estructura que se desarrolla en los individuos al estar expuestos al orden de las matemáticas, que también se puede obtener con las reglas de juegos y con la programación. La sinergia de la disponibilidad de computadoras, de buenas herramientas de programación y solución de problemas, podrían conducir a una mejor formación universitaria. Esperamos que disfruten su experiencia con MATLAB, y que esta sea el principio de un camino lleno de satisfacciones y placer para su formación. Agradecemos el tiempo, los comentarios y las correcciones de los revisores, en particular a los académicos del CFATA, Dr. Miguel de Icaza Herrera y Dr. José Luis Aragón Vera, al académico de la UAM-Azcapotzalco, Dr. Ernesto Rodrigo Vázquez Cerón y a la física Rosa Elena López Escalera Romano. De la misma manera, agradecemos las opiniones de los alumnos de la Licenciatura en Tecnología de la UNAM, generaciones 2009 a Todos sus comentarios disminuyeron los errores y enriquecieron el texto, pero los que permanecen son sólo nuestra responsabilidad. MATLAB para principiantes 7 Tabla de contenido 1 Introducción MATLAB por primera vez Uso elemental de MATLAB La ayuda en MATLAB Definición de variables Exhibición de resultados Representación de números en MATLAB Guardar el trabajo Ejercicios Arreglos y matrices Construcción de arreglos de números Manipulación de los números en los arreglos Operaciones con matrices Operaciones con arreglos Ejercicios Programas (scripts) y funciones (functions) Programas (Scripts) Funciones (Functions) Trabajo y mejora de programas (scripts) Funciones de funciones Ejercicios Control de flujo de programa Uso fundamental Ejemplo: Autómatas unidimensionales Ejemplo: Autómatas bidimensionales Ejercicios Métodos numéricos Mínimos cuadrados, modelo lineal Promedio y desviación estándar Algoritmo simplex Método indirecto de solución de ecuaciones simultáneas Raíces de polinomios (Método de Laguerre) Runge Kutta Descomposición de LU Interpolación suave (splines) Gráficos Dos dimensiones Tres dimensiones Guardar imágenes Ejercicios Prácticas de buena programación Elegir vectores en lugar de bucles Evitar que los arreglos crezcan mientras se corre el programa Escritura de MEX-File cuando los bucles son inevitables Evitar variables que cambian de tamaño en gráficas activas MATLAB para principiantes Acceso a archivos Otras consideraciones Ejercicios GUI Ejemplo de script para FFT Ejemplo de function para FFT Ejemplo de GUI para FFT Construcción del archivo ejecutable Ejercicios Conexión con C MATLAB Coder MATLAB Compiler Simulink Simulink y solución de ecuaciones algebraicas Simulink y solución de ecuaciones diferenciales Simulink y solución de sistemas de ecuaciones diferenciales SimMechanics Apéndice A. control de accesorios de PC A.1 Instrucciones para el control de un micrófono A.2 Instrucciones para el control de una cámara MATLAB para principiantes 9 1 Introducción MATLAB es un software para computación en ingeniería y ciencias. Nos ofrece un poderoso lenguaje de programación, una posibilidad de realizar y manipular gráficas con facilidad, además de reunir conocimiento acumulado en estas áreas de manera estructurada y útil. MATLAB se centra en el cómputo y no en las matemáticas, así que las expresiones y la manipulación simbólica no son su fuerte, a excepción de las empleadas con la herramienta symbolic o con el programa MuPAD. Las soluciones son numéricas e inexactas, asociadas a los artificios del redondeo. Esto puede verse desde dos puntos de vista, como un problema, al evidenciar el riesgo de errores ocultos en los resultados y como una ventaja, ya que permite el cálculo numérico con un conjunto de números diferente al de los números reales. Comparado con otros lenguajes de programación numéricos como C++ o FORTRAN, MATLAB es mucho más fácil de usar y está integrado con una biblioteca formada de una gran cantidad de información, módulos, programas, subrutinas, relacionadas con el cómputo numérico. La única comparación donde MATLAB queda en desventaja con respecto a C++ o FORTRAN es en el rubro de velocidad de ejecución, pero puede ser menos drástica con buenas prácticas de programación, como veremos aquí. MATLAB no es la herramienta de elección para cómputo de alto desempeño (aunque probablemente sí lo sea en el futuro cercano) pero es una plataforma inmejorable para proyectos desde elementales hasta intermedios y en muchos casos para probar lo que en otros lenguajes sería código muy elaborado o que requiere de demasiado tiempo de elaboración. MATLAB permite obtener una respuesta numérica a una expresión algebraica, de manera similar a una calculadora, también permite obtener una aproximación numérica a algunos problemas donde la sustitución no es posible, por ejemplo, el valor de E en la expresión E E E tan E. Lo que consideramos como la solución enfrenta dos dificultades; 1) 2 0 que MATLAB entienda una cosa diferente de lo que estamos pensando, en virtud de la falta de dominio de la herramienta y 2) que el procedimiento emprendido sea adecuado para alcanzar la solución. Espero que este escrito ayude a aminorar el primer problema, el segundo se logra con el dominio de los métodos numéricos y de la experiencia. No se espera que MATLAB pueda resolver un problema que no se pueda resolver con papel, lápiz y tiempo. En general se es más exitoso, si antes de expresar el problema en MATLAB, se ha expresado en papel y lápiz. 1.1 MATLAB por primera vez Al iniciar MATLAB aparece el escritorio, Multipaneled desktop, con diversas áreas de trabajo, que se puede modificar al gusto de cada usuario, acción que no es necesaria en un principio. La figura 1.1 ilustra las áreas de trabajo, Command Window (elipse punteada) MATLAB para principiantes 10 donde se escriben los comandos, inmediatamente frente al prompt (rectángulo punteado) y donde aparecen las respuestas numéricas. prompt Start Figura 1.1 Multipaneled desktop en MATLAB. MATLAB es un lenguaje de programación que interpreta las instrucciones línea por línea, a diferencia de otros lenguajes de programación que compilan el programa total. Esta es una afirmación correcta en parte, ya que como veremos existen las funciones que no se interpretan o incluso programas completos en MATLAB que pueden ser ejecutables. Esta parte se aclarará al ver MEX files y GUI en los capítulos 7 y 8. Workspace (elipse continua) muestra las variables definidas e información al respecto; en un principio está vacía, pero al definir variables o realizar operaciones se acumulan y se pueden editar. Al hacer doble clic sobre la variable inicia un editor que permite su visualización y edición, siempre que sea menor a renglones o columnas. En esta misma área se puede visualizar la carpeta en la que se está trabajando al seleccionar la pestaña correspondiente a Current Directory, MATLAB solo ve el contenido de la carpeta que está seleccionada. Para cambiar el directorio se emplea el acceso rápido (circulo segmentado, arriba al centro). Command History (rectángulo continuo) lista las acciones solicitadas en Command Window, de la más reciente a la más antigua y se pueden pasar a la zona de trabajo navegando por medio de las flecha en el teclado (arriba y abajo) o haciendo doble clic en la línea histórica deseada. Start (rectángulo segmentado) es el puerto de entrada a muchas de las funciones de MATLAB, herramientas de trabajo, ayudas y más. Usualmente debe estar preparado para pasar horas de sano entretenimiento en los ejemplos y guías de uso. Cuando se le ha pedido a MATLAB que realice una actividad que toma tiempo, desaparece el prompt y a la derecha de Start aparece la leyenda Busy, que indica la necesidad de tener paciencia. Si MATLAB para principiantes 11 se desea cancelar el proceso se puede hacer presionando al mismo tiempo las teclas ctrl-c restableciendo el prompt y aparece la leyenda Ready a la derecha de Start. En cálculo numérico elemental, un camino trivialmente simplista es usar una calculadora cuando la tarea es muy simple, después utilizar Excel si se requiere de gráficas más elaboradas y finalmente C++ cuando se tienen en mente acciones no desarrollas por un programa particular. El salto de una herramienta a la otra puede ser intimidante e incluso limitante. Si quisiéramos que MATLAB estuviera presente en esta evolución, igualmente puede ser una alternativa a cualquiera de las herramientas anteriores. Una de las limitaciones para iniciar a usar MATLAB como calculadora (inicialmente y después el cielo es el límite) es que no se parece a una. Superando esta diferencia, se puede fácilmente superar las ventajas de Excel como hoja de cálculo y de ahí pasar a usar MATLAB con más provecho. 1.2 Uso elemental de MATLAB Si se escribe una expresión válida en el área de Command Window, la respuesta aparece de manera inmediata. 5*3 (presionar la tecla de cambio de línea, enter, ) ans = 15 La multiplicación de dos números se realiza y el resultado se guarda en la variable ans. El prompt indica que está listo para nuevas instrucciones. 3^3 ans = 27 La potencia es igualmente evidente, el resultado se escribe en la variable ans, sustituyendo cualquier valor o contenido que tuviera anteriormente. 1/0 Warning: Divide by zero. ans = Inf Aquí Inf es la manera de representar, que indica un número más grande que cualquiera que puede ser escrito y que en este caso resulto de intentar dividir el número uno entre cero. cos(pi/4) MATLAB para principiantes 12 ans = Aquí la función trigonométrica está en radianes, pi representa el símbolo, medida del perímetro del círculo en función del diámetro. La misma función trigonométrica en grados donde el círculo tiene 360 grados se escribe cosd. exp(i*pi/4) ans = i Aquí i (también puede ser 1i, uno-i, que evita confusiones con la variable i) representa a la raíz cuadrada de menos uno 1, unidad de los números imaginarios. i puede ser también una variable, así que no está de más tener precauciones para no x cometer errores. En cuanto a la notación exp(x) es la representación de e, donde e es el número de Euler cuyo valor aproximadamente es /0 Warning: Divide by zero. ans = NaN Aquí NaN representa a un resultado indefinido, se formó de Not a Number, no es un número y aquí surge de intentar dividir cero entre cero. (3-exp(log(3)))/3 ans = e-016 Aquí la respuesta algebraica esperada es cero, pero en virtud de que la aritmética de punto flotante realiza por aproximaciones los cálculos, en su lugar aparece un número muy pequeño, (1.4803e-016=1.4803E-016); los cálculos en la computadora producen errores, estos con la ventaja del punto flotante (notación exponencial) son muy pequeños. eps representa el valor del error máximo aritmético para el número uno en una máquina típica que describe los números en punto flotante con 64 bits y que es ; cualquier número mas pequeño que eps es indistinguible del uno. Dicho de otra manera el siguiente número mayor que uno y distinguible de uno en la máquina es 1+eps. eps MATLAB para principiantes 13 ans = e-016 log(x) Algunas palabras es logaritmo reservadas natural de en x MATLAB log10(x) log(x) es el es logaritmo el natural base de 10 x de x atan(x) log10(x) es es el el ángulo logaritmo en radianes base 10 cuya de x tangente es x sinh(x) atan(x) es el ángulo seno hiperbólico en radianes de cuya x tangente es x sqrt(x) sinh(x) raíz es el cuadrada seno hiperbólico de x de x sqrt(x) es la raíz cuadrada de x 1.3 La ayuda en MATLAB MATLAB contiene un enorme material que es imposible dominarlo todo y menos aún recordarlo todo, por lo que es importante aprenda a aprender y recordar de manera eficiente. No es por accidente que al iniciar el programa, la primera línea invite a explorar el material de ayuda que contiene: To get started, select MATLAB Help or Demos from the Help menu. El texto subrayado es una liga directa a la ayuda en MATLAB, que abre una ventana como la mostrada en la figura 1.2. En la figura 1.2 se ve la ventana de ayuda; en el panel izquierdo está el navegador, en el que se puede explorar por contenido, por índice, hacer búsquedas o explorar las demostraciones. Aquí se muestra el navegador por contenido (elipse continua), el libro de MATLAB (elipse segmentada), las funciones por categoría (elipse punteada) y las funciones matemáticas elementales. En el panel derecho se ve la lista de funciones exponenciales, haga doble clic en cualquier nombre en azul para ver la ayuda preparada en cuanto a su definición y uso. MATLAB para principiantes 14 Figura 1.2 Ventana de ayuda de MATLAB. Muchas veces no se recuerda o conoce el nombre de la función que hace lo que buscamos, para esas ocasiones la búsqueda alfabética de funciones puede ser útil. Si recordamos el nombre de la función pero no su uso, podemos emplear Command Window y teclear help y el comando del que requiere ayuda, por ejemplo help log y aparece en el Command Window la ayuda al respecto, usualmente simplificada. 1.4 Definición de variables Se pueden almacenar las variables usadas en el cálculo de las expresiones a=exp(1) a = Aquí a tiene el valor de la constante de Euler. c=a*b??? Undefined function or variable 'b'. Aquí intentamos guardar en la variable c el resultado de multiplicar el número de Euler (a) por el contenido de b. Como no habíamos definido previamente el valor de b se nos indica. El prompt regresa en espera de una instrucción válida. La multiplicación a*b tiene la notación correcta, (a)(b) no es aceptable como multiplicación, como tampoco MATLAB para principiantes 15 lo es ab ni a.b; estos dos últimos casos corresponden a otras variables, la variable ab y la componente b del objeto a (a.b). A continuación aparecen algunas convenciones útiles que hay que tener en cuenta: los comentarios que ignora el intérprete de MATLAB, la asignación de caracteres alfanuméricos a las variables y la continuación de comandos en varias líneas. Los caracteres que hay después del símbolo de porcentaje (%) son comentarios y aparecen en color verde en el editor de MATLAB además de que no son interpretados. En el libro los comentarios aprarecen en tono gris. % este es un comentario, no hay ejecución x=a^2; % ; al final de la instrucción evita que aparezca el resultado en Command Window y='letreros';% los apostrofes (') definen los caracteres alfanuméricos z= %... es una continuación de línea z = Exhibición de resultados Los resultados numéricos aparecen con cuatro decimales, pero se pueden exhibir con 15 decimales (format long), en forma fraccional aproximada (format rat) o en formato hexadecimal (format hex). La palabra format sin argumento regresa a la forma predeterminada. P= pi P = format long P P = format rat P P = 355/113 format 1.6 Representación de números en MATLAB La representación de números en base decimal se basa en escribirlos como una suma de potencias de 10. Por ejemplo, para el número MATLAB para principiantes x x10 3x10 3x10 1 7x10 2 5x10 Esta representación es tan común e intuitiva que no abundaremos en ella, pero la representación de este mismo número en base binaria y hexadecimal es interesante de recordar o D D H 1x16 2 B 1x2 8 1x2 1 1x16 1x x2 0 6x16 0x x2 2 1x2 3 Donde los subíndices D, B y H se refieren a decimal, binario y hexadecimal, respectivamente. Binario y hexadecimal son intercambiados fácilmente si agrupamos los binarios en 4 números, partiendo del punto. En este ejemplo: B, que son H Decimal Binario Hexadecimal a b c d e f MATLAB tiene una representación de los números en notación binaria de 64 bits que cumple la norma IEEE 754 y que es: s ( 1022 ) ( 1) 2 ( f ), si e = 0 s ( e 1023) ( 1) 2 (1 f ), si e = [1, 2046] Representación especial, si e = 2047 donde s representa al signo del número y se representa con un bit 0 o 1. e representa al exponente del número y se define con 11 bits que cubre del entero decimal 1 al 2046, en cuyo caso se llaman números normales. En caso de que e sea cero su MATLAB para principiantes 17 representación se denomina número subnormal y en tal caso el término (1+f) se sustituye sólo por f. En caso de que e sea 2047 se reserva para representaciones especiales tales como NaN o inf. f representa a la mantisa del número y está formada por 52 bits, lo que produce números desde el número decimal número es una potencia de al número n 1 2 n ; también puede ser cero y en tal caso el La siguiente tabla ilustra los