Diseño de Sistemas de Control Usando MATLAB-SIMULINK

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Diseño de Sistemas de Control Usando MATLAB-SIMULINK"

Transcripción

1 CURSO Diseño de Sistemas de Control Usando MATLAB-SIMULINK Emilio Soria Olivas & Gustavo Camps i Valls Departament d Enginyeria Electrònica UNIVERSITAT DE VALÈNCIA ESTUDI GENERAL València Curs

2 Diseño de Sistemas de Control Usando MATLAB-SIMULINK Emilio Soria Olivas & Gustavo Camps i Valls, {soriae,gcamps}@uv.es Grupo de Procesado Digital de Se~nales,

3 ii

4 Índice General Lista de Figuras. Lista de Tablas. iv ix 1 Introducción al Matlab Introducción Establecer el camino de búsqueda Editor de ficheros y depurador de errores El espacio de trabajo en MATLAB Control de los formatos de salida y de otras opciones de MAT- LAB Operaciones básicas Tipos de datos Funciones de Matlab Cálculo de normas de matrices Cálculo de normas de vectores Datos en Matlab Programación de Matlab Ficheros *.m Gráficos en Matlab Otras características de Matlab Introducción a los Sistemas Continuos de Control Perspectiva histórica y definiciones Objetivos de los Sistemas de Control Clasificación de los Sistemas de Control Sistemas y modelos Modelos dinámicos y respuesta dinámica Principios básicos de la realimentación Respuesta dinámica

5 iv ÍNDICE GENERAL Transformada de Laplace Especificaciones en el dominio del tiempo y Transformada de Laplace Sistemas de primer orden, parámetros característicos Sistemas de segundo orden, respuesta impulsional/escalón, Especificaciones en el dominio temporal Efectos de la adición de ceros y polos Principios esenciales de la realimentación Introducción Sensibilidad Precisión en régimen estacionario: tipo de sistema Estabilidad en SLIT. Criterio de Routh Método de diseño del lugar de las raíces (MLR) Introducción Trazado del Lugar de las Raíces Ejemplos prácticos Compensación dinámica Método de diseño de la respuesta en frecuencia (MRF) Respuesta en frecuencia Diagramas de Bode Márgenes de Estabilidad Criterio de estabilidad de Nyquist Diagrama de Nichols Compensación Toolbox de Control Organización del paquete de Control Funciones esenciales Demostraciones ilustrativas Herramientas de Control con Matlab en Internet Introducción al Entorno Simulink Prácticas 145 Bibliografía 173

6 Índice de Figuras 1.1 Ventana inicial de MATLAB Menú de ayuda de MATLAB Camino de búsqueda de MATLAB Variables del espacio de trabajo de MATLAB Descripción de la variable x Menú de preferencias de MATLAB Uso de la instrucción meshgrid Idealización de proceso Idealización del control de procesos Esquema de control mediante redes neuronales. Para controlar una planta mediante un controlador se ajusta su actuación mediante la señal de error que comete la planta Esquema de control adaptativo. El regulador se va adaptando a partir de las salidas que proporciona un estimador de la actuación de la planta cuya actuación se va controlando mediante el mismo controlador. Se trata de un proceso adaptativo o iterativo (a) Representación gráfica de un sistema con una salida y, una entrada u, una perturbación medida w y una no mensurable v. (b) Ejemplo de sistema. Panel solar de una casa: u entrada, I es la perturbación medida, y es la salida, v son las perturbaciones no mensurables Respuestas de entrada y salida de un determinado sistema Respuesta impulsional de un sistema Sistema mecánico Sistemas rotores o rotacionales. Satélite Sistemas rotores o rotacionales. Péndulo Sistemas rotores o rotacionales. Péndulo invertido Sistemas rotores o rotacionales. Avión Sistemas eléctricos Sistemas electro-mecánicos Sistemas Flujo de calor

7 vi ÍNDICE DE FIGURAS 2.16 Sistemas de compresión de fluidos Algunas Transformadas estándar de Laplace Motor DC Ecuaciones diferenciales y Transformada de Laplace (función de transferencia) del Sistema del Motor DC Respuesta de un sistema de primer orden a la entrada rampa unitaria Respuesta de un sistema de primer orden a la entrada escalón Respuesta impulsional en función de la posición de los polos en un sistema de primer orden Sistema de segundo orden como bloque con realimentación unitaria Respuesta de un sistema de segundo orden en función de la posición de los polos Respuesta temporal de un sistema de segundo orden en función de distintos valores del coeficiente de amortiguamiento, ξ Respuesta temporal transitoria típica de un sistema de segundo orden. Se indican también las características que definen la respuesta, a menudo conocidas por especificaciones del sistema ya que son las propiedades deseadas a conseguir en un controlador Sistema de control con realimentación. Ejemplo Respuesta de los sistemas H 1 (s) y H 2 (s). Con la adición del cero conseguimos un menor tiempo de subida Estructuras básicas en el control de sistemas: (a) Lazo abierto y (b) lazo cerrado Sistema con realimentación unitaria Posición de los polos del sistema y respuesta escalón para k = 1, y k = Posición de los polos del sistema y respuesta escalón para k = 1, k = 100 y k = Sistema controlador proporcional de constante K a y planta a controlar K G G en lazo realimentado unitario Algunos ejemplos de polos y ceros sobre el eje real para dibujar el LGR Ejemplos de trazado de asíntotas para el LGR Ejemplo del cálculo de los ángulos de salida φ y ψ Este ejemplo ilustra un caso en que dos ramas del LGR se encuentran en el punto de ruptura ( breakway point, saddle point ) y se alejan del eje en sentidos contrarios. En este caso, el punto de ruptura representa una doble raíz de la ecuación, cuando el valor de K tiene el valor del punto Situaciones típicas de puntos de ruptura ( breakway point, saddle point )

8 ÍNDICE DE FIGURAS vii 2.39 Lugar de las raíces para el sistema del Ejemplo Lugar de las raíces para el sistema del Ejemplo Más ejemplos de LGR Paso 1: indicamos los polos del sistema y con una flecha roja el lugar de raíces que queda a la izquierda de un número impar de ceros + polos reales Resolución del LGR con MATLAB LGR del ejemplo con MATLAB Estructura típica de un compensador Lugar de las Raíces para la inclusión de un compensador por adelanto Lugar de las Raíces para la inclusión de un compensador por adelanto (s=-2) y un polo (s=-20) Diagrama del coche+barra Lugar de las raíces para (a) el sistema original, (b) compensador 1 y (c) compensador Control mediante un compensador por adelanto del sistema coche+barra Lugar de las Raíces para la inclusión de un compensador por atraso con control de velocidad Diagrama de Bode de la amplitud para singularidades en el origen Diagrama de Bode de (a) amplitud y (b) fase para términos de primer orden Diagrama de Bode de (a) amplitud y (b) fase para términos de segundo orden Diagramas de amplitud (a), fase (b) y una aproximación de la fase (c) para el sistema G(s) = 20(s+0.5) s(s+10)(s+50) Diagramas de amplitud (a), fase (b) para el sistema G(s) = 20(s+0.5) s(s+10)(s+50) mediante bode.m de MATLAB Bloque de control proporcional Lugar de las raíces para els sistema G(s) =. Se observa que s(s+1) 2 para K > 2 el sistema se hace inestable Diagramas de Bode para el sistema G(s) = 1 con K=1. s(s+1) Diagramas de Bode para el sistema G(s) = 1 s(s+1) 2 con K=1 mediante el comando margin de MATLAB Planta, LGR, Bode y Nyquist del Ejemplo 1: G(s) = (s+1) Planta del Ejemplo 2: G(s) = 1. s(s+1) Diagrama de Bode del Ejemplo 2: G(s) = s(s+1) Diagrama de Nyquist del Ejemplo 2: G(s) = s(s+1) LGR, Bode y Nyquist del Ejemplo 3: G(s) = s+1 s( s )2 122

9 viii ÍNDICE DE FIGURAS 2.66 Definiciones de los márgenes de estabilidad (PM y GM) sobre un Diagrama de Nyquist genérico Diagrama de Nyquist de un sistema complejo y definición del margen de vector Ejemplo de Diagrama de Nichols para el sistema en l.a. G(s) = s+1 s(s+3)(s+5) Diagrama de Bode del compensador en adelanto para α = 0.1 K c = Diagramas de Bode para el sistema sin compensar (trazo continuo) y compensado (trazo discontinuo) mediante red de adelanto Diagrama de Bode del Compensador PD Diagramas de Bode de un compensador de atraso Diagrama de Bode de un Compensador Integral (PI) Respuestas del sistema del ejemplo 01 al impulso, el escalón unitario, rampa unitaria y la función sinc hasta un tiempo t = Sistema del ejercicio Diagrama de polos y ceros del ejemplo Sistema del apartado E

10 Índice de Tablas 2.1 Relación de analogías entre las variables físicas así como algunas implementaciones de sistemas de control Expresiones de los errores en régimen estacionario en función del tipo de entrada. Las constantes representan el tipo de error: K p es la constante de error de posición, K v es la constante del error de velocidad y K a es la constante para el error de aceleración

11 Capítulo 1 Introducción al Matlab 1.1 Introducción MATLAB es un paquete informático cuyo nombre procede de la unificación de los términos MATrix LABoratory. Su objetivo inicial fue proporcionar un fácil acceso a las librerías LINPACK y EISPACK que son dos de las librerías más importantes en computación y cálculo matricial. Este manual hace referencia a la versión 5.3 de este programa, aparecida a comienzos de MATLAB es un programa para realizar cálculos numéricos usando vectores y matrices. Como caso particular de estos elementos evidentemente puede trabajar también con números tanto reales como complejos. MATLAB es un entorno de computación y desarrollo totalmente integrado; está orientado para llevar a cabo proyectos donde se lleven a cabo gran número de cálculos matemáticos complementándose dichos cálculos con excelentes representaciones gráficas. En los medios universitarios MATLAB se ha convertido en una herramienta básica docente. En el mundo industrial MATLAB está siendo utilizado como herramienta de investigación para la resolución de complejos problemas planteados en la realización y aplicación de modelos matemáticos en ingeniería. Como se ha comentado anteriormente MATLAB dispone de una serie de librerías especializadas. Entre las más destacadas están: MATLAB se puede arrancar como cualquier otra aplicación de Windows 95/ 98/ NT. Al arrancar MATLAB se abre una ventana parecida a la de la Figura 1. En la pantalla inicial aparece el prompt característico de MATLAB (>>). Esto quiere decir que el programa está preparado para empezar a trabajar. Si se quiere que aparezca un saludo inicial se puede realizar modificando un fichero de comandos personal que se ejecuta cada vez que se entra en el programa. Este fichero es el fichero matlabrc.m. Este fichero también controla otra serie de parámetros de funcionamiento importantes como son los directorios de trabajo, forma/color de las

12 2 Capítulo 1. Introducción al Matlab Communications Toolbox Control System Toolbox Curve Fitting Toolbox Data Acquisition Toolbox Database Toolbox Filter Design Toolbox Financial Toolbox Financial Time Series Toolbox Fuzzy Logic Toolbox Image Processing Toolbox Instrument Control Toolbox Model Predictive Control Toolbox Neural Network Toolbox Optimization Toolbox Robust Control Toolbox Signal Processing Toolbox Spline Toolbox Statistics Toolbox Symbolic/Extended Symbolic Math ToolboxSystem Identification Toolbox Wavelet Toolbox Mapping Toolbox Introducción al Matlab Figura 1. Ventana inicial de MATLAB 5.3. Figura 1.1: Ventana inicial de MATLAB 5.3. En la pantalla inicial aparece el prompt característico de MATLAB (»). Esto quiere decir que el programa está preparado para empezar a trabajar. Si se quiere que aparezca un saludo inicial se puede realizar modificando un fichero de comandos personal que se ejecuta cada vez que se entra en el programa. Este fichero es el fichero matlabrc.m. Este fichero también controla otra serie de parámetros de funcionamiento importantes como son los directorios de trabajo, forma/color de las pantallas de comandos y gráficos, etc. Destacar que las diferentes opciones sobre estos parámetros se pueden variar de forma más sencilla usando los típicos menús de Windows y que MATLAB también nos ofrece. pantallas de comandos y gráficos, etc. Destacar que las diferentes opciones sobre estos parámetros se pueden variar de forma más sencilla usando los típicos menús de Windows y que MATLAB también nos ofrece. Antes de comentar el programa destacar que nos podemos desplazar sobre la línea Antes de comentar el programa destacar que nos podemos desplazar sobre la línea de de comandos comandos con lascon teclas las teclas y. y. Además Además se puede se puede ir al principio ir alde principio la línea con la de tecla la línea con la tecla Inicio, Inicio, al final final de de la la línea con Fin, Fin, y borrar y toda borrar la línea toda con Esc. la línea Para borrar contodas Esc. las Para borrar salidas anteriores de MATLAB y dejar limpia la ventana principal se puede utilizar las todas las salidas funciones anteriores clc. Si se desea MATLAB salir del programa y dejar se tienen limpia como opciones la ventana los comandos principal quit se puede o exit, o bien Exit MATLAB en el menú File. Además, al igual que todas las utilizar las funciones aplicaciones clc. Windows, Si se también desea se puede salir utilizar delalt+f4. programa se tienen como opciones los comandos quit o exit, o bien Exit MATLAB en el menú File. Además, al igual Si se encuentran dificultades MATLAB 5.3 dispone de un excelente fichero de ayuda que todas lasque aplicaciones tiene todo lo que Windows, uno puede desear. también se puede utilizar Alt+F4. Si se encuentran dificultades MATLAB 5.3 dispone de un excelente fichero de ayuda que tiene todo lo que uno puede desear. En la última figura se muestran las distintas opciones que aparecen en el menú de ayuda: 3

13 1.1 Introducción 3 Introducción al Matlab Figura 2. Menú de ayuda de MATLAB 5.3. Figura 1.2: Menú de ayuda de MATLAB 5.3. En la última figura se muestran las distintas opciones que aparecen en el menú de ayuda: Help Window, Se puede buscar ayuda sobre la función o el concepto que se 1. desee. Help Window, Se puede buscar ayuda sobre la función o el concepto que se desee. Help Tips. Ofrece ideas prácticas para utilizar la ayuda. 2. Help Tips. Ofrece ideas prácticas para utilizar la ayuda. Help Desk. Se abre un buscador que permite acceder a toda la información 3. Help Desk. Se abre un buscador que permite acceder a toda la información sobre sobre MATLAB en formato HTML. Esta información es equivalente a los manuales impresos impresos del del programa. programa. Desde Desde la parte la parte inferior inferior de esta de esta página, página, mediante mediante el MATLAB en formato HTML. Esta información es equivalente a los manuales el enlace Online Manuals (in (in PDF) PDF) se puede se puede acceder acceder a la versión a la versión *.pdf de *.pdf los de los manuales manuales de MATLAB. de MATLAB. Este formato Este formato es menos es menos adecuado adecuado para consultar para consultar que el quehtml, el HTML, pero pero mucho mucho más adecuado más adecuado para imprimir para imprimir y revisar luego y revisar sobre luego papel. sobre papel. 4. Examples and Demos. Llegamos a una ventana que da acceso a un buen número de ejemplos resueltos con MATLAB. Es bastante interesante recorrer Examples estos ejemplos and para Demos. hacerse Llegamos idea de las a posibilidades una ventana del que programa. da acceso a un buen número de ejemplos resueltos con MATLAB. Es bastante interesante recorrer Además, estosse ejemplos puede también para hacerse recurrir idea al Help de las desde posibilidades la línea de comandos. del programa. La instrucción helpwin seguido de un nombre de comando muestra la información correspondiente a ese Además, comando seen puede la ventana también Help recurrir Window, al Help incluyendo desdetambién la líneacomandos de comandos. similares La instrucción sobre los que helpwin se ofrece seguido ayuda. de El un comando nombre doc deseguido comando de un muestra nombre lade información comando muestra la información correspondiente a ese comando a través de Netscape Navigator correspondiente a ese comando en la ventana Help Window, incluyendo también o Internet Explorer, en formato HTML. comandos similares sobre los que se ofrece ayuda. El comando doc seguido de un nombre El entorno de comando de trabajo muestra de MATLAB la información ha mejorado correspondiente mucho desde a ese su comando versión original a través dehaciéndose Netscapemucho Navigator más gráfico o Internet e intuitivo. Explorer, Los componentes formato HTML. más importantes del entorno de trabajo de MATLAB son el editor de directorios de trabajo (Path Browser), El entorno de trabajo de MATLAB ha mejorado mucho desde su versión original trabajo haciéndose (Workspace mucho más Browser). gráficoa e continuación intuitivo. Los se componentes describen brevemente más importantes estos el editor y depurador de errores (Editor & Debugger) y el visualizador del espacio de componentes. 4

14 4 Capítulo 1. Introducción al Matlab del entorno de trabajo de MATLAB son el editor de directorios de trabajo (Path Browser), el editor y depurador de errores (Editor & Debugger) y el visualizador del espacio de trabajo (Workspace Browser). A continuación se describen brevemente estos componentes Establecer el camino de búsqueda MATLAB puede llamar a una gran variedad de funciones, tanto propias como programadas por los usuarios. Es necesario conocer cuáles son las reglas que determinan qué función o qué fichero es el que se va a ejecutar cuando su nombre aparezca en una línea de comandos del programa. Estas reglas quedan determinadas por el camino de búsqueda que el programa utiliza cuando encuentra el nombre de una función. Este camino es una lista de directorios que se puede ver y modificar a partir de la línea de comandos, o utilizando el Path Browser. El comando path hace que se escriba el search path de MATLAB (el resultado depende de en qué directorio está instalado MATLAB): Para ver cómo se utiliza el search path supóngase que se utiliza la palabra nombre1 en un comando. El proceso que sigue el programa para tratar de conocer qué es nombre1 es el siguiente: 1. Comprueba si nombre1 es una variable previamente definida por el usuario. 2. Comprueba si nombre1 es una una función privada del usuario. 3. Comprueba si nombre1 es una función del usuario. 4. Comprueba si nombre1 es una función interna o intrínseca de MATLAB. 5. Comprueba si hay un fichero llamado nombre1.mex, nombre1.dll o nombre1.m en el directorio actual, cuyo contenido se obtiene con el comando dir. 6. Comprueba si hay ficheros llamados nombre1.mex, nombre1.dll o nombre1.m en los directorios incluidos en el search path de MATLAB. Estos pasos se realizan en el orden indicado. Cuando se encuentra lo que se está buscando se detiene la búsqueda y se utiliza el fichero que se ha encontrado. Conviene saber que, a igualdad de nombre, los ficheros *.mex se ejecutan antes que los ficheros *.m que están en el mismo directorio. El concepto de directorio actual es importante en MATLAB. Para cambiar de directorio actual se utiliza el comando cd, seguido del nombre del directorio, para el cual se puede utilizar un path absoluto (por ejemplo cd C:\Matlab\Ejemplos) o relativo (cd Ejemplos).

15 1.1 Introducción 5 MATLAB permite utilizar tanto la barra normal (/) como la barra invertida (\). Para subir un nivel en la jerarquía de directorios se utiliza el comando cd. Path Browser define los directorios donde MATLAB debe buscar los ficheros de comandos y las funciones. Con el comando Set Path del menú File se muestra la lista de directorios en la que MATLAB buscará. En la figura 3 se muestra un ejemplo de dicho Introducción path. al Matlab Figura 3. Camino de búsqueda de MATLAB 5.3. Para añadir Figura (o quitar) 1.3: un Camino directorio a de esta búsqueda lista se debe ejecutar de MATLAB el comando 5.3. Add to Path (o Remove Path) en el menú Path de dicho cuadro de diálogo. El nuevo directorio se puede añadir al comienzo o final de la lista. El orden de la lista es muy importante, porque refleja el orden de la búsqueda: si una función está en dos directorios, se utilizará la que primero se encuentre. Para añadir (o quitar) un directorio a esta lista se debe ejecutar el comando Add to Path (o Remove Path) en el menú Path de dicho cuadro de diálogo. El nuevo Desde la pantalla de comandos del MATLAB también se puede modificar el camino directorio se puede seguido por añadir MATLAB alen comienzo su búsqueda de ola variables final de o función la lista. correspondiente. El orden Así, el de la lista es comando addpath permite añadir uno o más directorios al search path. Además se muy importante, puede porque utilizar el refleja comando el rmpath orden (de remove de lapath), búsqueda: al se le si pasan unala función lista de está en dos directorios a eliminar del search path. Por ejemplo, el comando:»rmpath 'c:\matlab' directorios, se utilizará la que primero se encuentre. 'c:\temp' borra del search path los dos directorios indicados. Desde la pantalla de comandos del MATLAB también se puede modificar el camino seguido poren MATLAB aparecen en su los ficheros-m búsqueda (o M-files); de lason variables ficheros de texto o función ASCII, con correspondiente. la Editor de ficheros y depurador de errores. extensión *.m, que contienen conjuntos de comandos definición de funciones. Tras Así, el comando teclear addpath el nombre de permite estos ficheros añadir en la línea uno de comandos o más y pulsar directorios Intro, se ejecutan al search path. todos los comandos contenidos en dicho fichero. Además se puede utilizar el comando rmpath (de remove path), al que se le pasan la lista de directorios a eliminar del search path. Por ejemplo, el comando: rmpath c:\matlab c:\temp borra del search path los dos directorios indicados. MATLAB dispone de un editor propio que le permite crear y modificar estos ficheros, así como ejecutarlos paso a paso para ver si contienen errores (proceso de depuración). Este editor muestra con diferentes colores los diferentes tipos o elementos constitutivos de los comandos (en verde los comentarios, en rojo las cadenas de caracteres, etc.). Además supervisa que las comillas o paréntesis que se abren, no se queden sin el correspondiente elemento de cierre. Este editor/depurador es un programa enormemente útil para detectar y corregir errores, que hay que conocer muy bien. Para ello lo mejor es practicar Editor de ficheros y depurador de errores. En MATLAB aparecen los ficheros-m (o M-files); son ficheros de texto ASCII, El espacio de trabajo en MATLAB. con la extensión *.m, que contienen conjuntos de comandos o definición de funciones. Tras teclear el nombre de estos ficheros en la línea de 6 comandos y pulsar Intro, se ejecutan todos los comandos contenidos en dicho fichero. MATLAB dispone de un editor propio que le permite crear y modificar estos ficheros, así como ejecutarlos paso a paso para ver si contienen errores (proceso de

16 6 Capítulo 1. Introducción al Matlab depuración). Este editor muestra con diferentes colores los diferentes tipos o elementos constitutivos de los comandos (en verde los comentarios, en rojo las cadenas de caracteres, etc.). Además supervisa que las comillas o paréntesis que se abren, no se queden sin el correspondiente elemento de cierre. Este editor/depurador es un programa enormemente útil para detectar y corregir errores, que hay que conocer muy bien. Para ello lo mejor es practicar El espacio de trabajo en MATLAB. El espacio de trabajo de MATLAB es el conjunto de variables y de funciones Introducción al Matlab de usuario que, en un determinado momento, están definidas en la memoria del programa. El espacio Para de obtener trabajo información de MATLAB es sobre el conjunto dichode espacio variables de y de trabajo funciones sede pueden usuario utilizar los comandos que, en who un determinado y whos. momento, El segundo están proporciona definidas en la una memoria información del programa. más Para detallada obtener información sobre dicho espacio de trabajo se pueden utilizar los comandos que el primero ya que además de dar las variables del espacio de trabajo en ese who y whos. El segundo proporciona una información más detallada que el primero ya momento que dice además el tamaño de dar las de variables dichas del variables. espacio de trabajo Se puede en ese obtener momento dedice modo el tamaño gráfico una información de dichas análoga variables. conse el puede Workspace obtener de modo Browser, gráfico una que información se activa análoga con con el comando el Workspace Browser, que se activa con el comando Show Workspace del menú File de Show Workspace MATLAB. del menú File de MATLAB. A modo de ejemplo, si se genera un conjunto de variables y se lanza dicha aplicación se tendría lo que muestra la Fig A modo de ejemplo, si se genera un conjunto de variables y se lanza dicha aplicación se tendría lo que muestra la siguiente figura: Figura 4. Variables del espacio de trabajo de MATLAB. Si se pulsa sobre Figuracualquiera 1.4: Variables de estas del variables, espaciopor deejemplo trabajosobre de MATLAB. x, se abre una ventana como la que muestra la siguiente figura: Si se pulsa sobre cualquiera de estas variables, por ejemplo sobre x, se abre una ventana como la que muestra la Fig. 1.5: Control de los formatos de salida y de otras opciones de MAT- LAB Los formatos de salida en la ventana principal de MATLAB se pueden controlar fácilmente a partir del cuadro de diálogo que se abre con el comando Preferences del menú File. Figura 5. Descripción de la variable x.

17 Figura 4. Variables del espacio de trabajo de MATLAB. 1.1Si Introducción se pulsa sobre cualquiera de estas variables, por ejemplo sobre x, se abre una ventana 7 como la que muestra la siguiente figura: Figura 5. Descripción de la variable x. Figura 1.5: Descripción de la variable x. En esta figura aparecen los diferentes formatos numéricos que puede tener MAT- LAB. Estos formatos son los que usa para mostrar los resultados (siempre calcula con la máxima precisión). Los más importantes son los siguientes: 7 format short coma fija con 4 decimales. format long coma fija con 15 decimales. format hex cifras hexadecimales. format bank números con dos cifras decimales. format short e notación científica con 4 decimales. format short g notación científica o decimal, dependiendo del valor. format long e notación científica con 15 decimales. format loose introduce algunas líneas en blanco en la salida. format compact elimina las líneas en blanco citadas. format rat expresa los números racionales como cocientes de enteros Comentar que estos formatos también se pueden activar desde la línea de comandos. Relacionado con los diferentes formatos numéricos comentar que MATLAB aplica un factor de escala general a las matrices cuando los elementos más grandes, o

18 Introducción al Matlab Control de los formatos de salida y de otras opciones de MATLAB 8 Los formatos de salida en la ventana principal Capítulo de MATLAB 1. Introducción se pueden controlar al Matlab fácilmente a partir del cuadro de diálogo que se abre con el comando Preferences del menú File. Figura 6. Menú de preferencias de MATLAB. En esta figura aparecen Figuralos 1.6: diferentes Menú de formatos preferencias numéricos de MATLAB. que puede tener MATLAB. Estos formatos son los que usa para mostrar los resultados (siempre calcula con la máxima precisión). Los más importantes son los siguientes: más pequeños, son superiores, o inferiores, a una determinada cantidad; además MATLAB trata format de short mantener el coma formato fija con de 4 decimales los números que han sido definidos como format long coma fija con 15 decimales enteros (sin punto decimal). format hex cifras hexadecimales El cuadro format de diálogo bank Command números con Window dos cifras Font decimales la Figura 6 ofrece la posibilidad de elegir format el short tipoe de notación letra científica así como con 4 el decimales tamaño y el color, tanto de las letras format short g notación científica o decimal, dependiendo del valor como del fondo utilizada en la ventana de comandos de MATLAB. Es mejor utilizar format long e notación científica con 15 decimales tipos de letra format de tamaño loose constante introduce para algunas que líneas la salida en blanco se alinee en la salida bien en la pantalla. format compact elimina las líneas en blanco citadas format rat expresa los números racionales como cocientes de enteros 1.2 Operaciones básicas comentar que estos formatos también se pueden activar desde la línea de comandos. MATLAB es, fundamentalmente, un programa para cálculo matricial. En él se irán Relacionado definiendocon laslos matrices, diferentes formatos los vectores numéricos y las comentar expresiones que MATLAB que aplica los combinan, un factor de escala general a las matrices cuando los elementos más grandes, o más obteniéndose pequeños, resultados son superiores, bieno parciales inferiores, bien a una totales. determinada Si estos cantidad; resultados además MATLAB son asignados a otras trata variables de mantener podrán el formato ser utilizados de los números en otras que han expresiones. sido definidos Antes como de enteros hacer (sin cálculos complicados punto decimal). se aprenderá a introducir matrices y vectores desde el teclado. Más adelante se verán otras formas de definir matrices y vectores. Al igual que en otros lenguajes de programación en MATLAB las matrices 8 y vectores son variables que tienen nombres. Se sugiere que se utilicen letras mayúsculas para matrices y minúsculas para vectores y escalares, destacando que MATLAB no exige esto, pero puede resultar útil de cara a distinguir dichos elementos. Para definir una matriz no hace falta establecer de antemano su tamaño (de hecho, se puede definir un tamaño y cambiarlo posteriormente). MATLAB determina el número de filas y de columnas en función del número de elementos que se

19 1.2 Operaciones básicas 9 proporcionan (o se utilizan). Las matrices se definen por filas; los elementos de una misma fila están separados por espacios o comas las filas, sin embargo, están separadas por retornos de carro o por caracteres punto y coma (;). A modo de ejemplo la siguiente instrucción define una matriz, A, de dimensión 3x3. >> A=[1 2 3; 4 5 6; 7 8 9] La respuesta del programa es la siguiente: A = Destacar que en MATLAB se accede a los elementos de un vector poniendo el índice entre paréntesis, por ejemplo x(3) ó x(i). Los elementos de las matrices se acceden poniendo los dos índices entre paréntesis, separados por una coma, como por ejemplo A(1, 2)ó A(i, j). Una vez que se ha definido la matriz A ya está disponible formando parte del espacio de trabajo de MATLAB, para hacer cualquier tipo de operación con ella. Así, a modo de ejemplo, una sencilla operación con A es hallar su matriz traspuesta. En MATLAB el apóstrofe ( ) es el símbolo de trasposición matricial. >> A ans = Como el resultado de la operación no ha sido asignado a ninguna otra matriz, MATLAB utiliza un nombre de variable por defecto (ans, de answer), que contiene el resultado de la última operación. La variable ans puede ser utilizada como operando en la siguiente expresión que se introduzca. También podría haberse asignado el resultado a otra matriz llamada B: >> B=A >> B =

20 10 Capítulo 1. Introducción al Matlab Ahora ya están definidas las matrices A y B, y es posible seguir operando con ellas. Por ejemplo, se puede hacer el producto B*A (deberá resultar una matriz simétrica): >> B*A ans = MATLAB puede operar con matrices por medio de operadores y por medio de funciones. Los operadores matriciales de MATLAB son los siguientes: + adición o suma sustracción o resta * multiplicación traspuesta potenciación \división-izquierda / división-derecha.* producto elemento a elemento./ y.\ división elemento a elemento. elevar a una potencia elemento a elemento Todos estos operadores son coherentes con las correspondientes operaciones matriciales; por ejemplo no se pueden sumar matrices que no sean del mismo tamaño. Si los operadores no se usan de modo correcto se obtiene un mensaje de error. Los operadores anteriores se pueden aplicar también de modo mixto, es decir con un operando escalar y otro matricial. En este caso la operación con el escalar se aplica a cada uno de los elementos de la matriz. Considérese el siguiente ejemplo: >> A=[1 2; 3 4] >> A = >> A*2 ans = >> A-4 ans =

21 1.2 Operaciones básicas Tipos de datos Ya se ha comentado que MATLAB es un programa preparado para trabajar con vectores y matrices. Como caso particular también trabaja con variables escalares. MATLAB, además, trabaja siempre con doble precisión: guarda cada dato en 8 bytes, con unas 15 cifras decimales exactas. Ya se verá más adelante que también puede trabajar con cadenas de caracteres (strings) y, desde la versión 5.0, también con otros tipos de datos: matrices de más dos dimensiones, vectores y matrices de celdas, estructuras y clases y objetos. MATLAB mantiene una forma especial para los números muy grandes (más grandes que los que es capaz de representar), que son considerados como infinito. Por ejemplo, obsérvese cómo responde el programa al ejecutar el siguiente comando: >> 1.0/0.0 >> Warning: Divide by zero ans = Inf Así pues, para MATLAB el infinito se representa como inf ó Inf. MATLAB tiene también una representación especial para los resultados que no están definidos como números. Por ejemplo, ejecútense los siguientes comandos y obsérvense las respuestas obtenidas: >> 0/0 >> Warning: Divide by zero ans = NaN >> inf/inf ans = NaN En ambos casos la respuesta es NaN, que es la abreviatura de Not a Number. Este tipo de respuesta es enormemente importante en MATLAB, pues permite controlar la fiabilidad de los resultados de los cálculos matriciales. Los NaN se propagan al realizar con ellos cualquier operación aritmética, en el sentido que, por ejemplo, cualquier número sumado a un NaN da otro NaN. MATLAB tiene esto en cuenta. Algo parecido sucede con los Inf. MATLAB dispone de tres funciones útiles relacionadas con las operaciones de coma flotante. Estas funciones, que no tienen argumentos, son las siguientes:

22 12 Capítulo 1. Introducción al Matlab eps devuelve la diferencia entre 1.0 y el número de coma flotante inmediatamente superior. Da una idea de la precisión o número de cifras almacenadas. En un PC, eps vale e-016. realmin devuelve el número más pequeño con que se puede trabajar (2.2251e- 308). realmax devuelve el número más grande con que se puede trabajar (1.7977e+308). En muchos cálculos matriciales los datos y/o los resultados no son reales sino complejos, con parte real y parte imaginaria. MATLAB trabaja sin ninguna dificultad con números complejos. En la entrada de datos se pueden utilizar indistintamente la i y la j para representar la unidad imaginaria (cuando MATLAB devuelve los datos siempre aparece la i). Cuando i y j son variables utilizadas para otras finalidades, como unidad imaginaria puede utilizarse también la función sqrt(-1 ), o una variable a la que se haya asignado el resultado de esta función. La asignación de valores complejos a vectores y matrices desde teclado puede hacerse de las dos formas que se muestran en el ejemplo siguiente (conviene hacer antes clear i, para que i no esté definida como variable. Este comando se estudiará más adelante): >> A = [1+2i 2+3i; -1+i 2-3i] A = i i i i >> A = [1 2; -1 2] + [2 3; 1-3]*i A = i i i i Puede verse que es posible definir las partes reales e imaginarias por separado. En este caso sí es necesario utilizar el operador (*), según se muestra en el ejemplo anterior. MATLAB dispone asimismo de la función complex, que crea un número complejo a partir de dos argumentos que representan la parte real e imaginaria. Es importante advertir que el operador de matriz traspuesta ( ), aplicado a matrices complejas, produce la matriz conjugada y traspuesta. Existe una función que permite hallar simplemente la matriz conjugada (conj) y el operador punto y apóstrofe (. ) que calcula simplemente la matriz traspuesta. MATLAB puede definir variables que contengan cadenas de caracteres. En MAT- LAB las cadenas de texto van entre apóstrofos o comillas simples.

