Logo Studenta

Practica 1 INTRODUCCIÓN A MATLAB Y SIMULINK

¡Este material tiene más páginas!

Vista previa del material en texto

PRÁCTICA 1 INTRODUCCIÓN A MATLAB Y SIMULINK
OBJETIVO
Que el alumno conozca distintos comandos de Matlab para declarar variables y graficar, así mismo que conozca las bondades de la librería Simulink para realizar simulaciones que le sean de utilidad para la materia y su proyecto final.
MARCO TEÓRICO
NÚMEROS COMPLEJOS
Un número complejo es un par ordenado (a, b) de números reales. Es común representar el complejo (a, b) en la forma a + bi, donde i es un símbolo llamado unidad imaginaria que cumple con la condición: o . A este tipo de representación se le llama forma binómica. El conjunto de todos los números complejos se denota C cuyos elementos son combinaciones de la forma z = a + bi donde a y b son números reales. 
Entonces, todo número complejo consta de dos partes, o componentes, llamadas: parte real y parte imaginaria, dadas por a y b respectivamente.
Así pues, se tiene que e .
Cuando no hay parte imaginaria se dice que el complejo es real. Entonces los números reales forman parte del conjunto de los números complejos.
Cuando un número complejo no tiene parte real se dice que es un imaginario puro.
SUMA 
La suma de números complejos está basada en la suma de números reales. Cada complejo tiene una parte real y una parte imaginaria. Para sumar complejos hay que sumar las partes reales por un lado y las partes imaginarias por otro lado, como números reales. Al hacer esto nos encontramos de nuevo con otro número complejo. 
Más precisamente, sean y dos números complejos: 
.
RESTA 
La resta o diferencia de dos números complejos se realiza restando cada parte por separado. Más precisamente, sean y dos números complejos:
.
Es decir, para restar dos números complejos se restan sus componentes correspondientes.
PROPIEDADES DE SUMA Y RESTA DE NÚMEROS COMPLEJOS
1. Propiedad de Cierre para la suma. Si Z y W son dos números complejos entonces tanto Z+W como Z -W son números complejos.
2. Propiedad asociativa. Si Z, W y U son números complejos, entonces se tiene:
3. Propiedad Conmutativa. Si Z y U son números complejos, se tiene:
4. Propiedad del elemento neutro. El número complejo 0 = 0 + 0i, es el elemento neutro para la suma. En efecto, si Z = a + bi es cualquier número complejo se tiene:
de la misma forma, se puede probar que 0 + Z = Z.
5. Propiedad del opuesto. Si Z = a + bi es un número complejo, el opuesto de este es −Z=−a−bi, el cual es otro número complejo. Nótese que el opuesto satisface:
MULTIPLICACIÓN 
Sean Z = a + bi y W = c + di definimos su producto, mediante la fórmula:
Donde se ha usado la propiedad distributiva para la multiplicación, la relación y
un reagrupamiento de los términos. 
La multiplicación puede hacerse de dos maneras; o bien se aplica directamente la fórmula, o bien se multiplican los complejos como expresiones algebraicas, teniendo cuidado de hacer al final la sustitución .
PROPIEDADES DE MULTIPLICACIÓN DE NÚMEROS COMPLEJOS
1. Propiedad de Cierre para el producto. Si Z y W son dos números complejos entonces Z·W es un número complejo.
2. Propiedad Asociativa. Si Z, W y U son números complejos, entonces se tiene:
3. Propiedad Conmutativa. Si Z y U son números complejos, se tiene:
4. Propiedad del elemento neutro. El número complejo 1, es el elemento neutro para el producto. En efecto, si Z = a + bi es cualquier número complejo se tiene:
de la misma forma, se puede probar que 1 · Z = Z.
5. Propiedad del inverso. Si Z = a + bi es un número complejo, distinto de cero, el inverso de Z es otro número complejo, denotado por Z-1, el cual satisface:	
6. Propiedad distributiva. Si Z, W y U son números complejos se tienen las relaciones:
CONJUGADO
Si Z = a + bi es un número complejo, entonces el conjugado de Z, denotado por , es otro número complejo definido por: 
MÓDULO
Si Z = a + bi es un número complejo, el módulo de Z es el número real: .
Algunas propiedades muy importantes del módulo se dan a continuación. Suponiendo que Z y W son números complejos:
1. 
2. 
3. 
4. 
5. 
DIVISIÓN
Si Z y W son dos números complejos, y W ≠ 0, la división de Z entre W se haría de la forma siguiente:
Entonces la regla para dividir números complejos es que para hacer la división de dos números complejos Z y W, primero se multiplica Z por el conjugado de W y ´este resultado se divide entre el módulo al cuadrado de W, el cual es un número real.
Si Z = a + bi y W = c + di, se tiene:
REPRESENTACIÓN GEOMÉTRICA
Así como los números reales se representan geométricamente por medio de una recta, es posible dar una representación geométrica de los números complejos usando un sistema de coordenadas cartesianas. A cada número complejo Z = a+bi, se le asocia el punto del plano, P(a,b). De esta forma, se obtiene una representación geométrica o Diagrama de Argand de Z.
En esta representación, la componente real de Z se copia sobre el eje X, que será llamado eje real y la componente imaginaria sobre el eje Y, que será llamado eje imaginario. El conjunto de todos estos puntos será llamado Plano Complejo.
MATLAB
MATLAB es un entorno de computación y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados cálculos matemáticos y la visualización gráfica de los mismos. 
Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware.
MATLAB dispone también en la actualidad de un amplio abanico de programas de apoyo especializados, denominados Toolboxes, que extienden significativamente el número de funciones incorporadas en el programa principal. Estos Toolboxes cubren en la actualidad prácticamente casi todas las áreas principales en el mundo de la ingeniería y la simulación, destacando entre ellos el 'toolbox' de proceso de imágenes, señal, control robusto, estadística, análisis financiero, etc.
COMANDOS DE MATLAB
A continuación, se nombrarán y explicarán los comandos de Matlab utilizados durante el desarrollo de esta práctica.
· Sqrt (x)
Devuelve la raíz cuadrada de cada elemento de la matriz X. Para los elementos de X que son negativos o complejos, sqrt (X) produce resultados con números complejos, lo que puede llevar a resultados inesperados si se utilizan de forma involuntaria.
Si desea que los números negativos y complejos devuelvan mensajes de error en lugar de devolver resultados complejos, utilice en su lugar “realsqrt”.
· Figure
En general, este comando es utilizado para crear una nueva ventana de figura mediante valores de propiedades predeterminados.
Dependiendo de la sintaxis, el comando figure puede actuar de distintas maneras, en este caso la sintaxis fue “figure(n)” la cual encuentra una figura en la que la propiedad Number es igual a n y la convierte en la figura actual. Si no existe ninguna figura con ese valor de propiedad, el programa creará una nueva figura y establecerá su propiedad Number como n.
· Plot
Plot (x,y) crea un gráfico de líneas 2D de los datos de Y frente a los valores correspondientes de X.
· Si X e Y son ambos vectores, deben tener la misma longitud. La función plot traza Y frente a X.
· Si X e Y son ambas matrices, deben tener el mismo tamaño. La función plot traza las columnas de Y en comparación con las columnas de X.
· Si X o Y es un vector y el otro es una matriz, la matriz debe tener dimensiones de forma que una de sus dimensiones sea igual a la longitud del vector. Si el número de filas de la matriz equivale a la longitud del vector, la función plot traza cada columna de matriz en comparación con el vector. Si el número de columnas matriciales equivale a la longitud del vector, la función trazará cada fila de matriz en comparación con el vector. Si la matriz es cuadrada, entonces la función traza cada columna frente al vector.
· Si X o Y es un escalar y el otro es un escalar o un vector, entonces la función plot trazapuntos discretos. Sin embargo, para ver los puntos debe especificar un símbolo de marcador, por ejemplo, plot(X,Y,'o').
Plot (Y) crea un gráfico de líneas 2D de los datos de Y en comparación con el índice de cada valor.
· Title
Title(txt) agrega el título especificado a los ejes o el gráfico devueltos por el comando gca. Al volver a emitir el comando title, el nuevo título reemplazará el título anterior.
· Xlabel
Xlabel (txt) etiqueta o nombra el eje x de los ejes actuales o el gráfico devuelto por el comando gca. Al reemitir el comando xlabel, se sustituye la etiqueta anterior por la nueva etiqueta.
· Ylabel
Ylabel (txt) etiqueta o nombra el eje y de los ejes actuales o el gráfico devuelto por el comando gca. Al reemitir el comando ylabel, se sustituye la etiqueta anterior por la nueva etiqueta.
· Grid
Muestra u oculta las líneas de cuadrícula de los ejes en la figuras o gráficas actuales.
· Pi
El comando pi devuelve el número de punto flotante más cercano al valor de π (3.1415...).
· Peaks
Es una función de dos variables, obtenida trasladando y escalando distribuciones Gaussianas, lo que es útil para demostrar mesh, surf, contour.
En general esta función devuelve una matriz simétrica donde el tamaño de esta depende de la síntesis del comando. Si no se especifica el tamaño, la función entregará una matriz de 49 x 49.
· Contour
Este comando se utiliza para general isolíneas de contorno de una matriz Z. En la síntesis contour(Z,n) utilizada en la práctica, el programa dibuja un trazado de contorno de la matriz Z con n niveles de contorno. n debe de ser un escalar.
· Mesh
Mesh dibuja una malla de alambres para una figura dada. En la síntesis mesh(Z), se dibuja una malla con X = 1:n y Y = 1:m, donde [m,n] = size(Z). La altura, Z, es una función de un solo valor definida en una cuadrícula rectangular. El color es proporcional a la altura de la superficie. Los valores de Z pueden ser valores numéricos, de fecha, duración o categóricos.
· Surf
Crea un gráfico de superficie tridimensional. Usando la declaración surf(Z) se creará una superficie que utiliza los índices de columna y fila de los elementos de Z como las coordenadas X y Y, respectivamente.
· View
Determina el punto de observación de una figura mediante la orientación de los ejes para su visualización. Se puede especificar el punto de vista en términos de azimut y elevación, o por un punto en el espacio tridimensional. En la síntesis view(az,el) se establece el ángulo de visión para un gráfico tridimensional. El acimut, az, es la rotación horizontal alrededor del eje z, medida en grados desde el eje y negativo. el, es la elevación vertical del punto de vista en grados. 
SIMULINK
SIMULINK es una toolbox especial de MATLAB que sirve para simular el comportamiento de los sistemas dinámicos. Puede simular sistemas lineales y no lineales, modelos en tiempo continuo y tiempo discreto y sistemas híbridos de todos los anteriores. Es un entorno gráfico en el cual el modelo a simular se construye seleccionando y arrastrando los diferentes bloques que lo constituyen. 
Simulink dispone de una serie de utilidades que facilitan la visualización, análisis y guardado de los resultados de simulación por lo que se emplea profusamente en ingeniería de control.
BLOQUES DE SIMULINK
Esta toolbox tiene una gran variedad de bloques que son de utilidad para realizar muchos tipos de sistemas. Enseguida se describirán los bloques utilizados en esta práctica
· Step (Escalón)
El bloque step proporciona un paso entre dos niveles definibles en un momento específico. Si el tiempo de simulación es menor que el valor del parámetro Step time, la salida del bloque es el valor del parámetro Initial value. Para un tiempo de simulación mayor o igual al Step time, la salida es el valor del parámetro Final value.
· Sum
El bloque Sum realiza sumas o restas en sus entradas las cuales pueden ser escalares, vectoriales o matriciales. También puede colapsar los elementos de una señal y realizar una suma.
El bloque primero convierte el tipo de datos de entrada a su tipo de datos de acumulador, luego realiza las operaciones especificadas. Después, convierte el resultado a su tipo de datos de salida utilizando los modos de redondeo y desbordamiento especificados.
· Gain
Este bloque multiplica la entrada por un valor constante especificado por el usuario. La entrada y la ganancia pueden ser un escalar, un vector o una matriz dependiendo del parámetro Multiplication.
La ganancia se convierte de tipo doble al tipo de datos especificado. La entrada y la ganancia se multiplican, y el resultado se convierte al tipo de datos de salida utilizando los modos de redondeo y desbordamiento especificados.
· Transfer Fcn
El bloque Transfer Fcn modela un sistema lineal mediante una función de transferencia de la variable s en el dominio de Laplace. El bloque puede modelar sistemas de una entrada y una salida, y de una entrada y múltiples salidas.
· Scope
Bloque que muestra en el dominio del tiempo, las señales generadas durante la simulación.
· LTI System
El bloque del Sistema LTI importa objetos de modelo de sistema lineal en el entorno Simulink. Es posible importar cualquier tipo de modelo apropiado de sistema dinámico lineal invariante en el tiempo. Si el sistema importado es un modelo de espacio de estado, se puede especificar valores de estado iniciales en el parámetro Initial states.
· Mux
El bloque Mux combina sus entradas en una salida vectorial única. Una entrada puede ser una señal escalar o vectorial. Todas las entradas deben ser del mismo tipo de datos y tipo numérico.
DESARROLLO DE LA PRÁCTICA
MATLAB
En primer lugar, se realizó mediante Matlab un programa para calcular las raíces de una ecuación de segundo grado mediante la fórmula general.
Al correr el programa se obtenían los siguientes resultados:
Se observa que las raíces de este cálculo son números complejos obtenidos por el comando sqrt. Es importante considerar esto para evitar cometer errores en programas más complejos.
Después, se realizaron 10 programas pequeños con el objetivo de que aprendiéramos las herramientas gráficas con las que cuenta Matlab. A continuación se indican las síntesis y las gráficas obtenidas de cada una.
En este programa se graficó la función seno respecto a valores de X que van desde 0 a 20 con incrementos de 0.1. Se estableció la figura con el número 1 y se indicó que se graficara en la figura la función establecida por las variables de x y y; y se etiquetó el título de la gráfica con sus ejes. 
En este programa se graficó la función indicada con la variable q respecto a valores de r que van desde -10 a 10 con incrementos de 0.1. Se estableció la figura con el número 2 y se indicó que se graficara en la figura la función establecida por las variables de r y q; se etiquetó el título de la gráfica y sus ejes. Además mediante el comando grid se dibujaron las marcas de cuadrícula de los ejes en la figura.
En este programa se graficaron los puntos establecidos por la variable c que van desde 0 a 2π con incrementos de π/100. Se estableció la figura con el número 3 y se indicó que se graficara en la figura los resultados obtenidos por las operaciones dentro del comando plot, se etiquetó el título de la gráfica y su eje X. Además mediante el comando grid se dibujaron las marcas de cuadrícula de los ejes en la figura.
En este programa se graficaron los puntos establecidos por la variable t que van desde 0 a 15π con incrementos de π/100. Se estableció la figura con el número 4 y se indicó que se graficara en la figura los resultados obtenidos por las funciones dentro del comando plot, se etiquetó el título de la gráfica y su eje X. Además mediante el comando grid se dibujaron las marcas de cuadrícula de los ejes en la figura.
En este programa se graficó la función indicada con la variable z, la cual mediante el comando peaks(10), fue establecida como una matriz de 10x10. Se estableció la figura con el número 5 y se indicó que se graficara la figura dada por la matrizz. Después con el comando contour se indicó que en la figura se graficaría el contorno de la matriz Z con 10 niveles de contorno donde su color está definido por su profundidad. Se etiquetó el título de la gráfica y su eje X, y se dibujaron las marcas de cuadrícula de los ejes en la figura.
En este programa se graficó la función indicada con la variable z, la cual mediante el comando peaks(10), fue establecida como una matriz de 10x10. Se estableció la figura con el número 6 y se indicó que se graficara la figura dada por la matriz z. Se etiquetó el título de la gráfica y su eje X, y se dibujaron las marcas de cuadrícula de los ejes en la figura.
En este programa se graficó la función indicada con la variable z, la cual mediante el comando peaks(10), fue establecida como una matriz de 10x10. Se estableció la figura con el número 7 y se indicó que se graficara la figura dada por la matriz z. Mediante la herramienta mesh se graficó una malla dentro de la figura donde cada línea en x y y está definida por el tamaño de las columnas y filas respectivamente de la matriz Z. Se etiquetó el título de la gráfica y su eje X, y se dibujaron las marcas de cuadrícula de los ejes en la figura.
En este programa se graficó la función indicada con la variable z, la cual mediante el comando peaks(10), fue establecida como una matriz de 10x10. Se estableció la figura con el número 8 y se indicó que se graficara la figura dada por la matriz z. Con el comando surf se creó una superficie tridimensional donde cada coordenad en x y y está definida por el tamaño de las columnas y filas respectivamente de la matriz Z. Se etiquetó el título de la gráfica y su eje X, y se dibujaron las marcas de cuadrícula de los ejes en la figura.
En este programa se graficó la función indicada con la variable z, la cual mediante el comando peaks(10), fue establecida como una matriz de 10x10. Se estableció la figura con el número 9 y se indicó que se graficara la figura dada por la matriz z. Con el comando surf se creó una superficie tridimensional donde cada coordenad en x y y está definida por el tamaño de las columnas y filas respectivamente de la matriz Z. Con view, se indicó que la figura sería visualizada con una rotación de 10 grados del ángulo acimutal y 90 grados de ángulo de elevación. Se etiquetó el título de la gráfica y su eje X, y se dibujaron las marcas de cuadrícula de los ejes en la figura.
En este programa se graficó la función indicada con la variable z, la cual mediante el comando peaks(10), fue establecida como una matriz de 10x10. Se estableció la figura con el número 10 y se indicó que se graficara la figura dada por la matriz z. Con el comando surf se creó una superficie tridimensional donde cada coordenad en x y y está definida por el tamaño de las columnas y filas respectivamente de la matriz Z. Con view, se indicó que la figura sería visualizada con una rotación de 45 grados del ángulo acimutal y 45 grados de ángulo de elevación. Se etiquetó el título de la gráfica y su eje X, y se dibujaron las marcas de cuadrícula de los ejes en la figura.
SIMULINK
Como segunda parte de la práctica, se hizo uso de la toolbox Simulink de Matlab para simular sistemas de control mediante diagramas de bloques.
En todos los diagramas se utilizó un bloque step conectado a un sumador por una entrada positiva. Seguidamente el sumador se conectó a un bloque de ganancia con valor establecido de 1 para después ser conectado a un bloque de función de transferencia. La salida de este bloque debía conectarse con 2 líneas: la primera, la retroalimentación, se conectaba al bloque sumador por una entrada negativa la cual se ajustaba dando doble clic en el bloque sumador, esto con el objetivo de que la señal de salida se vaya mejorando gradualmente hasta alcanzar un valor estable dependiendo de la característica de la función de transferencia; y la segunda se conectaba a un bloque de osciloscopio para observar el comportamiento del sistema de control. 
Como primer ejemplo tenemos el siguiente modelo donde la función de transferencia es la cual se ajusta dando doble clic en el bloque de la F.T. Esta se declara como [1] en el numerador y [1 1] en el denominador.
Al correr el diagrama y haciendo doble clic en el bloque del osciloscopio:
Se observa que la F.T. dada genera un comportamiento donde, después de alcanzar su valor establecido se mantiene en él hasta el infinito demostrando que un posible sistema de control con estas características sería estable.
En el siguiente modelo la función de transferencia es . Esta se declara como [1] en el numerador y [1 0 1] en el denominador.
Al correr el diagrama y haciendo doble clic en el bloque del osciloscopio:
Ahora se nota que en este sistema de control el comportamiento se mantiene oscilante en todo momento concluyendo que no sería adecuado para un sistema de control debido a su inestabilidad. 
Para el próximo modelo la función de transferencia es . Esta se declara como [8] en el numerador y [1 4 9] en el denominador.
Este modelo presenta buenas características ya que comienza oscilando pero rápidamente se establece en un valor mostrando estabilidad.
En el último modelo la función de transferencia es . Esta se declara como [1 1] en el numerador y [1 1 11 5] en el denominador.
Similar al modelo anterior, se comienza con un comportamiento oscilatorio que se va estabilizando, pero mucho más lento que el diagrama anterior. 
Después de analizar estas gráficas y sus funciones de transferencia respectivas, se concluye que si la función del denominador no contiene un factor de amortiguamiento (s de primer orden) el sistema tiende a ser inestable. Esto se puede contrastar en un sistema masa – resorte – amortiguador donde si no existiera un amortiguador, el sistema tendería a oscilar y por tanto a la inestabilidad que obviamente no es deseada en este tipo de sistemas.
Finalmente, mediante un bloque Mux se unieron todas las señales de salida de los cuatro sistemas para dirigirlas todas a un solo bloque osciloscopio con el objetivo de visualizar todas las señales en una pantalla. 
Con esta visualización es posible comparar las señales obtenidas y concluir cual es la mejor opción para un objetivo deseado. 
Como último punto la práctica, se cambiaron los bloques de función de transferencia por bloques de sistema LTI, donde los parámetros no varían con el tiempo.
En estos bloques se declararon las mismas funciones de transferencia anteriores, con una síntesis diferente:
· F.T. 1.- tf([1],[1 1])
· F.T. 2.- tf([1],[1 0 1])
· F.T. 3.- tf([8],[1 4 9])
· F.T. 4.- tf([1 1],[1 1 11 5])
Una vez sustituidos todos los bloques y corriendo el programa podremos observar que las señales de salida de cada sistema son exactamente iguales a las obtenidas anteriormente con los bloques de F.T.

Continuar navegando