Post on 28-Nov-2015
Instituto Tecnológico de la Laguna | Juan Manuel Jiménez Israel Montoya Ricardo Vargas Araceli Alvarado Naranjo Omar Adolfo Carrillo Yair Amilcar Luna Castro
------ MANUAL DE CONTROL EN MATLAB
Contenido Introducción ........................................................................................................................................ 3
Interfaz de MATLAB............................................................................................................................. 4
Manejo elemental de MATLAB en ventana de comandos .................................................................. 8
Funciones y operaciones básicas ........................................................................................................ 9
Operaciones matemáticas elementales .......................................................................................... 9
Funciones más comunes ................................................................................................................. 9
Symbolic Math Toolbox ..................................................................................................................... 10
Simplificación y sustitución ............................................................................................................... 10
collect(f) .................................................................................................................................... 11
expand(f) ................................................................................................................................... 11
factor(f) ..................................................................................................................................... 12
simplify(f)................................................................................................................................... 13
pretty(f) ..................................................................................................................................... 14
subs(S,new,old) ......................................................................................................................... 14
Algebra de bloques con Simulink ...................................................................................................... 15
Sistemas eléctricos ........................................................................................................................ 15
Sistemas mecánicos ...................................................................................................................... 15
Comportamiento de los sistemas en el dominio del tiempo ............................................................ 15
Función de transferencia................................................................................................................... 16
Análisis de estabilidad ....................................................................................................................... 17
Criterio de Routh-Hurwitz ............................................................................................................. 17
Lugar Geométrico de las Raíces .................................................................................................... 22
Introducción
En la actualidad, el manejo de los distintos programas computacionales para la solución de
problemas de ingeniería ha pasado de ser un lujo a una necesidad. El trabajo presentado a
continuación constituye una guía de aprendizaje de MATLAB básico con aplicaciones de cálculo
diferencial e integral, y se pretende sirva como apoyo a los alumnos de Ingeniería mecatrónica en
el Instituto Tecnológico de la Laguna.
MATLAB, es un software ampliamente difundido en el campo de la docencia y la
investigación ya que es un lenguaje de alto nivel para cálculo científico con gran potencial y fácil
de manejar, ya que cuenta con distintos paquetes ó toolbox, las cuales le permiten al usuario
resolver problemas utilizando algoritmos específicos predefinidos, de los cuales, para este curso,
se tratara básicamente el paquete Symbolic Matlab Toolbox.
Este paquete nos permite realizar cálculos de manera simbólica, es decir, sin necesidad de
asignar un número a una variable y tratarla como una constante genérica, lo cual, nos permite
realizar operaciones de integración simbólica, derivación, calculo de áreas, volúmenes, etc.
Además, en este curso se tratan temas básicos acerca de graficación en dos y tres
dimensiones, los cuales servirán de apoyo para la comprensión de los resultados obtenidos.
Con este curso, se pretende que el alumno adquiera los conocimientos básicos necesarios
para resolver problemas de cálculo diferencial e integral, además de sus aplicaciones, dándole la
oportunidad de comprender de una manera más clara las aplicaciones de ésta extensa área,
además de las facilidades que nos brinda MATLAB para realizar este tipo de procedimientos.
Interfaz de MATLAB
El primer paso antes de comenzar a trabajar con MATLAB, consiste en conocer la ventana
principal y sus componentes, los cuales se muestran a continuación:
Figura 1.-Ventana principal de MATLAB, en ella se señalan algunos de los campos mas importantes
como son: a)Current folder (Izquierda), b)Command Window (centro), c)Workspace (derecha
superior), d)Command History (derecha inferior).
Current folder:
Este campo nos muestra el directorio en el cual MATLAB busca los archivos M-files y los
archivos de Workspace (.mat) los cuales pueden ser guardados para cargarse en otra sesión.
La importancia de esta carpeta radica en que en ella deben de encontrarse todos los
archivos que requerimos al momento de realizar cualquier proyecto, es por eso que se
recomienda tener una carpeta para cada proyecto en la cual se encuentren los archivos que
usaremos, y esta carpeta, debe estar activa al trabajar con este proyecto.
Para cambiar la carpeta seleccionada, podemos escribir o buscar utilizando la barra de
dirección en la parte superior o haciendo clic en el lado aun lado de ésta, como se muestra en
la Figura 2.
Figura 2.- Barra de dirección para seleccionar la carpeta actual (Current Folder).
Command Window:
Las expresiones y declaraciones de MATLAB son evaluadas conforme se van tecleando en
la Command Window o ventana de comandos, y los resultados, son mostrados en la misma
sección.
Figura 3.- En este ejemplo, se muestra como en la ventana de comandos se ingresa a la
variable t el valor de 5, para después evaluar la función y=sin(t) para dicho valor. Como
podemos apreciar, el resultado se muestra inmediatamente debajo de la instrucción tecleada
por el usuario.
Workspace Window:
La ventana de trabajo, ó Workspace Window muestra todas las variables asignadas durante
una sesión de MATLAB.
Existen muchos tipos de datos o clases fundamentales en MATLAB y, cada uno de estos está
formado por un arreglo multidimensional.
Figura 4.- En el Workspace, podemos apreciar las variables almacenadas durante una sesión, las
cuales pueden tener distintos valores o ser de distintas clases. En esta imagen se pueden apreciar
4 variables de distintos tipos: a) Variable a: Esta variable contiene el arreglo tipo double [1,2,3,4].
b) Variable t: Esta variable contiene almacenado un número tipo double. c) Variable x: esta
variable se definió como un arreglo de 1x1 tipo simbólico. d) Variable y: Contiene un número
decimal tipo double.
Al escribir el comando whos en el Command Window, como resultado obtendremos una
lista de todas las variables guardadas en el Workspace, permitiéndonos visualizar claramente el
tamaño del arreglo de cada variable, además de su clase o tipo y su peso en Bytes.
Figura 5.- Uso del comando whos para visualizar un análisis detallado de las variables
almacenadas en el Workspace.
Command History:
El historial de comandos, nos permite visualizar todos los comandos utilizados recientemente,
los cuales son almacenados para facilitarle al usuario el uso de comandos repetidamente, además
de poder visualizar todos los procedimientos realizados.
Estos comandos, conforme pasa el tiempo, se van ordenando por fecha y hora de ejecución, lo
cual nos permite verificar los comandos usados en casi cualquier momento en el pasado.
Una muy útil opción que nos brinda la Command Window de Matlab, es que, al presionar las
teclas de las flechas, podemos ir desplazándonos a través de los comandos del Command History,
lo cual nos absuelve de tener que escribir los mismos comandos repetidas veces.
Figura 6.- Vista de comandos archivados en el Command History, para insertarlos en la
ventana de comandos, basta con hacer doble clic sobre el en el Command History o navegar a
través de ellos con las flechas del teclado.
Manejo elemental de MATLAB en ventana de comandos
En MATLAB, los comandos deben introducirse uno a uno enseguida del prompt (>>), que
aparece en la ventana de comandos. Para familiarizarnos con el manejo de la ventana de
comandos de MATLAB, comenzaremos realizando algunas operaciones matemáticas básicas que
nos permitan entender el funcionamiento de la consola o ventana de comandos.
Para sumar dos números, es necesario introducir lo siguiente en la ventana de comandos:
>>3+2 Ans = 5
En el ejemplo, se presentan los comandos ingresados por el usuario en un fondo color
naranja, mientras que el resultado obtenido al presionar la tecla ENTER se muestra remaraca con
un fondo en color verde.
Como podemos apreciar, en el resultado se guardo automáticamente en una variable
llamada Ans, de la forma Ans=4. Esto sucede ya que, siempre que realicemos una operación sin
asignarla a una variable, esta por default se guardara en la variable ANS, sobrescribiendo el
resultado anterior.
Pero, ¿Qué pasaría si queremos conservar los valores de distintas operaciones?, en este
caso es necesario asignar la operación a una variable como se muestra en el ejemplo siguiente:
>>x=3*5 Ans = 15
Una vez realizadas las operación de suma y multiplicación anteriores, nuestro Workspace
debe lucir de la siguiente manera:
Figura 7.- Apariencia del Workspace después de realizar las operaciones anteriores. Se
pueden apreciar en el los valores resultantes de dichas operaciones.
De esta manera, MATLAB nos permite realizar en la operación matemática tan sencilla
como los ejemplos hasta ahora mostrados, y a su vez, realizar cálculos matemáticos con niveles
de complejidad increíblemente elevados, convirtiéndose en una poderosa herramienta en
ingeniería.
En los siguientes capítulos, trataremos acerca de distintos temas, principalmente
enfocados al manejo de MATLAB para resolver problemas de cálculo diferencial e integral, tanto
de forma simbólica como numérica, y se busca ir pasando de problemas sencillos hasta problemas
con un nivel de complejidad un poco mas elevado, siempre buscando que el alumno entienda el
funcionamiento y la aplicación de MATLAB para resolver problemas que, como estudiantes de
ingeniería, se convertirán en parte de la vida diaria.
Funciones y operaciones básicas A continuación, se presentan algunos tablas informáticas con los operadores matemáticos,
comandos funciones que serán utilizadas durante el curso.
Operaciones matemáticas elementales
Suma + Resta - División / Exponenciación ^ Multiplicación * Raíz cuadrada Sqrt()
Funciones más comunes
sin( ) Seno cos( ) Coseno tan( ) Tangente sinh( ) Seno hiperbólico cosh( ) Coseno hiperbólico tanh( ) Tangente hiperbólico asin( ) Arcoseno acos( ) Arcocoseno atan( ) Arcotangente exp( ) Exponencial log( ) Logaritmo neperiano log10( ) Logaritmo decimal abs( ) Valor absoluto
Symbolic Math Toolbox
Con Symbolic Math Toolbox, el usuario cuenta con una serie de comandos que le permitirán realizar cálculos simbólicos. Este toolbox, nos brinda las herramientas necesarias para resolver y manipular expresiones matemáticas simbólicas generando resultados aritméticos de gran precisión. Se cuenta con cientos de funciones simbólicas que nos permitirán realizar tareas como:
Diferenciar
Integrar
Operaciones algebraicas lineales
Simplificación
Transformación
Aritmética de precisión variable
Solución de ecuaciones
Simplificación y sustitución Algunas de los comandos básicos que nos serán de gran ayuda al resolver problemas de
matemáticas simbólicas, y uno de los problemas con los que nos encontramos, es con la necesidad
de expresar una misma ecuación de distintas maneras, en el ejemplo siguiente, podemos apreciar
la misma ecuación expresada de tres formas distintas.
En el ejemplo siguiente, podemos apreciar la primera instrucción llamada syms seguida
por la letra x, lo cual nos indica que estamos asignando x como una variable simbólica en el
Workspace, lo cual nos permitirá trabajar con ella utilizando funciones del Symbolic Math Toolbox.
Otra dato importante es que, en la consola de MATLAB, podemos agregar comentarios, los
cuales son ignorados al ejecutar las instrucciones, es decir, solo tienen función informativa para el
usuario. En este ejemplo, podemos apreciar que al escribir el signo %, automáticamente el texto
que lo sigue aparece en color verde, lo cual quiere decir que es un comentario, y que será
ignorado al momento de realizar las operaciones.
>> syms x %Declara “x” como una variable simbólica >> f = x^3 - 6*x^2 + 11*x - 6; %Guarda en f, g y h la misma función >> g = (x - 1)*(x - 2)*(x - 3); %Expresada de distinta forma >> h = -6 + (11 + (-6 + x)*x)*x;
Una vez ingresadas estas funciones a la consola de MATLAB, podemos apreciar que las
variables f,g y h, aparecerán en el Workspace, lo que quiere decir que las funciones han sido
guardadas correctamente y que podemos realizar con ellas una gran cantidad de operaciones, sin
tener que volver a escribirlas cada vez que las necesitamos.
Figura 8.- Apariencia del Workspace después de insertar las funciones f, g y h del ejemplo
anterior.
Existen algunos comandos que dentro del Symbolic Math Toolbox que nos permiten
visualizar una de distintas formas. En el ejemplo anterior, vimos un ejemplo de tres ecuaciones
iguales expresadas en un modo distinto, pero, al fin de cuentas, no son más que la misma
ecuación. A continuación se menciona una breve descripción y ejemplo sobre el uso de algunos
comandos para simplificar una ecuación.
collect(f)
El comando collect(f) muestra junta todos los coeficientes con la misma potencia de la
variable simbólica, por ejemplo x. Un segundo argumento puede indicar la variable que se quiere
afectar, en el caso de tener varias variables.
Ejemplo:
>> syms x %Declaramos x como variable simbólica >> f = (x-1)*(x-2)*(x-3); %ingresamos la función f >> collect(f) %Aplicamos el comando collect Ans =
x^3-6*x^2+11*x-7
Podemos observar en el resultado, que se efectuaron todas las multiplicaciones y los
términos se agruparon de mayor a menor grado.
expand(f)
El comando expand(f) tiene la función de distribuir los productos de una ecuación y aplicar
las identidades correspondientes generándonos ecuaciones de sumas, como se muestra en el
ejemplo.
Ejemplo1:
>> syms a x y %Declaramos a,x,y como variables simbólicas >> f = a*(x+y); %ingresamos la función f >> expand(f) %Aplicamos el comando expand( ) Ans =
a*x+a*y
En este ejemplo, podemos apreciar que al aplicar el comando expand( ) a la función f,
obtuvimos como resultado que esta se expanda en términos suma.
Ejemplo 2:
>> syms a b %Declaramos a,x,y como variables simbólicas >> f = exp(a+b); %ingresamos la función f >> expand(f) %Aplicamos el comando collect Ans =
exp(a)*exp(b)
En este ejemplo podemos apreciar que al aplicar el comando expand a la función f, el
resultado consiste en evaluar la función conociendo la identidad que nos dice que .
Es decir, se aplico la identidad correspondiente a la ecuación.
Ejemplo 3:
>> syms x y %Declaramos a,x,y como variables simbólicas >> f = cos(x+y); %ingresamos la función f >> expand(f) %Aplicamos el comando expand Ans =
Cos(x)*cos(y)-sin(x)*sin(y)
En el tercer y último ejemplo de la función expand, también podemos apreciar la
aplicación de una identidad trigonométrica, la cual nos dice que ( ) ( ) ( )
( ) ( ). Con lo cual, comprobamos el funcionamiento de el comando expand para
distintos casos.
factor(f)
Siendo f un polinomio con coeficientes racionales, el comando factor(f) expresa la función
f como un producto de polinomios de menor grado con coeficientes racionales. En caso de que el
polinomio f no pueda ser factorizado, el resultado será el mismo polinomio f en su forma original.
Ejemplo:
>> syms x %Declaramos x como variables simbólicas >> f = x^3-6*x^2+11*x-6; %ingresamos la función f >> factor(f) %Aplicamos el comando factor ans =
(x-3)*(x-1)*(x-2)
Podemos apreciar que el resultado al ejecutar el comando factor nos entrega la ecuación
factorizada, contrario a la función expand.
simplify(f)
La función simplify(f) es un poderoso comando de propósito general el cual aplica a una
ecuación identidades algebraicas, potencias, raíces cuadradas, potencias fraccionales, así como
una gran cantidad de identidades trigonométricas, exponenciales, logarítmicas, entre otras,
generándonos excelentes resultados.
Para dejar en claro el funcionamiento del comando simplify(f) se presentan los siguientes
ejemplos:
Ejemplo 1:
>> syms x >> f = (1-x^2)/(1-x); >> simplify(f) ans =
x+1
En este ejemplo podemos apreciar como el comando simplify nos llevó de una función
compleja a una expresión notablemente más sencilla.
Ejemplo 2:
>> syms x y >> f = exp(x)*exp(y); >> simplify(f) ans =
exp(x+y)
En este ejemplo el comando simplify nos genero una ecuación mas sencilla utilizando la
identidad que nos dice que
Ejemplo 3:
>> syms x >> f = cos(x)^2+sin(x)^2 >> simplify(f) ans =
1
pretty(f)
El comando pretty(f) muestra la función f en un formato similar a la escritura natural
matemática.
Ejemplo 1:
>> syms x >> f = 3*x^2-6*x^2+11*x-6; >> pretty(f) ans =
3 2
x - 6 x + 11 x - 6
Ejemplo 2:
>> syms x >> pretty([x^3,x^2,x; 1,2,3]) ans =
+- -+
| 3 2 |
| x , x , x |
| |
| 1, 2, 3 |
+- -+
subs(S,new,old)
El comando subs(), reemplaza en la función S, la variable old por el valor de new, que
puede ser una variable, una función o un número. Existen distintas variantes en los parámetros
que se asignan al comando, mas sin embargo, para este curso básico solo usaremos la forma más
genérica del mismo.
Ejemplo 1:
>> syms x y >> f=x^3+3*x+2; %guardamos una función en la variable f
>> g=y; %guardamos otra función en la variable g
>> subs(f,g,x) %Sustituimos en la función f el valor de la función g,
%en lugar de la variable x
ans =
y^3 + 3*y + 2
Teniendo la función f=x^3+3*x+2 se pretende sustituir todas las letras x de la ecuación
por la función almacenada en g (es decir, “y”). Una vez efectuado el comando pretty(), podemos
apreciar que el resultado es la ecuación f, pero, todas las x fueron sustituidas por y.
Ejemplo 2:
>> syms x y >> f=1/x^2; >> subs(f,1/y,x) ans =
y^2
En este ejemplo, podemos apreciar como sustituir en una función f, otra función (1/y)
escrita directamente como parámetro de la función subs(), es decir, sin tener que asignarlo antes a
una variable, como se hiso en el ejemplo 1, logrando así que todas las x se sustituyan por 1/y,
simplificándose y dando como resultado y^2.
Algebra de bloques con Simulink
Sistemas eléctricos
Sistemas mecánicos
Comportamiento de los sistemas en el dominio del tiempo
Función de transferencia Para definir una función de transferencia en MATLAB, utilizaremos el comando
tf(num,den). Donde num es el numerador y den es el denominador de nuestra función de
transferencia. Este comando tiene como propósito crear una función de transferencia real o
compleja.
Sys= tf(num,den) crea una función de transferencia continua en el tiempo con numerador
y denominador especificados por num y den. La Salida Sys es un objeto que almacena la
información de la función de transferencia.
Ejemplo 1:
Ingrese la función de transferencia ( )
en MATLAB:
>> ts=tf([1 1],[1 3 2 1 1]) Transfer function: s + 1 --------------------------- s^4 + 3 s^3 + 2 s^2 + s + 1
Ejemplo 2:
Ingrese la función de transferencia ( )
en MATLAB:
>> ts=tf([1],[1 4 3 2 1]) Transfer function: 1 ----------------------------- s^4 + 4 s^3 + 3 s^2 + 2 s + 1
Análisis de estabilidad Sabemos que un sistema es estable cuando la respuesta transitoria se va haciendo cero
con el tiempo.
Criterio de Routh-Hurwitz Para realizar análisis de estabilidad de un sistema, utilizaremos una pequeña aplicación
desarrollada en MATLAB llamada, propiamente Routh_Horwitz, la cual nos permitirá realizar
análisis de estabilidad de un sistema.
Esta aplicación se puede descargar de forma gratuita desde la pagina web de Mathsoft.
Figura 20.- Ventana principal de la aplicación Routh_Horwitz
En la figura anterior podemos apreciar la ventana principal de la aplicación Routh_Horwitz,
en la cual ingresaremos una matriz de coeficientes del polinomio característico. A continuación se
muestran algunos ejemplos:
Ejemplo 1:
Determinar si el sistema con la función de transferencia
es estable:
1. Ingresamos en el cuadro de texto Input ecuation el polinomio característico de nuestra
ecuación de la siguiente manera: [5 3 12 20 100 150 200] y al presionar enter,
obtendremos lo siguiente:
Figura 21.- Tabla de Routh-Horwitz resultante.
Como podemos apreciar, en la sección de Input Equation, la ecuación se transformo en la
forma como visualizamos normalmente el polinomio característica. También podemos apreciar la
tabla de Routh-Hurwitz obtenida, en la cual, como podemos apreciar hay números negativos, lo
cual nos indica que nuestro sistema es inestable.
Además de esto, podemos apreciar un recuadro que nos muestra el número de raíces y de
qué tipo son, pudiendo ser:
Repeat jw: Número de raíces repetidas en el eje jw.
LHP: Número de raíces en el lado izquierdo del plano.
Jw: Número de raíces en el eje jw.
RHP: Número de raíces en el lado derecho del plano.
Center: Número de raíces s=0.
Repeated center: Número de raíces repetidas s=0.
Para este caso, podemos apreciar que contamos con cuatro raíces en el lado izquierdo del
plano y dos raíces en el lado derecho, lo cual podemos observar al dar clic en el menú
tolos>diagrams>Root Locus
Figura 22.- Menú tools>Diagram>Root Locus
Con esto, obtendremos la siguiente gráfica:
Figura 23.- Gráfica del LGR de la función de transferencia
Ejemplo 2:
Determinar los valores de k para los que el sistema es estable, teniendo la función de
transferencia
Para resolver este problema, utilizaremos una herramienta de la GUI Routh_Hurwitz
llamada Gain_Finder.
1. Seleccionamos la herramienta Gain_Finder en el menú tools. Lo cual llamara a la siguiente
ventana.
Figura 24.- Ventana Gain_Finder.
Lugar Geométrico de las Raíces
>>syms s
1. Obtenemos el polinomio característico de nuestra función de transferencia utilizando el
comando expand().
>> pol=(s+1)*(s+3+j)*(s+3-j)*(s+4); %Guardamos el denominador en la variable pol >> pol=expand(pol) %Obtenemos el polinomio característico pol = s^4 + 11*s^3 + 44*s^2 + 74*s + 40
2. Una vez obtenido el polinomio característico, podemos ingresar nuestra función
característica ingresando los coeficientes de nuestros polinomios.
>> trans=tf([1 1],[1 11 44 74 40]) %Ingresamos los coeficientes de la función de transferencia Transfer function: s + 1 --------------------------------- s^4 + 11 s^3 + 44 s^2 + 74 s + 40
3. Una vez realizado este procedimiento, ya podemos ingresar nuestra función de
transferencia en el comando rlocus(tf) como se muestra a continuación:
>> rlocus(trans) %Calculamos el lugar geométrico de la recta de nuestra ft
4. El resultado del comando anterior, será la siguiente gráfica:
Figura 9.- LGR de la función de función de transferencia
5. Como podemos ver, hasta este punto, ya tenemos la gráfica del lugar geométrico de la
recta, lo cual nos es muy útil, pero, una pregunta interesante sería cómo saber los
distintos valores de k, para lo cual, usaremos el siguiente comando;
>> rltool
Este comando llamará a una GUI llamada SISO design for SISO design task, la cual, entre
otras cosas, nos permite visualizar el valor de la ganancia k en los distintos puntos.
Figura 10.- Ventana del SISO design for SISO design task
Figura 11.- Ventana Control and estimation tools managment, la cual se abre también al ejecutar
el comando rltool
6. Una vez abiertas estas dos ventanas con el comando rltool tendremos que importan la
función de transferencia que analizamos a el SISO design system for SISO design task,
seleccionando la opción Import en el menú File.
Figura 12.- Importar una función de transferencia a la GUI.
Esto nos abrirá la siguiente ventana:
Figura 13.- Ventana para importar una función de transferencia
El siguiente paso, será dar clic en el botón Browse para buscar las funciones de transferencia que
se encuentren guardadas en el Workspace.
Figura 14.- Importando modelo desde el Workspace de MATLAB
Como podemos apreciar, en los modelos disponibles, encontramos el llamado trans, el
cual habíamos declarado previamente. Seleccionamos el modelo trans y damos clic en Import,
después cerramos la ventana Model Import y la ventana System Data.
7. Una vez importado el modelo, obtendremos la gráfica del LGR en la ventana SISO design
for SISO task, como se muestra en la siguiente figura:
Figura 15.- Visualización de la gráfica del LGR, en la barra de estado (inferior) podemos apreciar la
ganancia k para los puntos seleccionados en la gráfica en color rosa.
Para conocer el valor de la ganancia k en distintos puntos, solo hay que hacer clic en la
parte de la recta donde queramos conocer dicha ganancia.