23 1.2 Operaciones básicas 13 Ahora se va a tratar de generalizar un poco lo visto hasta ahora en cuanto a expresiones matriciales. Una variable es un nombre que se da a una matriz, un vector o un escalar. El valor de esa variable, e incluso su tipo, puede cambiar a lo largo de la ejecución de un programa. Una expresión de MATLAB puede tener las dos formas siguientes: primero, asignando su resultado a una variable, variable = expresión y segundo evaluando simplemente el resultado del siguiente modo, expresión, en cuyo caso el resultado se asigna automáticamente a una variable interna de MATLAB llamada ans (de answer) que almacena el último resultado obtenido. Se considera por defecto que una expresión termina cuando se pulsa el retorno de carro. Si se desea que una expresión continúe en la línea siguiente, hay que introducir tres puntos (...) antes de pulsar dicho retorno de carro. También se pueden incluir varias expresiones en una misma línea separándolas por comas (,) o puntos y comas (;). Si una expresión termina en punto y coma (;) su resultado se calcula, pero no se escribe en pantalla. A semejanza de C los nombres de variables deben empezar siempre por una letra y pueden constar de hasta 31 letras y números. El carácter guión bajo ( ) se considera como una letra. A diferencia del lenguaje C, no hace falta declarar las variables que se vayan a utilizar. Esto hace que se deba tener especial cuidado con no utilizar nombres erróneos en las variables, porque no se recibirá ningún aviso del ordenador. Cuando se quiere tener una relación de las variables que se han utilizado en una sesión de trabajo se utiliza el comando who. Existe otro comando, whos, que proporciona además información sobre tamaño, cantidad de memoria ocupada y el carácter de cada variable. Relacionado con estos dos comandos aparece el comando clear que tiene varias formas posibles: clear sin argumentos; elimina todas las variables creadas previamente (excepto las variables globales). clear A X Y, borra las variables indicadas (en este caso A, X e Y). clear global borra las variables globales. clear functions borra las funciones. clear all borra todas las variables, incluyendo las globales, y las funciones. Existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices de tipos particulares. Algunas de estas funciones son las siguientes: eye(n) forma la matriz identidad de tamaño NxN. zeros(m,n) forma una matriz de ceros de tamaño MxN.

24 14 Capítulo 1. Introducción al Matlab ones(m,n) forma una matriz de unos de tamaño MxN. linspace(x1,x2,n) vector con n valores, igualmente espaciados, entre x1 y x2 logspace(d1,d2,n) vector con n valores espaciados, logarítmicamente, entre 10 d1 y 10 d2. rand(m,n) matriz de números aleatorios entre 0 y 1, con distribución uniforme, de tamaño MxN. randn(m,n) matriz MxN de números aleatorios con distribución normal, de valor medio 0 y varianza 1. Existen otras funciones para crear matrices de tipos particulares. Con Help/Help Window se puede obtener información sobre todas las funciones disponibles en MATLAB, que aparecen agrupadas por directorios. En matlab\elmat aparecen la mayor parte de las funciones estudiadas en este apartado. Un par de instrucciones muy útiles para trabajar con matrices son size y length. [m,n]=size(a) devuelve el número de filas y de columnas de la matriz A por otra parte n=length(x) calcula el número de elementos de un vector x. A partir de unas determinadas matrices se pueden obtener otras derivadas de ellas mediante el uso de determinadas instrucciones. Así, a modo de ejemplo, algunas de estas posibilidades serían: zeros(size(a)) forma una matriz de ceros del mismo tamaño que una matriz A previamente creada. ones(size(a)) lo mismo pero ahora aparecen unos. A=diag(x) forma una matriz diagonal A cuyos elementos diagonales son los elementos de un vector ya existente x. x=diag(a) operación opuesta a la anterior; forma un vector x a partir de los elementos de la diagonal de una matriz ya existente A flipud(a) halla la matriz simétrica de A respecto de un eje horizontal. fliplr(a) halla la matriz simétrica de A respecto de un eje vertical. reshape(a,m,n) cambia el tamaño de la matriz A devolviendo una matriz de tamaño mxn cuyas columnas se obtienen a partir de un vector formado por las columnas de A puestas una a continuación de otra.

25 1.2 Operaciones básicas 15 Existen muchas más y, al igual que con ejemplos anteriores se sugiere al lector que utilice el fichero de ayuda de MATLAB para ver todas las posibilidades que se le ofrecen. Otras formas de definición de matrices serían los ficheros.m. MATLAB acepta este tipo de ficheros que contienen instrucciones y/o funciones. Dichos ficheros se llaman desde la línea de comandos tecleando su nombre, sin la extensión. Las variables definidas dentro de un fichero de comandos *.m que se ejecuta desde la línea de comandos son variables globales, esto es, pueden ser accedidas desde fuera de dicho fichero; no sucede lo mismo si el fichero *.m corresponde a una función. Si un fichero de comandos se llama desde una función, las variables que se crean pertenecen al espacio de trabajo de dicha función, son locales. Existe un operador muy importante en MATLAB por el uso tan extendido que se le da; este operador es el operador dos puntos (:). En cierta forma se podría decir que el operador (:) representa un rango. Así, si se tiene x=1:2:10, el vector x contendría los enteros de 1 a 10 a incrementos de dos (en definitiva se tendrían los impares). Por defecto el incremento es 1, pero este operador puede también utilizarse con otros valores enteros y reales, positivos o negativos. Puede verse que, por defecto, este operador produce vectores fila. Si se desea obtener un vector columna basta trasponer el resultado. El operador dos puntos (:) es muy útil y potente con matrices. Recuérdese que MATLAB accede a los elementos de una matriz por medio de los índices de fila y de columna encerrados entre paréntesis y separados por una coma. Podemos usar el operador : para acceder a una determinada submatriz de una matriz. Así por ejemplo A(2,3:5) sería el vector correspondiente a la segunda fila de la matriz pero considerando solamente las columnas 3,4 y 5. Los dos puntos aislados representan todos los elementos. Por ejemplo, el comando A(3,:) extrae todos los elementos de la 3 a fila de la matriz A. Para acceder a la última fila o columna puede utilizarse la palabra end, en lugar del número correspondiente. Uno de los posibles problemas que se puede encontrar al trabajar con MATLAB son la matriz vacía. Para MATLAB una matriz definida sin ningún elemento entre los corchetes es una matriz que existe, pero que está vacía, o lo que es lo mismo que tiene dimensión cer o. Las funciones exist() e isempty() permiten chequear si una variable existe y si está vacía. En cuanto a operadores en MATLAB comenzaremos por los relacionales; estos son: < menor que > mayor que <= menor o igual que

26 16 Capítulo 1. Introducción al Matlab >= mayor o igual que == igual que = distinto que En MATLAB los operadores relacionales pueden aplicarse a vectores y matrices, si una comparación se cumple el resultado es 1 (verdadero), mientras que si no se cumple es 0 (falso). Recíprocamente, cualquier valor distinto de cero, es considerado como verdadero y el cero equivale a falso. Hay que tener en cuenta que cuando los operadores relacionales se aplican a dos matrices o vectores del mismo tamaño, la comparación se realiza elemento a elemento, y el resultado es otra matriz de unos y ceros del mismo tamaño, que recoge el resultado de cada comparación entre elementos. En cuanto a los operadores lógicos de MATLAB éstos son los siguientes: & and or negación lógica Los operadores lógicos se combinan con los relacionales para implementar condiciones múltiples. 1.3 Funciones de Matlab MATLAB tiene un gran número de funciones incorporadas. Algunas son funciones incorporadas en el propio programa. El código de estas funciones está optimizado, siendo funciones particularmente rápidas y eficientes. Además podemos tener funciones definidas por el usuario. En MATLAB una función tiene nombre, valor(es) de retorno y argumentos. Una función se llama utilizando su nombre en una expresión o utilizándolo como un comando más. Las funciones se definen en ficheros de texto *.m. Una diferencia importante con otros lenguajes es que en MATLAB las funciones pueden tener valores de retorno matriciales múltiples. Además las funciones que no tienen argumentos de entrada no llevan paréntesis, por lo que a simple vista no siempre son fáciles de distinguir de las simples variables. Los nombres de las funciones de MATLAB no son palabras reservadas del lenguaje; es posible crear una variable llamada con el mismo nombre que una determinada función, lo que ocultará la función correspondiente. A continuación se enumeran los tipos de funciones más importantes de MATLAB clasificadas según su finalidad:

27 1.3 Funciones de Matlab Funciones matemáticas elementales. 2.- Funciones especiales. 3.- Funciones matriciales elementales. 4.- Funciones matriciales específicas. 5.- Funciones para la descomposición y/o factorización de matrices. 6.- Funciones para análisis estadístico de datos. 7.- Funciones para análisis de polinomios. 8.- Funciones para integración de ecuaciones diferenciales ordinarias. 9.- Resolución de ecuaciones no-lineales y optimización Integración numérica Funciones para procesamiento de señal. A continuación se enumeran algunas características generales de las funciones de MATLAB: Los argumentos usados al llamar la función pueden ser expresiones y también llamadas a otra función. MATLAB nunca modifica las variables que se pasan como argumentos. Si el usuario las modifica dentro de la función, se sacan copias modificándose dichas copias, no las variables originales. MATLAB admite valores de retorno matriciales múltiples. Las operaciones de suma y/o resta de una matriz con un escalar consisten en sumar y/o restar el escalar a todos los elementos de la matriz. Destacar que en el Help Desk aparecen enlaces a Matlab Functions by Subject y Matlab Functions by Index, en donde aparecen relaciones completas de las funciones disponibles en MATLAB. En cuanto a funciones matemáticas elementales que operan con escalares algunas de las más importantes serían las siguientes: sin(x) seno. cos(x) coseno. tan(x) tangente. asin(x) arco seno. acos(x) arco coseno. atan(x) arco tangente (devuelve un ángulo entre -π/2 y +π/2). sinh(x) seno hiperbólico.

28 18 Capítulo 1. Introducción al Matlab cosh(x) coseno hiperbólico. tanh(x) tangente hiperbólica. asinh(x) arco seno hiperbólico. acosh(x) arco coseno hiperbólico. atanh(x) arco tangente hiperbólica. log(x) logaritmo natural. log10(x) logaritmo decimal. exp(x) función exponencial. sqrt(x) raíz cuadrada. sign(x) devuelve -1 si <0, 0 si =0 y 1 si >0. Aplicada a un número complejo,devuelve un vector unitario en la misma dirección. rem(x,y) resto de la división (2 argumentos que no tienen que ser enteros). round(x) redondeo hacia el entero más próximo. fix(x) redondea hacia el entero más próximo a 0. real(x) parte real. imag(x) parte imaginaria. abs(x) valor absoluto. angle(x) fase. Las anteriores funciones actúan sobre escalares y vectores/matrices. otras funciones que actúan solamente sobre vectores y matrices: Existen max(x) máximo elemento de un vector. Devuelve el valor máximo y la posición que ocupa. min(x) mínimo elemento de un vector. Devuelve el valor mínimo y la posición que ocupa. sum(x) suma de los elementos de un vector. cumsum(x) devuelve el vector suma acumulativa de los elementos de un vector. mean(x) valor medio de los elementos de un vector.

29 1.3 Funciones de Matlab 19 std(x) desviación típica prod(x) producto de los elementos de un vector. cumprod(x) devuelve el vector producto acumulativo de los elementos de un vector. sort(x) ordenación de menor a mayor de los elementos de un vector x. En realidad estas funciones se pueden aplicar también a matrices, pero en ese caso se aplican por separado a cada columna de la matriz, dando como valor de retorno un vector resultado de aplicar la función a cada columna de la matriz considerada como vector. Si estas funciones se quieren aplicar a las filas de la matriz basta aplicar dichas funciones a la matriz traspuesta. Las siguientes funciones se aplican solamente a matrices. En este grupo aparecen algunas de las funciones más útiles y potentes de MATLAB: B = A traspuesta (conjugada si es compleja) de la matriz A. B = A. traspuesta (sin conjugar) de la matriz A. v = poly(a) polinomio característico de la matriz cuadrada A. t = trace(a) suma de los elementos de la diagonal de una matriz cuadrada. [m, n] = size(a) número de filas m y de columnas n. n = size(a) tamaño de una matriz cuadrada A. Existen una serie de instrucciones sobre cálculo matricial que tiene una amplia utilización en el campo del procesado digital de señales, algunas de estas funciones serían las siguientes: B = inv(a) inversa de A. d = det(a) determinante d de la matriz A. E = rref(a) reducción a forma de escalón [X, D] = eig(a) valores propios (diagonal de D) y vectores propios (columnas de X) de una matriz cuadrada A. Con frecuencia el resultado es complejo (si A no es simétrica). [X, D] = eig(a,b) valores propios (diagonal de D) y vectores propios (columnas de X) de dos matrices cuadradas A y B (Ax = lbx).

30 20 Capítulo 1. Introducción al Matlab [Q, R] = qr() descomposición QR de una matriz rectangular. Se utiliza para sistemas con más ecuaciones que incógnitas. Q = orth(a) las columnas de Q son una base ortonormal del espacio de columnas de A. El número de columnas de Q es el rango de A. [U, D, V ] = svd(a) descomposición de valor singular de una matriz rectangular (A=U*D*V ). U y V son matrices ortonormales. D es diagonal y contiene los valores singulares. B = pinv(a) calcula la pseudo-inversa de una matriz rectangular A r = rank(a) calcula el rango r de una matriz rectangular A Cálculo de normas de matrices. norm(a) norma sub-2, es decir, máximo valor singular de A, max(svd(a)). normest(a) aproximación de la norma sub-2. las que norm(a) necesita demasiado tiempo. Útil para matrices grandes en norm(a,2) lo mismo que norm(a) norm(a,1) norma sub-1 de A, máxima suma de valores absolutos por columnas, es decir: max(sum(abs((a)))). norm(a,inf) máxima suma de valores absolutos por filas, es decir: max(sum(abs((a )))) Cálculo de normas de vectores. norm(x,p) norma sub-p, es decir sum(abs(x) p) (1/p). norm(x) norma euclídea; equivale al módulo o norm(x,2). norm(x,inf) max(abs(x)). norm(x,1) norma sub-1, es decir sum(abs(x)). Además MATLAB dispones de una serie de instrucciones para trabajar con las matrices, vectores, binarias que se obtienen tras la aplicación de los operadores relacionales, algunas de estas instrucciones son: any(x) comprueba si alguno de los elementos del vector x cumple una determinada condición (en este caso ser distinto de cero). Devuelve un uno o un cero. Si x es una matriz se aplica por separado a cada columna. El resultado es un vector de unos y ceros.

31 1.4 Datos en Matlab 21 all(x) función vectorial; comprueba si todos los elementos del vector x cumplen una condición. Devuelve un uno o un cero. Si x es una matriz se aplica por separado a cada columna. El resultado es un vector de unos y ceros. find(x) busca índices correspondientes a elementos de vectores que cumplen una determinada condición. El resultado es un vector con los índices de los elementos que cumplen la condición. Cuando esta función se aplica a una matriz la considera como un vector con una columna detrás de otra, de la 1 a a la última. Relacionadas con éstas existen otras funciones que comprueban otras condiciones: exist(var) comprueba si la variable var existe isnan() comprueba si hay valores NaN, devolviendo una matriz de unos y ceros. isinf() comprueba si hay valores Inf, devolviendo una matriz de unos y ceros. isfinite() comprueba si los valores son finitos. isempty() comprueba si un vector o matriz está vacío. ischar() comprueba si una variable es una cadena de caracteres. isglobal() comprueba si una variable es global. issparse() comprueba si una matriz tiene un gran número de ceros. 1.4 Datos en Matlab Hasta ahora sólo se ha comentado el trabajo de MATLAB con escalares, vectores y matrices. Veremos a continuación que este programa puede trabajar con otros tipos de datos: 1. Conjuntos o cadenas de caracteres, fundamentales en cualquier lenguaje de programación. 2. Hipermatrices, o matrices de más de dos dimensiones. 3. Estructuras, o agrupaciones bajo un mismo nombre de datos de naturaleza diferente. 4. Vectores o matrices de celdas (cell arrays), que son vectores o matrices cuyos elementos pueden ser cualquier otro tipo de dato.

32 22 Capítulo 1. Introducción al Matlab Comenzaremos hablando de las cadenas de caracteres. Comentar para empezar que las funciones para cadenas de caracteres están en el sub-directorio toolbox\matlab\strfun del directorio en que esté instalado MATLAB. Los caracteres de una cadena se almacenan en un vector, con un carácter por elemento. Las cadenas de caracteres van entre apóstrofos o comillas simples, como por ejemplo: cadena. Si la cadena debe contener comillas, éstas se representan por un doble carácter comilla, de modo que se pueden distinguir fácilmente del principio y final de la cadena. Por ejemplo, para escribir la cadena ni idea se escribiría ni idea. Una matriz de caracteres es una matriz cuyos elementos son caracteres, o bien una matriz cuyas filas son cadenas de caracteres. Todas las filas de una matriz de caracteres deben tener el mismo número de elementos. Si es preciso, las cadenas (filas) más cortas se completan con blancos. Las funciones más importantes para manejo de cadenas de caracteres son las siguientes: double(c) convierte en números ASCII cada carácter. char(v) convierte un vector de números v en una cadena de caracteres. char(c1,c2) crea una matriz de caracteres, completando con blancos las cadenas más cortas. deblank(c) elimina los blancos al final de una cadena de caracteres. disp(c) imprime el texto contenido en la variable c ischar(c) detecta si una variable es una cadena de caracteres. isletter() detecta si un carácter es una letra del alfabeto. Si se le pasa un vector o matriz de caracteres devuelve un vector o matriz de unos y ceros. isspace() detecta si un carácter es un espacio en blanco. Si se le pasa un vector o matriz de caracteres devuelve un vector o matriz de unos y ceros. strcmp(c1,c2) comparación de cadenas. Si las cadenas son iguales devuelve un uno, y si no lo son, devuelve un cero (funciona de modo diferente que la correspondiente función de C). strcmpi(c1,c2) igual que strcmp(c1,c2 ), pero ignorando la diferencia entre mayúsculas y minúsculas. strncmp(c1,c2,n) compara los n primeros caracteres de dos cadenas c1==c2 compara dos cadenas carácter a carácter. Devuelve un vector o matriz de unos y ceros.

33 1.4 Datos en Matlab 23 strmatch(cc,c) devuelve los índices de todos los elementos de la matriz de caracteres (o vector de celdas) cc, que empiezan por la cadena c. strrep(c1,c2,c3) sustituye la cadena c2 por c3, cada vez que c2 es encontrada en c1. [p, r]=strtok(t) separa las palabras de una cadena de caracteres t. Devuelve la primera palabra p y el resto de la cadena r. int2str(v) convierte un número entero en cadena de caracteres. num2str(x,n) convierte un número real x en su expresión por medio de una cadena de caracteres, con cuatro cifras decimales por defecto. str2double(str) convierte una cadena de caracteres representando un número real en el número real correspondiente. vc=cellstr(cc) convierte una matriz de caracteres cc en un vector de celdas vc, eliminando los blancos adicionales al final de cada cadena; la función char() realiza las conversiones opuestas. sprintf convierte valores numéricos en cadenas de caracteres, de acuerdo con las reglas y formatos de conversión del lenguaje C. Pasemos a continuación a comentar las hipermatrices, matrices de más de dos dimensiones. Una aplicación típica de estos elementos sería almacenar con un único nombre distintas matrices del mismo tamaño (resulta una hipermatriz de 3 dimensiones). Destacar que los elementos de una hipermatriz pueden ser números, caracteres, estructuras, y vectores o matrices de celdas. Las funciones para trabajar con estas hipermatrices están en el sub-directorio toolbox\matlab\datatypes. Respecto a las funciones vistas de MATLAB, se pueden establecer las siguientes reglas para su aplicación a hipermatrices: 1. Todas las funciones de MATLAB que operan sobre escalares (sin( ), cos( ), etc.) se aplican sobre hipermatrices elemento a elemento (igual que sobre vectores y matrices). Las operaciones con escalares se aplican de la misma manera. 2. Las funciones que operan sobre vectores (sum( ), max( ), etc.) se aplican a matrices e hipermatrices según la primera dimensión, resultando un array de una dimensión inferior. 3. Las funciones matriciales propias del Álgebra Lineal (det( ), inv( ), etc.) no se pueden aplicar a hipermatrices. Para poderlas aplicar hay que extraer primero las matrices correspondientes.

34 24 Capítulo 1. Introducción al Matlab Las siguientes funciones de MATLAB se pueden emplear también con hipermatrices: size() n o de elementos en cada dimensión. ndims() número de dimensiones. squeeze() elimina las dimensiones que son igual a uno. reshape() distribuye el mismo número de elementos en una matriz con distinta forma o con distintas dimensiones. permute(a,v) permuta las dimensiones de A según los índices del vector v ipermute(a,v) realiza la permutación inversa La función cat() permite concatenar matrices según las distintas dimensiones, como puede verse en el siguiente ejemplo: >> A=zeros(2,3); B=ones(2,3); >>cat(1,a,b) ans = >> cat(2,a,b) ans = >> cat(3,a,b) ans(:,:,1) = ans(:,:,2) =

35 1.4 Datos en Matlab 25 Pasemos ahora a los vectores de celdas; un vector (matriz o hipermatriz) de celdas es un vector (matriz o hipermatriz) cuyos elementos son, cada uno de ellos, una variable de tipo cualquiera. En un vector ordinario todos sus elementos son números o cadenas de caracteres. Sin embargo, en un vector, array, de celdas, el primer elemento puede ser un número; el segundo una matriz; el tercero una cadena de caracteres; el cuarto una estructura, etc. Vesamos cómo se crean estos elementos mediante un sencillo ejemplo. >> vc(1)={[1 2 3]} vc = [1x3 double] >> vc(2)={ mi nombre } vc = [1x3 double] mi nombre >> vc(3)={rand(3,3)} vc = [1x3 double] mi nombre [3x3 double] Se observa que el elemento clave para definir este array son los símbolos{}. Es importante que el nombre del vector de celdas no haya sido utilizado previamente para otra variable (si así fuera, se obtendría un error). Otra nomenclatura alternativa y similar a la anterior sería: >> vb{1}=[1 2 3] vb = [1x3 double] >> vb{2}= mi nombre vb = [1x3 double] mi nombre >> vb{3}=rand(3,3) vb = [1x3 double] mi nombre [3x3 double] MATLAB dispone de funciones para trabajar con este tipo de datos: cell(m,n) crea un cell array vacío de m filas y n columnas celldisp(ca) muestra el contenido de todas las celdas de ca

36 26 Capítulo 1. Introducción al Matlab cellplot(ca) muestra una representación gráfica de las distintas celdas iscell(ca) indica si ca es un vector de celdas num2cell() convierte un array numérico en un cell array cell2struct() convierte un cell array en una estructura struct2cell() convierte una estructura en un cell array Continuando con los tipos de datos de MATLAB pasaremos a describir las estructuras. Una estructura es una agrupación de datos (campos) de tipo diferente bajo un mismo nombre. Una estructura es un nuevo tipo de dato, del que luego se pueden crear muchas variables. Por ejemplo, la estructura alumno puede contener los campos nombre (una cadena de caracteres) y carnet (un número). En MATLAB la estructura alumno se crea creando un objeto de dicha estructura. A diferencia de otros lenguajes de programación, no hace falta definir previamente el modelo de la estructura. Una posible forma de hacerlo es crear uno a uno los distintos campos, como en el ejemplo siguiente: >> alu.nombre= Mikel alu = nombre: Mikel >> alu.carnet=75482 alu = nombre: Mikel carnet: >> alu alu = nombre: Mikel carnet: Se accede a los miembros o campos de una estructura por medio del operador punto (.), que une el nombre de la estructura y el nombre del campo (por ejemplo: alu.nombre). También puede crearse la estructura por medio de la función struct(). Los nombres de los campos se pasan a la función struct() entre apóstrofos ( ), seguidos del valor que se les quiere dar. Este valor puede ser la cadena vacía ( ) o la matriz vacía ([ ]). Pueden crearse vectores y matrices (e hipermatrices) de estructuras. Por ejemplo, la sentencia, alum(10) = struct( nombre, Iñaki, carnet, 76589) crea un vector de 10 elementos cada uno de los cuales es una estructura tipo alumno. Sólo

37 1.4 Datos en Matlab 27 el elemento 10 del vector es inicializado con los argumentos de la función struct(); el resto de los campos se inicializan con una cadena vacía o una matriz vacía. Algunas funciones de MATLAB para facilitar el uso de las estructuras son las siguientes: fieldnames() devuelve un vector de celdas con cadenas de caracteres que recogen los nombres de los campos de una estructura. isfield(st,s) comprueba si la cadena s es un campo de una estructura ST isstruct(st) comprueba si ST es o no una estructura. rmfield(st,s) elimina el campo s de la estructura ST. getfield(st,s) devuelve el valor del campo especificado. Si la estructura es un vector hay que pasarle los índices como cell array (entre llaves {}) como segundo argumento. setfield(st,s,v) devuelve el valor v al campo s de la estructura ST. Si la estructura es un vector, hay que pasarle los índices como cell array (entre llaves {}) como segundo argumento. MATLAB permite definir estructuras anidadas, es decir una estructura con campos que sean otras estructuras. Para acceder a los campos de la estructura más interna se utiliza dos veces el operador punto: >>clase=struct( curso, primero, grupo, A,... alum, struct( nombre, Juan, edad, 19)) >> clase = curso: primero grupo: A alum: [1x1 struct] >> clase.alum(2).nombre= María ; >> clase.alum(2).edad=17; >> clase.alum(2) ans = nombre: María edad: 17 >> clase.alum(1) ans =

38 28 Capítulo 1. Introducción al Matlab nombre: Juan edad: 19 La gran ventaja de las estructuras y los arrays de celdas es que proporcionan una gran flexibilidad para el almacenamiento de los más diversos tipos de información. 1.5 Programación de Matlab MATLAB permite programar muy fácilmente; de tal forma que, como lenguaje de programación, tiene tantas posibilidades como otros lenguajes. Así, dispone de sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar una u otra operación según se cumpla o no una determinada condición. Los bucles permiten repetir las mismas o análogas operaciones sobre datos distintos. Comenzando por las bifurcaciones tenemos la instrucción básica if. En su forma más simple, la sentencia if se escribe en la forma siguiente: if condicion sentencias end Existe también la bifurcación múltipl e, en la que pueden concatenarse tantas condiciones como se desee: if condicion1 bloque1 elseif condicion2 bloque2 elseif condicion3 bloque3 else (si no se cumplen las condiciones 1,2 y 3). bloque4 end Aquí la opción por defecto else puede ser omitida: si no está presente no se hace nada en caso de que no se cumpla ninguna de las condiciones que se han chequeado. Destacar que la condición del if puede ser una condición matricial, del tipo A==B, donde A y B son matrices del mismo tamaño. Para que se considere que la condición se cumple, es necesario que sean iguales dos a dos todos los elementos de las matrices A y B.

39 1.5 Programación de Matlab 29 Como se ha dicho, MATLAB dispone de funciones especiales para ayudar en el chequeo de condiciones matriciales. Por ejemplo, la función isequal(a, B) devuelve un uno si las dos matrices son idénticas y un cero en caso de que difieran en algo. La sentencia switch realiza una función análoga a un conjunto de if...elseif concatenados. Su forma general es la siguiente: switch switch expresion case case expr1, bloque1 case {case expr2, case expr3, case expr4,...} bloque2... otherwise, % opción por defecto bloque3 end Al principio se evalúa la switch expresion, cuyo resultado debe ser un número escalar o una cadena de caracteres. Este resultado se compara con las case expr, y se ejecuta el bloque de sentencias que corresponda con ese resultado. Si ninguno es igual a switch expresion se ejecutan las sentencias correspondientes a otherwise. Según puede verse en el ejemplo anterior, es posible agrupar varias condiciones; basta la igualdad con cualquier elemento del cell array para que se ejecute ese bloque de sentencias. La igualdad debe entenderse en el sentido del operador de igualdad (==) para escalares y la función strcmp() para cadenas de caracteres). En cuanto a los bucles, la sentencia for repite un conjunto de sentencias un número predeterminado de veces. La siguiente construcción ejecuta sentencias con valores de i de 1 a n, variando de uno en uno. for i=1:n sentencias end Podemos cambiar el incremento teniendo en cuenta el operador :, Valor inicial:incremento: Valor final. En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados. La variable j es la que varía más rápidamente (por cada valor de i, j toma todos sus posibles valores):

40 30 Capítulo 1. Introducción al Matlab for i=1:m for j=1:n sentencias end end Continuando con bucles llegamos a la estructura de bucle while. la siguiente: Su sintaxis es while condicion sentencias end Aquí condicion puede ser una expresión vectorial o matricial. Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condicion, es decir, mientras haya algún o algunos elementos true. El bucle se termina cuando todos los elementos de condicion son false (es decir, cero). Como complemento a estas instrucciones está la sentencia break que termina la ejecución del bucle más interno de los que comprenden a dicha sentencia. En cuanto a la introducción de las variables existe una forma sencilla de leer variables desde teclado y escribir mensajes en la pantalla del PC. La función input permite imprimir un mensaje en la línea de comandos de MATLAB y recuperar como valor de retorno un valor numérico o el resultado de una expresión tecleada por el usuario. Después de imprimir el mensaje, el programa espera que el usuario teclee el valor numérico o la expresión. Como complemento a esta instrucción está la función disp que permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectores y/o matrices: las cadenas de caracteres son un caso particular de vectores. Los ficheros con extensión (.m) son ficheros de texto sin formato (ficheros ASCII) que constituyen el centro de la programación en MATLAB. Ya se han utilizado en varias ocasiones. Estos ficheros se crean y modifican con un editor de textos cualquiera. En el caso de MATLAB 5.3 ejecutado en un PC bajo Windows, lo más sencillo es utilizar su propio editor de textos. 1.6 Ficheros *.m Existen dos tipos de ficheros.m: ficheros de comandos (llamados scripts en inglés) y funciones. Los primeros contienen simplemente un conjunto de comandos

41 1.6 Ficheros *.m 31 que se ejecutan sucesivamente cuando se teclea el nombre del fichero en la línea de comandos de MATLAB. Un fichero de comandos puede llamar a otros ficheros de comandos. Las variables que crea un fichero de comandos llamado desde MATLAB pertenecen al espacio de trabajo base de MATLAB y permanecen en él cuando se termina la ejecución de dicho fichero. Las funciones permiten definir funciones enteramente análogas a las de MAT- LAB, con su nombre, sus argumentos y sus valores de retorno. Los ficheros.mque definen funciones permiten extender las posibilidades de MATLAB; de hecho existen bibliotecas de ficheros.mque se venden (toolboxes) o se distribuyen gratuitamente la mayoría a través de Internet. Las funciones definidas en ficheros.mse caracterizan porque la primera línea (que no sea un comentario) comienza por la palabra function, seguida por los valores de retorno entre corchetes, [ ], y separados por comas, si hay más de uno, el signo igual (=) y el nombre de la función, seguido de los argumentos entre paréntesis y separados por comas. Recuérdese que un fichero.mpuede llamar a otros ficheros.m, e incluso puede llamarse a sí mismo de forma recursiva. Los ficheros de comandos se pueden llamar también desde funciones, en cuyo caso las variables que se crean pertenecen a espacio de trabajo de la función. El espacio de trabajo de una función es independiente del espacio de trabajo base y del espacio de trabajo de las demás funciones. Esto implica por ejemplo que no puede haber problemas por los nombres de las variables aunque varias funciones tengan una variable con el mismo nombre. En realidad son variables completamente distintas. Para que la función tenga acceso a variables que no han sido pasadas como argumentos es necesario declarar dichas variables como variables globales, tanto en el programa principal como en las distintas funciones que deben acceder a su valor. Las variables globales son visibles en todas las funciones (y en el espacio de trabajo base o general) que las declaran como tales. Dichas variables de declaran precedidas por la palabra global y separadas por blancos. Estas variables sólo son visibles en los espacios de trabajo de las funciones que las declaran como tales (y en el propio espacio de trabajo base, si también ahí han sido declaradas como globales). Una diferencia importante con C/C++/Java es que en MATLAB una función no modifica nunca los argumentos que recibe. Los resultados de una función de MATLAB se obtienen siempre a través de los valores de retorno, que pueden ser múltiples y matriciales. Si dentro de la función se realizan modificaciones sobre los argumentos recibidos, antes se sacan copias de dichos argumentos a variables locales y se modifican las copias. Dentro de la función, los valores de retorno deben ser calculados en algún momento. De todas formas, no hace falta calcular siempre todos los posibles valores de retorno de la función, sino sólo los que el usuario espera obtener en la sentencia de llamada a la función. En cualquier función existen dos variables definidas de modo automático, llamadas nargin y nargout, que representan, respectivamente, el número de argumentos y el número de valores de retorno con los

42 32 Capítulo 1. Introducción al Matlab que la función ha sido llamada. Dentro de la función, estas variables pueden ser utilizadas como el programador desee. Tanto el número de argumentos como el de valores de retorno no tienen que ser fijos. Desde la versión 5.0, MATLAB dispone de una nueva forma de pasar a una función un número variable de argumentos por medio de la variable varargi n, que es un vector de celdas que contienen tantos elementos como sean necesarios para poder recoger, en dichos elementos, todos los argumentos que se hayan pasado en la llamada. No es necesario que varargin sea el único argumento, pero sí debe ser el último, pues recoge todos los argumentos a partir de una determinada posición. De forma análoga, una función puede tener un número indeterminado de valores de retorno utilizando varargout, que es también un cell array que agrupa los últimos valores de retorno de la función. Puede haber otros valores de retorno, pero varargout debe ser el último. Un tipo interesante de variables son las persistentes que son variables locales de las funciones (pertenecen al espacio de trabajo de la función y sólo son visibles en dicho espacio de trabajo), y que conservan su valor entre distintas llamadas a la función. Por defecto, las variables locales de una función se crean y destruyen cada vez que se ejecuta la función. Las variables persistentes se pueden definir en funciones, pero no en ficheros de comandos. Las variables se declaran como persistentes utilizando la palabra persistent seguida de los nombres de las diferentes variables separados por blancos. Las variables persistent se inicializan a la matriz vacía [ ] y permanecen en memoria hasta que se hace clear de la función o cuando se modifica el fichero-m. Para evitar que un fichero-m se modifique se puede utilizar el comando mlock file.m, que impide la modificación del fichero. El comando munlock desbloquea el fichero mientras que la función mislocked permite saber si está bloqueado o no. Destacar que a partir de la versión 5.0 se han introducido las sub-funciones, que son funciones adicionales definidas en un mismo fichero *.m, con nombres diferentes del nombre del fichero (y del nombre de la función principal) y que las sub-funciones sólo pueden ser llamadas por las funciones contenidas en ese fichero, resultando invisibles para otras funciones externas. Otro tipo de funciones son las funciones privadas. Este tipo de funciones no se pueden llamar desde cualquier otra función, aunque se encuentren en el camino de búsqueda o en el directorio actual. Sólo ciertas funciones están autorizadas a utilizarlas. Las funciones privadas se definen en sub-directorios que se llaman private y sólo pueden ser llamadas por funciones definidas en el directorio padre del sub-directorio private. En la búsqueda de nombres que hace MATLAB cuando encuentra un nombre en una expresión, las funciones privadas se buscan inmediatamente después de las sub-funciones, y antes que las funciones de tipo general. Otra extensión posible a las funciones es *.p. Las funciones *.p son funciones *.m

43 1.6 Ficheros *.m 33 pre-compiladas con la función pcode. Por defecto el resultado de este comando es un fichero en el directorio actual (el fichero func.m puede estar en cualquier directorio del camnio de búsqueda). El comando pcode -inplace func.m crea el fichero func.p en el mismo directorio donde encuentra el fichero func.m. Pueden pasarse varios ficheros *.m al comando pcode de una sola vez. Los ficheros *.p se ejecutan algo más rápidamente que los *.m y permiten ocultar el código de los ficheros ASCII correspondientes a las funciones *.m de MATLAB. Uno de los problemas frecuentes que un programador se encuentra es la falta de información sobre funciones que él mismo creó. En este problema MATLAB ayuda al usuario ya que las funciones creadas por el usuario pueden tener su propia ayuda de las misma forma que la tienen las funciones propias de MATLAB. Para ello las primeras líenas de las funciones comienzan por el símbolo % indicando al programa que lo que sigue son comentarios. De esta forma cuando en la pantalla de comandos de MATLAB se teclea help nombre func aparecen los comentarios que se han puesto al principio de nombre func. Además MATLAB permite a los usuarios tener una ayuda general para todas las funciones que están en un determinado directorio. Para ello se crea en dicho directorio un fichero llamado contents.m. Para que este fichero de ayuda de directorios funcione correctamente hace falta que esté en el camino de búsqueda de MATLAB o que sea el directorio actual. Hay varias formas de pasar datos de otras aplicaciones por ejemplo de Excel a MATLAB. Se pueden enumerar las siguientes: Copy y Paste para copiar datos de la aplicación original y depositarlos entre los corchetes de una matriz o vector, en una línea de comandos de MATLAB. Tiene el inconveniente de que estos datos no se pueden editar. Se puede crear un fichero *.m con un editor de textos, con lo cual no existen problemas de edición. Es posible leer un flat file escrito con caracteres ASCII. Un flat file es un fichero con filas de longitud constante separadas con un retorno de carro, y varios datos por fila separados por blancos. Estos ficheros pueden ser leídos desde MATLAB con el comando load. El comando textread permite leer datos de cualquier tipo de un fichero siempre que estén convenientemente separados. Usando las funciones fopen y fread. De forma análoga, también los resultados de MATLAB se pueden exportar a otras aplicaciones como Word o Excel. Usando el comando diary para datos de pequeño tamaño.

44 34 Capítulo 1. Introducción al Matlab Utilizando el comando save con la opción ascii Utilizando las funciones de bajo nivel fopen, fwrite. Mención especial merece el trabajo con ficheros. MATLAB dispone de funciones de lectura/escritura análogas a las del lenguaje C aunque con algunas diferencias. En general son versiones simplificadas con menos opciones y posibilidades que las correspondientes funciones de C. Comenzamos con las instrucciones para abrir (fopen) y cerrar ficheros (fclose), respectivamente. La función fopen tiene la forma siguiente: [fid,texto] = fopen( filename, c ) Donde fid es un valor de retorno que sirve como identificador del fichero, texto es un mensaje para caso de que se produzca un error, y c es un carácter (o dos) que indica el tipo de operación que se desea realizar. Las opciones más importantes son las siguientes: r lectura (de read) w escritura reemplazando (de write) a escritura a continuación (de append) r+ lectura y escritura Cuando por alguna razón el fichero no puede ser abierto, se devuelve un (-1). En este caso el valor de retorno texto puede proporcionar información sobre el tipo de error que se ha producido también existe una función llamada ferror que permite obtener información sobre los errores. Después de realizar las operaciones de lectura y escritura deseadas, el fichero se puede cerrar con la función close en la forma siguiente: st = fclose(fi) donde st es un valor de retorno para posibles condiciones de error. Si se quieren cerrar a la vez todos los ficheros abiertos puede utilizarse el comando: st = close( all ) Otra función importante para el manejo de ficheros es fscan. La forma general de la función fscanf es la siguiente:

45 1.6 Ficheros *.m 35 [var1,var2,...] = fscanf(fid, cadena de control,size) Donde fi es el identificador del fichero (devuelto por la función fopen), y size es un argumento opcional que puede indicar el tamaño del vector o matriz a leer. La cadena de control va encerrada entre apóstrofes simples, y contiene los especificadores de formato para las variables: %s para cadenas de caracteres %d para variables enteras %f para variables de punto flotante %lf para variables de doble precisión La función sscanf es similar a fscanf pero la entrada de caracteres no proviene de un fichero sino de una cadena de caracteres. Finalmente, la función fprintf dirige su salida formateada hacia el fichero indicado por el identificador. Su forma general es: fprintf(fi, cadena de control,var1,var2,...) La cadena de control contiene los formatos de escritura, que son similares a los de C. De forma análoga, la función sprintf convierte su resultado en una cadena de caracteres que devuelve como valor de retorno, en vez de enviarlo a un fichero. Véase un ejemplo: resultado = sprintf( El cuadrado de %f es %12.4f\n,n,n*n) Donde resultado es una cadena de caracteres. Esta función constituye el método más general de convertir números en cadenas de caracteres, por ejemplo para ponerlos como títulos de figuras. Las funciones fread y fwrite son análogas a fscanf y fprintf, pero en vez de leer o escribir en un fichero de texto (ASCII), lo hacen en un fichero binario, no legible directamente por el usuario. Aunque dichos ficheros no se pueden leer y/o modificar con un editor de textos, tienen la ventaja de que las operaciones de lectura y escritura son mucho más rápidas, eficientes y precisas (no se pierden decimales al escribir). De ordinario los ficheros de disco se leen y escriben secuencialmente, es decir, de principio a final, sin volver nunca hacia atrás ni realizar saltos. Sin embargo, a veces interesa acceder a un fichero de un modo arbitrario, sin ningún orden preestablecido. Esto se puede conseguir con las funciones ftell y fseek. En cada momento hay una especie de cursor que indica en qué parte del fichero se está posicionado. La función

46 36 Capítulo 1. Introducción al Matlab fseek permite mover este cursor hacia delante o hacia atrás, respecto a la posición actual ( cof ), respecto al principio ( bof ) o respecto al final del fichero ( eof ). La función ftell indica en qué posición está el cursor. Si alguna vez se necesita utilizar este tipo de acceso a disco, se puede buscar más información por medio del help. 1.7 Gráficos en Matlab Comenzaremos con los gráficos 2-D que están orientados a la representación gráfica de vectores (y matrices). MATLAB dispone de cuatro funciones básicas para crear gráficos 2-D. Estas funciones se diferencian principalmente por el tipo de escala que utilizan en los ejes de abscisas y de ordenadas. Estas cuatro funciones son las siguientes: plot() crea un gráfico a partir de vectores y/o columnas de matrices, con escalas lineales sobre ambos ejes. loglog() lo mismo pero ahora con escala logarítmica en ambos ejes. semilogx() ahora se tiene escala lineal en el eje de ordenadas y logarítmica en el eje de abscisas. semilogy() escala lineal en el eje de abscisas y logarítmica en el eje de ordenadas. Existen además otras funciones orientadas a añadir títulos al gráfico, a cada uno de los ejes, a dibujar una cuadrícula auxiliar, a introducir texto, etc. Algunas funciones destacadas son las siguientes: title( título ) añade un título al dibujo. xlabel( etiq ) añade una etiqueta al eje de abscisas. Con xlabel off desaparece. ylabel( etiq ) añade una etiqueta al eje de ordenadas. Con ylabel off desaparece. text(x,y, texto ) introduce texto en el lugar especificado por las coordenadas x e y. gtext( texto ) introduce texto con ayuda del ratón: el cursor cambia de forma y se espera un clic para introducir el texto en esa posición legend() define rótulos para las distintas líneas o ejes utilizados en la figura. grid activa la inclusión de una cuadrícula en el dibujo. Con grid off desaparece la cuadrícula.

47 1.7 Gráficos en Matlab 37 La función plot es la función clave de todos los gráficos 2-D en MATLAB. Ya se ha dicho que el elemento básico de los gráficos bidimensionales es el vector. Se utilizan también cadenas de 1, 2 ó 3 caracteres para indicar colores y tipos de línea. La función plot( ), en sus diversas variantes, no hace otra cosa que dibujar vectores. Por defecto, los distintos puntos del gráfico se unen con una línea continua. También por defecto, el color que se utiliza para la primera línea es el azul. Cuando a la función plot() se le pasa un único vector real como argumento, dicha función dibuja en ordenadas el valor de los n elementos del vector frente a los índices 1, 2,... n del mismo en abscisas. Más adelante se verá que si el vector es complejo, el funcionamiento es bastante diferente. Una segunda forma de utilizar la función plot() es con dos vectores como argumentos. En este caso los elementos del segundo vector se representan en ordenadas frente a los valores del primero, que se representan en abscisas. Además la función plot() permite también dibujar múltiples curvas introduciendo varias parejas de vectores como argumentos. En este caso, cada uno de los segundos vectores se dibujan en ordenadas como función de los valores del primer vector de la pareja, que se representan en abscisas. Si se pasan a plot() varios vectores complejos como argumentos, MATLAB representa las partes reales y desprecia las partes imaginarias. Sin embargo, un único argumento complejo hace que se represente la parte real en abscisas, frente a la parte imaginaria en ordenadas. Si se quieren dibujar varios vectores complejos, hay que separar explícitamente las partes reales e imaginarias de cada vector. El comando plot puede utilizarse también con matrices como argumentos. Algunos ejemplos sencillos serían (A es una matriz y x un vector): plot(a) dibuja una línea por cada columna de A en ordenadas, frente al índice de los elementos en abscisas. plot(x,a) dibuja las columnas (o filas) de A en ordenadas frente al vector x en abscisas. Las dimensiones de A y x deben ser coherentes: si la matriz A es cuadrada se dibujan las columnas, pero si no lo es y la dimensión de las filas coincide con la de x, se dibujan las filas. plot(a,x) análogo al anterior, pero dibujando las columnas (o filas) de A en abscisas, frente al valor de x en ordenadas. plot(a,b) dibuja las columnas de B en ordenadas frente a las columnas de A en abscisas, dos a dos. Las dimensiones deben coincidir. plot(a,b,c,d) análogo al anterior para cada par de matrices. Las dimensiones de cada par deben coincidir, aunque pueden ser diferentes de las dimensiones de los demás pares

48 34 38 Capítulo 1. Introducción al Matlab El tipo de línea y color del gráfico se puede alterar usando la propia instrucción plot ya que los argumentos de esta función es una tripleta formada por dos vectores y una cadena de 1, 2 ó 3 caracteres que indica el color y tipo de línea. En la siguiente Introducción al Matlab tabla se muestran las diferentes posibilidades que se tienen. Cuando Cuando hay hay que que dibujar dibujar varias varias líneas, líneas, por defecto por defecto se van secogiendo van cogiendo sucesivamente sucesivamente los los colores de de la tabla tabla comenzando por el por azul, el hacia azul, arriba, hacia y arriba, cuando yse cuando terminan se se terminan vuelve se vuelve a empezar a empezar otra vez otra por vez el azul. por el Si azul. el fondo Si el es fondo blanco, eseste blanco, color este no se color utiliza nopara se utiliza las líneas. para las líneas. Existe Existe la posibilidad la posibilidad de añadir de añadir líneas líneas a un gráfico a un ya gráfico existente, ya existente, sin destruirlo sino destruirlo sin abrir o sinuna abrir nueva una ventana. nuevase ventana. utilizan para Se ello utilizan los comandos para ellohold loson comandos y hold off. hold El primero on yde hold off. ellos El hace primero que los degráficos ellos hace sucesivos que respeten los gráficos los que sucesivos ya se han respeten dibujado los en que la figura ya se (es han dibujado posible que en la haya figura que modificar (es posible la escala que haya de los que ejes); modificar el comando la escala hold off de deshace los ejes); el el efecto de hold on. comando hold off deshace el efecto de hold on. Una Una ventana gráfica gráfica se puede se puede dividir dividir en m enparticiones m particiones horizontales horizontales y n verticales, y n verticales, con con objeto objeto de representar de representar múltiples múltiples gráficos gráficos en ella. en Cada ella. una Cada de estas unasubventanas de estas subventanas tiene sus tiene propios sus ejes. propios La forma ejes. La general forma de general este comando de este es comando subplot(m,n,i)donde es subplot(m,n,i)donde m y n son el número de subdivisiones en filas y columnas, e i es la subdivisión donde se realiza la m gráfica. y n son Las el número subdivisiones de subdivisiones se numeran en consecutivamente filas y columnas, empezando e i es la subdivisión por las de donde la seprimera realiza fila, gráfica. siguiendo Las por subdivisiones las de la segunda, numeran etc. consecutivamente empezando por las de la primera fila, siguiendo por las de la segunda, etc. Para Para modificar modificar los ejes los ejes se utiliza se utiliza la instrucción la instrucción axis. Por axis. defecto, Por MATLAB defecto, ajusta MATLAB la escala de cada uno de los ejes de modo que varíe entre el mínimo y el máximo valor de ajusta los vectores la escala a representar. de cada Este uno es de el los llamado ejes de modo modo auto. que Para varíe definir entre de modo el mínimo explícito y el máximo los valores valor máximo de losy vectores mínimo según a representar. cada eje, se Este utiliza esel el comando llamado axis([xmin, modo auto. xmax, Para definir ymin, de ymax]), modomientras explícito que losaxis( auto ) valores máximo devuelve y mínimo el escalado según de los cada ejes eje, al valor se utiliza por el comando defecto o axis([xmin, automático. Otros xmax, posibles ymin, usos ymax]), de este comando mientras son que los axis( auto ) siguientes: devuelve el escalado de los ejes al valor por defecto o automático. Otros posibles usos de este v=axis devuelve un vector v con los valores [xmin, xmax, ymin, ymax] axis(axis) mantiene los ejes en sus actuales valores de cara a posibles nuevas gráficas añadidas con hold on. axis('ij') utiliza ejes de pantalla, con el origen en la esquina superior izda y el eje j en dirección vertical descendente.

49 1.7 Gráficos en Matlab 39 comando son los siguientes: v=axis devuelve un vector con los valores [xmin, xmax, ymin, ymax] axis(axis) mantiene los ejes en sus actuales valores de cara a posibles nuevas gráficas añadidas con hold on. axis( ij ) utiliza ejes de pantalla, con el origen en la esquina superior izda y el eje j en dirección vertical descendente. axis( xy ) utiliza ejes cartesianos normales, con el origen en la esquina inferior izda. y el eje y vertical ascendente. axis( equal ) el escalado es igual en ambos ejes. axis( square ) la ventana será cuadrada. axis( image ) la ventana tendrá las proporciones de la imagen que se desea representar en ella siendo el escalado de los ejes será coherente con dicha imagen. axis( normal ) elimina las restricciones introducidas por equal y square. axis( off ) elimina las etiquetas, los números y los ejes. axis( on ) restituye las etiquetas, los números y los ejes. Si se llama a la función figure sin argumentos, se crea una nueva ventana gráfica con el número que le corresponda. El comando figure(n) hace que la ventana n pase a ser la ventana activa. Si dicha ventana no existe, se crea una nueva ventana con el número que le corresponda. La función close cierra la figura activa, mientras que close(n) cierra la ventana o figura número n. El comando clf elimina el contenido de la figura activa, es decir, la deja abierta pero vacía. La función gcf devuelve el número de la figura activa en ese momento. Existen otras funciones gráficas bidimensionales orientadas a generar otro tipo de gráficos distintos de los que produce la función plot() y sus análogas. Algunas de estas funciones son las siguientes: bar() crea diagramas de barras barh() diagramas de barras horizontales bar3() diagramas de barras con aspecto 3-D bar3h() diagramas de barras horizontales con aspecto 3-D pie() gráficos con forma de tarta

50 40 Capítulo 1. Introducción al Matlab pie3() gráficos con forma de tarta y aspecto 3-D area() similar plot( ), pero rellenando en ordenadas de 0 a y stairs() función análoga a bar() sin líneas internas errorbar() representa sobre una gráfica valores de errores hist() dibuja histogramas de un vector La función plot vista anteriormente dibuja vectores. Si se quiere dibujar una función, antes de ser pasada a plot debe ser convertida en un vector de valores. La función fplot admite como argumento un nombre de función o un nombre de fichero *.m en el cual esté definida una función de usuario. La función puede ser escalar (un único resultado por cada valor de x) o vectorial. La forma general de esta función es la siguiente: fplot( funcion, limites, cadena, tol) Siendo funcion el nombre de la función o del fichero *.m entre apóstrofos (pasado como cadena de caracteres), limites un vector de 2 ó 4 elementos que puede tomar los valores [xmin,xmax] o [xmin,xmax,ymin,ymax], cadena tiene el mismo significado que en plot y permite controlar el color y el tipo de línea y, por último, tol es la tolerancia de error relativo. El valor por defecto es 2e-03. Esta función puede utilizarse también en la forma: [x,y]=fplot( funcion, limites, cadena, tol) y en este caso se devuelven los vectores x e y, pero no se dibuja nada. El gráfico puede obtenerse con un comando posterior por medio de la función plot. Véase un ejemplo de utilizción de esta función. Se comienza creando un fichero llamado mifunc.m en el directorio G:\matlab que contenga las líneas siguientes: function y = mifunc(x) y(:,1)=200*sin(x)./x; y(:,2)=x. 2; y a continuación se ejecuta el comando: fplot( mifunc(x), [-20 20], g )

51 1.7 Gráficos en Matlab 41 Obsérvese que la función mifunc devuelve una matriz con dos columnas, que constituyen las dos gráficas dibujadas. En este caso se ha utilizado para ellas el color verde. Podemos introducir datos en la pantalla gráfica mediante el ratón. Pa ello se utiliza la función ginput, que permite introducir las coordenadas del punto sobre el que está el cursor al pulsar una tecla. Algunas formas de utilizar esta función son las siguientes: [x,y] = ginput lee un número indefinido de puntos hasta que se termina pulsando la tecla intro. [x,y] = ginput(n) lee las coordenadas de n puntos. [x,y,bot] = ginput igual que el anterior, pero devuelve también un vector de enteros bot con el código ASCII de la tecla pulsada o el número del botón del ratón. MATLAB también ofrece la posibilidad de hacer animaciones de gráficos o películas. Para ello se pueden utilizar las funciones: movi e, moviein y getframe. Una película se compone de varias imágenes, denominadas frames. La función getframe devuelve un vector columna con la información necesaria para reproducir la imagen que se acaba de representar en la figura o ventana gráfica activa, por ejemplo con la función plot. El tamaño de este vector columna depende del tamaño de la ventana, pero no de la complejidad del dibujo. La función moviein(n) reserva memoria para almacenar n frames. La siguiente lista de comandos crearía una película de 17 imágenes o frames, que se almacenarán como las columnas de la matriz M: M = moviein(17); x=[-2*pi:0.1:2*pi] ; for j=1:17 y=sin(x+j*pi/8); plot(x,y); M(:,j) = getframe; end; Una vez creada la película se puede representar el número de veces que se desee con el comando movi e. Por ejemplo, para representar 10 veces la película anterior, a 15 imágenes por segundo, habría que ejecutar el comando siguiente (los dos últimos parámetros son opcionales): movie(m,10,15)

52 42 Capítulo 1. Introducción al Matlab En cuanto a la impresión de las gráficas realizadas en MATLAB, ésta es muy fácil de llevar a cabo. El menú File de la pantalla gráfica tiene una serie de opciones con la impresión de figuras. Así, es posible establecer los parámetros de la página (Page Setup), de la impresora (Print Setup), obtener una visión preliminar (Print Preview) e imprimir (Print). Por defecto, MATLAB produce salidas tipo postscript, pero, si no hay ninguna impresora postcript disponible, MATLAB puede trasformar la salida y convertirla al formato de la impresora disponible en ese momento. La impresión de una figura puede hacerse también desde la línea de comandos usando el comando print que tiene una gran número de opciones, apareciendo éstas utilizando el comando help. Además es posible también exportar a un fichero una figura de MATLAB, por ejemplo para incluirla luego en un documento de Word o en una presentación de Powerpoint. Para ello se utiliza el comando File/Export de la ventana en la que aparece la figura. El cuadro de diálogo que se abre ofrece distintos formatos gráficos para guardar la imagen. La figura puede exportarse con cualquier formato estándar y luego utilizar, por ejemplo, Paint Shop Pro para transformarla. MATLAB tiene posibilidades de realizar varios tipos de gráficos 3D. La primera forma de gráfico 3D es la función plot3, que es el análogo tridimensional de la función plot. Esta función dibuja puntos cuyas coordenadas están contenidas en 3 vectores, bien uniéndolos mediante una línea continua (defecto), bien mediante otra serie de elementos, markers. Su terminología sería plot3(x,y,z,s) que dibuja una línea que une los puntos (x(1), y(1), z(1)), (x(2), y(2), z(2)), etc. y la proyecta sobre un plano para poderla representar en la pantalla. Al igual que en el caso plano, incluye una cadena,s, de 1, 2 ó 3 caracteres para determinar las características de la línea. También se pueden utilizar tres matrices X, Y y Z del mismo tamaño; plot3(x, Y, Z) en cuyo caso se dibujan tantas líneas como columnas tienen estas 3 matrices, cada una de las cuales está definida por las 3 columnas homólogas de dichas matrices. Ahora se verá con detalle cómo se puede dibujar una función de dos variables (z=f(x,y)) sobre un dominio rectangular. Se pueden dibujar los elementos de una matriz como función de los dos índices. Sean x e y dos vectores que contienen las coordenadas en una y otra dirección de la retícula (grid) sobre la que se va a dibujar la función. Después hay que crear dos matrices X (cuyas filas son copias de x) e Y (cuyas columnas son copias de y). Estas matrices se crean con la función meshgrid. Estas matrices representan, respectivamente, las coordenadas xe yde todos los puntos de la retícula. La matriz de valores Z se calcula a partir de las matrices de coordenadas X e Y. Finalmente hay que dibujar esta matriz Z con la función mesh. A modo de ejemplo se muestra el dibujo de la función sin(r)/r (siendo r = (x 2 + y 2 ): close all

53 Finalmente hay que dibujar esta matriz Z con la función mesh. A modo de ejemplo se muestra el dibujo de la función sen(r)/r (siendo r=sqrt(x^2 +y^2 ): close all u=0.1:0.1:10; v=u; [U,V]=meshgrid(u,v); R=sqrt(U.^2+V.^2); W=sin(R)./R; mesh(w) 1.7 Gráficos en Matlab 43 u=0.1:0.1:10; v=u; [U,V]=meshgrid(u,v); R=sqrt(U.\ 2+V.\ 2); W=sin(R)./R; mesh(w) Ejecutando este conjunto de instrucciones se obtiene la siguiente figura: Ejecutando este conjunto de instrucciones se obtiene la Fig Figura 6. Uso de la instrucción meshgrid. Figura 1.7: Uso de la instrucción meshgrid. Una forma distinta Una forma de representar distinta de representar funciones funciones tridimensionales tridimensionales es por es por medio mediode deisolíneas o curvas de isolíneas nivel. opara curvas ello dese nivel. usa Para la instrucción ello se usa contour la instrucción y contour3 dependiendo y contour3 de las distribución dependiendo las líneas de lasde distribución nivel (en de un las plano líneaso den nivel espacio). (en un plano o en el espacio). En los dibujos realizados hasta ahora, se ha visto que el resultado adoptaba En los dibujos determinados realizados colores, pero hasta todavía ahora, no se se ha explicado ha visto de dónde que han el resultado salido. Ahoradoptaba determinados se verá colores, qué sistema pero utiliza todavía MATLAB no se para ha determinar explicado losde colores. dónde Un mapa han salido. de colores Ahora se se define como una matriz de tres columnas, cada una de las cuales contiene un valor verá qué sistema utiliza MATLAB para determinar los colores. Un mapa de colores se entre 0 y 1, que representa la intensidad de uno de los colores fundamentales: R (red define como una matriz de tres columnas, cada una de las cuales contiene un valor entre o rojo), G (green o verde) y B (blue o azul). La longitud por defecto de los mapas 0 y 1, que representa la intensidad de uno de los colores fundamentales: R (red o rojo), de colores de MATLAB es 64, es decir, cada mapa de color contiene 64 colores. G (green o Algunos verde) mapas y B (blue de colores o azul). estánla predefinidos longitud por en MATLAB. defecto de Buscando los mapas colormap de colores de MATLAB enes Help 64, es Desk decir, se obtiene cada mapa la listade decolor los mapas contiene de colores, 64 colores. para visualizarlos Algunos se mapas de colores están usa el predefinidos comando colormap(nombre). en MATLAB. Buscando Este comando colormap actúa sobre en Help la figura Desk activa, se obtiene la lista cambiando de los sus mapas colores. de Si nocolores, hay ninguna para figuravisualizarlos activa, sustituyese al mapa usa deel color comando colormap(nombre). anterior para Este las siguientes comando figuras actúa quesobre se vayan la afigura dibujar. activa, cambiando sus colores. Si no hay ninguna Cuandofigura se desea activa, dibujar sustituye una figural con mapa un determinado color anterior mapa de para colores las siguientes se figuras que establece se vayan un a correspondencia dibujar. entre los valores de la función y los colores del mapa Cuando se desea dibujar una figura con un determinado mapa de colores se establece un correspondencia entre los valores de la función y los colores del mapa de colores. Esto 38

54 44 Capítulo 1. Introducción al Matlab de colores. Esto hace que los valores pequeños se dibujen con los colores bajos del mapa, mientras que los valores grandes se dibujan con los colores altos. La función que representa la correspondencia color del gráfico-valor de la función es la función colorbar. La función caxis permite ajustar manualmente la escala de colores. Su forma general es: caxis([cmin, cmax]) donde cmin y cmax son los valores numéricos a los que se desea ajustar el mínimo y el máximo valor de la escala de colores. Relacionada con este punto se encuentra la función surf que tiene diversas posibilidades referentes a la forma en que son representadas las facetas o polígonos coloreados. Las tres posibilidades son las siguientes: shading flat determina sombreado con color constante para cada polígono. Este sombreado se llama plano o flat. shading interp establece que el sombreado se calculará por interpolación de colores entre los vértices de cada faceta. Se llama también sombreado de Gouraud. shading faceted consiste en sombreado constante con líneas negras superpuestas. Esta es la opción por defecto. Para obtener el efecto deseado, basta poner la sentencia shading a continuación de la sentencia sur f. Destacar que las funciones mesh y surf disponen de un algoritmo de eliminación de líneas ocultas (los polígonos o facetas, no dejan ver las líneas que están detrás). El comando hidden activa y desactiva la eliminación de líneas ocultas. Existen unas formas más generales de las funciones mesh, surf y pcolor. Son las siguientes (sepresentan principalmente con la funciones mesh y surf ). La función mesh(x, y, Z, C) dibuja una superficie cuyos puntos tienen como coordenadas (x(j), y(i), Z(i, j)) y como color C(i, j). Obsérvese que x varía con el índice de columnas e y con el de filas. Análogamente, la función: mesh(x, Y, Z, C) dibuja una superficie cuyos puntos tienen como coordenadas (X(i,j), Y(i,j), Z(i,j)) y como color C(i,j). Las cuatro matrices deben ser del mismo tamaño. La principal ventaja de usar esta aproximación a la hora de representar funciones consiste en que admiten más variedad en la forma de representar la cuadrícula en el plano (x-y). La primera forma admite vectores x e y con puntos desigualmente espaciados, y la segunda admite conjuntos de puntos muy generales, incluso los procedentes de coordenadas cilíndricas y esféricas. Otras funciones para mejorar nuestos gráficos 3-D serían las siguientes: surfc Combinación de surf, y contour en z=0

55 1.8 Otras características de Matlab 45 meshz Es la instrucción mesh con plano de referencia en el valor mínimo y una especie de cortina en los bordes del dominio de la función surfl para controlar la iluminación determinando la posición e intensidad de un foco de luz. light Crea un foco de luz en los ejes actuales capaz de actuar sobre superficies 3-D. Se le deben pasar como argumentos el color, el estilo (luz local o en el infinito) y la posición. Las funciones surf y mesh dibujan funciones tridimensionales en perspectiva. La localización del punto de vista o dirección de observación se puede hacer mediante la función view, que tiene la siguiente forma:view(azimut, elev), donde azimut es el ángulo de rotación de un plano horizontal, medido sobre el eje z a partir del eje x en sentido antihorario, y elev es el ángulo de elevación respecto al plano (x-y). Ambos ángulos se miden en grados, y pueden tomar valores positivos y negativos (sus valores por defecto son y 30). También se puede definir la dirección del punto de vista mediante las tres coordenadas cartesianas de un vector (sólo se tiene en cuenta la dirección): view([xd,yd,zd]) En los gráficos tridimensionales existen funciones para controlar los ejes, por ejemplo: axis([xmin,xmax,ymin,ymax,zmin,zmax]) También se pueden utilizar las funciones siguientes: xlabel, ylabel, zlabel, axis( auto ), axis(axis), etc que ya se comentaron en la sección de gráficos bidimensionales. 1.8 Otras características de Matlab En muchas ocasiones puede resultar interesante interrumpir el trabajo con MAT- LAB y poderlo recuperar más tarde en el mismo punto en el que se dejó (con las mismas variables definidas, con los mismos resultados intermedios, etc.). Hay que tener en cuenta que al salir del programa todo el contenido de la memoria se borra automáticamente. Para guardar el estado de una sesión de trabajo en el directorio actual existe el comando save. Si se teclea save antes de abandonar el programa, se crea un fichero binario llamado matlab.mat (o matlab) con el estado de la sesión (excepto los gráficos, que por ocupar mucha memoria hay que guardar aparte). Dicho estado puede recuperarse la siguiente vez que se arranque el programa con el comando load. Esta es la forma más básica de utilización de estos comandos. Se pueden guardar también matrices y vectores de forma selectiva y en ficheros con nombre especificado por el usuario. Por ejemplo, el comando save filename A, x, guarda las variables A y x en un fichero binario llamado filename.mat Para recuperarlas en otra sesión basta teclear load filename. Si no se indica ningún nombre de variable, se guardan todas las variables creadas en esa sesión.

56 46 Capítulo 1. Introducción al Matlab El comando save permite guardar el estado de la sesión en formato ASCII utilizándolo de la siguiente forma: save -ascii % almacena 8 cifras decimales. save -ascii -double % almacena 16 cifras decimales. save -ascii -double -tab % almacena 16 cifras separadas por tabs aunque en formato ASCII sólo se guardan los valores. Cuando se recuperan estos ficheros con load -ascii toda la información se guarda en una única matriz con el nombre del fichero. Esto produce un error las filas tienen un número desigual de elementos. Con la opción -append en el comando save la información se guarda a continuación de lo que hubiera en el fichero. Es posible también almacenar con el formato binario de la versión 4.* de MATLAB utilizando la opción -v4. El comando load admite las opciones -ascii y -mat, para obligarle a leer en formato ASCII o binario, respectivamente. Los comandos save y load crean ficheros binarios o ASCII con el estado de la sesión. Existe otra forma más sencilla de almacenar en un fichero un texto que describa lo que el programa va haciendo (entradas y salidas utilizadas así como los comandos utilizados). Esto se hace con el comando diary en la forma siguiente diary filename.txt. Relacionada con la anterior se encuentran los comandos diary off que suspende la ejecución de diary y diary on que la reanuda. El simple comando diary pasa de on a off y viceversa. Para poder acceder al fichero filename.txt con el bloc de notas, notepad, es necesario que diary esté en off. Además de estar optimizado para trabajar con matrices y vectores MATLAB está especialmente preparado para trabajar con polinomios. Para MATLAB un polinomio se puede definir mediante un vector de coeficientes. Por ejemplo el polinomio x x 2 1 se puede representar mediante el vector [ ]. Las funciones orientadas al cálculo con polinomios son las siguientes: poly(a) polinomio característico de la matriz A. roots(pol) raíces del polinomio pol. polyval(pol,x) evaluación del polinomio pol para el valor de x. Si x es un vector, pol se evalúa para cada elemento de x. polyvalm(pol,a) evaluación del polinomio pol de la matriz A. conv(p1,p2) producto de convolución de dos polinomios p1 y p2.

57 1.8 Otras características de Matlab 47 [c,r]=deconv(p,q) división del polinomio p por el polinomio q. devuelve el cociente y en r el resto de la división. En c se residue(p1,p2) descompone el cociente entre p1 y p2 en suma de fracciones simples. polyder(pol) calcula la derivada de un polinomio. polyder(p1,p2) calcula la derivada de producto de polinomios. polyfit(x,y,n) calcula los coeficientes de un polinomio p(x) de grado n que se ajusta a los datos p(x(i)) = y(i) minimizando el error cuadrático medio cometido en el ajuste. MATLAB es un programa especializado en cálculo numérico y dispone de funciones que permiten calcular el tiempo empleado en las operaciones realizadas. Algunas de estas funciones son las siguientes: cputime devuelve el tiempo de CPU (con precisión de centésimas de segundo) desde que el programa arrancó. Llamando antes y después de realizar una operación y restando los valores devueltos se puede saber el tiempo de CPU empleado en esa operación. etime(t2, t1) tiempo transcurrido entre los vectores t1 y t2 obtenidos como respuesta al comando clock. tic ops toc imprime el tiempo en segundos requerido por ops. El comando tic pone el reloj a cero y toc obtiene el tiempo transcurrido. Otras funciones permiten calcular el número de operaciones de coma flotante realizadas: flops(0) que inicializa a cero el contador de número de operaciones aritméticas de punto flotante (flops); la instrucción flops devuelve el número de flops realizados hasta ese momento. Relacionado con esta estimación de tiempo de cálculo se encuentra profiler, utilidad que permite saber qué tiempo de cálculo se ha gastado en cada línea de una función definida en un fichero *.m o en general de un programa de MATLAB. Permite asimismo determinar el número de llamadas a dicha función, funciones que la han llamado, funciones llamadas por ella (child functions), etc. Esta utilidad mejora la calidad de los programas, pues permite detectar los cuellos de botella de una aplicación y concentrar en ellos los esfuerzos para mejorar su eficiencia. Por ejemplo, sabiendo el número de veces que se llama a una función y el tiempo que cuesta cada llamada, se puede decidir si es mejor emplear más memoria en guardar resultados intermedios para no tener que calcular varias veces lo mismo.

58 48 Capítulo 1. Introducción al Matlab Una forma de llamar al profiler podría ser la siguiente (se supone que estas líneas forman parte de un fichero *.m): profile on -detail operator; [T, Y] = ode113( RTDyn2m, tspan, y0, myoptions); profile report; Con la primera línea se activa el profiler a la vez que se define el grado de detalle que se desea. La segunda línea es una llamada a la función ode113 que a su vez llama a muchas otras funciones y la tercera línea detiene el profiler y le pide que genere un informe en HTML con los resultados calculados. Existen tres posibles grados de detalle respecto a la información que se le pide al profiler: mmex determina el tiempo utilizado por funciones y sub-funciones definidas en ficheros.my *.mex. Ésta es la opción por defecto. builtin como el anterior pero incluyendo las funciones intrínsecas de MATLAB. operator como builtin pero incluyendo también el tiempo empleado por los operadores tales como la suma + y el producto *. Otros posibles comandos relacionados con el profiler de MATLAB son los siguientes: profile on activa el profiler poniendo a cero los contadores. profile on detail level como el anterior, pero con el grado de detalle indicado. profile on history activa el profiler guardando información sobre el orden de las llamadas. profile off desactiva el profiler sin poner a cero los contadores. profile resume vuelve a activar el profiler sin poner a cero los contadores. profile clear pone a cero los contadores. profile report detiene el profiler, genera páginas HTML con los resultados y los muestra en un explorador e Internet. profile report basename genera un informe consistente en varios ficheros HTML en el directorio actual; los nombre de los ficheros están basados en el nombre basename, que debe darse sin extensión.

59 1.8 Otras características de Matlab 49 profile plot detiene el profiler y representa, gráficamente, los resultados en un diagrama de barras correspondientes a las funciones más usadas profile status muestra una estructura conteniendo los datos del profile. stats = profile( info ) detiene el profiler y muestra una estructura con los resultados. Destacar que esta utilidad sólo se puede aplicar a funciones no a ficheros de comandos. A través de MATLAB podemos acceder al sistema operativo; así estando en la ventana de comandos de MATLAB, se pueden ejecutar comandos de MS-DOS precediéndolos por el carácter (!). Por ejemplo! edit programa.m abriría el editor asociado al fichero programa.m. Si el comando va seguido por el carácter & el comando se ejecuta en background, es decir, se recupera el control del programa sin esperar que el comando termine de ejecutarse. Además existe también la posibilidad de arrancar una aplicación y dejarla iconizada. Esto se hace postponiendo el carácter barra vertical isando el carácter Algunos comandos de MATLAB realizan la misma función que los comandos análogos del sistema operativo MS-DOS, con lo que se puede evitar utilizar el operador (!). Algunos de estos comandos son los siguientes: dir contenido del directorio actual. what ficheros *.m en el directorio actual. delete filename borra el fichero llamado filename. mkdir(nd) crea un sub-directorio con el nombre nd. copyfile(sc, dst) copia el fichero sc en el fichero dst. type file.txt imprime por la pantalla el contenido del fichero de texto file.txt cd cambiar de directorio activo. pwd muestra el camino del directorio actual. which func localiza una función llamada func. lookfor palabra busca palabra en las primeras líneas de los ficheros.m. Finalizamos este rápido repaso a MATLAB con las funciones evalc, feval y evalin. Estas funciones tienen mucho que ver con las cadenas de caracteres ya que necesitan la flexibilidad de éstas para alcanzar todas sus posibilidades.

60 50 Capítulo 1. Introducción al Matlab La función eval( cadena de caracteres ) hace que se evalúe como expresión de MATLAB el texto contenido entre las comillas como argumento de la función. Este texto puede ser un comando, una fórmula matemática o, en general, cualquier expresión válida de MATLAB. La función eval debe tener los valores de retorno necesarios para recoger los resultados de la expresión evaluada. Con esta instrucción se pueden definir macros. El siguiente ejemplo va creando variables llamadas A1, A2,..., A10 utilizando la posibilidad de concatenar cadenas antes de pasárselas como argumento a la función eval: for n = 1:10 eval([ A,num2str(n), = magic(n) ]) end La función eval() se puede usar también en la forma eval( trystring, catchstring ). En este caso se evalúa la cadena trystring, y si se produce algún error se evalúa la cadena catchstring. La función T=evalc() es similar a eval() pero con la diferencia de que cualquier salida que la expresión pasada como argumento hubiera enviado a la ventana de comandos de MATLAB es capturada y almacenada en una matriz de caracteres T cuyas filas terminan con el carácter \n. Por su parte la función feval sirve para evaluar, dentro de una función, otra función cuyo nombre está contenido en una cadena de caracteres. Es posible que este nombre se haya leído desde teclado o se haya recibido como argumento. A la función feval hay que pasarle como argumentos tanto el nombre de la función a evaluar como sus argumentos. Por ejemplo, si dentro de una función se quiere evaluar la función calcular(a, b, c), donde el nombre calcular se envía como argumento en la cadena nombr e, entonces feval(nombre, A, b, c) equivale a calcular(a, b, c). Finalmente, la función evalin(ws, expresion ) evalúa expresion en el espacio de trabajo ws. Los dos posibles valores para ws son caller y base, que indican el espacio de trabajo de la función que llama a evalin o el espacio de trabajo base. Los valores de retorno se pueden recoger del modo habitual.

61 Capítulo 2 Introducción a los Sistemas Continuos de Control ESTE primer tema se centra en los conceptos, técnicas y métodos de diseño fundamentales de la Teoría de Control Continuo. La organización del tema es como sigue. En primer lugar revisaremos los conceptos más útiles de la Teoría de Control, para pasar después a analizar los modelos y sus respuestas. En la tercera parte del tema se estudian los principios de la realimentación. El tema finaliza analizando los métodos clásicos de diseño de controladores (mediante el Lugar de las Raíces y la Respuesta en Frecuencia). 2.1 Perspectiva histórica y definiciones Desde el punto de vista de la Teoría de Control clásica podemos definir varios conceptos y evolución temporal reseñables: Sistemas Automáticos de Control. Son dispositivos que acoplados a un proceso tratan de conseguir que alguna magnitud del mismo varíe en el transcurso del tiempo de alguna forma impuesta voluntariamente de forma externa. Ver Figs. 2.1 y 2.2. Realimentación. Según Nobert Wiener, realimentación es un método de controlar un sistema, insertando en él los resultados del comportamiento anterior Realimentación (y II). Un elemento esencial de todos los mecanismos de control automático es el principio de realimentación, que permite al diseñador dotar a una máquina de capacidad de autocorrección. Un ciclo o bucle de realimentación es un dispositivo mecánico, neumático o electrónico que detecta

62 Overhead sheets. Software for Matlab/Simulink: demos and examples. Control systems Assignments. Everything available at discfuzz Course Material 52 Robert Babuška Control Engineering Laboratory, ITS, TU Delft 5 Robert Babuška Capítulo 2. Introducción Prerequisites, Background a los Sistemas KnowledgeContinuos de Control Control Engineering Laboratory, ITS, TU Robert Babuška. Fuzzy and Neural Mathematical analysis Process Classical Control De s. Linear algebra d Goal (reference) Distu atlab/simulink: demos and examples. Control systems u Proceso y Controller u Pr le at discfuzz Control Engineering Laboratory, ITS, TU Delft 5 y :variable a controlar (salida) u:variable a manipular (entrada de control) d :ruido (entrada no controlable) Robert Babuška Control Engineering Laboratory, ITS, TU Delft 6 Synthesis Mathematical model Process Figura Classical 2.1: Idealización Control Design de proceso. Robert Babuška Control Engineering Laboratory, ITS, TU Delft 7 Robert Babuška Control Engineering Laboratory, ITS, TU d Objetivo (referencia) Señales de ruido Process y Controlador u Proceso y controlled (output) variable (control input) input that cannot be influenced) Síntesis Modelo Matemático Modelización Control Engineering Laboratory, ITS, TU Delft 7 Robert Babuška Control Engineering Laboratory, ITS, TU Delft 8 Figura 2.2: Idealización del control de procesos. una magnitud física como una temperatura, un tamaño o una velocidad, la compara con una norma preestablecida, y realiza aquella acción preprogramada necesaria para mantener la cantidad medida dentro de los límites de la norma aceptable. El principio de realimentación se utiliza desde hace varios siglos. Un notable ejemplo es el regulador de bolas inventado en 1788 por el ingeniero escocés James Watt para controlar la velocidad de la máquina de vapor. El conocido termostato doméstico es otro ejemplo de dispositivo de realimentación. En la fabricación y en la producción, los ciclos de realimentación requieren la determinación de límites aceptables para que el proceso pueda efectuarse; que estas características físicas sean medidas y comparadas con el conjunto de límites, y que el sistema de realimentación sea capaz de corregir el proceso para que los elementos medidos cumplan la norma. Mediante los dispositivos de realimentación las máquinas pueden ponerse en marcha, pararse, acelerar, disminuir su velocidad, contar, inspeccionar, comprobar, comparar y medir. Estas operaciones suelen aplicarse a una amplia variedad de operaciones de producción, por ejemplo el fresado, el embotellado y el refinado. Servomecanismo En ingeniería, dispositivo o conjunto de ellos que permite la automatización del control de un mecanismo o de una fuente de energía.

63 2.1 Perspectiva histórica y definiciones 53 Los servomecanismos pueden ser mecánicos, eléctricos, hidráulicos y ópticos. Su característica principal es que se activa por la llamada señal de error, que viene determinada por la diferencia entre la señal establecida como salida para una determinada señal de entrada y la señal de salida real. Esta señal de error se envía a la entrada para compensar ese error, de forma que el mecanismo se autorregula. Esta técnica se llama realimentación. La dirección de los automóviles es un ejemplo de servomecanismo. La orientación de las ruedas delanteras se controla mediante el giro del volante. Cuando soltamos el volante, un servomecanismo, que en este caso es un sistema hidráulico y mecánico, obliga a las ruedas a volver a la posición normal. A.I.E.E., American Institute of Electrical Engineers. Sistema de control en lazo cerrado es aquél que tiende a mantener una relación prevista e impuesta de forma externa (por nosotros) entre una variable del proceso, la salida, y otra, la referencia, comparando funciones de estas variables y usando la diferencia como medio de control. Routh, En este año, Routh formula su criterio algebráico de estabilidad de un sistema. Es el punto de partida de la Teoría Clásica de Control. Aplicaciones. Sus trabajos abren un campo enorme de aplicaciones. Bode, Nyquist y Black trabajan en la descripción de amplificadores realimentados mediante técnicas de respuesta en frecuencia. Laplace y Fourier. La utilización de la representación en el campo complejo, el uso del cálculo operacional desarrollado en el S. XIX por Heaviside y de las Transformadas de Laplace y Fourier originan una sólida base para el Control Clásico. Black, Abre el camino mediante las representaciones gráficas en el plano complejo. Nyquist, Enuncia el Criterio de Estabilidad, herramienta muy útil para el estudio de la estabilidad de los sistemas realimentados. Ziegler y Nichols, Proponen fórmulas de ajuste de los reguladores basadas en la respuesta temporal. Evans, Presenta la Teoría de las Raíces que es la base del diseño de compensadores mediante el Método del Lugar de las Raíces. Teoría Moderna del Control. Con la aparición de la Tranformada Z se extiende la Teoría Clásica de Control al tratamiento digital de señales. La

64 54 Capítulo 2. Introducción a los Sistemas Continuos de Control Teoría Moderna de Control se conoce también como la Teoría de Control Discreto o de Control Digital. Operador Retardo, z 1. La definición en el Plano-Z del retardo temporal hace evolucionar la Teoría de Control al Análisis Temporal. Kalman, Resuelve el problema general de optimización tal y como se plantea en la Teoría Moderna de Control. Situación Actual. Los métodos de diseño según la Teoría de Control han tenido un notable éxito en el campo aeronáutico, pero su aplicación al campo industrial no tuvo la acogida esperada, como consecuencia de la dificultad de disponer de modelos precisos de los sistemas a controlar. Este problema, impulsó en los 70 el desarrollo de métodos de identificación de los parámetros de un proceso y metodologías para el diseño de sistemas multivariantes, con un enfoque clásico similar al monovariable. En la última década se han desarrollado nuevas ramas del control, y de gran importancia para la aplicación industrial, como el Control Adaptativo, el Control Robusto, el Control Difuso o el Control Neuronal. En las Figs.?? y?? se muestran ejemplos de esquemas de control neuronal y adaptativo, respectivamente. Figura 2.3: Esquema de control mediante redes neuronales. Para controlar una planta mediante un controlador se ajusta su actuación mediante la señal de error que comete la planta. El estudio de la combinación estimación/adaptación, con los problemas de convergencia que esto supone es un tema de actualidad resuelto en los casos de hipótesis más restrictivas. En particular, se han acuñado algunos términos relacionados con el Control que intentan identificar cada una de las parcelas en que se desenvuelve su estudio. Control Robusto. Trata de encontrar las condiciones que garanticen la estabilidad del bucle cerrado bajo perturbacioens genéricas o incertidumbre del modelo. Control Predictivo. Basados en la minimización de un índice cuadrático que pondera, entre otros, el conocimiento que se tiene sobre el comportamien-

65 2.1 Perspectiva histórica y definiciones 55 Figura 2.4: Esquema de control adaptativo. El regulador se va adaptando a partir de las salidas que proporciona un estimador de la actuación de la planta cuya actuación se va controlando mediante el mismo controlador. Se trata de un proceso adaptativo o iterativo. to deseado del proceso en el futuro (horizonte de predicción), con el fin de compensar el mismo con antelación. Control Supervisado. Basado en la vigilancia de las condiciones que deben cumplir los bucles adaptativos para su buen funcionamiento. Control Experto. Nace este término en (Astrom, Anton y Arzen, 1986) donde se introducen técnicas de I.A. y, más concretamente, Sistemas Expertos para el control de procesos. Control Borroso. Podrían considerarse integrados en el grupo anterior, puesto que los mismos incorporan algún tipo de reglas de razonamiento atribuibles a los Sistemas Expertos, si bien con el término Control Borroso, se quiere destacar que el control surge de la elaboración de la información suministrada por el proceso, pero desde la óptica del operador experto mediante conceptos heurísticos y con la inevitable presencia de incertidumbre en su contenido. La Teoría de Conjuntos Borrosos es la base de estos controladores. Control Neuronal. Está basado en otra técnica de la I.A., las redes neuronales, y presentan grandes ventajas por tratarse de elementos de procesado no lineal en los que no es necesaria ninguna asunción sobre las señales adquiridas o sobre el sistema a modelar. Teoría General de Sistemas. Bertalanffy la define como la disciplina que trata sobre las propiedades generales y leyes de los Sistemas sometidos a acciones de control mediante un sistema basado en ordenador. En ocasiones se habla de Informática de Control. Cibernética. Según N. Wiener (1961) se trata de la ciencia dedicada al estudio de los métodos de comunicación, control y autoorganización comunes a

66 56 Capítulo 2. Introducción a los Sistemas Continuos de Control máquinas y organismos vivos. Automática. Se define como la ciencia que estudia a los sistemas cibernéticos en los que ha sido introducido conscientemente algún elemento que realiza funciones de control. Señal. Se define como una magnitud física que lleva una información. Estacionariedad. Una serie temporal o secuencia de datos se denomina estacionaria cuando la media y la varianza se mantiene constante en el tiempo. Sistema. Se puede definir como un elemento que transforma información. Informática. Ciencia que estudia el tratamiento de la información. Modelización en el Espacio de Estados. Los modelos de espacio de estados son representaciones matriciales para series temporales univariantes y multivariantes. Muchos modelos de series temporales se pueden escribir en forma de ecuaciones de estados. Hay algunos métodos de predicción que emplean directamente estos modelos. Los cálculos se realizan empleando Ecuaciones Recursivas de Kalman o Filtros de Kalman por lo que se llaman también Modelos de Kalman. Filtro de Kalman. La ventaja fundamental de especificar un modelo en el espacio de estados es la utilización de diversos algoritmos para la estimación de sus parámetros, obtención de predicciones, etc. El núcleo de estos algoritmos es el filtro de Kalman. Con él se obtienen estimaciones óptimas del vector de estado con la información disponible hasta ese momento. Identificación. Etapa en la construcción del modelo de predicción/regresión donde se intenta elegir a través de datos estadísticos el mejor modelo para un sistema Objetivos de los Sistemas de Control Los principales objetivos de un sistema de control son: Estabilizar el sistema ante perturbaciones. Hacer que el sistema evoluciones en el tiempo con arreglo a unas determinadas especificaciones. Conseguir el comportamiento dinámicos óptimo con respecto a algún índice de calidad.

67 2.1 Perspectiva histórica y definiciones Clasificación de los Sistemas de Control Podemos dividir los sistemas atendiendo a: Ecuación diferencial que lo define: Sistemas de parámetros concentrados. Sistemas de parámetros distribuidos. Sistemas lineales: invariante o variante temporal. Sistemas no lineales. Señales que maneja: Sistemas de entrada y salida únicas (SISO). Sistemas multivariable (MIMO). Sistemas de tiempo continuo. Sistemas de tiempo discreto. Sistemas de control determinista. Sistemas de control estocástico. En la siguiente sección analizamos en mayor profundidad los conceptos de sistema y modelo Sistemas y modelos La creación de modelos a partir de observaciones así como el estudio de sus propiedades es, en definitiva, de lo que trata la ciencia. Los modelos ( hipótesis, leyes naturales, paradigmas, etc.) pueden tener un carácter más o menos formal, aunque siempre contendrán una característica básica: tratarán de enlazar las observaciones, generadas u obtenidas de algún sistema físico, mediante un patrón de comportamiento. La identificación de sistemas trata de las técnicas matemáticas empleadas en la construcción de modelos de sistemas dinámicos basados en los datos que éstos generan (Ljung, 1999). Veamos qué son los sistemas dinámicos, cómo se puede definir un modelo y la diferencia entre un modelo y un sistema. Sistemas dinámicos Un sistema se define como un objeto en el que variables de distintos tipos interaccionan entre sí para dar lugar a una o varias salidas, también llamadas señales observables. El sistema también se puede ver afectado por estímulos externos que pueden ser manipulados por el observador y que se llaman entradas. Otro tipo de

68 58 Capítulo 2. Introducción a los Sistemas Continuos de Control señales son las denominadas perturbaciones, que pueden dividirse en aquellas que son medibles directamente y aquellas que sólo pueden ser observadas a través de su influencia sobre la salida y que son a menudo conocidas como ruido. La diferencia entre las entradas y las perturbaciones medidas es, a menudo, de menor importancia para el proceso de modelización de un sistema (Ljung, 1999) (ver Fig. 2.5). v (a) w u y v: viento, temperatura exterior (b) w: radiación solar u: velocidad del ventilador y: temperatura almacenada Figura 2.5: (a) Representación gráfica de un sistema con una salida y, una entrada u, una perturbación medida w y una no mensurable v. (b) Ejemplo de sistema. Panel solar de una casa: u entrada, I es la perturbación medida, y es la salida, v son las perturbaciones no mensurables. Se dice que un sistema es dinámico si su salida actual no sólo depende de las entradas o estímulos externos sino de sus valores anteriores. Las salidas de un sistema dinámico cuyos estímulos externos no son observables se denominan a menudo series temporales. Las series temporales son la representación matemática de un sistema físico con carácter dinámico y, por tanto, su modelización, caracterización y predicción ha captado el interés de la comunidad científica. Así, el escenario de la predicción en series temporales se centra en estimar valores futuros a corto o medio plazo de una serie de sucesos a partir de los valores anteriores mediante alguna función que relacione dichos valores (Ungar, 1995). En cambio, se habla de modelizar cuando se trata de encontrar una descripción a largo plazo del comportamiento del sistema y por tanto, se persigue un modelo que defina en todo momento el comportamiento del sistema que generó la serie temporal. Nos referimos a caracterizar un sistema cuando la tarea consiste en determinar las propiedades fundamentales del sistema como puede ser el carácter caótico de la serie o su componente autoregresiva. En todos los casos el interés está en formular modelos matemáticos que describan la realidad física.

69 2.1 Perspectiva histórica y definiciones 59 Modelos de sistemas Una vez revisada la naturaleza de los sistemas dinámicos, veamos qué es un modelo, cómo se construyen y sus limitaciones. Tipos de modelos y su uso Cuando se interacciona con un sistema, se necesita contar con alguna idea sobre cómo sus variables se relacionan entre sí. Esa relación que asumimos que existe, la llamaremos modelo de un sistema. Los modelos pueden especificarse de distintas maneras, formas, descripciones y con gran variedad de grados de formalismo matemático. Podemos definir distintos tipos de modelos: Modelos mentales. No implican ningún tipo de formalismo matemático. Por ejemplo, el acto de aparcar un coche implica que gran cantidad de información sea almacenada, procesada y ponderada en el cerebro. Su adaptabilidad al medio hace que este modelo sea altamente complejo desde un punto de vista matemático. Modelos gráficos. Para determinados sistemas resulta apropiado describir sus propiedades mediante gráficas y/o tablas. Los sistemas lineales, por ejemplo, se pueden representar mediante su respuesta impusional o frecuencial (ver Fig. 2.6 y 2.7). Las características no lineales de, por ejemplo, un diodo, hacen que el sistema pueda ser descrito eficientemente por un modelo gráfico. 6.5 Salida Entrada Figura 2.6: Respuestas de entrada y salida de un determinado sistema. Modelos matemáticos o analíticos. Para aplicaciones más avanzadas puede resultar ventajoso la descripción de los sistemas en forma de expresiones matemáticas que describan las relaciones entre sus variables. El uso de este tipo de modelos es típico en el campo de las matemáticas, física e ingeniería, y tienen la ventaja de poder ser trasladados a una representación gráfica sencillamente. Se emplean para la simulación y predicción del comportamiento de

70 60 Capítulo 2. Introducción a los Sistemas Continuos de Control 0.14 Estimación de la Respuesta Impulsional lags Figura 2.7: Respuesta impulsional de un sistema. sistemas en áreas como la economía, ecología, medicina, farmacia o biología. Los modelos matemáticos se pueden caracterizar de distintas maneras (contínuos o discretos en el tiempo, en bloque o distribuidos, deterministas o estocásticos, lineales o no lineales, etc.) que simbolizan el tipo de relación existente entre las variables. Una clasificación general divide los modelos matemáticos en duros y blandos o difusos, atendiendo a si se expresan con variables o valores numéricos o linguísticos respectivamente. Nuestro trabajo se centrará en los modelos matemáticos, también conocidos como modelos cuantitativos o empíricos. Construcción de modelos Básicamente, un modelo se debe construir a partir de la información disponible sobre el problema, la tarea o sistema a modelar. El modelo mental de aparcar un coche se debe desarrollar a partir de la experiencia en la conducción. Los modelos gráficos se deben construir a partir de distintas medidas. Los modelos matemáticos, los que nos ocupan, se pueden desarrollar mediante dos vías (o una combinación de ellas): Modelización analítica o física. Una forma consiste en dividir el sistema en varios subsistemas cuyas propiedades son bien conocidas a partir de cierta experiencia previa. Este punto de vista no implica necesariamente una experimentación en los sistemas actuales y depende en gran medida de la aplicación. Intentan determinar en primer lugar los fenómenos (físicos) relevantes al problema y describir la interacción de sus componentes (subsistemas). La segunda etapa se centra en una descripción formal de las estructuras y componentes dando como resultado un sistema físico idealizado. La tercera etapa o análisis del sistema se centra en la manipulación del sistema, su análisis cuali-

71 2.2 Modelos dinámicos y respuesta dinámica. 61 tativo y experimental (simulación). Por último, el modelo debe ser corregido, simplificado y validado con datos empíricos. Modelización experimental. El otro punto de vista se basa directamente en la experimentación. Las señales de entrada y salida del sistema son analizadas para inferir un determinado modelo. Esta vía de actuación se denomina normalmente identificación de sistemas. Distinguimos dos tipos fundamentales de modelos experimentales: los paramétricos y los no paramétricos. Se denominan modelos paramétricos aquellos que hacen alguna asunción acerca de la distribución estadística de las muestras observadas (por ejemplo, asumiendo distribución Gaussiana) y el problema se reduce a estimar los parámetros de esas distribuciones (medias y varianzas en el caso de Gaussianas). Los modelos no paramétricos únicamente asumen la representatividad del conjunto original de las muestras, lo cual es una premisa imprescindible en todo modelo. El proceso de identificación de un sistema, al igual que en la modelización física, debe finalizar con su validación y revisión mediante el contraste de sus estimaciones con datos ajenos a los de su construcción. 2.2 Modelos dinámicos y respuesta dinámica Principios básicos de la realimentación El objetivo del control retroalimentado es utilizar el principio de retroalimentación para conseguir que la salida de un sistema dinámico, como el eje de un motor eléctrico o el vector velocidad de un aeroplano, tomen los valores deseados a pesar de fuerzas perturbadoras externas o cambios de parámetros internos. La modelización de sistemas complejos es difícil, de alto costo y lenta, especialmente si se incluyen pasos importantes de verificación experimental (bucle de identificación). La metodología para tratar cualquier sistema consiste en: Obtener el modelo. La forma habitual es epecificarlo en forma de ecuaciones dinámicas (ecuaciones diferenciales ordinarias). Resolver el modelo. La resolución resulta, sin embargo, difícil ya que se obtienen sistemas de alto orden, variante temporales y en la mayoría de los casos reales con relaciones no lineales entre las variables. A pesar de los problemas de los modelos reales, en control es importante mantener el sistema en un punto de equilibrio y podemos considerar la respuesta del sistema a señales pequeñas en torno a este equilibrio. De aquí que podamos aproximar el comportamiento no lineal por un modelo lineal para valores pequeños alrededor de este punto de equilibrio (expansión en series de Taylor).

72 62 Capítulo 2. Introducción a los Sistemas Continuos de Control Revisemos algunos conceptos básicos sobre la dinámica de sistemas o ecuaciones del movimiento mediante algunos ejemplos: Figura 2.8: Sistema mecánico. En la Tabla mostramos la relación de analogías entre las variables físicas así como algunas implementaciones de sistemas de control. Tabla 2.1: Relación de analogías entre las variables físicas así como algunas implementaciones de sistemas de control Eléctrico Térmico Hidráulico Desplazamiento Rotación Corriente Flujo de calor Flujo de fluido Fuerza Par Voltaje Temperatura Precisión Velocidad Velocidad angular Resistencia Coeficiente de Resistencia Rozamiento Rozamiento transmisión Inductancia Inercia Muelle Muelle Capacidad Capacidad térmica Compresión Masa Momento de inercia

73 2.2 Modelos dinámicos y respuesta dinámica. 63 Figura 2.9: Sistemas rotores o rotacionales. Satélite Respuesta dinámica Hemos visto que los modelos de componentes dinámicas se pueden controlar mediante una ecuación diferencial ordinaria o un conjunto de éstas. Además, cerca del equilibrio, las ecuaciones están bien aproximadas como lineales e invariables en el tiempo. Una vez obtenidas estas ecuaciones hay que encontrar sus soluciones y además analizarlas de modo que no sólo sea posible visualizar la respuesta dinámica si no que también sea posible modificar la respuesta del sistema hacia una dirección deseada. Cabe saber que una solución tendrá unas determinadas características: tiempo de elevación transitorio, exceso del valor final, duración del transitorio, tiempo de estabilización, etc. Para el estudio de la respuesta dinámica existen tres marcos o formatos: Plano s. La transformada de Laplace y el estudio de los polos ceros proporciona las bases fundamentales para el estudio de los sistemas continuos de control. Respuesta en frecuencia. Se estudia la magnitud y fase de esta respuesta en función de la frecuencia. Espacio de Estados. Se trata de, a grandes rasgos, emplear pares de ecuaciones recursivamente enlazadas: una para modelar la salida del sistema y otra para modelar su evolución. Se describe así el comportamiento de una o más salidas del sistema en función de varias variables internas del mismo (variables de estado), y de un conjunto de entradas a éste. El comportamiento del sistema queda determinado recursivamente en dos fases a partir de las entradas:

74 64 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.10: Sistemas rotores o rotacionales. Péndulo. Figura 2.11: Sistemas rotores o rotacionales. Péndulo invertido. en la primera fase las entradas determinan las variables de estado del sistema y en la segunda las variables de estado determinan su salida Transformada de Laplace Este método operacional puede usarse para resolver ecuaciones diferenciales lineales. Con su uso muchas funciones sinusoidales, sinusoidales amortiguadas y exponenciales, se pueden convertir a funciones algebráicas de una variable compleja s y reemplazar operaciones como la diferenciación y la integración por operaciones algebráicas en el plano complejo. Las bases de las técnicas analíticas aplicadas a los sistemas lineales e invariables en el tiempo (SLIT) son:

75 2.2 Modelos dinámicos y respuesta dinámica. 65 Figura 2.12: Sistemas rotores o rotacionales. Avión.

76 66 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.13: Sistemas eléctricos.

77 2.2 Modelos dinámicos y respuesta dinámica. 67 Figura 2.14: Sistemas electro-mecánicos. 1. Superposición. Respuesta de sistemas lineales. 2. Convolución. La respuesta del sistema es la convolución de la entrada con la respuesta a la entrada impulso. La Transformada de cualquier función f(t) transformable de Laplace, se puede obtener fácilmente multiplicando f(t) por e st e integrando el producto desde t = 0 hasta t =. Así pues, la T. de Laplace la definimos como: F (s) = + f(t)e st dt (2.1) Aplicándolo a y(t) = + u(t τ)h(τ)dτ = u(t) h(t), tendremos Y (s) = H(s) U(s). Ejemplos de Transformada de Laplace Función escalón. f(t) = u(1) = (t) F (s) = + 0 u(1)e st dt = Función rampa. f(t) = tu(1) = t1(t) + 0 1e st dt = 1 s (2.2) F (s) = + 0 u(1)e st dt = Función impulso unitario. f(t) = δ(t) F (s) = + 0 u(1)e st dt = δ(t)e st dt = te st dt = 1 s 2 (2.3) δ(t)dt = 1 (2.4)

78 68 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.15: Sistemas Flujo de calor. Función exponencial decreciente. f(t) = e αt F (s) = + 0 u(1)e st dt = + 0 e αt e st dt = 1 s + α (2.5) Función sinusoidal. f(t) = sin(ωt) F (s) = + 0 u(1)e st dt = + Propiedades de la Transformada de Laplace 0 sin(ωt)e st dt = = ω s 2 + ω 2 (2.6) Las principales propiedades de la Transformada de Laplace son las siguientes: Superposición. L[αf 1 (t) + βf 2 (t)] = αl[f 1 (t)] + βl[f 2 (t)] (2.7) De esta propiedad se deriva esta otra, conocida por escalamiento: L[αf(t)] = αl[f(t)] (2.8)

79 2.2 Modelos dinámicos y respuesta dinámica. 69 Figura 2.16: Sistemas de compresión de fluidos. Retardo temporal. L[αf(t)] = F (s) (2.9) Escalamiento temporal. L[f(t λ)] = e λs F (s), λ > 0, f(t) = 0, t < 0 (2.10) L[f(αt)] = 1 ( s ) α F a (2.11) Retardo en frecuencia. L[e αt f(t)] = F (s + α) (2.12) Diferenciación. [ ] d L dt f(t) = sf (s) f(o ) (2.13) Integración real. [ t ] L f(τ)dτ = F (s) o s (2.14)

80 70 Capítulo 2. Introducción a los Sistemas Continuos de Control Convolución. L[f 1 (t) f 2 (t)] = F 1 (s)f 2 (s) (2.15) Integración compleja. [ ] f(t) L = t Derivación compleja (multiplicación temporal). s F (s)ds (2.16) L[tf(t)] = d F (s) (2.17) ds En la Tabla 2.17 se muestran algunas Transformadas de Laplace útiles. f(t) L[ f(t)] 1 (t) 1 s 1 s 2 1 s+a 1 (s+a) 2 a s 2 +a 2 s s 2 +a 2 s+a (s+a) 2 +b 2 1(t) t e at te at sin at cos at e at cos at Figura 2.17: Algunas Transformadas estándar de Laplace. Ejercicios propuestos 1. Considerando f 1 (t) = e t y f 2 (t/5) = e 0.2t. Hallar las Transformadas de Laplace F 1 y F Sea el sistema en el plano s: L[f(t)] = F (s) = 1 s(s 2 + s + 1), (2.18)

81 2.2 Modelos dinámicos y respuesta dinámica A partir de: encontrar y(t). 4. A partir de: encontrar f(t). Y (s) = F (s) = (s + 2)(s + 4) s(s + 1)(s + 3), (2.19) (s + 3) (s + 1)(s + 2), (2.20) 5. Encontrar la ganancia DC de: G(s) = 6. Encontrar la solución de la ecuación diferencial: 3(s + 2) s 2 + 2s + 10, (2.21) ÿ(t) + y(t) = 0; y(0) = α, ẏ(0) = β. (2.22) 7. Encontrar la solución de la ecuación diferencial: ÿ(t) + 5ẏ(t) + 4y(t) = u(t); y(0) = 0, ẏ(0) = 0, u(t) = 2e 2t 1(t) (2.23) Transformada Inversa de Laplace (TIL) El proceso matemático de pasar de la expresión en variable compleja a la de función temporal se denomina transformación inversa. Notación: L 1, L 1 [F (s)] = f(t). Matemáticamente se hallan así: f(t) = 1 2πj c+j c j F (s)e st ds, t > 0 (2.24) Este proceso es complejo, por lo que usamos las tablas o en su defecto la expansión en fracciones simples para que, al escribir F(s) en términos de funciones simples de s, se pueden reconocer las transformadas inversas de Laplace. De hecho, en los problemas de Teoría de Control, F(s) tiene usualmente la forma: F (s) = A(s) B(s) = k Πm i (s z i) Π n j (s p j) = b 0s m + b 1 s m b m s n + a 1 s n a m (2.25) En estos sistemas se cuenta con una condición de realizabilidad física por la que se exige que m n.

82 72 Capítulo 2. Introducción a los Sistemas Continuos de Control Ejemplos sobre la Transformada Inversa de Laplace Hallar la Transformada Inversa de Laplace de: 1. EJEMPLO 1. F (s) = s3 + 5s 2 + 9s + 7, (2.26) (s + 1)(s + 2) SOLUCIÓN. Como el grado del numerador es mayor que el del denominador, podemos dividir los dos polinomios y, por tanto, obtenemos: F (s) = s s + 3 (s + 1)(s + 2). (2.27) Consultando las tablas de transformadas, llegamos a la solución: 2. EJEMPLO 2. f(t) = d dt δ(t) + 2δ(t) + 2e t e 2t. (2.28) F (s) = 2s + 12 s 2 + 2s + 5, (2.29) SOLUCIÓN. Como la función F(s) incluye un par de polos complejos conjugados (s 2 + 2s + 5 = (s j)(s + 1 2j)), es conveniente expandir F(s) en una suma de una función seno y coseno amortiguadas, y no en fracciones simples. De este modo: y teniendo en mente las propiedades siguientes: s 2 + 2s + 5 = (s + 1) (2.30) L[sin(ωt)e αt ] = L[cos(ωt)e αt ] = podemos decomponer la expresión de la siguiente forma: F (s) = ω (s + α) 2 + ω 2 (2.31) s + α (s + α) 2 + ω 2, (2.32) (s + 1) (s + 1) = 5 2 (s + 1) s + 1 (s + 1) (2.33) f(t) = L 1 [F (s)] =... = 5e t sin(2t) + 2e t cos(2t), t 0 (2.34)

83 2.2 Modelos dinámicos y respuesta dinámica EJEMPLO 3. SOLUCIÓN. f(t) = (t2 + 1)e t F (s) = s2 + 2s + 3 (s + 1) 3, (2.35) Teoremas adicionales de la Transformada de Laplace Teorema del Valor Final. Teorema del Valor Inicial. Se propone resolver los siguientes ejercicios: EJEMPLO 1. Sea la función: calcular lim t f(t) EJEMPLO 2. Sea el sistema: lim y(t) = lim sy (s). (2.36) t t lim sf (s) = s f(0+ ). (2.37) L[f(t)] = F (s) = Y (s) = hallar el valor final de la señal correspondiente a Y(s). 1 s(s + 1), (2.38) 3 s(s 2), (2.39) SOLUCIÓN: Si aplicamos el TVF, obtenemos un valor final de -3/2 pero esto no es cierto ya que el teorema no se puede aplicar al tener un polo en el semiplano derecho. Si obtenemos la expresión de la señal temporal, obtenemos: y(t) = ( ) 2 e2t 1(t), (2.40) EJEMPLO 3. Encontrar el valor inicial de la señal que genera el sistema: G(s) = 3 s(s 2) (2.41) Por último, ilustremos un sistema electro-mecánico real y cómo se especifica en mediante sus ecuaciones diferenciales y Transformada de Laplace. En la Fig mostramos un ejemplo de sistema físico mediante el análisis de un motor DC. En la Fig mostramos las ecuaciones diferenciales que definen el sistema y su paso al plano s mediante la Transformada de Laplace.

84 9 Robert Babuška Control Engineering Laboratory, ITS, TU Delft 10 Example: Physical Modeling of a DC Motor 74 Capítulo 2. Introducción a los Sistemas Continuos de Control R L V + V=K b ω + T J ) - - bω L di dt + Ri = V V b, V b = Kω = K DC Motor: Differential dθ dt, Equations T = Ki 11 Figura 2.18: Motor DC. Robert Babuška Control Engineering Laboratory, ITS, TU Delft 12 L di(t) dt + Ri(t) = V (t) K dθ(t) dt parte eléctrica J d2 θ(t) dt 2 + b dθ(t) dt =Ki(t) parte mecánica Transf. Laplace ( d dt s): función de transferencia G(s) = θ(s) V (s) = K s[(ls + R)(Js + b)+k 2 ] Figura 2.19: Ecuaciones diferenciales y Transformada de Laplace (función de transferencia) del Sistema del Motor DC. Robert Babuška Control Engineering Laboratory, ITS, TU Delft Especificaciones en el dominio del tiempo y Transformada de Laplace Example: System Identification Mediante la T. Laplace se pueden describir sistemas de forma muy eficiente y analizar sus respuestas y características de manera sencilla. Cabe, sin embargo Given data set {(u(k),y(k)) k =1, 2,...,N}: analizar los conceptos e interrelaciones de estabilidad, polos y ceros de un sistema. Estos los ilustramos con un ejemplo; si consideramos el sistema: 1. Postulate model structure, e.g.: 2s + 1 F (s) = ŷ(k s+1)=ay(k)+bu(k) 2 + 3s + 2). (2.42) Los ceros 2. de Form unaregression función deequations: transferencia son las raíces del numerador, mientras que los polos son las raíces del denominador. En nuestro caso, por tanto, el cero se y(2) = ay(1) + bu(1) y(3) = ay(2) + bu(2). y(n) =ay(n 1) + bu(n 1) in a matrix form: y = ϕ[a b] T

85 2.2 Modelos dinámicos y respuesta dinámica. 75 encuentra en -1/2 y los polos en -1 y -2. En la Figura?? se muestra la notación (aspas para los polos y círculos para los ceros), posición y expresión en diferencias. x x o H(s) = 1 s s +2 h(t) = e t + e 2t La respuesta del sistema puede ser definida mediante la inspección de la posición de los polos y ceros. Para que el sistema sea estable, los polos deben estar en el semiplano izquierdo (LHP, Left-Half of the s-plane ). El control de un sistema sin estabilidad se logra manipulando la posición de los polos y ceros mediante la adición de otros tipos de sistemas llamados reguladores o compensadores para, de este modo, conseguir unas determinadas especificaciones Sistemas de primer orden, parámetros característicos Los sistemas de primer orden tienen como ecuación diferencial característica la siguiente: T ẏ(t) + y(t) = Ay(t), y(0) = 0, ẏ(0) = 0, (2.43) donde hemos supuesto unas determinadas condiciones iniciales que no tienen porqué cumplirse siempre. Si aplicamos la transformada de Laplace, obtenemos: T sy (s) + Y (s) = AU(s) H(s) = Y (s) U(s) = A 1 + T s, (2.44) siendo T una constante de tiempo. Veamos la respuesta de este tipo de sistemas ante distintas entradas: Impulso unitario: U(s) = 1 Y (s) = A 1 + T s y(t) = L 1 [Y (s)] = A T e t/t, t > 0 (2.45)

86 76 Capítulo 2. Introducción a los Sistemas Continuos de Control Por tanto se trata de una caída exponencial donde T simboliza el tiempo que tarda en reducirse la salida en e 1 = de su valor inicial. Si T > 0 tenemos un polo p 1 = 1/T < 0, por lo que y(t) es decreciente y el sistema es estable. Entrada rampa unitaria: Como la T. Laplace de la función rampa unitaria es 1/s 2, la salida del sistema es: Y (s) = A T s s 2 (2.46) Al expandir Y(s) en fracciones simples se obtiene: que tomando la TIL obtenemos: Y (s) = 1 s 2 T s + T st, (2.47) y(t) = t T + T e t/t (2.48) La respuesta del sistema será gráficamente el mostrado en la Fig y(t) t Figura 2.20: Respuesta de un sistema de primer orden a la entrada rampa unitaria. T = 0.5 representa el error en estado estacionario, esto es, el error al seguir la entrada es igual a T para un t sufiecientemente grande. Cuanto menor sea la constante de tiempo T, menor será el error en estado estacionario al seguir la entrada rampa. Entrada función escalón: En este caso tendremos:

87 2.2 Modelos dinámicos y respuesta dinámica. 77 u(t) = 1(t) U(s))1/s Y (s) = G(s)U(s) = La respuesta temporal será la siguiente: A T s s, (2.49) y(t) = L 1 A 1 { 1 + T s s } = A(1 e t/t ) (2.50) Si suponemos que las condiciones inciales no son nulas, sino que y(0) = b, podemos calcular los valores en régimen estacionario y transitorio: Estacionario: y ss = lim t y(t) = A Transitorio: y t = (b A)e t/t La respuesta del sistema será gráficamente el mostrado en la Fig y(t) t Figura 2.21: Respuesta de un sistema de primer orden a la entrada escalón. La constante de tiempo T será el parámetro característico. Cuanto más pequeño sea T, más rápida será la respuesta del sistema. Para t > 4T la respuesta se mantiene dentro del 2% del valor final. El estado estacionario sólo se alcanza en un tiempo infinito. La respuesta transitoria de un sistema de primer orden puede describirse en términos de la localización del polo de la función de transferencia (-1/T), representando la respuesta ante entrada escalón (ver Fig. 2.22) Sistemas de segundo orden, respuesta impulsional/escalón,... Los sistemas de segundo orden tienen la siguiente ecuación diferencial asociada:

88 78 Capítulo 2. Introducción a los Sistemas Continuos de Control jw s Figura 2.22: Respuesta impulsional en función de la posición de los polos en un sistema de primer orden. 2 i=0 a i d i y(t) dt i = m j=0 b j d j u(t) dt j, m 2 (2.51) Si desarrollamos la función de transferencia G(s) = N(s)/D(s), obtenemos el sistema siguiente: w 2 n G(s) = s 2 + 2ξw n s + wn 2, (2.52) donde ξ es la relación de amortiguamiento y w n es la frecuencia natural. Esta expresión se corresponde al sistema con realimentación unitaria mostrado en la Fig. 2.23: u(t) + - y(t) Figura 2.23: Sistema de segundo orden como bloque con realimentación unitaria. En la Fig se muestran ejemplos de la respuesta en función de los distintos polos.

89 2.2 Modelos dinámicos y respuesta dinámica. 79 Figura 2.24: Respuesta de un sistema de segundo orden en función de la posición de los polos. El denominador del sistema se denomina ecuación característica y, para un sistema de segundo orden, tiene la siguientes raíces o polos: p 1,2 = ξw n ± jw n 1 ξ 2 (2.53) En función de los valores de ξ, obtendremos distintas posiciones de los polos y, por tanto, distintas respuestas del sistema: ξ = 0. Sistema sin amortiguamiento. 0 < ξ < 1. Sistema subamortiguado. p 1,2 = ±jw n (2.54) p 1,2 = ξw n ± jw n 1 ξ 2 (2.55) En este caso, como p p2 2 = w2 n, y por tanto ξ 2 + w 2 = w 2 n, esta situación se da alrededor de una circunferencia de radio la frecuencia natural, w n.

90 80 Capítulo 2. Introducción a los Sistemas Continuos de Control ξ = 1. Amortiguamiento crítico (polos reales dobles). ξ > 1 Sobreamortiguamiento (polos reales simples). p 1,2 = ξw n (2.56) p 1,2 = ξw n ± w n ξ 2 1 (2.57) Respuesta escalón en sistemas de segundo orden En el caso de los sistemas de segundo orden, resulta de interés observar sus respuesta ante una entrada escalón. Recordemos que la función de entrada al sistema es U(s) = 1/s, por lo que: wn 2 1 Y (s) = G(s)U(s) = s 2 + 2ξw n s + wn 2 s, (2.58) que para el caso 0 < ξ < 1 se obtiene una respuesta temporal: y(t) = 1 e σt (cos(w d t) + σ w d sin(w d t)), (2.59) donde σ y w d definen los polos del sistema: s = σ jw d, σ = ξw n y w d = w n 1 ξ 2. En la Fig mostramos esta respuesta en función de distintos valores de la constante de amortiguamiento ξ. Figura 2.25: Respuesta temporal de un sistema de segundo orden en función de distintos valores del coeficiente de amortiguamiento, ξ.

91 2.2 Modelos dinámicos y respuesta dinámica Especificaciones en el dominio temporal La respuesta temporal ante una entrada escalón tiene una forma característica que podemos dividir en dos tramos: una primera parte en la que se alcanza la señal de entrada (estado transitorio) y una segunda en que el sistema presenta oscilaciones alrededor del valor máximo de entrada (régimen estacionario) Ver la Fig Figura 2.26: Respuesta temporal transitoria típica de un sistema de segundo orden. Se indican también las características que definen la respuesta, a menudo conocidas por especificaciones del sistema ya que son las propiedades deseadas a conseguir en un controlador. La respuesta transitoria de un sistema ante una entrada de escalón unitario depende de las condiciones iniciales. Al comparar respuestas transitorias de diversos sistemas, por conveniencia, se suele usar la condición inicial de reposo (todas las derivadas se hacen cero). La respuesta transitoria presentará oscilaciones amortiguadas antes de alcanzar el estado estacionario. Las características que definen esta respuesta son: Tiempo de retardo, t d ( delay ). Tiempo que tarda la respuesta en alcanzar la mitad del valor final por primera vez. Tiempo de crecimiento, t r ( raise ). Tiempo necesario para que la respuesta aumente del 10% al 90%, del 5% al 95% (sistemas subamortiguados, ξ > 1) o del 0% al 100% (sistemas subamortiguados, 0 < ξ < 1). Un valor aproximado viene dado por t r 1.8/w n. Tiempo de pico, t p ( peak ). Tiempo necesario para que la respuesta alcance el primer pico de sobreimpulso. Sobreimpulso máximo, M p ( maximum peak ). Es el valor de pico máximo de la curva de respuesta medido desde la unidad. Si no se estabiliza en la unidad, M p = 100% y(tp) t( ) y( ). Nos indica la estabilidad relativa del sistema.

92 82 Capítulo 2. Introducción a los Sistemas Continuos de Control Tiempo de establecimiento, t s ( settling time ). Es el tiempo que el sistema necesita para alcanzar y mantenerse en un rango alrededor del valor final con una magnitud del 1%, 2% o del 5%. Esta magnitud está relacionada con la constante de tiempo máxima del sistema de control. Un valor aproximado viene dado por t s 4.6/ξ. Ejemplos 1. Hallar las especificaciones de un sistema de segundo orden ante una entrada escalón si ξ = 0.6 y w n = 5rad/s. SOLUCIÓN: w d = 4, σ = ξw n = 3, t r = 0.55s., t p = 0.785s., M p = 9.5%, t s (2%) = 1.33s., t s (5%) = 1s. 2. Determinar K y K h para el sistema de la Fig.?? de modo que M p en la resuesta escalón unitario sea 0.2 y t p = 1s.. Obtener después t r y t s para esos valores K y K h. (a) Im(s) p 1 = 0 (b) Im(s) x 4 p 2,3 = -4+4j _ x π/ x x -4 Re(s) x x π/3=5π/3-4 Re(s) (c) Im(s) (d) Im(s) p 1 = 0 φ 2 x 90 4 φ x p 2,3 = -4+4j _ φ x 45 x -4 Re(s) -4-2 x x Re(s) p 1 = 0 p 2,3 = -4+4j _ φ 1 φ 2 φ 3 Figura 2.27: Sistema de control con realimentación. Ejemplo 2. SOLUCIÓN: K = 12.5, K h = 0.178, t r = 0.65s., t p = 3.14s., M p = 0.2, t s (2%) = 2.48s., t s (5%) = 1.86s Efectos de la adición de ceros y polos Si un cierto diseño tiene un tiempo de elevación demasiado bajo, se debe elevar la frecuencia natural, w n. De forma similar, si el transitorio es demasiado elevado, la amortiguación necesaria deberá incrementarse. Si el transitorio dura demasiado tiempo, habrá que mover los polos a la izquierda en el plano s. La influencia de

93 2.2 Modelos dinámicos y respuesta dinámica. 83 los ceros en un sistema de segundo orden se basa en que modifican los coeficientes de los términos exponenciales. Si el cero se desplaza lejos de los polos, tendrá poco efecto sobre la respuesta. Por el contrario, si el cero está en el valor de la parte real de los polos podría tener influencia decisiva sobre la respuesta. El mayor efecto de los ceros es, por tanto, el de aumentar M p con poca influencia sobre el tiempo de estabilización. Por tanto, resulta evidente que la posición de polos y ceros en un sistema de control tiene especial relevancia en las características de su respuesta. Veamos este hecho con un ejemplo. Si consideramos los sistemas: H 1 (s) = 2 (s + 1)(s + 2) = 2 s s + 2 (2.60) H 2 (s) = 2(s + 1.1) 1.1(s + 1)(s + 2) = 0.18 s s + 2 (2.61) En el segundo sistema hemos añadido un cero en (-1.1) cerca de uno de los polos (-1). El valor 1.1 en el denominador ajusta la ganancia DC para que sean iguales 1. La Fig ilustra las respuestas de los dos sistemas ante la entrada escalón unitario. De estos sistemas se pueden extraer características interesantes: Step Response 1 From: U(1) Amplitude To: Y(1) Time (sec.) Figura 2.28: Respuesta de los sistemas H 1 (s) y H 2 (s). Con la adición del cero conseguimos un menor tiempo de subida. A medida que el cero se aproxima al origen, se incrementa el sobreimpulso. Los polos/ceros se pueden cancelar en el semiplano negativo (LHP) en lo que se refiere a la respuesta pero pueden afectar a las condiciones iniciales. 1 Esto se puede demostrar mediante el TVF: lim t y(t) = lim s 0 sy (s).

94 84 Capítulo 2. Introducción a los Sistemas Continuos de Control El predominio relativo de los polos de lazo cerrado está determinado por la relación entre sus partes reales, así como de las magnitudes relativas de los residuos calculados por cada polo. Los valores de los residuos dependen de los polos y de los ceros de lazo cerrado. Los polos más cercanos al eje jw dominan el comportamiento de la respuesta transitoria Polos dominantes. 2.3 Principios esenciales de la realimentación Introducción Existen dos estructuras básicas para el control de sistemas: en lazo abierto y en lazo cerrado (o realimentado). La diferencia entre ellas es que en lazo cerrado necesitamos usar un sensor a la salida el cual normalmente nos introduce un ruido además de una medida de la variable de salida. En la Fig mostramos estos dos esquemas. (a) Entrada de referencia Controlador Proceso Salida Control de entrada (b) Entrada de referencia + - Controlador Proceso Salida Control de entrada Sensor Figura 2.29: Estructuras básicas en el control de sistemas: (a) Lazo abierto y (b) lazo cerrado. En la Fig se muestra el esquema más sencillo de sistema con realimentación unitaria (ganancia unitaria en el lazo de realimentación). A partir del esquema podemos extraer las ecuaciones que definen el sistema total de la siguiente manera:

95 2.3 Principios esenciales de la realimentación 85 r e + - k H(s) y Figura 2.30: Sistema con realimentación unitaria. Y (s) R(s) = E(s) = R(s) Y (s) (2.62) Y (s) = kh(s)e(s) (2.63) Y (s) = kh(s)(r(s) Y (s)) (2.64) kh(s) 1 + kh(s) ; E(s) R(s) = kh(s) (2.65) Si el valor de k es elevado, la ganancia entrada salida se hace uno. Por tanto, el valor de k será decisivo para la estabilidad de un sistema. Hablamos de realimentación proporcional ( proportional feedback ). Este hecho lo ilustramos en el siguiente ejemplo. EJEMPLO 1. Si consideramos el sistema H(s) = 1 s(s + 2), (2.66) realimentado con lazo unitario, podemos establecer su ecuación característica como: s 2 + 2s + k = 0 (2.67) En la Fig mostramos la posición de las raíces de la ecuación característica y la respuesta ante una señal escalón con k = 1, k = 10 y k = 100. EJEMPLO 2. El segundo ejemplo que veremos se refiere al sistema siguiente: H(s) = 1 s[(s + 4) ], (2.68) realimentado con lazo unitario, podemos establecer su ecuación característica como: s[(s + 4) ] + k = 0 (2.69) En la Fig mostramos la posición de las raíces de la ecuación característica y la respuesta ante una señal escalón con k = 1, k = 100 y k = 275.

96 86 Capítulo 2. Introducción a los Sistemas Continuos de Control x x Amplitude Amplitude Amplitude Amplitude step response Time (secs) proportional feedback, k = Time (secs) proportional feedback, k = Time (secs) proportional feedback, k = Time (secs) Figura 2.31: Posición de los polos del sistema y respuesta escalón para k = 1, y k = 100. En este ejemplo vemos como, al contrario del caso anterior, conforme aumentamos el valor de k provocamos la inestabilidad del sistema al hacer que las raíces de la ecuación característica pasen del semiplano negativo al positivo Sensibilidad Podemos definir la sensibilidad como el cambio relativo de una magnitud respecto a otra. La sensibilidad de la magnitud Y respecto a la magnitud X, se define así: S Y X Y Y X X Si aplicamos esta definición sobre el sistema: = X Y Y X (2.70) H(s) = la sensibilidad de H respecto de K se define como: S H K = K H kg(s) 1 + kg(s), (2.71) H K = 1 0 si KG es elevado. (2.72) 1 + KG

97 2.3 Principios esenciales de la realimentación 87 Amplitude Amplitude Amplitude Amplitude step response Time (secs) proportional feedback, k = Time (secs) proportional feedback, k = Time (secs) proportional feedback, k = Time (secs) Figura 2.32: Posición de los polos del sistema y respuesta escalón para k = 1, k = 100 y k = 275. Por tanto vemos que la realimentación reduce la sensibilidad del sistema Precisión en régimen estacionario: tipo de sistema Si consideramos un sistema G(s) con realimentación unitaria, con un controlador en serie D(s), la señal de error recordemos tiene la forma: E(s) = R(s) 1 + G(s) (2.73) Por otro lado, la entrada de referencia a un sistema toma, por norma general, la forma: r(t) = tk 1(t) k! (2.74) R(s) = 1 s k+1 (2.75) En la mayoría de los casos, la referencia de entrada no será constante sino que puede ser aproximada por una función lineal en un periodo de tiempo suficiente para que el sistema alcance el estado estacionario. Esto se conoce como error en estado estacionario. El tipo de la entrada a un sistema depende del valor de k: k = 0 implica una entrada escalón (error de posición). k = 1 implica una entrada rampa (error de velocidad).

98 88 Capítulo 2. Introducción a los Sistemas Continuos de Control k = 0 implica una entrada parabólica (error de aceleración). El error estacionario de un sistema de control realimentado se define como: ɛ lim ɛ(t) t (2.76) ɛ lim se(s) s 0 (2.77) donde E(s) es la transformada de Laplace de la señal de error y se define así: E(s) = D(s)G(s) R(s) = D(s)G(s) Por tanto, podemos calcular el error estacionario: 1 s k+1 (2.78) 1 1 ɛ lim s 0 s k = 0, o un constante. (2.79) 1 + D(s)G(s) Por tanto, el error estacionario dependerá del tipo de señal de entrada. Hablamos de tipo de un sistema al orden k para el cual ɛ es una constante, y coincide con el número de polos del sistema en lazo abierto. Así, por ejemplo, el sistema D(s)G(s) = k(1+0.5s) s(1+s)(2+3s) es de tipo 1, mientras que el sistema D(s)G(s) = k/s3 es de tipo 3. De este modo, podemos resumir los errores estacionarios por tipo de entrada como se muestra en la Tabla Tabla 2.2: Expresiones de los errores en régimen estacionario en función del tipo de entrada. Las constantes representan el tipo de error: K p es la constante de error de posición, K v es la constante del error de velocidad y K a es la constante para el error de aceleración. Entrada Tipo Escalón Rampa Parábola Polinómico 1 1(t) t 2 t2 1 k tk 0 1/(1+K p ) 1 0 1/K v k /K 0 El tipo de un sistema es una propiedad de robustez del mismo 2. Si la ganancia del proceso cambia (cambio de parámetros) el K error cambia, pero no ocurre esto 2 La definición del tipo de un sistema nos ayuda a identificar rápidamente la habilidad de éste para seguir polinomios (entradas). En la estructura de realimentación unitaria, si la ganancia cambia a tipo 1, la K v cambia también, pero el sistema todavía tendrá e = 0 en respuesta a una entrada constante y aún será de tipo 1. Los mismo ocurre para tipo II o superiores. Podemos afirmar que la robustez es la mayor razón para preferir realimentaciones unitarias.

99 2.3 Principios esenciales de la realimentación 89 con el tipo del sistema. Para realimentación no unitaria, el tipo del sistema se puede definir con respecto a la entrada de referencia: e p K p = limg(s) (2.80) e v K v = limsg(s) (2.81) e a K a = lims 2 G(s) (2.82) Teorema de Truxal Truxal (1995) derivó la fórmula para la constante de velocidad en términos de los polos y los ceros en lazo cerrado; una fórmula que conecta el error en estado estacionario con la respuesta dinámica. La fórmula de Truxal es: 1 K v = d ds [lnt ] s=0 = n i=1 ( 1pi ) + m ( ) 1 j=1 z j (2.83) De esta ecuación se observa que se obtienen mayores valores de K v cuando el valor absoluto de los polos es menor. Veamos a continuación un ejemplo práctico: EJEMPLO. Un sistema de tercer orden y de tipo I tiene los polos en lazo cerrado en 2 ± 2j y 0.1. El sistema tiene un cero en lazo cerrado. Dónde debe estar el cero si se desea una K v = 10? SOLUCIÓN. Si aplicamos Truxal obtenemos z = Estabilidad en SLIT. Criterio de Routh. La estabilidad es una propiedad del sistema en sí y no depende de la entrada o función excitadora del sistema. Un sistema dinámico es estable si, estando en reposo, se cumple que: Cualquier entrada acotada produce una salida acotada (BIBO, Bounded Input Bouded Output ). Entradas suficientemente pequeñas producen salidas suficientemente pequeñas. Si un SLIT cumple la primera condición también cumple la segunda. TEOREMA. La condición necesaria y suficiente para que un SLIT sea estable es que su respuesta g(t) a la entrada impulso sea absolutamente integrable.

100 90 Capítulo 2. Introducción a los Sistemas Continuos de Control ECUACIÓN CARACTERÍSTICA. La estabilidad va ligada a la posición de las raíces de la ecuacion característica. Las raíces de la ecuación característica son los polos de G(s), y cuando s tome esos valores, G(s). Para que un sistema sea estable todas las raíces de la ecuación característica han de estar en el semiplano real negativo del plano s. CRITERIO DE ROUTH. Sólo se aplica este criterio si la ecuación característica es algebráica y todos los coeficientes son reales. Sea la ecuación característica D(s) = a n (s p 1 )...(s p n ) = 0, la condición necesaria y suficiente para que D(s) = 0 no tenga raíces con parte real positiva es que: (1) todos los coeficientes tengan el mismo signo, y (2) ningún coeficiente sea nulo. ESTABILIDAD RELATIVA. El Criterio de Routh confirma la estabilidad absoluta de un sistema. La estabilidad relativa se asocia a la amortiguación relativa de cada raíz de la ecuación característica; se define como la propiedad que se mide por los tiempos relativos de estabilización de cada raíz. También se puede definir la estabilidad relativa en términos de los coeficientes de amortiguación de cada par de raíces complejas y por tanto en términos de la velocidad de la respuesta y el sobrenivel en lugar del tiempo de estabilización. La estabilidad relativa depende de la localización de las raíces de la ecuación característica. 2.4 Método de diseño del lugar de las raíces (MLR) Introducción En las secciones anteriores hemos visto las características de la respuesta ante una entrada escalón tales como el tiempo de establecimiento, la localización de los polos en el plano s (w n, ξ, σ), el sobreimpulso, etc.; además hemos examinado los cambios de la respuesta transitoria ala añadir un polo cero al sistema. Por otra parte, hemos visto también cómo la realimentación puede influir en la estabilidad y la respuesta dinámica al cambiar la posición de los polos. Ahora veremos el Método del Lugar de las Raíces, que nos mostrará la influencia de los polos en las características de los sistemas realimentados. Empecemos con el esquema de la Figura La relación entre la entrada y la salida del sistema en el plano s es: Y (s) R(s) = K ak G G(s) 1 + K a K G G(s), (2.84) por los que la ecuación característica del sistema es: 1 + K a K G G(s) = 0, cuyas raíces son los polos de la función de transferencia. Las raíces dependerán pues de K a (ganancia del controlador) y su elección tendrá influencia en la respuesta del sistema.

101 2.4 Método de diseño del lugar de las raíces (MLR) 91 R(s) + - E(s) K a U(s) K G G Y(s) 1 Figura 2.33: Sistema controlador proporcional de constante K a y planta a controlar K G G en lazo realimentado unitario. El Método de Evans (1948) sugiere dibujar la localización de las raíces de la ecuación característica en función de K a variando ésta entre 0 e, y usar el gráfico resultante para seleccionar el valor más adecuado de K a. Además, estudiando los efectos de la adición de polos-ceros sobre este gráfico, se puede determinar las consecuencias sobre el sistema. Así pues llamamos Lugar de las Raíces al gráfico de todas las posibles raíces de la ecuación característica en función de alguna variable (ganancia u otro parámetro). La técnica empleada para ello es el Método de Evans. Ahora definimos el parámetro de estudio de nuestro LGR como K = K a K G que es la ganancia estática en lazo abierto (l.a.). Por tanto tenemos: 1 + KG(s) = 0 G(s) = 1 K. Por tanto el LGR es el conjunto de valores de s para el cual la ecuación 1 + KG(s) = 0 tiene valores positivos de K (y en consecuencia de K a ) Trazado del Lugar de las Raíces Para trazar el Lugar de las Raíces hay que seguir una serie de siete pasos: 1. Marcar los polos de la función de transferencia en lazo abierto con aspas ( X ) y los ceros con círculos ( O ). 2. Dibujar el LGR debido a los polos en el eje real. El LGR siempre queda a la izquierda de un número impar de polos reales y ceros reales. Un polo o zero en el eje real introducen un desfase de 180 o y como se alcanza la parte izquierda del plano s, la fase se hace negativa. Es más, un segundo polo o un segundo cero en el eje real introduce un desfase adicional de 180 o. Mostramos algunos ejemplos (Fig. 2.34): 3. Dibujar las asíntotas centradas en α (también llamado centroide) y con ángulos de salida de φ s :

102 92 Capítulo 2. Introducción a los Sistemas Continuos de Control 180 o X O X O X X Figura 2.34: Algunos ejemplos de polos y ceros sobre el eje real para dibujar el LGR. num. ceros num. polos = n m = num. asintotas. (2.85) pi z i α = n m = a 1 + b 1 (2.86) n m φ s = 180o o (l 1) ; l = 1, 2,..., n m (2.87) n m Por ejemplo, si tenemos que n m = 3 φ l = 60 o, 180 o, 300 o ya que (n m)φ l = 180 o + (l)360 o. En la Fig mostramos algunos ejemplos de asíntotas. 4. Calcular los ángulos de partida (polos) y de llegada (ceros): Ψi φ i 180 o 360 o l = qφ salida (2.88) φi Ψ i o o l = qψ llegada, (2.89) donde el orden del polo o cero y l toma valores enteros: los ángulos están entre ±180 o. Consideremos, por ejemplo el sistema en lazo abierto siguiente: G(S) = s + 1 s[((s + 2) 2 + 4)(s + 5)], (2.90) la representación de polos y ceros se muestra en la Fig.?? junto con los ángulos φ i y psi i de cada polo/cero respecto a un punto de test s 0 = 1+2j. Debemos tener en cuenta que si s 0 es un punto del LGR, la ecuación siguiente se debe satisfacer: G(S) = ψ i (φ 1 + φ 2 + φ 3 + φ 4 ) = 180 o (2.91)

103 2.4 Método de diseño del lugar de las raíces (MLR) 93 Figura 2.35: Ejemplos de trazado de asíntotas para el LGR. 5. Determinar el punto de cruce (intersección) con el eje imaginario s = jw: Los puntos de intersección y los correspondientes valores de K se pueden determinar mediante el Criterio de estabilidad de Routh. Una raíz de la ecuación característica en el RHP (derceha del plano s) implica que el sistema en lazo cerrado es inestable. Si utilizamos el Criterio de Estabilidad de Routh, podemos localizar aquéllos valores de K para los cuales un incremento puede causar un cambio del número de raíces en el semiplano derecho. Esos valores se corresponden con el LGR que cruza el eje imaginario. 6. Dos segmentos se juntan en 180 o y se separan en ±90 o. Tres segmento se aprosiman con ángulos relativos de 120 o y parten con ángulos de 60 o rotados. Estos punto se conocen como puntos de bifurcación, ruptura o dispersión: dk ds = 0 (ver Figs y 2.38.). 7. Completar el dibujo: las ramas empiezan en los polos y acaban en los ceros o

104 94 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.36: Ejemplo del cálculo de los ángulos de salida φ y ψ. en el. Algunas definiciones útiles: El LGR es un conjunto de valores de s para los que 1 + KG(s) = 0 se satisface tal que K varía entre 0 e. E LGR de G(s) es el conjutno de puntos en un plano-s donde la fase de G(s) es 180 o : G = 180 o o l, l Z Ejemplos prácticos. EJEMPLO 1. parámetro K a. Hallar el LGR de K G G(s) = 1/(s(s + 1) en función del K G = 1 K = K a Orden de numerador y denominador: m = 0, n = 2; G(s) = b(s)/a(s); b(s) = 1, a(s) = s 2 + s. Por tanto no existen zeros y tenemos dos polos en 0 y 1. Resolviendo 1 + KG(s) = 0 se obtiene s 2 + s + K = 0 cuyas raíces son: r 1, r 2 = 1 2 ± 1 4K 2 por lo que se puede distinguir tres casos: 0 K 1/4 Raíces reales entre 1 y 0.

105 2.4 Método de diseño del lugar de las raíces (MLR) 95 Figura 2.37: Este ejemplo ilustra un caso en que dos ramas del LGR se encuentran en el punto de ruptura ( breakway point, saddle point ) y se alejan del eje en sentidos contrarios. En este caso, el punto de ruptura representa una doble raíz de la ecuación, cuando el valor de K tiene el valor del punto. K = 1/4 Dos raíces en 1/2. K > 1/4 Raíces complejas: Re: 1/2, Im: α K. En la Fig mostramos como existe un punto de ruptura para el cual tenemos raíces complejas para K > 1/4. EJEMPLO 2. Representar el LGR para la planta G(s) = 1/(s(s + c)) respecto el valor de c. En este caso se tiene que 1+G(s) = 0 s 2 +sc+1 = 0, a(s) = s 2 +1, b(s) = s, K = c, por lo que las raíces serán: r 1, r 2 = c 2 ± c (cero en s = 0, polos en ±j). El LGR se muestra en la Fig EJEMPLO 3. Entender y justificar los LGR de la Fig EJEMPLO 4. Se desea obtener el LGR del siguiente sistema:

106 96 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.38: Situaciones típicas de puntos de ruptura ( breakway point, saddle point ). G(s) = 1 s[(s + 4) ] (2.92) 1. Representar los polos y ceros del sistema (Fig.??a): 2. Lugar sobre el eje real: izquierda de un número impar de ceros y polos reales (Fig. 2.42a). 3. Asíntotas. Tenemos n = 3, m = 0, por lo que tendremos n m = 3 asíntotas: l = 1, 2, 3. α = 0 + ( 4 + 4j) + ( 4 4j) 3 φ 1 = 180o o (1 1) 3 φ 1 = 180o o (2 1) 3 φ 1 = 180o o (3 1) 3 = 8/3 = 2.67 (2.93) = π/3 (2.94) = π (2.95) = 5π/3 (2.96) Las asíntotas quedan representadas en la Fig. 2.42b. 4. Ángulos de salida y llegada (polos y ceros). Sabemos que el LGR empieza en los polos y va hacia los ceros o el por las líneas asintóticas. Si recordamos la regla para el cálculo de los ángulos de partida:

107 2.4 Método de diseño del lugar de las raíces (MLR) 97 Im(s) x x Re(s) Punto de ruptura Figura 2.39: Lugar de las raíces para el sistema del Ejemplo 1. Punto de ruptura Im(s) x -1 Re(s) x Figura 2.40: Lugar de las raíces para el sistema del Ejemplo 2. Ángulo de partida de un polo complejo = 180o - [ ángulos de los segmentos al polo complejo desde los otros polos] + [ ángulos de los segmentos al polo complejo desde los ceros] Ángulo de partida de un polo complejo = 180o - [ ángulos de los segmentos al cero complejo desde los otros ceros] + [ ángulos de los segmentos al cero complejo desde los polos] Como sólo tenemos polos (dos complejos y otro real), sólo aplicaremos la regla 1, es decir, sólo habrá ángulos de partida (Fig. 2.42c). Para cada polo i calculamos un φ i : φ 1 = 180 o - (45 o +45 o ) = 90 o φ 2 = 180 o - (90 o o ) + 0 o = -45 o φ 3 = 180 o + 0 o - (90 o +45 o ) = +45 o

108 98 Capítulo 2. Introducción a los Sistemas Continuos de Control orden 2 X X O X X X X O orden 2 Figura 2.41: Más ejemplos de LGR. 5. Cruce en el eje imaginario (s = jw) + Criterio de Routh: 1 + K s[(s + 4) ] = 0 (2.97) s 3 + 8s s + K = 0 (2.98) Si aplicamos el Criterio de Routh, vemos que la ecuación no tiene raíces en el SPD para 0 < K < 8 32 = 256. Como nos interesan los K > 0, nos centraremos en K < 256. Para K < 256 no tenemos raíces en el SPD y para K > 256 tenemos dos raíces en el SPD. Analizamos el punto de ruptura K = 256: w o = ± 32 = ± Puntos de bifurcación: d ds [ 1/G] s=s 0 = 0 3s s + 32 = 0 s 0 = 2.67 ± 1.89j (2.99) Como este s 0 NO está en el LGR, no nos ha servido el proceso. Hay que recordar que es una condición necesaria pero no suficiente. 7. Completamos el LGR. Ver Fig. 2.42d.

109 2.4 Método de diseño del lugar de las raíces (MLR) 99 (a) Im(s) p 1 = 0 (b) Im(s) x -4-2 x 4 x -4 p 2,3 = -4+4j _ Re(s) x x π/3 4 x π/3=5π/3-4 Re(s) (c) Im(s) (d) Im(s) p 1 = 0 φ 2 x 90 4 φ x p 2,3 = -4+4j _ φ 3 x 45 x -4 Re(s) -4-2 x x Re(s) p 1 = 0 p 2,3 = -4+4j _ φ 1 φ 2 φ 3 Figura 2.42: Paso 1: indicamos los polos del sistema y con una flecha roja el lugar de raíces que queda a la izquierda de un número impar de ceros + polos reales. Una forma más sencilla de realizar el LGR es con MATLAB. Si hacemos: >>rlocus(1,conv([1 0],[1 8 32])), obtenemos la misma representación (Fig. 2.43). Ejemplo 3: MATLAB. Representar el LGR del sistema: G(s) = (s + 3)(s + 1 ± j3) s(s + 1)(s + 2) 3 (s + 4)(s + 5 ± 2j) (2.100) Empleando el comando rlocus, obtenemos el LGR fácilmente (Fig. 2.44). Algunos aspectos sobre la construcción del LGR Desde el punto de vista del diseño de sistemas de control resulta absolutamente necesario conocer el efecto que tiene sobre el LGR añadir o mover polo y ceros de D(s)G(s) sobre el plano-s. Las principales propiedades son: Efecto de añadir polos y ceros a D(s)G(s):

110 100 Capítulo 2. Introducción a los Sistemas Continuos de Control Imag Axis Real Axis Figura 2.43: Resolución del LGR con MATLAB. Añadir polos: En general, añadir un polo a la función D(s)G(s) en el semiplano izquierdo tiene el efecto de empujar el LGR hacia el semiplano derecho. Añadir ceros: Añadir ceros en el semiplano izquierdo a la función D(s)G(s) por norma general tiene el efecto de mover el LGR hacia el mismo semiplano izquierdo. Calcular la ganancia K a partir de LGR: Una vez que el LGR ha sido construido, el valor de K en cualquier punto se puede determinar ya que sabemos que 1 + KG(s) = 0 y, por tanto: K = 1/G(s). Gráficamente, esto se calcula así: K = Π distancia desde s 0 a los ceros Π distancia desde s 0 a los polos (2.101) En MATLAB esto se hace mediante la función rlocfind Compensación dinámica Hemos visto que variando la ganancia podemos conseguir una representación deseada de nuestro sistema pero esto no es siempre posible. Empleamos el Método de compensación dinámica cuando el diseño deseado no lo podemos alcanzar con la variación de la ganancia únicamente. Tenemos dos tipos básicos de compensadores: por adelanto y por atraso:

111 2.4 Método de diseño del lugar de las raíces (MLR) 101 Figura 2.44: LGR del ejemplo con MATLAB. Adelanto. Se usa para reducir el tiempo de elevación y el transitorio de sobreimpulso de la respuesta. Es decir, se aproxima a un control derivativo. Atraso. Se usa para mejorar la respuesta en estado estacionario. También nos referimos a él como control integral. Si tenemos un compensador con la forma: D(s) = s + z i s + p i, (2.102) se llama compensador de adelanto si z i < p i y de atraso si z i > p i. Normalmente la compensación se realiza en serie con la planta (Fig. 2.45), aunque también se puede situar en el camino de realimentación. Figura 2.45: Estructura típica de un compensador.

112 102 Capítulo 2. Introducción a los Sistemas Continuos de Control De este modo, tenemos una ec. característica: 1 + KD(s)G(s) = 0, donde K = K A K G. Todas las reglas del LGR se pueden aplicar ahora a la función D(s)G(s). Definimos compensación como el cálculo de D(s) para que se cumplan ciertas especificaciones del sistema total. Efecto de adición de polos y ceros Recordemos que: Adición de polos 3. Mueve el LGR hacia la derecha. Reduce la estabilidad relativa. Aumenta el tiempo de establecimiento, t s. Adición de ceros. Mueve el LGR hacia la izquierda, mejorando la estabilidad del sistema. Aumenta la estabilidad relativa. Reduce el tiempo de establecimiento, t s. Agregar un cero introduce cierto grado de anticipación al sistema y acelera la respuesta transitoria. Compensación en adelanto Veamos, en primer lugar, un ejemplo sobre la adición de un cero al siguiente sistema: KG(s) = K s(s + 1) (2.103) El LGR se muestra en la Fig en línea continua. Si consideramos un compensador D(s) = s + 2, se consigue el LGR en línea discontinua (círculo). Vemos como añadir un simple cero en s = 2 hemos desplazado el LGR hacia la izquierda, mejorando la estabilidad del sistema final. El problema de añadir un único cero en el compensador sería que, una realización física del sistema involucraría un diferenciador que amplificaría el ruido de alta frecuencia de la señal del sensor. Por ello, es imposible construir un diferenciador puro. Podemos, sin embargo, ver la influencia que tendría construir un compensador que incluyera el cero anterior y un polo adicional en s = 20: D(s) = s + 2 s + 20 (2.104)

113 2.4 Método de diseño del lugar de las raíces (MLR) 103 Figura 2.46: Lugar de las Raíces para la inclusión de un compensador por adelanto. Figura 2.47: Lugar de las Raíces para la inclusión de un compensador por adelanto (s=-2) y un polo (s=-20). El efecto se muestra en la Fig Normalmente la elección de los polos/ceros se realiza mediante prueba y error aunque existen algunos consejos útiles: El polo se sitúa entre 3 y 20 veces el valor de la posición del cero. Si el polo está demasiado cerca al cero, entonces el LGR se aleja hacia una forma no compensada y el cero no hace su función. Si el polo fuera demasiado lejos hacia la izquierda, aparecería ruido de amplificación de alta frecuencia. El ejemplo del coche+barra Este ejemplo es clásico en la demostración de un sistema que necesita ser estabilizado mediante la inclusión de un compensador. El sistema consiste en un cochecito 3 A la función de transferencia en lazo abierto.

114 104 Capítulo 2. Introducción a los Sistemas Continuos de Control con una barra fija en su capó y que oscila conforme el coche avanza y frena (Fig. 2.48). θ u m Figura 2.48: Diagrama del coche+barra. El sistema se puede describir matemáticamente como sigue (Ogata, 1993): θ + θ = u s 2 φ(s) φ(s) = U(s) φ(s) φu(s) = 1 s 2 1 (2.105) Si representamos el LGR de este sistema obtenemos un sistema inestable (Fig. 2.49a). Ahora bien, si introducimos un compensador por adelanto como en la Fig. 2.50, podemos obtener un sistema estable (Fig. 2.49b) o incluso, cuando las variaciones son menores, con mejor relación de amortiguamiento (Fig. 2.49c). Este último sistema sería más lento pero conseguiría una mejor relación de amortiguamiento. 2 (a) 5 (b) 5 (c) Imag Axis 0 Imag Axis 0 Imag Axis Real Axis Real Axis Real Axis Figura 2.49: Lugar de las raíces para (a) el sistema original, (b) compensador 1 y (c) compensador 2. El código de MATLAB para realizar estos LGR sería: subplot(131),rlocus([1],[1 0-1]),grid,title( (a) ) alpha = 2;beta = 3;

115 2.4 Método de diseño del lugar de las raíces (MLR) 105 u + - e s + α 1 s + β 2 s -1 Figura 2.50: Control mediante un compensador por adelanto del sistema coche+barra. subplot(132),rlocus([1 alpha],conv([1 0-1],[1 beta])),grid,title( (b) ) alpha = 0.5;beta = 3; subplot(133),rlocus([1 alpha],conv([1 0-1],[1 beta])),grid,title( (c) ) Compensación en atraso Si consideramos de nuevo la misma función de transferencia, y consideramos el compensador en adelanto D(s) = (s + 2)/(s + 20), obtendremos el LGR de la Fig anterior. Si ahora elevamos la ganancia (K=31) hasta conseguir una relación de amortiguamiento ξ = 0.707, la constante de velocidad es: K v = lim s 0 skd(s)g(s) = (31/10) = 3.1 (2.106) Si ahora añadimos un segundo compensador por atraso: D 2 (s) = s s , (2.107) aumentamos la velocidad por 10 ya que z/p = 10 y además mantenemos pequeños z y p de forma que D 2 (s) tendría poca influencia sobre la dinámica del sistema. El LGR se muestra en la Fig De este ejemplo podemos comentar que: El pequeño círculo alrededor del origen es el resultado de la compensación por atraso. Una raíz de lazo cerrado se queda muy cerca del cero de compensación por retardo de 1, lo que corresponde a un transitorio muy lento. Esta lentitud se debe a que el cero casi cancela el polo en la función de transferencia. Sin embargo, este decaimiento es tan lento que este término puede aumentar el valor del tiempo de establecimiento. Por tanto, resulta importante situar la combinación de atraso polo-cero en frecuencias tan altas como sean posibles sin causar desplazamientos demasiado importantes en la localización de la planta original.

116 106 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.51: Lugar de las Raíces para la inclusión de un compensador por atraso con control de velocidad. Técnica LGR de diseño mediante compensación en adelanto El método del LGR es bastante bueno para el diseño de compensadores si las especificaciones dadas son términos en el dominio del tiempo: amortiguamiento (δ), frecuencia natural (w n ), sobreimpulso máximo (M p ), tiempo de crecimiento (t r ), tiempo de establecimiento (t s ), etc. El sistema original que se nos plantea en estos casos es, bien inestable para cualquier ganancia estática K, bien estable para algún valor de K pero con respuesta transitoria indeseable. Es entonces cuando tendremos que modificar el LGR próximo al eje imaginario y al origen mediante la inclusión de un compensador. El procedimiento de diseño sigue estos pasos: A partir de las especificaciones obtenemos la ubicación de los polos dominantes de lazo cerrado. Trazamos el LGR y nos planteamos la pregunta de si con sólo ajustar la ganancia podemos obtener los polos deseados en lazo cerrado. En caso de no poder hacerlo, calculamos la diferencia angular φ que deberá proporcionar nuestro compensador para que el nuevo LGR pase por los polos deseados. Supondremos la función del compensador: G c (s) = K c α 1 + T s 1 + αt s = K s + 1 T c s + 1, 0 < α < 1. (2.108) αt Los valores de α y T los podremos calcular a partir de φ y la ganancia estática del compensador K c a partir de la ganancia de lazo abierto.

117 2.4 Método de diseño del lugar de las raíces (MLR) 107 Si las constantes de error no se proporcionan, determinar la posición del polo y cero de G c (s) de forma que éste contribuya con el ángulo necesario φ. Si no hay otros requisitos impuestos, elegiremos α lo mayor posible ya que así conseguimos una constante de velocidad elevada, lo cual es deseable. Si se da alguna constante de error estático deberemos emplear el Método de Compensación de Respuesta en Frecuencia que veremos en la siguiente sección Determinar la ganancia en lazo abierto del sistema compensado partiendo de la condición de magnitud. Técnica LGR de diseño mediante compensación en atraso Se utiliza la compensación en atraso cuando tenemos, por ejemplo, un sistema que presenta características satisfactorias de respuesta transitoria pero no en estado estacionario. Así pues, la compensación consiste en incrementar la ganancia en lazo abierto sin modificar las características de la respuesta transitoria. Esto significa que el LGR más cercano a los polos dominantes en lazo cerrado no debe variar de forma significativa, pero hay que incrementar la ganancia de lazo abierto tanto como sea necesario. Esto se puede lograr si se coloca un compensador en atraso en serie con la planta. Para evitar una modificación apreciable del LGR, la contribución angular del compensador debe ser menor de 5 o. Para asegurar esto, el polo y el cero del compensador en atraso se tienen que colocar bastante juntos y cerca del origen. Así, los polos de lazo cerrado del sistema total compensado se desplazan levemente de sus ubicaciones originales por lo que las características de respuesta transitoria no se alteran. La forma del compensador es: G c (s) = K c β 1 + T s 1 + βt s = K s + 1 T c s + 1, β > 1. (2.109) βt Si el polo y el cero se colocan muy cerca entre si, s = s 1 donde s 1 es uno de los polos dominantes de lazo cerrado por lo que s 1 + 1/T y s 1 + 1/βT son casi iguales y: s + 1 T G c (s) = K c s + 1 K c. (2.110) βt Esto quiere decir que si K c = 1 las características de respuesta transitoria no se alterarán (la ganancia global de la función de transferencia de lazo abierto (l.a.) se puede incrementar en un factor β > 1.) Como ponemos el polo y el cero cerca del origen, β puede hacerse muy grande (1 < β < 15, β = 10 suele ser una buena elección). El valor de T debe ser grande pero

118 108 Capítulo 2. Introducción a los Sistemas Continuos de Control no en exceso. Un aumento en la ganancia significa un aumentao en las constantes de error estático: Sistema No Compensado : K v = lim s 0 [sg(s)] (2.111) Sistema Compensado : ˆK v = lim s 0 [sgc(s)g(s)] = K c βk v (2.112) El procedimiento de diseño es el siguiente 4 : Trazar el LGR para el sistema no compensado. Empleando las especificaciones, localizamos los polos dominantes en lazo cerrado (l.c.) Planteamos el compensador por atraso: s + 1 T G c (s) = K c s + 1. (2.113) βt Calculamos el error estático especificado: K p, K v, K a, e ss. Deteminar el aumento del coeficiente de error estático que se da para cumplir las especificaciones. Determinar el polo y el cero del compensador en atraso que produce el aumento necesario en el coeficiente de error estático sin alterar mucho el LGR original 5. Trazar el LGR del sistema compensado. Poner los polos dominantes de l.c. en el LGR. Poner los polos dominantes de l.c. deseados conforme a las especificaciones de la respuesta transitoria. Ajustar la ganancia K c a partir de la condición de módulo para que los polos dominantes l.c. queden en las ubicaciones deseadas. Técnica LGR de diseño mediante compensación en atraso adelanto Hasta ahora hemos visto como un compensador en adelanto proporcionaba mayor ancho de banda, aceleraba la respuesta y reducía el sobreimpulso máximo, mientras que un compensador en atraso proporcionaba una mayor ganancia en frecuencias 4 Vamos a suponer que el sistema no compensado cumple las condiciones de respuesta transitoria por ajsute de ganancia. 5 La relación de ganancias de las especificaciones/no compensado es la misma que la de distancias del cero al origen y poloo al origen.

119 2.5 Método de diseño de la respuesta en frecuencia (MRF) 109 bajas (mejora la exactitud en estado estacionario) teniendo una mayor velocidad de respuesta (menor ancho de banda). El compensador de atraso adelanto aprovecha las características de ambos y se suele emplear cuando deseamos mejorar la respuesta transitoria y estacionaria al mismo tiempo. La forma del compensador es: (s + 1 T G c (s) = K 1 )(s + 1 T 2 ) c (s + γ T 1 )(s + 1, β > 1, γ > 1. (2.114) βt 1 ) Para los detalles y procedimiento de diseño se recomienda consultar (Ogata, 1993). 2.5 Método de diseño de la respuesta en frecuencia (MRF) Éste es el método de diseño de sistemas de control con realimentación más usado en la industria ya que: Da buenos diseños para modelos poco conocidos o con frecuencias altas de resonancia. Permite el diseño con información experimental. Las medidas de amplitud y fase de salida de una planta bajo una excitación de entrada senoidal son suficientes para el diseño del sistema de control. No es necesario un cálculo intermedio de los datos como ocurría con el método del LGR en el que había que encontrar los polos y ceros deseados. La principal desventaja, sin embargo, es que la teoría es algo complicada (variable compleja) aunque la metodología de diseño sea sencilla. En este curso no profundizamos en los conceptos matemáticos del diseño e iremos directamente a las recetas del diseño de compensadores. Para más detalles se recomienda consultar (Franklin y Powell, 1994; Ogata, 1993) Respuesta en frecuencia Definimos respuesta en frecuencia de un sistema a la respuesta de éste ante una entrada sinusoidal. A partir de la lozalización de polos y ceros, podemos conocer mejor esta respuesta en frecuencia. Consideremos una función de transferencia en lazo abierto: Y (s) = G(s) G(jw) (2.115) U(s)

120 110 Capítulo 2. Introducción a los Sistemas Continuos de Control Suponemos una entrada: u(t) = sin(wt), (2.116) que para un sistema lineal, tendrá una salida: y(t) = Asin(wt + φ). (2.117) Definimos: Magnitud : A = G(jw) = G(s) s=jw (2.118) F ase : φ = G(jw) = arctan{ Im(G(jw)) Re(G(jw)) } (2.119) Por tanto un sistema estable con función de transferencia G(s) excitada por una sinusoide de amplitud unitaria y frecuencia w, tras alcanzar el estado estacionario, exhibirá una salida sinusoidal con amplitud A(w) y fase φ(w). Hay que hacer notar que la salida es una sinusoide con igual frecuencia que la de la enrtada y la amplitud A es independiente de la señal de entrada. Esto es consecuencia de que G(s) representa un sistema lineal. Estamos interesados en representar A y φ porque nos ayudará a interpretar la respuesta del sistema y a determinar la estabilidad en lazo cerrado del sistema a partir del lazo abierto Diagramas de Bode Hablamos de los Diagramas de Bode en dos casos: Diagrama de magnitud: log 10 A frente a log 10 w Diagrama de fase: φ frente a log 10 w Dado un sistema: KG(s) = K (s z 1)(s z 2 )... (s p 1 )(s p 2 )... = K Πm i=1 (s z i) Π n j=1 (s p j) (2.120) KG(jw) = K 0 Π m i=1 (jwτ i + 1) Π n j=1 (jwτ j + 1) ; K 0 = KG(jw) w<< (2.121) A partir de esta expresión, obtenemos el diagrama de magnitud: log 10 KG(jw) = log 10 K 0 + log 10 jwτ nlog 10 jw nlog 10 jwτ a + 1, (2.122)

121 2.5 Método de diseño de la respuesta en frecuencia (MRF) 111 y el de fase: KG(jw) = K + (jwτ 1 + 1) +... n90 o (jwτ a + 1). (2.123) Todas las funciones de transferencia están compuestas por tres tipos de términos: Singularidad en el origen: K(jw) n (Fig. 2.52). Figura 2.52: Diagrama de Bode de la amplitud para singularidades en el origen. Se trata de una recta con pendiente n (20 db/dec) en una representación logarítmica de la amplitud y añade una fase de n90 o en el diagrama de fase: 20log 10 [K 0 (jw) n ] = 20log 10 K nlog 10 jw (2.124) Término de primer orden: (jwτ + 1) ±1 (Fig. 2.53). Figura 2.53: Diagrama de Bode de (a) amplitud y (b) fase para términos de primer orden. Este término se aproxima a una asíntota a bajas frecuencias (wτ << 1 jwτ ) y a otras a altas (wτ >> 1 jwτ +1 jwτ 20nlog jwτ ): 20log 10 (jwτ + 1) n = 20nlog 10 jwτ + 1 (2.125)

122 112 Capítulo 2. Introducción a los Sistemas Continuos de Control Por tanto, este término añade una linea con pendiente 0 para w << 1/τ y una linea con pendiente ±1 para w > 1/τ. El punto de ruptura es w = 1/τ ya que las dos asíntotas se cruzan y la curva de magnitud pasa por un factr 1.4 (3dB) por encima. En el diagrama de fase, se añaden ±90 o cuando w > 1/τ. Término de segundo orden: [( jw w n ) 2 + 2ξ jw w n + 1] ±1 (Fig. 2.54). Figura 2.54: Diagrama de Bode de (a) amplitud y (b) fase para términos de segundo orden. Su comportamiento es parecido al anterior pero con algunas diferencias: el punto de ruptura es w = w n y el cambio de pendiente s +2 (+40 db/dec) en el punto de ruptura. Veamos los Diagramas de Bode del sistema: G(s) = 20(s + 0.5) s(s + 10)(s + 50) (2.126) En el panel 2.55 mostramos la construcción completa analitica de los diagramas de amplitud (a), fase (b) y una aproximación de la fase (c). En cambio, MATLAB proporciona un comando para realizar de forma sencilla esta tarea: bode.m. El resultado de: grid bode(20*[1 0.5],conv([1 10 0],[1 50])) se muestra en la Fig Márgenes de Estabilidad Veamos cómo trabajar con el concepto de estabilidad mediante los Diagramas de Bode en un ejemplo concreto. Sea el siguiente sistema con control proporcional (Fig. 2.57):

123 2.5 Método de diseño de la respuesta en frecuencia (MRF) 113 Figura 2.55: Diagramas de amplitud (a), fase (b) y una aproximación de la fase (c) para el sistema G(s) = 20(s+0.5) s(s+10)(s+50).

124 114 Capítulo 2. Introducción a los Sistemas Continuos de Control Bode Diagrams 50 From: U(1) 0 Phase (deg); Magnitude (db) To: Y(1) Frequency (rad/sec) Figura 2.56: Diagramas de amplitud (a), fase (b) para el sistema G(s) = bode.m de MATLAB. 20(s+0.5) s(s+10)(s+50) mediante G(s) = 1 s(s + 1) 2 (2.127) Figura 2.57: Bloque de control proporcional. Si representamos el LGR y usamos el Criterio de Routh, observamos que el sistema se hace inestable para K > 2 (el LGR pasa al SPD). Por tanto la condición de estabilidad es 0 < K < 2 (Fig. 2.58). Si representamos los Diagramas de Bode para distintos valores de K (Fig. 2.59), podemos definir dos conceptos muy útiles para estudiar la estabilidad de un sistema: Margen de Ganancia. Es el factor para el cual la ganancia es menor que 1 el valor crítico: MG = KG(jw). Es la diferencia en magnitud entre cualquier Bode y el crítico (en nuestro caso el correspondiente a K = 2). Si el MG > 0 tenemos un sistema estable y, en caso contrario, inestable. Margen de Fase. Es la diferencia en fase respecto a 180 o para una frecuencia concreta. Mediante Matlab se pueden obtener los valores de MG y MF fácilmente empleando el comando margin, de la siguiente forma:

125 2.5 Método de diseño de la respuesta en frecuencia (MRF) 115 Figura 2.58: Lugar de las raíces para els sistema G(s) = 1 s(s+1) 2. Se observa que para K > 2 el sistema se hace inestable. margin([1],conv([1 0],[1 2 1])) El resultado lo muestra Matlab junto con los Diagramas de Bode correspondientes (Fig. 2.60). El Teorema de Bode relaciona la Ganancia y la Fase de Bode estableciendo que Para todo sistema estable de fase mínima (sin polos o ceros en el semiplano derecho), la fase de G(jw) está relacionada únicamente con la magnitud de G(jw). De este teorema se pueden inferir características de estabilidad ya que si calculamos KG(jw) = 1, tendremos que: G(jw) 90 o si n = 1. G(jw) 180 o si n = 2. y la estabilidad se asegura con G(jw) > 180 o y P M > 0. Algunas definiciones útiles: Frecuencia de cruce, crossover frequency. Se trata de la frecuencia para la cual la ganancia es la unidad (0 db). Vector de Margen. Menor distancia al punto -1 desde el diagrama de Nyquist. A pesar de la dificultad de cálculo, da una idea a primera vista sobre la estabilidad del sistema.

126 116 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.59: Diagramas de Bode para el sistema G(s) = 1 s(s+1) 2 con K= Criterio de estabilidad de Nyquist Un Diagrama de Nyquist es una representación de la magnitud frente a la fase y es útil cuando los Diagramas de Bode son demasiado ambiguos respecto a la estabilidad. Un Diagrama de Nyquist resulta de evaluar una función de transferencia H(s) para valores de s definidos por algunos contornos. Si hay polos o ceros dentro del trazado del contorno, entonces el Diagrama de Nyquist dara una o más vueltas alrededor del círculo unidad. La función de transferencia de lazo cerrado tiene la forma: Y (s) R(s) = KG(s) 1 + KG(s) (2.128) La respuesta del lazo cerrado se evalúa mediante: 1 + KG(s) = 0, (2.129) que es simplemente la respuesta de lazo abierto, KG(s), desplazada hacia la derecha una unidad. Por tanto 1+KG(S) rodea el origen si y sólo si KG(s) rodea a -1 (ver

127 2.5 Método de diseño de la respuesta en frecuencia (MRF) 117 Bode Diagrams 50 Gm= db (at 1 rad/sec), Pm= deg. (at rad/sec) 0 Phase (deg); Magnitude (db) Frequency (rad/sec) 1 Figura 2.60: Diagramas de Bode para el sistema G(s) = s(s+1) 2 margin de MATLAB. con K=1 mediante el comando Fig.2.67). Podemos definir el contorno que sea todo el semiplano derecho. Si hay varios rodeos mientras evaluamos la función de transferencia se dice que el sistema es inestable. Un rodeo en el sentido de las agujas del reloj de -1 indica la presencia de un cero en el semiplano derecho mientras que en sentido contrario indica la presencia de un polo en el semiplano derecho. El número de rodeos en el sentido de las agujas del reloj es: N = Z P. (2.130) Como el número de polos en el RHP de G(s) es conocido, asumiremos que un rodeo de -1 indica una raíz inestable del sistema en lazo cerrado. Por tanto tenemos que el número de raíces en el semiplano derecho es: Z = N + P (2.131) Para dibujar el Diagrama de Nyquist debemos seguir los siguientes pasos: Dibujar KG(s) para j s +j. El número de rodeos de -1 será N. El número de polos inestables (semiplano derecho) de G(s) será P. Calcular el número de raíces en lazo cerrado inestables: Z = N + P.

128 118 Capítulo 2. Introducción a los Sistemas Continuos de Control Ejemplos del Diagrama de Nyquist EJEMPLO 1. Consideremos el sistema: G(s) = 1 (s + 1) 2 (2.132) El lugar de las raíces muestra que el sistema es estable para cualquier valor de K. El Diagrama de Nyquist se muestra para K = 1 y no encierra a -1. Como G(s) sólo cruza el eje real negativo en G(s) = 0, nunca cruzará 1/K para cualquier valor de K positivo. EJEMPLO 2. Se considera el sistema: G(s) = que es estable para valores pequeños de K (Fig. 2.62). En la Fig mostramos los Diagramas de Bode. 1 s(s + 1) 2, (2.133) A partir del Diagrama de Nyquist (Fig. 2.64) se puede ver como valores altos de K provocan dos bucles. El arco infinito en el gráfico de Nyquist se debe al polo en 0. Si hubiéramos tenido dos polos en s = 0, el círculo hubiera sido de 360 o. EJEMPLO 3. Consideremos el sistema: G(s) = s + 1 s( s 10 1)2 (2.134) Para valores altos de K se da un rodeo del origen en el sentido contrario a las agujas del reloj (ver Fig. 2.65), por lo que N = 1. Pero como P = 1 por el polo del semiplano derecho de G(s), Z = 0, y no hay por tanto raíces inestables del sistema. Cuando K es pequeño, N = 1 lo que indica que Z = 2 y por tanto hay dos raíces inestables en lazo cerrado. Estabilidad en el Diagrama de Nyquist Al igual que en el Diagrama de Bode podemos analizar la estabilidad del sistema en lazo cerrado en el Diagrama de Nyquist. Veamos cómo se calculan los márgenes de fase (PM) y amplitud (GM) en estos diagramas en términos de la distancia del sistema a rodear el punto -1. El margen de ganancia se define como la inversa de KG(jw) cuando el dibujo cruza el eje real negativo. El margen de fase se define como la diferencia entre la fase de G(jw) y -180 o cuando el dibujo cruza el cículo unidad. La Fig ilustra el cálculo gráficamente.

129 2.5 Método de diseño de la respuesta en frecuencia (MRF) 119 Figura 2.61: Planta, LGR, Bode y Nyquist del Ejemplo 1: G(s) = 1 (s+1) 2.

130 120 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.62: Planta del Ejemplo 2: G(s) = 1 s(s+1) 2. Figura 2.63: Diagrama de Bode del Ejemplo 2: G(s) = 1 s(s+1) 2. Un problema con estas definiciones es que pueden haber varias PM y GM validos; una solución propuesta es la definición del margen del vector que es la distancia al punto -1 desde la situación más próxima del gráfico de Nyquist. El vector margin puede ser dificil de calcular pero MATLAB hace esto de forma automática mediante nyquist.m Diagrama de Nichols El Diagrama de Nichols se define como el lugar de magnitud constante (M) y fase constante (N) en el diagrama del logaritmo de la magnitud en función de la fase. El Diagrama de Nichols contiene curvas de magnitud de lazo cerrado y ángulo de fase constantes. Podemos determinar gráficamente PM y GM, magnitud de pico de

131 2.5 Método de diseño de la respuesta en frecuencia (MRF) 121 Figura 2.64: Diagrama de Nyquist del Ejemplo 2: G(s) = 1 s(s+1) 2. resonancia, frecuencia del pico de resonancia y ancho de banda del sistema en lazo cerrado. Todo esto se calcula a partir del sistema en lazo abierto del lugar de G(jw). Este tipo de diagramas se realizan de forma sencillo con el comando de MATLAB nichols.m. Mediante la función de Matlab ngrid.m se muestran las líneas constantes de fase y magnitud en un Diagrama de Nichols. En la Fig mostramos un ejemplo de Diagrama de Nichols para el sistema: G(s) = s + 1 s(s + 3)(s + 5) (2.135) Compensación Compensación en adelanto La función de transferencia de un compensador por adelanto, recordemos, tiene la siguiente expresión: s + 1 T D(s) = K c s + 1, 0 < α < 1. (2.136) αt La Fig muestra el diagrama de Bode de este tipo de compensador. El máximo adelanto de fase ocurre con: w = 1 αt (2.137) La compensación por adelanto añade un adelanto de fase en la banda de frecuencias entre puntos de ruptura (ver Fig. 2.69). Si no tenemos una variación de ganancia en bajas frecuencias, el compensador añade un adelanto de fase al sistema por lo

132 122 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.65: LGR, Bode y Nyquist del Ejemplo 3: G(s) = s+1 s( s 10 1)2.

133 2.5 Método de diseño de la respuesta en frecuencia (MRF) 123 Figura 2.66: Definiciones de los márgenes de estabilidad (PM y GM) sobre un Diagrama de Nyquist genérico. que mejora su velocidad de respuesta (aún no siendo estable!). Los compensadores en adelanto actúan aproximadamente como un compensador PD pero con menor amplificación de las altas frecuencias. El diseño de compensadores en adelanto sigue el siguiente protocolo: Determinar la ganancia K que satisface el requisito de error estático. Con esa K trazar los Diagramas de Bode del sistema no compensado pero con la ganancia determinada. Evaluar el margen de fase. Determinar φ m (ángulo de fase en adelanto) necesario para agregarlo al sistema. Determinar la frecuencia en que la magnitud del sistema no compensado G 1 (jw) = 20log 10 ( 1 α ). Esta será la nueva frecuencia de cruce de ganancia. Las frecuencias de cruce del compensador por adelanto son: CERO: w = 1/T, POLO: w = 1/αT. K c = K/α. Verificar el margen de ganancia (GM). Si no se cumple la especificación modificar la posición del polo/cero. Continuamos con un ejemplo de diseño de un compensador de adelanto para una planta con la siguiente función de transferencia: G(s) = 1 s(s + 1) (2.138)

134 124 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.67: Diagrama de Nyquist de un sistema complejo y definición del margen de vector.

135 2.5 Método de diseño de la respuesta en frecuencia (MRF) 125 Nichols Charts 50 From: U(1) 0 Open-Loop Gain (db) To: Y(1) Open-Loop Phase (deg) Figura 2.68: Ejemplo de Diagrama de Nichols para el sistema en l.a. G(s) = s+1 s(s+3)(s+5). Figura 2.69: Diagrama de Bode del compensador en adelanto para α = 0.1 K c = 1. Se nos pide que el sistema en lazo cerrado tenga un error en estado estacionario menor del 10% ante una entrada rampa y un sobreimpulso M p < 25%. El error en estado estacionario viene dado por: 1 ɛ( ) = lim = s R(s), (2.139) s 1 + D(s)G(s) donde R(s) = 1/s 2 para la rampa unitaria, con lo que la expresión se reduce a: ɛ( ) = lim s = 1 s + D(s) 1 s+1 = 1 D(0) = 1, 0 < α < 1. (2.140) K c α Podemos elegir K = 10 para conseguir el error estacionario deseado (10% = 0.1). Además, conociendo la relación entre el margen de fase y el sobreimpulso (sinφ =

136 126 Capítulo 2. Introducción a los Sistemas Continuos de Control 1 α 1+α, w m = 1/ 1 αt, M p 2sin(P M/2) ), podemos concluir que necesitamos un PM=45 o para conseguir los requerimientos (Fig. 2.70). Ahora sólo queda experimentar con algunos valores de α y T para conseguir el compensador deseado: s 2 D(s) = s (2.141) Figura 2.70: Diagramas de Bode para el sistema sin compensar (trazo continuo) y compensado (trazo discontinuo) mediante red de adelanto. Compensador PD El Compensador PD (Control Proporcional Derivativo) es una versión simplificada del compensador en adelanto. Su función de transferencia es: D(s) = K(1 + T D s). (2.142) Se comporta como un filtro pasa alta y se emplea situando z = 1/T D de forma que el adelanto de fase se da cerca de w c, es decir, donde D(s)G(s) = 1, de forma que aumente la ganancia (Fig. 2.71). La magnitud del compensador continúa creciendo con la frecuencia. Esto no es deseable ya que amplifica el ruido de alta frecuencia que está siempre presente en los problemas reales. Esto ocurre para w > 1/T D.

137 2.5 Método de diseño de la respuesta en frecuencia (MRF) 127 Figura 2.71: Diagrama de Bode del Compensador PD. Compensación en atraso Un controlador en atraso tiene la forma: D(s) = K T s + 1 αt s + 1, (2.143) donde ahora α es mayor que 1. La Fig muestra el diagrama de Bode de este tipo de compensador. La compensación por atraso aumenta la magnitud en frecuencias por debajo de los dos puntos de ruptura y por tanto disminuye los errores en estado estacionario. Básicamente se trata de un filtro pasa baja ya que las frecuencias bajas se mantienen inalteradas y las altas son atenuadas. El diseño de compensadores en atraso sigue el siguiente protocolo: Determinar la ganancia K que satisface el requisito de errors estático. Si el sistema no compensado G 1 (jw) = KG(jw) no satisface las especificaciones de PM y GM, hallar el punto de frecuencias donde φ m de la función de transferencia en l.a. es 180 o + P M requerido. El P M requerido es el especificado más 5 o a 12 o. Estos grados adicionales compensan el atraso de fase del controlador. Elegir esta frecuencia como nueva frecuencia de cruce de ganancia.

138 128 Capítulo 2. Introducción a los Sistemas Continuos de Control Figura 2.72: Diagramas de Bode de un compensador de atraso. El polo y el cero del compensador se deben poner por debajo de la nueva frecuencia de cruce de ganancia: w = 1/T < w c /8 a w c /10 (2.144) Determinar la atenuación necesaria para bajar la curva de magnitud a 0 db en la nueva frecuencia de cruce de ganancia. Esta atenuación es de 20log 10 α. Halla α. K c = K/α. Verificar el margen de ganancia (GM). Si no se cumple la especificación modificar la posición del polo/cero. Compensador PI El compensador de control proporcional integral es una versión simplificada del compensador en atraso y actúa como un filtro pasa baja. Su función de transferencia es: D(s) = K(1 + 1 T I s ) = K s (s + 1 T I ) (2.145) El aspecto deseado de este compensador es la ganancia a frecuencia nula que reduce el error estático. Esto se consigue con el coste de un decrecimiento de la

139 2.5 Método de diseño de la respuesta en frecuencia (MRF) 129 fase por debajo del punto de ruptura w = 1/T I. Por tanto, este punto se sitúa normalmente a una frecuencia menor que la de cruce para que el PM no quede afectado mucho. La Fig muestra el efecto de un compensador integral. Figura 2.73: Diagrama de Bode de un Compensador Integral (PI).

140 130 Capítulo 2. Introducción a los Sistemas Continuos de Control

141 Capítulo 3 Toolbox de Control ESTE tema revisamos las funciones más útiles que contiene la Toolbox de Control de Matlab 5.3 (Mathworks, 1997). 3.1 Organización del paquete de Control La Toolbox de Control es un conjunto de funciones que facilitan la tarea de diseñar compensadores, modelar sistemas SLIT, simular la dinámica de los sistemas, sus respuestas temporales y frecuenciales así como el trabajar en tiempo continuo/discreto, espacio de estados, etc. Las partes esenciales para nuestros intereses son: Creation of LTI models. tf - Create a transfer function model. zpk - Create a zero/pole/gain model. ss - Create a state-space model. dss - Create a descriptor state-space model. frd - Create a frequency response data model. filt - Specify a digital filter. set - Set/modify properties of LTI models. ltimodels - Detailed help on various types of LTI models. ltiprops - Detailed help on available LTI properties. Overloaded arithmetic operations. + and - - Add and subtract LTI systems (parallel connection). * - Multiply LTI systems (series connection). \ - Left divide -- sys1\sys2 means inv(sys1)*sys2. / - Right divide -- sys1/sys2 means sys1*inv(sys2). ^ - LTI model powers. - Pertransposition.. - Transposition of input/output map.

142 132 Capítulo 3. Toolbox de Control [..] - Concatenate LTI models along inputs or outputs. stack - Stack LTI models/arrays along some array dimension. inv - Inverse of an LTI system. Model dynamics. pole, eig - System poles. zero - System (transmission) zeros. pzmap - Pole-zero map. dcgain - D.C. (low frequency) gain. norm - Norms of LTI systems. covar - Covariance of response to white noise. damp - Natural frequency and damping of system poles. esort - Sort continuous poles by real part. dsort - Sort discrete poles by magnitude. Time response. ltiview - Response analysis GUI (LTI Viewer). step - Step response. impulse - Impulse response. initial - Response of state-space system with given initial state. lsim - Response to arbitrary inputs. gensig - Generate input signal for LSIM. stepfun - Generate unit-step input. Frequency response. ltiview - Response analysis GUI (LTI Viewer). bode - Bode plot of the frequency response. sigma - Singular value frequency plot. nyquist - Nyquist plot. nichols - Nichols chart. margin - Gain and phase margins. freqresp - Frequency response over a frequency grid. evalfr - Evaluate frequency response at given frequency. System interconnections. append - Group LTI systems by appending inputs and outputs. parallel - Generalized parallel connection (see also overloaded +). series - Generalized series connection (see also overloaded *). feedback - Feedback connection of two systems. lft - Generalized feedback interconnection (Redheffer star product). connect - Derive state-space model from block diagram description. Classical design tools. rltool - Root locus design GUI rlocus - Evans root locus.

143 3.2 Funciones esenciales 133 rlocfind acker place estim reg - Interactive root locus gain determination. - SISO pole placement. - MIMO pole placement. - Form estimator given estimator gain. - Form regulator given state-feedback and estimator gains. 3.2 Funciones esenciales En esta sección se enuncian y describen las funciones básicas de la Toolbox de Control. El formato usado por dicho paquete de funciones consiste en representar los polinomios de las funciones de transferencia como vectores fila conteniendo sus coeficientes; para representar una función de transferencia se usan dos de éstos vectores, uno para el numerador (num) y el otro para el denominador (den). Así, una función de transferencia como: G(s) = 3s2 + 6s + 7 s 3 4.2s + 8 (3.1) se introduciría haciendo: num = [3 6 7]; den = [ ]; o mejor aún: num = [ ]; den = [ ]; porque, aún cuando para la mayoría de las funciones de la Toolbox no es necesario que numerador y denominador tengan la misma longiud como vectores, alguna de ellas lo comprueba, debido al uso interno de la Toolbox de Procesado de Señales (signal), que sigue otra convención. En el caso de que haya que introducir funciones que vienen descompuestas en factores, como: G(s) = 3s 2 + 6s + 7 (s + 2)(s 2 + 2s + 1), (3.2) se puede multiplicar a mano o usar el comando conv, que multiplica polinomios (convolución de secuencias), haciendo: num = [ ]; den = conv([1 2],[1 2 1]);

144 134 Capítulo 3. Toolbox de Control residue Objetivo Sinópsis Descripción Ver tf2zp Objetivo Sinópsis Descripción Ver zp2tf Objetivo Sinópsis Descripción Ver Funciones para la conversión de modelos Descomposición en fracciones simples. [r,p,k] = residue(num,den) Los vectores num y den son los coeficientes del numerador y denominador respectivamente, ordenados de forma decreciente respecto las potencias de la variable. El vector columna r alamcena los restos, el p la localización de los polos y el vector fila k almacena el cociente directo. La operación [num,den] = residue(r,p,k) realiza la operación contraria. Conversión de la función de transferencia a la forma ganancia ceros polos. [z,p,k] = tf2zp(num,den) tf2zp encuentra los ceros, polos y la ganancia de una función de transferencia en forma polinómica. Los vectores columna z y p almacenan las posiciones respectivas de ceros y polos. k almacena la ganancia. zp2tf Conversión de la forma cero polo ganancia a la función de transferencia. [num, den] = zp2tf(z,p,k) zp2tf construye una función de transferencia en forma polinomial a partir de los ceros, polos y ganancia del sistema en forma polinomial. Los vectores p, z y k contienen la misma información que la función anterior. Los coeficientes del denominador y numerador se almacena en den y num, respectivamente. tf2zp

145 3.2 Funciones esenciales 135 impulse Objetivo Sinópsis Descripción Ver lsim Objetivo Sinópsis Descripción Ver step Objetivo Sinópsis Descripción Ver Funciones para el estudio de la respuesta temporal Respuesta al impulso unidad. [y,x,t] = impulse(num,den), [y,x,t] = impulse(num,den,t) Calcula la respuesta al impulso unidad de un sistema lineal continuo. Si se indica t, este vector hace referencia al vector de tiempos en que se calcula dicha respuesta. La función devuelve la respuesta del sistema y la matriz de estados, respectivamente, evaluados en los puntos t. Cuando se llama sin la parte izquierda, simplemente dibuja la respuesta en una figura. lsim, step. Simulación de sistemas continuos con entradas arbitrarias. [y,x] = lsim(num,den,u,t) La función simula sistemas contiuos con entrada arbitraria u hasta un instante t. El vector y es la respuesta del sistema y x es la matriz de estados. Cuando se llama sin la parte izquierda, simplemente dibuja la respuesta en una figura. impulse, step Respuesta al escalón unidad. [y,x,t] = step(num,den), [y,x,t] = step(num,den,t) Calcula la respuesta al escalón unidad de un sistema lineal continuo. Si se indica t, este vector hace referencia al vector de tiempos en que se calcula dicha respuesta. La función devuelve la respuesta del sistema y la matriz de estados, respectivamente, evaluados en los puntos t. Cuando se llama sin la parte izquierda, simplemente dibuja la respuesta en una figura. lsim, impulse

146 136 Capítulo 3. Toolbox de Control bode Objetivo Sinópsis Descripción Ver Funciones para el estudio de la respuesta frecuencial Muestra la respuesta en frecuencia (diagrama de Bode). [mag,phase,w] = bode(num,den) Esta función calcula la magnitud y la fase de la respuesta en frecuencia de sistemas lineales continuos. El vector w contiene las frecuencias en rad/s en las cuales la respuesta del sistema es calculada. Si no se pasa, se elige logarítmicamente espaciado en un rango apropiado, y es devuelto por la función. Cuando se llama sin la parte izquierda, simplemente dibuja la respuesta en una figura. margin, nichols, nyquist margin Objetivo Calcula los márgenes de ganancia y fase. Sinópsis [Gm,Pm,Wcp,Wcg] = margin(mag,phase,w), [Gm,Pm,Wcp,Wcg] = margin(num,den) Descripción Esta función calcula el margen de fase (Pm), margen de ganancia (Gm), y las frecuencias de corte asociadas (Wcp, Wcg), a partir de la respuesta en frecuenca de Bode o de la función de transferencia. Cuando se llama sin la parte izquierda dibuja la respuesta en la pantalla, situando líneas verticales en los puntos de corte interesantes, y dando numéricamente los valores de los márgenes en el título de la figura. Ver bode, nichols, nyquist ngrid Objetivo Sinópsis Descripción Ver Dibuja las líneas del Diagrama de Nichols. ngrid, ngrid( new ) Esta función genera las líneas de un diagrama de Nichols para una región entre -40dB y +40dB de magnitud y -360 a 0 grados de fase. Son líneas de magnitud mag( H H 1+H ) y fase constante angle( 1+H ), siendo H un número complejo. Con la opción new se borran los gráficos anteriores. nichols nichols Objetivo Dibuja la respuesta en frecuencia de Nichols. Sinópsis [mag,phase,w] = nichols(num,den), [mag,phase,w] = nichols(num,den,w) Descripción Esta función calcula la magnitud y fase de la respuesta en frecuencia de Nichols de sistemas lineales continuos. w se comporta com en los casos anteriores (mirar bode). Cuando se llama sin la parte izquierda, simplemente dibuja la respuesta en una figura. Ver bode, margin, nyquist nyquist Objetivo Sinópsis Descripción Ver Dibuja la respuesta en frecuencia de Nyquist. [re,im,w] = nyquist(num,den) Esta función calcula la magnitud y fase de la respuesta en frecuencia de Nyquist de sistemas lineales continuos. Los vectores re e im almacenan la parte real e imaginaria de la respuesta para cada punto a lo largo del camino de Nyquist. w se comporta com en los casos anteriores (mirar bode). Cuando se llama sin la parte izquierda, simplemente dibuja la respuesta en una figura. bode, margin, nichols

147 3.2 Funciones esenciales 137 dcgain Objetivo Sinópsis Descripción Ver timespec Objetivo Sinópsis Descripción printsys Objetivo Sinópsis Descripción Propiedades de los modelos Calcula la ganancia estática (DC) del sistema continuo. k = dcgain(num,den) Calcula el límite cuando s 0 de la función de transferencia dad como polinomios de s. bode Muestra por pantalla los parámetros relevantes de la respuesta transitoria del sistema. timespec(num,den) Imprime en la pantalla el tiempo de pico (t p ), porcentaje de sobrenivel (M p ), tiempo de subida (t r ) y tiempo de establecimiento (t s ). Muestra por pantalla el sistema dado en forma de fracción. printsys(num,den, s ) Imprime la función de transferencia como una fracción.

148 138 Capítulo 3. Toolbox de Control parallel Objetivo Sinópsis Descripción Ver series Objetivo Sinópsis Descripción Ver Construcción de los modelos Conexión en paralelo de dos sistemas. [num,den] = parallel(num1,den1,num2,den2) Esta función calcula la función de transferencia polinomial de dos sistemas en paralelo tanto para sistemas continuos como discretos. feedback, series Conexión en serie de dos sistemas. [num,den] = series(num1,den1,num2,den2) Esta función calcula la función de transferencia polinomial de dos sistemas en serie tanto para sistemas continuos como discretos. cloop, feedback, parallel feedback Objetivo Conexión retroalimentada de dos sistemas. Sinópsis [num,den] = parallel(num1,den1,num2,den2), [num,den] = parallel(num1,den1,num2,den2,sign) Descripción Esta función calcula la función de transferencia polinomial de dos sistemas en retroalimentación tanto para sistemas continuos como discretos. Aquí se supone realimentación unitaria. sign se usa para indicar el signo de realimentación: vale 1 si es positiva y -1 si es negativa (por defecto es -1). Normalmente el sistema 1 es la planta y el sistema 2 es el controlador. Ver parallel, series ord2 Objetivo Sinópsis Descripción Genera sistemas de segundo orden. [num,den] = ord2(w n,ξ) Devuelve la función de transferencia de un sistema de segundo orden con dos parámetros dados: la variable ξ que es el coeficiente de atenuación y w n que es la frecuencia natural. minreal Objetivo Realización mínima y cancelación de polos y ceros. Sinópsis [num,den] = minreal(num,den), [num,den] = minreal(num,den,tol) Descripción Esta es la única función que existe para cancelar polos y ceros comunes o muy próximos cuya influencia en el comportamiento transitorio del sistema se compensa y, por tanto, pueden ser despreciados a casi todos los efectos. De todos modos, no deberían tratar de cancelarse polos y cers situados en regiones inestables. Esta función cancela las raíces comunes del numerador y denominador de la función de transferencia que están a una distancia menor que cierta tolerancia, tol, una de otra.

149 3.2 Funciones esenciales 139 pzmap Objetivo Sinópsis Descripción Ver rlocus Objetivo Sinópsis Descripción Ver sgrid Objetivo Sinópsis Descripción Ver Funciones para el análisis del Lugar de la Raíces Dibuja el diagrama de polos y ceros del sistema. [p,z] = pzmap(num,den) Esta función devuelve dos vectores, p y z, conteniendo respectivamente la localización de los polos (raíces del denominador) y ceros (raíces del numerador) de la función de transferencia dada. Llamando sin argunmentos a la parte izquierda, dibuja los polos como cruces y los ceros como círculos en un plano-s. rlocus, sgrid Lugar de las raíces de Evans. r = rlocus(num,den), r = rlocus(num,den,k) Esta función obtiene el LGR de un sistema SISO. El vector r contiene la localización de las raíces. El vector k es el vector de ganancia proporcionado por el usuario, que se elige apropiadamente si no se pasa. Cuando se llama sin la parte izquierda, la función dibuja el LGR en una figura. pzmap Dibuja líneas del coeficiente de atenuación y frecuencia natural constante para el LGR y diagramas de polos y ceros en el plano continuo. sgrid, sgrid( new ) Genera las líneas de atenuación constante de ξ desde 0 hasta 1 en pasos de 0.1, y frecuencia natural normalizada w n desde 0 hasta π en pasos de π 10. sgrid( new ) borra los gráficos de la pantalla antes de dibujar la rejilla y establece el modo hold on para que el lugar de las raíces o el diagrama de ceros y polos pueda dibujarse encima. rlocus, pzmap

150 140 Capítulo 3. Toolbox de Control 3.3 Demostraciones ilustrativas En cualquier paquete anexo de funciones de Matlab existen dos ordenes básicas para tener acceso a información adicional sobre las características de la misma: help < nombre toolbox > y demo. El primero muestra una breve descripción de cada función de la toolbox en cuestión mientras que la segunda es una acceso a todas las demostraciones instaladas junto con el paquete estándar de Matlab. Si nos fijamos en el contenido de contents tenemos las siguientes demostraciones: Demonstrations. ctrldemo - Introduction to the Control System Toolbox. jetdemo - Classical design of jet transport yaw damper. diskdemo - Digital design of hard-disk-drive controller. milldemo - SISO and MIMO LQG control of steel rolling mill. kalmdemo - Kalman filter design and simulation. El caso de las demos visuales de la Toolbox de Control tenemos las siguientes: Model analysis example Digital Control of a Disk drive Command Line demos Todas las Toolbox de Matlab llevan una ayuda muy extensa tanto en HTML como en PDF que podemos encontrar en c:\matlab\help\html_doc y en c:\matlab\ help\pdf_doc. En cualquier caso, podemos emplear el comando help para conseguir ayuda de cualquier función. Por ejemplo: help rlocus RLOCUS Evans root locus. RLOCUS(SYS) computes and plots the root locus of the single-input, single-output LTI model SYS. The root locus plot is used to analyze the negative feedback loop >O-----> SYS > K < and shows the trajectories of the closed-loop poles when the feedback gain K varies from 0 to Inf. RLOCUS automatically generates a set of positive gain values that produce a smooth plot.

151 3.4 Herramientas de Control con Matlab en Internet 141 RLOCUS(SYS,K) uses a user-specified vector K of gains. [R,K] = RLOCUS(SYS) or R = RLOCUS(SYS,K) returns the matrix R of complex root locations for the gains K. R has LENGTH(K) columns and its j-th column lists the closed-loop roots for the gain K(j). See also RLTOOL, RLOCFIND, POLE, ISSISO, LTIMODELS. Overloaded methods help lti/rlocus.m help frd/rlocus.m 3.4 Herramientas de Control con Matlab en Internet Las ventajas de simulación y control de sistemas complejos en un entorno sencillo como MATLAB, junto con el rápido desarrollo y expansión de la red de ordenadores ha permitido el intercambio de ficheros, demostraciones, aplicaciones alternativas, referencias, etc. En esta sección reseñamos algunas de las direcciones más ilustrativas de esto que decimos: Control Tutorials for Matlab: CCSDEMO for Matlab 5 y Matlab/Simulink macros: lth.se/~kursdr/tools.html Sitio Web de Mathworks: Libros de Control de Procesos: PID Tuning, Analysis, and Simulation Software: Laboratorio Virtual de Control de la Universidad de Bochum (Alemania): Course on Fuzzy and Neural Control : DISC Group: Exploring the s-plane: The Joy of Convolution: Representación frecuencial de dos polo/ceros: inpg.fr/hadoc/continu/n06/r06-03.htm Para curiosos: html

152 142 Capítulo 3. Toolbox de Control

153 Capítulo 4 Introducción al Entorno Simulink

154 Quick Start Running a Demo Model Description of the Demo Some Things to Try What This Demo Illustrates Other Useful Demos Building a Simple Model

155 2 Quick Start Running a Demo Model An interesting demo program provided with Simulink models the thermodynamics of a house. To run this demo, follow these steps: 1 Start MATLAB. See your MATLAB documentation if you re not sure how to do this. 2 Run the demo model by typing thermo in the MATLAB command window. This command starts up Simulink and creates a model window that contains this model. When you open the model, Simulink opens a Scope block containing two plots labeled Indoor vs. Outdoor Temp and Heat Cost ($), respectively. 3 To start the simulation, pull down the Simulation menu and choose the Start command (or, on Microsoft Windows, press the Start buttononthe Simulink toolbar). As the simulation runs, the indoor and outdoor temperatures appear in the Indoor vs. Outdoor Temp plot and the cumulative heating cost appears in the Heat Cost ($) plot. 2-2

156 4 To stop the simulation, choose the Stop command from the Simulation menu (or press the Pause button on the toolbar). If you want to explore other parts of the model, look over the suggestions in Some Things to Try on page When you re finished running the simulation, close the model by choosing Close from the File menu. Description of the Demo The demo models the thermodynamics of a house using a simple model. The thermostat is set to 70 degrees Fahrenheit and is affected by the outside temperature, which varies by applying a sine wave with amplitude of 15 degrees to a base temperature of 50 degrees. This simulates daily temperature fluctuations. The model uses subsystems to simplify the model diagram and create reusable systems. A subsystem is a group of blocks that is represented by a Subsystem block. This model contains five subsystems: one named Thermostat, one named House, and three Temp Convert subsystems (two convert Fahrenheit to Celsius, one converts Celsius to Fahrenheit). The internal and external temperatures are fed into the House subsystem, which updates the internal temperature. Double-click on the House block to see the underlying blocks in that subsystem. House subsystem 2-3

157 2 Quick Start The Thermostat subsystem models the operation of a thermostat, determining when the heating system is turned on and off. Double-click on the block to see the underlying blocks in that subsystem. Thermostat subsystem Both the outside and inside temperatures are converted from Fahrenheit to Celsius by identical subsystems Fahrenheit to Celsius conversion (F2C) When the heat is on, the heating costs are computed and displayed on the Heat Cost ($) plot on the Thermo Plots Scope. The internal temperature is displayed on the Indoor Temp Scope. Some Things to Try Here are several things to try to see how the model responds to different parameters: Each Scope block contains one or more signal display areas and controls that enable you to select the range of the signal displayed, zoom in on a portion of the signal, and perform other useful tasks. The horizontal axis represents time and the vertical axis represents the signal value. For more information about the Scope block, see Chapter 8. The Constant block labeled Set Point (at the top left of the model) sets the desired internal temperature. Open this block and reset the value to 80 degrees while the simulation is running. See how the indoor temperature and heating costs change. Also, adjust the outside temperature (the Avg Outdoor Temp block) and see how it affects the simulation. Adjust the daily temperature variation by opening the Sine Wave block labeled Daily Temp Variation and changing the Amplitude parameter. 2-4

158 What This Demo Illustrates This demo illustrates several tasks commonly used when building models: Running the simulation involves specifying parameters and starting the simulation with the Start command, described in detail in Chapter 4. You can encapsulate complex groups of related blocks in a single block, called a subsystem. Creating subsystems is described in detail in Chapter 3. You can create a customized icon and design a dialog box for a block by using the masking feature, described in detail in Chapter 6. In the thermo model, all Subsystem blocks have customized icons created using the masking feature. Scope blocks display graphic output much as an actual oscilloscope does. Scope blocks are described in detail in Chapter 8. Other Useful Demos Other demos illustrate useful modeling concepts. You can access these demos from the Simulink block library window: 1 Type simulink3 in the MATLAB command window. The Simulink block library window appears. The Demos icon 2 Double-click on the Demos icon. The MATLAB Demos window appears. This window contains several interesting sample models that illustrate useful Simulink features. 2-5

159 2 Quick Start Building a Simple Model This example shows you how to build a model using many of the model building commands and actions you will use to build your own models. The instructions for building this model in this section are brief. All of the tasks are described in more detail in the next chapter. Themodelintegratesasinewaveanddisplaystheresult,alongwiththesine wave. The block diagram of the model looks like this. To create the model, first type simulink in the MATLAB command window. On Microsoft Windows, the Simulink Library Browser appears. On UNIX, the Simulink library window appears. 2-6

160 Building a Simple Model To create a new model on UNIX, select Model from the New submenuofthe Simulink library window s File menu. To create a new model on Windows, select the New Model button on the Library Browser s toolbar. New Model button Simulink opens a new model window. You might want to move the new model window to the right side of your screen so you can see its contents and the contents of block libraries at the same time. To create this model, you will need to copy blocks into the model from the following Simulink block libraries: Sources library (the Sine Wave block) Sinks library (the Scope block) Continuous library (the Integrator block) Signals & Systems library (the Mux block) You can copy a Sine Wave block from the Sources library, using the Library Browser (Windows only) or the Sources library window (UNIX or Windows). 2-7

161 2 Quick Start To copy the Sine Wave block from the Library Browser, first expand the Library Browser tree to display the blocks in the Sources library. Do this by clicking first on the Simulink node to display the Sources node, then on the Sources node to display the Sources library blocks. Finally click on the Sine WavenodetoselecttheSineWaveblock.HereishowtheLibraryBrowser should look after you have done this. Simulink library Sources library Sine Wave block Now drag the Sine Wave node from the browser and drop it in the model window. Simulink creates a copy of the Sine Wave block at the point where you dropped the node icon. To copy the Sine Wave block from the Sources library window, open the Sources window by double-clicking on the Sources icon in the Simulink library window. (On Windows, you can open the Simulink library window by right-clicking the 2-8

162 Building a Simple Model Simulink node in the Library Browser and then clicking the resulting Open Library button.) Simulink displays the Sources library window. TheSineWaveblock Now drag the Sine Wave block from the Sources window to your model window. Copy the rest of the blocks in a similar manner from their respective libraries into the model window. You can move a block from one place in the model window to another by dragging the block. You can move a block a short distance by selecting the block, then pressing the arrow keys. 2-9

163 2 Quick Start With all the blocks copied into the model window, the model should look something like this. If you examine the block icons, you see an angle bracket on the right of the Sine Wave block and two on the left of the Mux block. The > symbol pointing out of a block is an output port; if the symbol points to a block, it is an input port. A signal travels out of an output port and into an input port of another block through a connecting line. When the blocks are connected, the port symbols disappear. Input port Output port Now it s time to connect the blocks. Connect the Sine Wave block to the top input port of the Mux block. Position the pointer over the output port on the right side of the Sine Wave block. Notice that the cursor shape changes to cross hairs. Hold down the mouse button and move the cursor to the top input port of the Mux block. Notice that the line is dashed while the mouse button is down and that the cursor shape changes to double-lined cross hairs as it approaches the Mux block. 2-10

164 Building a Simple Model Now release the mouse button. The blocks are connected. You can also connect the line to the block by releasing the mouse button while the pointer is inside the icon. If you do, the line is connected to the input port closest to the cursor s position. If you look again at the model at the beginning of this section (see Building a Simple Model on page 2-6), you ll notice that most of the lines connect output ports of blocks to input ports of other blocks. However, one line connects a line to the input port of another block. This line, called a branch line, connects the Sine Wave output to the Integrator block, and carries the same signal that passesfromthesinewaveblocktothemuxblock. Drawing a branch line is slightly different from drawing the line you just drew. To weld a connection to an existing line, follow these steps: 1 First, position the pointer on the line between the Sine Wave and the Mux block. 2 Press and hold down the Ctrl key. Press the mouse button, then drag the pointer to the Integrator block s input port or over the Integrator block itself. 2-11

165 2 Quick Start 3 Release the mouse button. Simulink draws a line between the starting point and the Integrator block s input port. Finish making block connections. When you re done, your model should look something like this. Now, open the Scope block to view the simulation output. Keeping the Scope window open, set up Simulink to run the simulation for 10 seconds. First, set the simulation parameters by choosing Parameters from the Simulation menu. On the dialog box that appears, notice that the Stop time is set to 10.0 (its default value). Stop time parameter 2-12

166 Building a Simple Model Close the Simulation Parameters dialog box by clicking on the Ok button. Simulink applies the parameters and closes the dialog box. Choose Start from the Simulation menu and watch the traces of the Scope block s input. The simulation stops when it reaches the stop time specified in the Simulation Parameters dialog box or when you choose Stop from the Simulation menu. To save this model, choose Save from the File menu and enter a filename and location. That file contains the description of the model. To terminate Simulink and MATLAB, choose Exit MATLAB (on a Microsoft Windows system) or Quit MATLAB (on a UNIX system). You can also type quit in the MATLAB command window. If you want to leave Simulink but not terminate MATLAB, just close all Simulink windows. This exercise shows you how to perform some commonly used model-building tasks. These and other tasks are described in more detail in Chapter

Práctica 0: Introducción a Matlab. Matlab es un acrónimo: MATrix LABoratory

Práctica 0: Introducción a Matlab. Matlab es un acrónimo: MATrix LABoratory Práctica 0: Introducción a Matlab Matlab es un acrónimo: MATrix LABoratory Práctica 0: Introducción a Matlab Matlab es un acrónimo: MATrix LABoratory La ventana de Matlab muestra un escritorio dividido

Más detalles

CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE PRACTICA 1. INTRODUCCIÓN A MATLAB

CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE PRACTICA 1. INTRODUCCIÓN A MATLAB CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE. 12-13 PRACTICA 1. INTRODUCCIÓN A MATLAB Qué es MATLAB? MATLAB es la abreviatura de MATrix LABoratory (laboratorio de matrices). Se trata de un software matemático

Más detalles

Introducción al Matlab

Introducción al Matlab Capítulo 1 Introducción al Matlab 1.1 Introducción MATLAB es un paquete informático cuyo nombre procede de la unificación de los términos MATrix LABoratory. Su objetivo inicial fue proporcionar un fácil

Más detalles

CLASE 1 INTRODUCCIÓN A MATLAB

CLASE 1 INTRODUCCIÓN A MATLAB Prof. Alexander Hoyo Clase 1 Introducción a MATLAB pág. 1 de 12 CLASE 1 INTRODUCCIÓN A MATLAB MATLAB es un software de computación técnica de alto nivel que integra cómputo, visualización y programación

Más detalles

Prefacio. 1 Sistemas de control

Prefacio. 1 Sistemas de control INGENIERIA DE CONTROL por BOLTON Editorial Marcombo Prefacio 1 Sistemas de control Sistemas Modelos Sistemas en lazo abierto y cerrado Elementos básicos de un sistema en lazo abierto Elementos básicos

Más detalles

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 6

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 6 Computación Aplicada Universidad de Las Américas Aula virtual de Computación Aplicada Módulo de Excel 2013 LIBRO 6 Contenido FORMA DE HACER CÁLCULOS... 3 QUÉ SON LAS FÓRMULAS Y QUÉ LAS FUNCIONES?... 4

Más detalles

Introducción al MATLAB

Introducción al MATLAB Introducción al MATLAB Dr. Luis Javier Morales Mendoza FIEC Universidad Veracruzana Poza Rica - Tuxpan Índice 1. Introducción al Matlab 2. Operaciones Aritméticas 3. Vectores y Matrices 4. Funciones Matemáticas

Más detalles

PRÁCTICA 1: VECTORES Y MATLAB. Introducción.

PRÁCTICA 1: VECTORES Y MATLAB. Introducción. PRÁCTICA 1: VECTORES Y MATLAB Introducción. Esta y todas las demás prácticas están pensadas para ser trabajadas delante de un ordenador conmatlabinstalado, y no para ser leídas como una novela. En vez

Más detalles

Comenzando con MATLAB

Comenzando con MATLAB ÁLGEBRA LINEAL INGENIERÍA INFORMÁTICA Curso 08/09 PRÁCTICA 1 Comenzando con MATLAB 1 Funcionamiento de Matlab MATLAB es un sistema interactivo basado en matrices para cálculos científicos y de ingeniería.

Más detalles

Herramientas computacionales para la matemática MATLAB: Arreglos

Herramientas computacionales para la matemática MATLAB: Arreglos Herramientas computacionales para la matemática MATLAB: Arreglos Verónica Borja Macías Marzo 2013 1 Una matriz es un arreglo bidimensional, es una sucesión de números distribuidos en filas y columnas.

Más detalles

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Clase teórica 2 Algoritmos en C Página 1 de 6 TIPOS DE DATOS Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Por el momento nuestro

Más detalles

PRÁCTICA N 1 INTRODUCCIÒN A MATLAB Y UTILIZACIÓN DE LAS MATEMÁTICAS COMO HERRAMIENTAS PRIMORDIAL EN EL ANÁLISIS DE SISTEMAS DE CONTROL

PRÁCTICA N 1 INTRODUCCIÒN A MATLAB Y UTILIZACIÓN DE LAS MATEMÁTICAS COMO HERRAMIENTAS PRIMORDIAL EN EL ANÁLISIS DE SISTEMAS DE CONTROL UNIVERSIDAD NACIONAL EXPERIMENTAL FRANCISCO DE MIRANDA COMPLEJO ACADÉMICO EL SABINO PROGRAMA DE INGENIERÍA QUÍMICA DPTO DE MECÁNICA Y TECNOLOGÍA DE LA PRODUCCIÓN LABORATORIO DE DINÁMICA Y CONTROL DE PROCESOS

Más detalles

PRACTICA 1 LABORATORIO DE INGENIERÍA DE SISTEMAS INTRODUCCIÓN A MATLAB

PRACTICA 1 LABORATORIO DE INGENIERÍA DE SISTEMAS INTRODUCCIÓN A MATLAB PRACTICA 1 LABORATORIO DE INGENIERÍA DE SISTEMAS INTRODUCCIÓN A MATLAB Introducción a Matlab 1 1. Introducción El objetivo de esta práctica es adquirir los conocimientos básicos para familiarizarse con

Más detalles

Seminario 1. Excel Básico

Seminario 1. Excel Básico Seminario 1. Excel Básico Contenidos 1. Qué es Microsoft Excel? 2. Identificar celdas 3. La barra de herramientas de acceso rápido y la cinta de opciones 4. Abrir y guardar libros de trabajo 5. La ayuda

Más detalles

Lugar Geométrico de las Raíces Herramienta para diseño de sistemas de control

Lugar Geométrico de las Raíces Herramienta para diseño de sistemas de control Lugar Geométrico de las Raíces Herramienta para diseño de sistemas de control Elizabeth Villota Curso: Ingeniería de Control (MT221) Facultad de Ingeniería Mecánica UNI-FIM 1 Modelado Modelo: representación

Más detalles

Fila: Es un conjunto de varias celdas dispuestas en sentido horizontal.

Fila: Es un conjunto de varias celdas dispuestas en sentido horizontal. Que Es Excel? Excel es un programa que permite la manipulación de libros y hojas de calculo. En Excel, un libro es el archivo en que se trabaja y donde se almacenan los datos. Como cada libro puede contener

Más detalles

Un sistema con realimentación unitaria tiene una función de transferencia en lazo abierto

Un sistema con realimentación unitaria tiene una función de transferencia en lazo abierto Un sistema con realimentación unitaria tiene una función de transferencia en lazo abierto G p ( s) k s( s + )( s + 5) a)para el sistema en lazo abierto, y suponiendo el valor k : Obtener la expresión analítica

Más detalles

2.2 Operaciones con matrices. Funciones específicas.

2.2 Operaciones con matrices. Funciones específicas. 2.2 Operaciones con matrices. Funciones específicas. Operaciones con matrices mediante operadores M puede operar con matrices (1) por medio de operadores y por medio de funciones. Sean A y B dos matrices

Más detalles

SISTEMAS DE CONTROL ANÁLISIS Y DISEÑO DE SISTEMAS DE CONTROL EN EL DOMINIO DE LA FRECUENCIA. Profesor: Adrián Peidró

SISTEMAS DE CONTROL ANÁLISIS Y DISEÑO DE SISTEMAS DE CONTROL EN EL DOMINIO DE LA FRECUENCIA. Profesor: Adrián Peidró SISTEMAS DE CONTROL PRÁCTICAS DE SISTEMAS DE CONTROL ANÁLISIS Y DISEÑO DE SISTEMAS DE CONTROL EN EL DOMINIO DE LA FRECUENCIA Profesor: Adrián Peidró (apeidro@umh.es) OBJETIVOS Afianzar los conocimientos

Más detalles

GUIA BÁSICA DEL PROCEDIMIENTO MATRIX END MATRIX

GUIA BÁSICA DEL PROCEDIMIENTO MATRIX END MATRIX GUIA BÁSICA DEL PROCEDIMIENTO MATRIX END MATRIX El SPSS permite realizar cálculos matriciales mediante el lenguaje de comandos que se resumen en los siguientes pasos: 1) Abrir una ventana de sintaxis Menú:

Más detalles

CAPITULO I INTRODUCCIÓN

CAPITULO I INTRODUCCIÓN CAPITULO I INTRODUCCIÓN MATLAB es un entorno de programación y ejecución en el cual se permiten construir herramientas propias según los requerimientos del programador, fácilmente se crean funciones y

Más detalles

TRABAJO DE EXCEL 1. QUÉ ES UNA FÓRMULA EN EXCEL?

TRABAJO DE EXCEL 1. QUÉ ES UNA FÓRMULA EN EXCEL? TRABAJO DE EXCEL 1. QUÉ ES UNA FÓRMULA EN EXCEL? Las fórmulas en Excel son expresiones que se utilizan para realizar cálculos o procesamiento de valores, produciendo un nuevo valor que será asignado a

Más detalles

Utilización de Funciones en OpenOffice.org Calc

Utilización de Funciones en OpenOffice.org Calc Utilización de Funciones en OpenOffice.org Calc Una función es un conjunto de instrucciones reunidas bajo un nombre que calculan un resultado o llevan a cabo una acción específica. Las funciones pueden

Más detalles

MATLAB. (PARTE III) APLICACIONES EN CONTROL CON SIMULINK SIMULINK

MATLAB. (PARTE III) APLICACIONES EN CONTROL CON SIMULINK SIMULINK UNIVERSIDAD NACIONAL EXPERIMENTAL DEL TACHIRA DEPARTAMENTO DE INGENIERIA ELECTRONICA NUCLEO DE INSTRUMENTACION CONTROL Y SEÑALES LABORATORIO DE INSTRUMENTACION Y CONTROL MATLAB. (PARTE III) APLICACIONES

Más detalles

UNIVERSIDAD TECNOLÓGICA DE PEREIRA Programa de tecnología Eléctrica. Introducción a Matlab Taller 1

UNIVERSIDAD TECNOLÓGICA DE PEREIRA Programa de tecnología Eléctrica. Introducción a Matlab Taller 1 UNIVERSIDAD TECNOLÓGICA DE PEREIRA Programa de tecnología Eléctrica Programación, TE243 Primer semestre de 2011 Ing: José Norbey Sánchez F. Grupo: Introducción a Matlab Taller 1 1. 1 Qué es MATLAB? MATLAB

Más detalles

El modelo matemático tiende a ser lo más simple posible, con una representación. A la hora de desarrollar un modelo matemático:

El modelo matemático tiende a ser lo más simple posible, con una representación. A la hora de desarrollar un modelo matemático: Modelo matemático de procesos 1. Modelo Matemático Un modelo matemático muy exacto implica un desarrollo matemático muy complejo. Por el contrario, un modelo matemático poco fino nos deparará un desarrollo

Más detalles

Practica 2. Estructuras de Datos en MATLAB

Practica 2. Estructuras de Datos en MATLAB Practica. Estructuras de Datos en MATLAB Informática Aplicada - Grado en Ingeniería Química, UAM, 009/010 1 Fecha limite de entrega de la practica Grupo A: de Marzo Grupo B: 1 de Marzo Objetivos Al finalizar

Más detalles

MATEMÁTICA D INTRODUCCIÓN A SCILAB. Por: Dr. Javier Francesconi

MATEMÁTICA D INTRODUCCIÓN A SCILAB. Por: Dr. Javier Francesconi MATEMÁTICA D INTRODUCCIÓN A SCILAB Por: Dr. Javier Francesconi Email: javierf@santafe-conicet.gov.ar INTRODUCCION Scilab (Scientific Computing Laboratory) es un programa desarrollado por INRIA (Institut

Más detalles

Práctica 1 de Excel (Curso )

Práctica 1 de Excel (Curso ) Práctica 1 de Excel (Curso 2009-2010) Definición: Excel es una aplicación del tipo hoja de cálculo, integrada en el entorno Windows y desarrollada por Microsoft, en la cual se combinan las capacidades

Más detalles

Herramientas computacionales para la matemática MATLAB:Introducción

Herramientas computacionales para la matemática MATLAB:Introducción Herramientas computacionales para la matemática MATLAB:Introducción Verónica Borja Macías Marzo 2013 1 Variables predefinidas MATLAB tiene un conjunto de variables predefinidas Variables predefinidas ans

Más detalles

PRÁCTICA 1: Introducción a Matlab

PRÁCTICA 1: Introducción a Matlab 1.1 PRÁCTICA 1: Introducción a Matlab 1.1 Introducción MATLAB es un paquete de software que proporciona un entorno potente y amigable para cálculo y simulación. El entorno de programación ofrece operaciones

Más detalles

ÍNDICE INTRODUCCIÓN...17

ÍNDICE INTRODUCCIÓN...17 ÍNDICE INTRODUCCIÓN...17 HISTORIA, PRINCIPIOS E INSTALACIÓN DE SCILAB...21 1.1 BREVE HISTORIA DE SCILAB...21 1.2 LICENCIA DE SCILAB...25 1.3 POR QUÉ OPEN SOURCE?...26 1.4 OBTENCIÓN E INSTALACIÓN DE SCILAB...28

Más detalles

>> 10.5 + 3.1 % suma de dos números reales, el resultado se asigna a ans

>> 10.5 + 3.1 % suma de dos números reales, el resultado se asigna a ans Universidad de Concepción Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Matemática Cálculo Numérico (521230) Laboratorio 1: Introducción al Matlab Matlab es una abreviatura para

Más detalles

HORARIO DE CLASES SEGUNDO SEMESTRE

HORARIO DE CLASES SEGUNDO SEMESTRE HORARIO DE CLASES LUNES MIERCOLES 17 a 18:15 hs 17 a 18:15 hs Ln 14/08/17: CRONOGRAMA DE CLASES y PARCIALES CONTROL I -AÑO 2017- SEGUNDO SEMESTRE Introducción a los sistemas de Control. Definiciones de

Más detalles

Operaciones básicas con hojas de cálculo

Operaciones básicas con hojas de cálculo Operaciones básicas con hojas de cálculo Insertar hojas de cálculo. Para insertar rápidamente una hoja de cálculo nueva al final de las hojas de cálculo existentes, haga clic en la ficha Insertar hoja

Más detalles

Introducción a Matlab y Simulink

Introducción a Matlab y Simulink Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Eléctrica Introducción a Matlab y Simulink Preparado por Diego Sepúlveda J. Version.0, 6 de agosto de 2002 Índice

Más detalles

INTRODUCIR FORMULAS EN EXCEL

INTRODUCIR FORMULAS EN EXCEL INTRODUCIR FORMULAS EN EXCEL Las fórmulas, comienzan con un signo (=) y son ecuaciones que efectúan cálculos con los valores ingresados en la hoja de cálculo. Por ejemplo, la siguiente fórmula multiplica

Más detalles

MATLAB tiene un gran número de funciones incorporadas. Algunas son funciones intrínsecas, esto es, funciones incorporadas en el propio código

MATLAB tiene un gran número de funciones incorporadas. Algunas son funciones intrínsecas, esto es, funciones incorporadas en el propio código MATLAB tiene un gran número de funciones incorporadas. Algunas son funciones intrínsecas, esto es, funciones incorporadas en el propio código ejecutable del programa. Estas funciones son particularmente

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Descripción del ambiente de trabajo Excel 97 muestra en pantalla una estructura similar a cualquier ventana del entorno Windows. En esta se pueden observar distintos elementos denominados barras, las que

Más detalles

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo

Más detalles

Inducción a MATLAB. Álgebra Lineal. Escuela de Matemáticas. Facultad de Ciencias Universidad Nacional de Colombia Sede Medellín

Inducción a MATLAB. Álgebra Lineal. Escuela de Matemáticas. Facultad de Ciencias Universidad Nacional de Colombia Sede Medellín Inducción a MATLAB Álgebra Lineal Escuela de Matemáticas Facultad de Ciencias Universidad Nacional de Colombia Sede Medellín Inducción a MATLAB (Álgebra Lineal) Escuela de Matemáticas Universidad Nacional

Más detalles

Programación en Visual Basic Ricardo Rodríguez García

Programación en Visual Basic Ricardo Rodríguez García Manual Básico de Programación en Visual Basic 1.- Estructura de un proyecto Visual Basic Los programas o aplicaciones desarrolladas en Visual Basic van a constituir un único paquete que denominaremos proyecto.

Más detalles

UNIVERSIDAD NACIONAL DEL CALLAO

UNIVERSIDAD NACIONAL DEL CALLAO UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA INSTITUTO DE INVESTIGACION DE LA FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA INFORME FINAL DEL TEXTO TEXTO: DISEÑO DE SISTEMAS

Más detalles

PRÁCTICA Nº 1 INTRODUCCIÓN AL ENTORNO DE MATLAB

PRÁCTICA Nº 1 INTRODUCCIÓN AL ENTORNO DE MATLAB UNIVERSIDAD NACIONAL EXPERIMENTAL FRANCSCO DE MIRANDA ÁREA DE TECNOLOGÍA DEPARTAMENTO DE MECÁNCA Y TECNOLOGÍA DE LA PRODUCCIÓN DINÁMICA Y CONTROL DE PROCESOS PRÁCTICA Nº 1 INTRODUCCIÓN AL ENTORNO DE MATLAB

Más detalles

Controles Automáticos

Controles Automáticos Mecánica PAG: 1 Universidad Central de Venezuela Facultad de Escuela de Mecánica Departamento de Unidad Docente y de Investigación Asignatura Mecánica PAG: 2 1. PROPÓSITO En los últimos años, el control

Más detalles

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 2

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 2 Computación Aplicada Universidad de Las Américas Aula virtual de Computación Aplicada Módulo de Excel 2013 LIBRO 2 Contenido TIPOS DE DATOS Y FORMATOS EN EXCEL 2013... 3 Tipo de dato - TEXTO... 4 Tipo

Más detalles

Rancagua, Agosto 2009

Rancagua, Agosto 2009 cvalle@inf.utfsm.cl Departamento de Informática - Universidad Técnica Federico Santa María Rancagua, Agosto 2009 1 / 28 Temario 1 2 3 4 2 / 28 Temario 1 2 3 4 3 / 28 Los nombre y arreglos son equivalentes.

Más detalles

1. Diseño de un compensador de adelanto de fase

1. Diseño de un compensador de adelanto de fase COMPENSADORES DE ADELANTO Y RETARDO 1 1. Diseño de un compensador de adelanto de fase El compensador de adelanto de fase persigue el aumento del margen de fase mediante la superposición de la curva de

Más detalles

%&%& ' 10 2 i, i =1!

%&%& ' 10 2 i, i =1! Máster en Materiales y Sistemas Sensores para Tecnologías Medioambientales (Erasmus Mundus) PRÁCTICAS DE CÁLCULO NUMÉRICO Damián Ginestar Peiró ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DEL DISEÑO UNIVERSIDAD

Más detalles

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Universidad Rafael Urdaneta Escuela de Ingeniería de Computación Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Asignación

Más detalles

PRÁCTICA N 2 ESTUDIO TEMPORAL Y FRECUENCIAL DE SISTEMAS DINÁMICOS DE PRIMER Y SEGUNDO ORDEN

PRÁCTICA N 2 ESTUDIO TEMPORAL Y FRECUENCIAL DE SISTEMAS DINÁMICOS DE PRIMER Y SEGUNDO ORDEN UNIVERSIDAD NACIONAL EXPERIMENTAL FRANCISCO DE MIRANDA COMPLEJO ACADÉMICO EL SABINO PROGRAMA DE INGENIERÍA QUÍMICA DPTO DE MECÁNICA Y TECNOLOGÍA DE LA PRODUCCIÓN DINÁMICA Y CONTROL DE PROCESOS PRÁCTICA

Más detalles

Introducción a Matlab.

Introducción a Matlab. Introducción a Matlab. Ejercicios básicos de manipulación de imágenes. Departamento de Ingeniería electrónica, Telecomunicación y Automática. Área de Ingeniería de Sistemas y Automática OBJETIVOS: Iniciación

Más detalles

Práctica 1ª: Introducción a Matlab. 1er curso de Ingeniería Industrial: Ingeniería de Control

Práctica 1ª: Introducción a Matlab. 1er curso de Ingeniería Industrial: Ingeniería de Control 1er curso de Ingeniería Industrial: Ingeniería de Control Práctica 1ª: Introducción a Matlab Departamento de Ingeniería electrónica, Telecomunicación y Automática. Área de Ingeniería de Sistemas y Automática

Más detalles

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo Tipos de datos. Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo Valores Constantes: Es un dato que se introduce directamente en

Más detalles

Regulación y Control de Máquinas Navales Práctica Módulo 1: Modelado de Sistemas Curso

Regulación y Control de Máquinas Navales Práctica Módulo 1: Modelado de Sistemas Curso Regulación y Control de Máquinas Navales Práctica Módulo 1: Modelado de Sistemas Curso 2007-2008 I INTRODUCCIÓN La práctica descrita en este documento pretende familiarizar al alumno con los conceptos

Más detalles

Bases Matemáticas para la Educación Primaria. Guía de Estudio. Tema 3: Números racionales. Parte I: Fracciones y razones Números racionales

Bases Matemáticas para la Educación Primaria. Guía de Estudio. Tema 3: Números racionales. Parte I: Fracciones y razones Números racionales Bases Matemáticas para la Educación Primaria Guía de Estudio Tema 3: Números racionales Parte I: Fracciones y razones Números racionales 1 Situación introductoria ANÁLISIS DE CONOCIMIENTOS PUESTOS EN JUEGO

Más detalles

INTRODUCCIÓN A MATLAB

INTRODUCCIÓN A MATLAB INTRODUCCIÓN A MATLAB 1. INTRODUCCIÓN Matlab es un programa que permite realizar cálculos de una forma rápida y fiable. A diferencia de programas como Maple o Mathematica, Matlab no es un manipulador algebraico

Más detalles

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS A.- ASPECTOS FUNDAMENTALES DEL CÓDIGO ORIENTADO A OBJETOS MÓDULOS DE CÓDIGO: El código en Visual Basic se almacena en módulos. Hay tres tipos de módulos: de formulario,

Más detalles

Una vez diseñado el modelo de cálculo se procede a aplicar el formato.

Una vez diseñado el modelo de cálculo se procede a aplicar el formato. Formato de celdas Una vez diseñado el modelo de cálculo se procede a aplicar el formato. Antes de comenzar hay que diferenciar claramente los tres tipos de información que existen en una celda: 1. El contenido

Más detalles

FORMULAS Y FUNCIONES

FORMULAS Y FUNCIONES FORMULAS Y FUNCIONES 1. INTRODUCCIÓN Para realizar cálculos dentro de una hoja, el usuario puede hacer uso de las fórmulas creándolas él mismo en función de sus propias necesidades, sólo tiene que conocer

Más detalles

Introducción al Uso de MATLAB. Dr. Ramón Zúñiga Posgrado en Ciencias de la Tierra, UNAM

Introducción al Uso de MATLAB. Dr. Ramón Zúñiga Posgrado en Ciencias de la Tierra, UNAM Introducción al Uso de MATLAB Dr. Ramón Zúñiga Posgrado en Ciencias de la Tierra, UNAM Conceptos Generales Matlab es un sistema de programación y cálculo basado en la manipulación de matrices. El nombre

Más detalles

TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato

TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato TUTORIAL PROLOG Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato Prolog es un lenguaje de programación lógica de propósito general que se

Más detalles

Ecuaciones en Derivadas Parciales y Análisis Numérico. Prácticas.

Ecuaciones en Derivadas Parciales y Análisis Numérico. Prácticas. Ecuaciones en Derivadas Parciales y Análisis Numérico Prácticas. Capítulo 1. Matrices en Matlab 1.1 El entorno de trabajo El programa Matlab ofrece un entorno interactivo donde podemos ejecutar comandos

Más detalles

Formatos y Operadores

Formatos y Operadores Formatos y Operadores Formatos numéricos format short long hex bank short e short g long e long g rational coma fija con 4 decimales (defecto) coma fija con 15 decimales cifras hexadecimales números con

Más detalles

Auxiliar 15. Laboratorio de Matlab COMPUTACIÓN I - CC

Auxiliar 15. Laboratorio de Matlab COMPUTACIÓN I - CC Auxiliar 15 Laboratorio de Matlab 1 Matlab es un programa de computación numérica que permite una amplia gama de operaciones matemáticas. Matlab es la sigla de MATRIX LABORATORY y no de mathematics lab,

Más detalles

III. Generación de Código orientado a objetos

III. Generación de Código orientado a objetos III. Generación de Código orientado a objetos UNIDAD III Aspectos fundamentales Del código orientado a objetos. MÓDULOS DE CÓDIGO 1 DE FORMULARIO Almacenan el código en VB 2 ESTÁNDAR 3 DE CLASE Contiene

Más detalles

4. Aplicar fórmulas y funciones.

4. Aplicar fórmulas y funciones. 4. Aplicar fórmulas y funciones. 75 Las técnicas que se tratan en esta sección están relacionadas con la aplicación de funciones y fórmulas. En concreto, este conjunto de técnicas se asocian con los objetivos

Más detalles

ENGINEERING EQUATION SOLVER

ENGINEERING EQUATION SOLVER ENGINEERING EQUATION SOLVER 1. Introducción El programa de resolución de ecuaciones no lineales EES (Engineering Equation Solver) ha sido desarrollado por la Universidad de Wisconsin. Constituye una herramienta

Más detalles

Hoja electrónica Microsoft Excel

Hoja electrónica Microsoft Excel Hoja electrónica Microsoft Excel Son programas que facilitan el manejo de datos y procesamiento de operaciones de cálculo en diversas áreas. Se utilizan para realizar operaciones: Aritméticas Estructuras

Más detalles

Comenzando a usar MatLab:

Comenzando a usar MatLab: Universidad Simón Bolívar Núcleo del Litoral Departamento de Tecnología Industrial TI-2284. Laboratorio de Sistemas de Control PRACTICA 1. INTRODUCCION A MATLAB Introducción: MatLab es una herramienta

Más detalles

Serie 10 ESTABILIDAD

Serie 10 ESTABILIDAD Serie 0 ESTABILIDAD Condición de estabilidad U u Gu U R r + + - Gc Gv Gp C G V G P + c C H G( G (. G (. G (. H ( C V P + G( 0 G( G φ 80 Localización de las raíces Plano s E S T A B L E I N E S T A B L

Más detalles

INGENIERÍA INDUSTRIAL TEORÍA DE CIRCUITOS Y SISTEMAS PRÁCTICA 1 SISTEMAS: INTRODUCCIÓN A MATLAB

INGENIERÍA INDUSTRIAL TEORÍA DE CIRCUITOS Y SISTEMAS PRÁCTICA 1 SISTEMAS: INTRODUCCIÓN A MATLAB INGENIERÍA INDUSTRIAL TEORÍA DE CIRCUITOS Y SISTEMAS PRÁCTICA SISTEMAS: INTRODUCCIÓN A MATLAB. CARACTERÍSTICAS BÁSICAS DE MATLAB Funcionalidades básicas: - cálculo matricial - representaciones gráficas

Más detalles

Profesor(a): Ing. Miriam Cerón Brito

Profesor(a): Ing. Miriam Cerón Brito Área Académica: Informática Tema: Hoja electrónica Profesor(a): Ing. Miriam Cerón Brito Periodo: Enero Junio 2014 Abstract: This presentation show the spreadsheet's characteristics and show the principals

Más detalles

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,

Más detalles

Breve introducción al OCTAVE

Breve introducción al OCTAVE BREVE INTRODUCCIÓN AL OCTAVE 1 Breve introducción al OCTAVE Niurka Rodríguez Quintero, Correo Electrónico: niurka@us.es Página WWW: http://euler.us.es/~niurka Índice 1. Introducción 1 1.1. Características

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

Más detalles

ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA

ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA CONTENIDOS Definición de un algoritmo Tipos de datos Representaciones de un algoritmo Lenguaje natural Pseudocódigo

Más detalles

Introducción a Matlab. Ing. Laura López López

Introducción a Matlab. Ing. Laura López López Introducción a Matlab Ing. Laura López López Qué es Matlab? MatLab significa MATrixLABoratory MATLAB es un lenguaje de alto nivel para realizar cálculos científico-técnicos. Integra las herramientas de

Más detalles

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación TUTORIAL PSEINT Ing. Ronald Rentería Ayquipa Fundamentos de Programación PSEINT Página Oficial: http://pseint.sourceforge.net/ Es un software que interpreta pseudocódigo. Permite la generación de diagramas

Más detalles

INTRODUCCION A SIMULINK

INTRODUCCION A SIMULINK INTRODUCCION A SIMULINK Matlab (Matrix Laboratory) es un sistema basado en matrices para realizar cálculos matemáticos y de ingeniería. Entre las múltiples herramientas que presenta este programa se encuentra

Más detalles

GNU OCTAVE. Principales características

GNU OCTAVE. Principales características GNU OCTAVE Principales características lenguaje de alto nivel orientado al cálculo numérico software libre distribuido bajo licencia GNU GPL prácticamente compatible con Matlab página principal http://www.gnu.org/software/octave/

Más detalles

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el

Más detalles

Microsoft Project 2013

Microsoft Project 2013 Microsoft Project 2013 SALOMÓN CCANCE Project 2013 Salomón Ccance www.ccance.net CCANCE WEBSITE ANEXO 2. MANEJO DE VISTAS Y TABLAS. 2.1. ELEMENTOS DE VISUALIZACIÓN DE MICROSOFT OFFICE PROJECT PROFESSIONAL

Más detalles

15. LUGAR DE LAS RAICES - CONSTRUCCION

15. LUGAR DE LAS RAICES - CONSTRUCCION 15. LUGAR DE LAS RAICES - CONSTRUCCION 15.1 INTRODUCCION El lugar de las raíces es una construcción gráfica, en el plano imaginario, de las raíces de la ecuación característica de un lazo de control para

Más detalles

Control PID. Sintonización e implementación

Control PID. Sintonización e implementación Control PID. Sintonización e implementación Elizabeth Villota Cerna Curso: Ingeniería de Control (MT221) Facultad de Ingeniería Mecánica UNI-FIM Julio 2012 1 Control PID Control PID una de las formas más

Más detalles

Universidad Ricardo Palma

Universidad Ricardo Palma 1. DATOS ADMINISTRATIVOS Universidad Ricardo Palma FACULTAD DE INGENIERÍA ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA ELECTRONICA DEPARTAMENTO ACADÉMICO DE INGENIERÍA SÍLABO 1.1 Nombre del curso : CONTROL

Más detalles

Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos o negativos), sin decimales. Incluye a los naturales.

Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos o negativos), sin decimales. Incluye a los naturales. Tema 1: Números Reales 1.1 Conjunto de los números Naturales (N): 0, 1, 2, 3. Números positivos sin decimales. Sirven para contar. Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos

Más detalles

En esta lección vamos a ver más utilidades y opciones sobre la

En esta lección vamos a ver más utilidades y opciones sobre la 1. PEGADO ESPECIAL En esta lección vamos a ver más utilidades y opciones sobre la edición de hojas de cálculo de Excel que te pueden ayudar en tu trabajo. Ya sabes cómo cortar o copiar y pegar datos de

Más detalles

Página 1

Página 1 www.pildorasinformaticas.com Página 1 www.pildorasinformaticas.com Página 2 Capítulo 1. Capítulo 1: Introducción a Excel 2013... 9 1.1. CONCEPTO DE HOJA DE CÁLCULO... 9 1.2. NOVEDADES EN EXCEL 2013...

Más detalles

1 de 6 24/08/2009 9:54 MATRICES Las matrices aparecen por primera vez hacia el año 1850, introducidas por J.J. Sylvester El desarrollo inicial de la teoría se debe al matemático W.R. Hamilton en 1853 En

Más detalles

CÁTEDRA DE MÉTODOS NUMÉRICOS

CÁTEDRA DE MÉTODOS NUMÉRICOS MÉTODOS NUMÉRICOS Y MATLAB INTRODUCCION MATLAB (laboratorio de matrices) es un software matemático muy versátil que presenta un entorno interactivo y un lenguaje de programación para cálculos científicos

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

Más detalles

HOJAS DE CÁLCULO (4º ESO)

HOJAS DE CÁLCULO (4º ESO) 1. INTRODUCCIÓN. HOJAS DE CÁLCULO (4º ESO) Las hojas de cálculo s o n programas informáticos capaces de trabajar con números de forma sencilla e intuitiva. Sus principales aplicaciones son la realización

Más detalles

DISEÑO DE COMPENSADORES USANDO LOS DIAGRAMAS DE BODE

DISEÑO DE COMPENSADORES USANDO LOS DIAGRAMAS DE BODE DISEÑO DE COMPENSADORES USANDO LOS DIAGRAMAS DE BODE INTRODUCCIÒN Se abordará a continuación el problema de especificar los parámetros de compensadores eléctricos típicos, que son las formas aproximadas

Más detalles

WINDOWS 7 ESCRITORIO Fecha y hora. VENTANAS

WINDOWS 7 ESCRITORIO Fecha y hora. VENTANAS WINDOWS 7 1. GENERAL ESCRITORIO Iconos (distinguir entre archivo y acceso directo). Menú Inicio o Acceso mediante: ratón, tabulador o teclas Windows. Barra de tareas. Barra de inicio rápido. Para añadir

Más detalles

PRÁCTICA Nº 10. ANÁLISIS DE LA RESPUESTA EN FRECUENCIA UTILIZANDO MATLAB. DIAGRAMA DE NYQUIST

PRÁCTICA Nº 10. ANÁLISIS DE LA RESPUESTA EN FRECUENCIA UTILIZANDO MATLAB. DIAGRAMA DE NYQUIST PRÁCTICA Nº 10. ANÁLISIS DE LA RESPUESTA EN FRECUENCIA UTILIZANDO MATLAB. DIAGRAMA DE NYQUIST 10. DIAGRAMA DE NYQUIST... 1 10.1. OBJETIVOS... 1 10.. CARACTERÍSTICAS DE LA RESPUESTA EN FRECUENCIA... 1 10.3.

Más detalles

LABORATORIO DE SISTEMAS DE CONTROL AUTOMÁTICO PRÁCTICA N 10

LABORATORIO DE SISTEMAS DE CONTROL AUTOMÁTICO PRÁCTICA N 10 ESCUELA POLITÉCNICA NACIONAL Campus Politécnico "J. Rubén Orellana R." FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA Carrera de Ingeniería Electrónica y Control 1. TEMA LABORATORIO DE SISTEMAS DE CONTROL

Más detalles

TECNICAS DE DISEÑO Y COMPENSACION

TECNICAS DE DISEÑO Y COMPENSACION TECNICAS DE DISEÑO Y COMPENSACION Técnicas para sistemas SISO invariantes en el tiempo Basadas en el lugar de las raices y respuesta en frecuencia Especificaciones de funcionamiento Exactitud o precisión

Más detalles

TEORIA DE CONTROL CAPITULO 9: ESPECIFICACIONES Y AJUSTES DE CONTROLADORES

TEORIA DE CONTROL CAPITULO 9: ESPECIFICACIONES Y AJUSTES DE CONTROLADORES CAPITULO 9: ESPECIFICACIONES Y AJUSTES DE CONTROLADORES 10.1 Especificaciones en Diseño En muchos casos las características o exigencias impuestas en un sistema de control, están dadas desde el punto de

Más detalles