Curso Basico de Matlab

download Curso Basico de Matlab

of 38

Transcript of Curso Basico de Matlab

INTRODUCCIN MATLAB (Matrix Laboratory) es un programa matemtico creado en la empresa Math Works de los estados unidos que manipula matrices y vectores gilmente. MATLAB est compuesto por: un ambiente de desarrollo; una librera de funciones matemticas; un lenguaje especfico de alto nivel; grficos para la representacin de informacin en dos y tres dimensiones; procesamiento de imagen y animacin; un API para interfaces externas para comunicar al programa con otros programas. Adicionalmente cuenta con documentacin en lnea constituida por tutoriales, ejemplos y referencias. Adems de contar con la manipulacin matemtica es posible adicionar una serie de mdulos para diferentes reas del conocimiento como son: Sistemas de control (Control system toolbox) Anlisis, diseo y simulacin de sistemas de control automtico. Identificacin de sistemas en el dominio de la frecuencia (Frequency-domain system identification toolbox) Modelacin de sistemas lineales basada sobre las medidas de respuesta en frecuencia del sistema. Lgica difusa (Fuzzy logic toolbox) Anlisis, diseo y simulacin de sistemas con inferencia difusa. Anlisis espectral de alto orden (High order spectral analysis toolbox) Anlisis de seales originadas por procesos no lineales o que contienen ruido no Gaussiano. Procesamiento de imgenes (Image processing toolbox) Diseo de filtros digitales, anlisis estadstico, operaciones sobre el color y la morfologa, transformaciones 2-D. Modelos de control predictivo (Model predictive control toolbox) Aplicaciones de control que contienen muchas entradas y muchas salidas variables, algunas con restricciones. Aplicaciones a problemas de ingeniera qumica. Anlisis y sntesis MU (Mu analysis and synthesis toolbox) Herramientas especializadas para el anlisis y sntesis de control optimo H(infinito) y u-analisis. Anlisis y diseo de sistemas de control robusto multivariable para sistemas lineales. Fundacin NAG (NAG foundation toolbox) Incluye 200 funciones de clculo numrico para la solucin de problemas de condiciones de frontera, optimizacin, ajuste de curvas y superficies, y otras aplicaciones. Redes neuronales (Neural networks toolbox) Funciones para analizar y disear redes neuronales. Las redes neuronales son arquitecturas de cmputo, inspiradas en el sistema nervioso biolgico, las cuales son tiles en aplicaciones donde un anlisis formal es extremadamente complicado o imposible, tal como reconocimiento de imgenes e identificacin y control de sistemas no lineales. Diseo de control no lineal (Nonlinear control design toolbox) Diseo de sistemas de control lineal y no lineal, usando tcnicas de optimizacin en el dominio del tiempo. incluye una interface grfica para observar el comportamiento de las restricciones y sintonizar los parmetros del controlador. Optimizacin (Optimization toolbox) Comandos para la optimizacin de funciones lineales o no lineales e incluye las restricciones. Un problema de optimizacin puede ser visualizado como el intento de encontrar el punto ms alto o mas bajo en un paisaje encerrado por una cerca. Un algoritmo de optimizacin puede ser desarrollado para explorar a travs del paisaje y buscar desde la topologa los puntos extremos.

Teora de realimentacin cuantitativa (Quantitative feedback theory toolbox) Diseo de sistemas de control en el dominio de la frecuencia utilizando QTF para sistemas con incertidumbre. Control robusto (Robust control toolbox) Anlisis y diseo de sistemas de control que son robustos con respecto a las incertidumbres que se puedan presentar en el mundo real. Procesamiento de seales (Signal processing toolbox) Coleccin de funciones M de MATLAB para el procesamiento de seales. Este modulo incluye representacin de seales y sistemas, clculo de respuestas temporales y en frecuencia, diseo de filtros, transformada de Fourier, identificacin de sistemas. Simulink (Simulink toolbox) Ambiente grfico para el anlisis, diseo y simulacin de sistemas de control lineales y no lineales. Este permite trabajar con sistemas continuos, sistemas discretos, sistemas con mltiple tiempo de muestreo y sistemas hbridos. Simulacin en tiempo real (Simulink real time workshop) Simulacin en tiempo real e implementacin de estrategias de control sobre hardware en tiempo real. Generacin de cdigos desde los bloques de Simulink para aplicacin en sistemas de tiempo real. (Spline toolbox) Interpolacin segmentaria que utiliza aproximaciones polinmicas. El mtodo se origino utilizando una lamina de plstico delgada llamada curvgrafo, que en ingles es spline, y con el cual se trazan curvas entre puntos. Estadstica (Statistic toolbox) Contiene un grupo de comandos para el anlisis de datos estadsticos; simulacin de Monte carlo y herramientas para el anlisis de probabilidades. Matemtica simblica (Symbolic math toolbox) Contiene un conjunto de funciones para realizar clculos simblicos basados en Maple. La versin extendida soporta programas en Maple y adiciona otros comandos. Identificacin de sistemas (System identification toolbox) Conjunto de herramientas para la estimacin e identificacin de sistemas. La identificacin es una forma de obtener el modelo matemtico de un sistema fsico (como un motor elctrico) basado en el registro de las seales de entrada y de salida del sistema. Otros... Cada uno de estos mdulos se conoce internacionalmente como TOOLBOX y son programas que se pueden adicionar al paquete bsico de MATLAB que ser visto en este curso.

Esta introduccin est pensada solo para proveer al estudiante de conocimientos bsicos; para mayor informacin, consulte los manuales disponibles de MATLAB, particularmente en el Control system toolbox donde hay muchos comandos que pueden ser tiles a lo largo del desarrollo de la asignatura. Nota: Este material es del tipo tutorial. Por lo tanto le recomendamos que cuando lo lea, tenga al frente un computador en el cual MATLAB est funcionando correctamente. Los comandos que debe teclear se identificaran con >> y se distinguen porque tienen un fondo, este smbolo NO lo tiene que escribir. De otro lado, los programas que se anexan tienen un encabezado que los identifica como tales.

TALLER 1. INTRODUCCIN AL MANEJO DE MATLAB Inicio de Matlab Se inicia al hacer doble click con el ratn en el icono de Matlab como la siguiente: abriendo una ventana

Expresiones aritmticas Se pueden introducir expresiones matemticas de la forma habitual. Las operaciones se realizan en el siguiente orden: ^ potencia * multiplicacin / y \ divisin + suma - resta Comando >>a=4/3 >>b=3\4 >>a=3^2 >>b=2*sqrt(a) Resultado a = 1.333 b = 1.333 a=9 b=6 a/b = a b Comentarios-1

a\b = a-1 b

Variables Se pueden definir variables para utilizarlas luego en otras expresiones. Matlab no es un programa de manipulacin simblica, las variables siempre contienen un valor numrico. Todas las variables son del mismo tipo, matrices cuyos componentes pueden ser reales o complejos. Una variable que contiene un real es una matriz de dimensin 1 1. Para introducir nmeros complejos se pueden usar las constantes predefinidas i o j como >>c=2*j >>d=2+3i

1 .

c=0+2i d = 2 + 3i

Al conjunto de variables creado durante una sesin se le denomina workspace. Para saber cuales son las variables del workspace se puede usar la orden whos. Creacin de matrices y vectores Una matriz se puede crear introduciendo sus elementos entre corchetes, poniendo cada fila en una lnea distinta y separando los elementos de una misma fila por espacios en blanco. Tambin se puede utilizar el punto y coma o enter para separar filas y la coma para separar elementos de una fila. >>A=[a b c 1] >>B=[1 2;3 4;5 6] A= 9 0+2i B= 1 3 5 2 4 6 6 1

A una matriz de una sola fila o de una sola columna tambin se le llama vector. Una forma rpida de crear vectores fila de elementos equiespaciados es utilizando el operador dos puntos. >>v1=1:5 >>v2=1:0.5:3 >>c=[1:2:10] v1 = 1 2 3 4 5 3

v2 = 1 1.5 2 2.5 c=1 3 5 7 9

La forma general es: nombre = [inicio : incremento : final] Para obtener la traspuesta de una matriz se pone detrs una comilla simple. >>[1 2] ans = 1 2 B= 1 3 5 2 4 6 Matlab maneja con la misma sencillez matrices complejas o reales y sus operaciones bsicas. >>k=[3,3;6,9]+i*[4,6;7,10] Matriz compleja (2*2) k= 3+4i 3+6i 6+7i 9 + 10 i contiene la parte real de cada elemento de k contiene la parte imaginaria de los elementos de k contiene la magnitud de cada elemento de k contiene los ngulos de los elementos de k (en radianes) Asigna a kinv la matriz inversa de k. >>B

>>reales=real(k) >>imaginarios=imag(k) >>magnitud=abs(k) >>angulos=angle(k) >>kinv=inv(k)

Definidas las matrices: >>x=[1;2;3] >>y=[4;5;6] Se realizan las operaciones bsicas con x e y. >>l=x+y >>m=x-y >>o=x.*y >>p=x'*y >>r=x*y' >>t=x*2 >>u=x.*2 >>v=x.\y >>j=2.^x Suma de matrices Resta de matrices Hace la multiplicacin elemento por elemento (Este es el efecto del punto) Multiplica la transpuesta de x por y Resultado(1*1) Matriz x por y transpuesta Resultado (3*3) Cada elemento de x por 2 Igual al anterior Cada elemento de y dividido por cada elemento de x(divisin de matrices) 2 elevado a la cada elemento de x

Matlab maneja algunas matrices especiales como: >>d=zeros(5) >>g=zeros(2,3) >>H=ones(2,3) >>j=eye(3) >>l=magic(5) >>m=rand(3) Matriz de ceros (5*5) Matriz de ceros (2*3) Matriz de unos (2*3) Matriz identidad (3*3) Matriz mgica (5*5) Matriz de nmeros aleatorios (3*3)

Seleccin de elementos de una matriz Se puede obtener un elemento de una matriz indicando entre parntesis la fila y la columna (por este orden y separados por coma) del elemento deseado. Si el ndice que indica la fila o columna es un vector, se obtendr una matriz con todos los elementos seleccionados. Si se quiere seleccionar filas o columnas completas, se puede utilizar el operador dos puntos como ndice. >>a=[1 2 3;4 5 6;7 8 9]; >>a(1,2) >>a([1 3],2) >>B=a(:,1) >>b=a(1,:) >>k=[a(1,1:2),a(3,3)]; >>H=[a(1,:);a(3,:)] Elemento de a ubicado en la fila 1 y la columna 2 Elementos de la columna 2 de a ubicados en las filas 1 y 3 Asigna a B la primera columna de a. Asigna a b la primera fila de a. Matriz (2*3) construida con la primera y la tercera filas de a. Matriz (2*3) construida con la primera y la tercera filas de a.

Funciones Gran parte de la potencia de Matlab reside en su extensa librera de funciones. Para explorarla se puede utilizar la orden help. Por si sola da una lista de los directorios de funciones instalados en el sistema. >>help det informacin sobre la funcin det

Para buscar funciones que realizan una determinada tarea se puede usar la orden lookfor, que busca en la librera una palabra clave. Es un error comn teclear los nombres de las funciones en maysculas. Hay que tener en cuenta que Matlab distingue entre maysculas y minsculas y que todas las funciones siempre llevan el nombre en minsculas. Polinomios En Matlab los polinomios se ingresan como vectores: p(x)=x^2+3x+2 se ingresa como >>p=[1 3 2] Observe que se ingresan los coeficientes del polinomio comenzando por el de mayor orden hasta el de menor orden. >>q=[4 0 5 1] Ejemplo Sumar los polinomios: >>p=[3 2 1]; >>q=[1 3]; >>suma=p+q >>p=[3 2 1]; >>q=[0 1 3]; >>result=p+q >>resta=p-q q(x)=4x^3+5x+1 p(x)=3x^2+2x+1 ERROR q(x)=6x+3 Los vectores que almacenan los polinomios deben tener las mismas longitudes. En la resta se conservan las mismas reglas que en la suma pero con el signo menos.

Para sumar polinomios los vectores deben tener el mismo tamao.

La multiplicacin polinmica es ejecutada por la funcin CONV la cual hace la convolucin de los dos arreglos. La convolucion es una operacin matemtica que opera sobre sucesiones; en el caso de dos sucesiones hechas a base de coeficientes, la sucesin resultante representa los coeficientes del polinomio que se obtiene cuando se multiplican los polinomios originales; por eso el nombre de CONV. La multiplicacin de ms de dos polinomios requiere el uso repetido del comando conv. La divisin de polinomios se efecta con la funcin deconv. Cuando el resultado de la divisin es incompleto se debe a la aparicin de un residuo. >>mutiplic=conv(p,q) >>[div,resd]=deconv(p,q) el resultado obtenido en la variable div es el cociente de la divisin, y el resultado obtenido en resd ser el residuo.

Matlab ofrece un comando para derivar polinomios. Si se desea la derivada de p respecto a x: >>derivada=polyder(p) Matlab tambin permite evaluar polinomios para un valor o unos valores determinados de sus argumentos: evaluar el polinomio p para x=0,1,2,3,4 >>x=[0:1:4];

>>valores=polyval(p,x) Para encontrar las races de un polinomio se utiliza el comando ROOTS >>raizq=roots(q) >>qr=poly(raizq) Matlab permite reconstruir un polinomio cuando se conocen sus races.

Guardar el espacio de trabajo Las matrices o vectores que usted ingrese en el espacio de trabajo, pueden ser guardadas. Para esto utilice el comando SAVE NOMBRE, donde nombre indica el nombre deseado para el espacio de trabajo. Tambin puede salvar el espacio de trabajo con el comando SAVE WORKSPACE AS... que se encuentra en la barra de men. Ejemplo: Primero que nada, borrar los datos que se tengan: Ahora ingresar dos matrices: Para guardar estas matrices se hace: >>a=[1 2;3 4]; >>b=[5,1;6,2]; >>save ensayo >>clear

y las matrices a y b quedaran guardadas en el archivo ensayo.mat Recuperar un espacio de trabajo guardado Las matrices y vectores que han sido guardados en un espacio de trabajo pueden ser recuperadas mediante el comando LOAD NOMBRE, donde NOMBRE indica el nombre con el cual se guard el espacio de trabajo que se desea recuperar. Ejemplo: Cargar el espacio de trabajo que se guard >>load ensayo Para estar seguros de que se ha recuperado el espacio de trabajo correcto se escribe el comando: >>whos Guardar la sesin Guardar la sesin significa que todo lo que usted ha escrito queda almacenado en un archivo que podr recuperar cuando lo desee. Con esta opcin usted guardara hasta los errores que cometa y todos los mensajes que aparecen en la pantalla. Para realizar esto se utiliza el comando DIARY. Ejemplo: Guardar en un archivo todo lo que se escribir a continuacin. >>diary viejito En el archivo viejito quedara guardado lo que se escriba desde aqu hasta que aparezca diary off >> matriza=[1,2,3;4,5] >>a=[1 2 3] >>a*b >> b=[4;5;6]; >>c=a*b >> diary off Hasta aqu quedara guardado lo que se ha escrito, con todo y errores. Adems quedan los mensajes de error que entrega el programa.

Usted puede seguir guardando texto en viejito. Solo escribiendo de nuevo diary on y luego cuando no quiera guardar mas texto escriba diary off. Recuperar la sesin Ahora bien, lo que usted ha guardado con el comando diary, lo puede recuperar solo abriendo el archivo viejito desde un editor de texto. Lo que obtendr ser lo siguiente: a=[1,2,3;4,5] ??? All rows in the bracketed expression must have the same number of columns. a=[1 2 3] a= 123 a*b ??? Undefined function or variable b. b=[4;5;6]; c=a*b; diary off

TALLER 2. GRFICAS EN MATLAB Objetivos Identificar las funciones bsicas de Matlab para hacer grficas en 2 y 3 dimensiones. Aplicar Matlab en la elaboracin de grficos. Algunas funciones bsicas para graficar empleando Matlab Matlab es un programa que cuenta con poderosas subrutinas para realizar grficas en dos o tres dimensiones. >>plot(x,y,opciones de formato) >>figure(n) >>xlabel(eje x) >>ylabel(eje y) >>title(titulo) >>grid on >>axis ([xmin xmax ymin ymax]) >>subplot(n,r,p) plot: Genera una grfica de y en funcin de x, con el formato especificado figure: Genera una ventana de figura n xlabel: Ttulo eje x ylabel: Ttulo eje y title: Ttulo de la grfica grid: Marca las lneas de divisin axis: Establece las escalas de los ejes de la grfica subplot: Permite hacer varias grficas en una figura. Divide la figura en una matriz de n reglones por r columnas, y coloca la grfica en la posicin p. hold: Detiene una grfica, permitiendo agregar ms curvas, liberndola cuando aparece nuevamente el comando hold. plotyy: Genera una grfica con dos ejes (x1 vs. y1, x2 vs. y2) mesh: Grafica una malla en 3 dimensiones loglog: Genera una grfica de x vs. y, con escala logartmica en ambos ejes semilogx: Genera una grfica de x vs. y, con escala logartmica en el eje x semilogy: Genera una grfica de x vs. y, con escala logartmica en el eje y loglog: Genera una grfica de x vs. y, con escala logartmica en ambos ejes Meshgrid: Transforma los vectores x,y en una malla para graficar en 3 dimensiones

>>hold on . >>hold off >>plotyy(x1,y1,x2,y2) >>mesh(z) >>loglog(x,y) >>semilogx(x,y) >>semilogy(x,y) >>loglog(x,y) >>[xx,yy] = meshgrid(rango x, rango y)

Grficas simples Graficar la funcin y=seno(x), para 0x=[0.0:.1:2*pi]; >>y=sin(x); Definir el eje de las abscisas Evaluar para cada valor de x

>>plot(x,y) Construir la grfica >>title('Seno') >>xlabel('Abcisa') >>ylabel('Ordenada') Recuerda el paraboloide hiperblico la famosa silla de montar del clculo? La funcin del paraboloide hiperblico es: (y^2/a^2)-(x^2/b^2)=cz Es decir: z=((y^2/a^2)-(x^2/b^2 ))/c >>a=2; >>b=3; >>c=4; >>x=[-7.5:.5:7.5]; >>y=x; >>[X,Y]=meshgrid(x,y); >>Z=((Y.^2./a^2)-(X.^2./b^2 ))./(c); >>mesh(X,Y,Z) Ahora bien, tuvo problemas para realizar la grfica? Actividades:

1. Graficar las siguientes funciones en (i) una sola grfica y en (ii) una figura con tres grficas, para un rango de tiempo de 0 a 10. a) y1 = 2 cos(t) b) y2 = sen(t) c) y3 = cos(t) + sen(t) 2. Representar en una sola grfica las siguientes funciones para un rango de tiempo de 0 a 10. a) y1 = 50 cos(t) b) y2 = sen(t) c) y3 = cos(t) + sen(t) 3. Graficar las siguientes funciones en tres dimensiones para x,y [4, 4] a) z1 = exp(16 - x2 - y2) b) z2 = x2 + y2 9 c) z3 = x3 2xy2 - x2 - y2 d) z4 = exp(-x2 + y2) e) z5 = x exp(-x2 - y2)

TALLER 3. PROGRAMACIN EN MATLAB Hasta ahora se ha trabajado en el espacio de trabajo de Matlab, ahora se ver como hacer un programa. Los programas en Matlab se escriben en un lenguaje especial llamado Lenguaje m el cual se compone de los comandos de Matlab. Es decir no es necesario ser un programador experto para realizar programas con Matlab. Los programas se escriben en algn editor de texto y se les asigna un nombre con la extensin .m. Luego los programas se pueden ejecutar desde el espacio de trabajo ubicando el directorio de trabajo y tecleando el nombre del programa. Ejemplo: Realizar el programa que grfica la silla de montar Primero se debe abrir un editor de texto. Matlab tiene su propio editor al cual se puede accesar con los comandos: FILE NEW M-FILE a los cuales se accede desde la barra de men. El programa escrito queda de la forma: %Programa para realizar el grfico de la silla de montar a=10; %Se definen las constantes b=10; c=1; x=[-7.5:.5:7.5]; %Se delimita el rango para el eje x y=x; %El rango de y ser el mismo de x [X,Y]=meshgrid(x,y); %Se crea un espacio tridimensional para graficar Z=((Y.^2./a^2)-(X.^2./b^2 ))./(c); %Se evalua la variable z mesh(X,Y,Z) %Se grafican los resultados view(-30,-160) %Se ubica el punto de visualizacin %Fin del programa Con % se ponen comentarios. Cualquier duda sobre los comandos utilizados consulte con help. Ejemplo: Programa para hacer una cara feliz %Programa para hacer una cara feliz clear,clf,hold off dt=pi/20 t=0:dt:2*pi x=cos(t);y=sin(t); axis('off'),hold on plot(x,y) hold on for k=0.8:-0.05:0.05 plot(k*0.1*x-0.3,k*0.15*y+0.1) plot(k*0.1*x+0.3,k*0.15*y+0.1) end s1=3*pi/2-1.1; s2=3*pi/2+1.1 s=s1:dt:s2; xs=0.5*cos(s);ys=0.5*sin(s); plot(xs,ys)

hold off %Grafica de una esfera en tres dimensiones clear, clf axis ([-1.5, 1.5, -1.5, 1.5, -1.3, 1.3]) view ([1 -0.5 0.31]) caxis([-0.8 1.5]) colormap hot hold on L=[0.5, 0.3, 0.7]; V=[1, 1, 1] [x,y,z]=sphere(20); [xn,yn,zn]=surfnorm(x,y,z); % r=specular(xn,yn,zn,L,V); r=diffuse(xn,yn,zn,L); surfc(x,y,z,r) shading interp Control de flujo El control de flujo es extremadamente poderoso porque este hace que clculos pasados sirvan para realizar clculos futuros. Matlab ofrece tres estructuras para la toma de decisiones o control de flujo: Loop PARA (for) En un loop for un grupo de comandos es ejecutado un nmero predeterminado de veces. La forma general es: for x=arreglo comandos end Ejemplo: Programa que calcula el seno de x para x entre 0 y pi con intervalos de 1 %Programa que ejemplifica la utilizacin del FOR for n=1:pi x(n)=sin(n); end %Fin del programa Ejemplo: Activacin del reloj y retardo insertado por un FOR %Ejemplo de activacin del reloj y retardo insertado por un FOR t=[0:1:8000]; %se crea un vector tiempo1=clock; %se asigna el primer tiempo h=sqrt(t); %calcula un vector h como la raiz cuadrada del %vector t tiempo2=clock; %se asigna el segundo tiempo %el tiempo de ejecucin fue: ejecucion1=etime(tiempo2,tiempo1) %ahora utilizando el for tiempo3=clock; for i=1:8001 j(i)=sqrt(t(i)); end tiempo4=clock; ejecucion2=etime(tiempo4,tiempo3)

%Fin del programa Tarea: Resuelva el mismo problema utilizando los comandos tic y toc Loop MIENTRAS (while) Las instrucciones se ejecutan cclicamente mientras se cumpla la condicin. while condicin instruccciones end Condicional if Las instrucciones1 se ejecutan si se cumple la condicin 1, en caso contrario, si se cumple la condicin 2 se ejecutan las instrucciones 2, si no se cumple ninguna de estas condiciones se ejecutan las instrucciones 3. if condicion1 instruccciones1 elseif instruccciones2 else instruccciones3 end Ejemplo en el que se utiliza if y while: %Programa para sumar dos polinomios sin importar su orden. home disp('programa para sumar polinomios') disp(' ') disp('presione enter para continuar') pause k=1; while k=1 home p1=input(' entre polinomio numero 1:'); %sirve para ingresar datos p2=input('entre el polinomio numero 2:'); home disp('el polinomio numero 1es:') p1 disp(' ') disp('el polinomio numero 2 es:') p2 disp(' ') disp('presione enter para continuar') pause lp1=length(p1); lp2=length(p2); k=lp1-lp2; if lp1==lp2 pt=p1+p2; elseif lp1>lp2 p2=[zeros(1,k),p2]; pt=p1+p2; else p1=[zeros(1,-k),p1];

pt=p1+p2; end home disp('la suma total es') pt disp(' ') k=input('Si desea otra suma teclee 1 sino teclee 0'); pause end %este es el end del while %Fin del programa No tiene muchos comentarios para que lo piense usted mismo, observe el despliegue en la pantalla. Funciones m Matlab puede ejecutar una sucesin de instrucciones almacenadas en archivos de disco con la extensin " .m". Por ello la mayora de las funciones de Matlab se llaman funciones m. Un ejemplo de estas funciones es roots. Busque esta funcin y observe el programa. Gran parte del trabajo con Matlab ser el de crear y refinar archivos .m. Usted puede crear sus propias funciones, de hecho cuando usted hace un programa y lo guarda con la extensin .m este queda como una funcin m la cual puede ser ejecutada con solo escribir su nombre. Las variables en un archivo de instrucciones son globales y, por tanto, cambiarn los valores del workspace. Ahora bien, el primer grupo de comentarios que usted escriba en la funcin saldr en la pantalla cuando usted le pregunte a help por esta funcin. Ejemplo: Realizar una funcin m que al ingresarle un grupo de datos calcule la media y el mximo valor del arreglo: function [media,maximo]=medmax(datos) %MEDMAX Calcula la media y el mximo de un arreglo. %El arreglo de datos se ingresa en forma de vector fila o columna. %Este es el primer ejemplo de una funcin. %Esta primera parte de comentarios aparecer cuando se %invoque help medmax. %Ejemplo: %[med,max]=medmax(vector) %Calcula la media y el mximo de los datos almacenados en vector, %los resultados se encuentran en med y max respectivamente. %Observe que estos comentarios no aparecen cuando se invoca %help medmax por que ya se dej un rengln en blanco. % n=length(datos); media=sum(datos)/n; maximo=max(datos); % %Termina la funcin Solucin de ecuaciones diferenciales ordinarias Matlab permite resolver numricamente una ecuacin diferencial o un sistema de ecuaciones. Para ello se pueden utilizar las frmulas de un mtodo numrico como Runge-Kutta programando su algoritmo, o utilizar un mtodo implcito de Matlab como ode23. Comando ode23: Para utilizar el comando ode23 se debe crear primero un archivo m que contenga la ecuacin diferencial de orden n como un conjunto de n ecuaciones de primer orden.

Simulacin dinmica del cambio de nivel en un tanque

El nivel del lquido en tanque cambia de acuerdo con

A1donde

dh1 = q1 1 h1 dt

A1 = superficie del tanque, m2 h1 = nivel del lquido en el tanque, m q1 = caudal de entrada, m3/s q2 = caudal de salida, m3/s = coeficiente de descarga, m2.5/s Tomando A1 = 1.0 m2, q1 = 0.05 m3/s, = 0.05 m2.5/s y como condicin inicial a t = 0 h1 = 0.0 m Trace una grafica del nivel contra el tiempo para los primeros 1000 segundos y desde la grfica determine cul es el valor de estado estacionario para el nivel. Cunto tiempo toma para alcanzar el estado estacionario. Solucin: Primero cree un archivo-m llamado tanque_1.m que contenga la ecuacin diferencial function hdot = tanque_1(t,h) hdot=0.0;a1=0.05;A1=1.0;q1=0.05; hdot=(q1-a1*sqrt(h))/A1;

& dh ). (Observe que hdot corresponde a h = dtAhora cree otro archivo-m llamado ejemplo1.m que contenga la solucin de la ecuacin diferencial. t0=0.0;tf=1000;h0=0.0; [t,h]=ode23(@tanque_1,[t0 tf],h0); plot(t,h) xlabel('tiempo,segundos'),ylabel ('Nivel del lquido,m') title('Figura(1):Nivel del lquido en el tanque') grid on Ahora desde matlab ejecute el programa, observe la figura y responda las preguntas planteadas: >>ejemplo1

TALLER 4. FUNCIONES DE TRANSFERENCIA Clculo de las races de una ecuacin caracterstica Para calcular las races de un polinomio se define un vector con todos coeficientes del mismo, desde el de mayor orden hasta el trmino independiente, y se aplica el comando roots a dicho vector.s 3 + 5s 2 + 8s + 3 = 0

p=[1 5 8 3]

roots(p)

Tambin se puede hacer lo mismo directamente, sin definir ningn vector: roots([1 5 8 3])Representacin de Sistemas Dada una funcin de transferencia H(s) el sistema queda definido, para Matlab, con la introduccin del numerador y el denominador de la funcin. Dado que estos son polinomios en potencias de s ser suficiente con introducir los coeficientes de estos polinomios, lo cual se har en forma de vectores fila, ordenando los coeficientes por orden de potencias descendentes. Ejemplo: Sea el sistema H ( s ) =3s 2 + 2 3s 3 + 5 s 2 + 2 s + 1

Se entra este sistema a Matlab, utilizando el numerador y el denominador. >>num=[3 0 2]; >>den=[3 5 2 1]; Respuesta temporal de una funcin de transferencia Para visualizar grficamente la respuesta temporal a una entrada escaln e impulso se emplean los comandos step(num,den) e impulse(num,den), definiendo los vectores de los polinomios numerador y denominador. Ejemplo: dado el sistema H ( s ) = num=[1,2,3]; den=[1,3,3,1]; step(num,den)s 2 + 2s + 3 ( s + 1)3

=

s 2 + 2s + 3 s + 3s 2 + 3s + 13

se procede:

Si la entrada es un escaln de valor 5 y se desea ver la salida hasta un tiempo de 5 segundos: step(5*num,den,0:0.1:5) impulse(num,den)

Sistemas de segundo orden Para sistemas de segundo orden la funcin de transferencia es de la forma:C ( s)

R( s)

=

2 n 2 s 2 + 2n s + n

Obtener la respuesta transitoria de la funcin de transferencia polinmica de segundo orden con un escaln y un impulso como entrada:C ( s)

R(s)

=

1 s + 0.8s + 12

num=1; den=[1,.8,1]; step(num,den)

En el caso de una entrada impulso, se obtiene: impulse(num,den)

Conversin de funciones de transferenciaMatlab permite que los distintos modelos puedan ser convertidos entre s, de modo que, por ejemplo, se pueda obtener la forma factorizada de la funcin de transferencia cero-polo-ganancia, partiendo de la forma de cociente de polinomios. La funcin residue convierte la funcin de transferencia polinmica:H (s) = am s m + am 1 s m 1 + L + a1 s + a0 bn s n + bn 1 s n 1 + L + b1 s + b0

en la funcin transferencia cero-polo-ganancia:H (s) =

r r1 r + 2 + L + n + k ( s) s p1 s p2 s pn

>>[r,p,k]=residue(num,den) Esta instruccin determina los vectores r, p, y k de los valores de residuo (r1, r2,..., rn), los polos (p1, p2,..., pn) y los trminos directos de la expansin de fracciones parciales. Las entradas son los coeficientes de los polinomios (b0, b1,..., bn-1), numerador de la expresin polinmica y (a0, a1,..., am-1), denominador de la expresin polinmica. Ejemplo: Sea el sistema H ( s ) = >>num=[3 0 2]; >>den=[3 5 2 1]; >>[r,p,k]=residue(num,den) r r=3s 2 + 2 3s 3 + 5 s 2 + 2 s + 1

1.0000 -0.0000 2.0000 p p= -1.0000 -1.0000 -1.0000 Por lo tanto la solucin es: H ( s ) =

1 2 + s +1 s +1

La funcin tf2zp convierte la funcin de transferencia polinmica en la funcin transferencia ceropolo-ganancia:H (s) = k

( s z1 )( s z2 )L( s zn ) ( s p1 )( s p2 )L( s pn )

Esta instruccin determina los ceros (z1, z2, , zn), los polos (p1, p2,..., pn) y la ganancia correspondiente (k) de la funcin de transferencia del tipo cero-polo-ganancia. Las entradas son los coeficientes en orden descendente de potencias de s del numerador y denominador de la funcin de transferencia polinmica a convertir. >>[z,p,k]=tf2zp(num,den) z= -1.0000 + 1.4142i -1.0000 - 1.4142i p= -1.0000 -1.0000 + 0.0000i -1.0000 - 0.0000i k= 1 Por tanto la solucin es

La funcin zp2tf convierte la funcin transferencia cero-polo-ganancia en la funcin de transferencia polinmica: Esta instruccin determina los vectores num y den de los coeficientes en orden descendente de potencias de s del numerador y denominador de la funcin de transferencia polinmica a obtener. Las entradas son los vectores z, de los ceros (z1, z2, , zn), p, de los polos (p1, p2,..., pn) y la ganancia correspondiente (k) de la funcin de transferencia del tipo cero-polo-ganancia. z=[-1.0000 + 1.4142i;-1.0000 - 1.4142i]; p=[-1;-1;-1]; k=1; [hnum,hden]=zp2tf(z,p,k) hnum = 0 1.0000 2.0000 3.0000 hden = 1331

Productos de funciones de transferenciaLos productos de polinomios se obtienen aplicando el comando conv.

n=[1 10] temp=conv([1 7],[1 15 35]) d=conv(temp,[1 2 0]) step(n,d) Las cuatro lneas anteriores se pueden poner en una nica orden: step([1 10],conv(conv([1 7],[1 15 35]),[1 2 0]))

Definicin de funciones de transferenciaSi se posee la Control System Toolbox versin 5.2 o superior, es posible definir las funciones de transferencia con el comando tf. Despus se pueden emplear todos los comandos aprendidos. G=tf([4],[1 2 0]) impulse(G) step(G) rlocus(G) bode(G) margin(G) La principal ventaja es que se pueden multiplicar directamente las funciones de transferencia: Gc=tf(5.6*[1 3],[1 5.4]) step(Gc*G)

TALLER 5. INTRODUCCIN AL MANEJO DE SIMULINKSimulink es una herramienta de Matlab para modelado, simulacin y anlisis de sistemas dinmicos, soporta tanto sistemas lineales como no lineales: en tiempo continuo, muestreados, hbridos y sistemas multifrecuencia (contienen sistemas muestreados a diferente frecuencia).

Ejecutando en la lnea de comando de MatLab >>simulink se abrir la librera de Simulink, apareciendo (sobre el fondo de MATLAB) el men principal de Simulink.Abriendo una ventana de simulacin New y usando el ratn, se puede ir trasladando y conectando bloques de la librera de simulink en la ventana de trabajo, para construir el sistema a simular. Cada uno de estos bloques tiene una serie de parmetros ajustables que pueden modificarse pulsando dos veces el botn izquierdo del ratn sobre el bloque seleccionado.

Biblioteca de fuentes (Sources). La biblioteca de fuentes dispone de gran cantidad de elementos que pueden ser utilizados como seales de entrada para los sistemas habituales. siendo las ms usuales: a) Band-Limited White Noise: Ruido blanco en un sistema continuo. b) Chirp Signal: Genera una onda senoidal de frecuencia creciente. c) Clock: Visualiza y proporciona el tiempo de simulacin. d) Constant: Genera un valor constante e) Digital Clock: Genera tiempo de simulacin en el intervalo de muestreo especificado. f) From File: Lee datos de un archivo. g) From Workspace: Lee datos de una matriz definida en el espacio de estados. h) Pulse Generator: Genera pulsos a intervalos regulares. g) Random Number: Genera nmeros aleatorios distribuidos normalmente. h) Repeating Sequence: Genera una seal arbitraria repetible regularmente. i) Signal Generator: Genera diferentes formas de onda. j) Sine Wave: Genera una onda senoidal. k) Step Input: Genera una funcin escaln. l) In1: Seal de entrada (de la extinta Connections). Biblioteca de salidas (Sinks). El botn Sinks Incluye bloques que visualizan o escriben su salida: a) Display: Visualiza numricamente la seal de entrada. b) Scope: Visualiza seales en ventanas de figura Matlab (con el escalado que se le indique). c) Out1: Seal de salida (de la extinta Connections). d) Stop Simulation: Para la simulacin cuando la entrada es distinta de cero. e) To File: Escribe datos en un archivo. f) To Workspace: Escribe datos en una matriz del espacio de trabajo. g) XY Graph Scope: Visualiza grficas X-Y de seales en la ventana de figuras de MATLAB. Biblioteca de Sistemas Continuos. El botn Continuous incluye bloques que describen funciones continuas estndar (algunas de la extinta Linnear): a) Derivative: Genera la derivada respecto al tiempo de entrada. b) Integrator: Integra una seal. c) State-Space: Implementa un sistema lineal en el espacio de estados. i) Transfer Fcn: Implementa una funcin de transferencia lineal. j) Zero-Pole: Implementa una funcin de transferencia especificada en trminos de polos y ceros. Biblioteca Matemtica (Math). El botn Math incluye bloques que permiten la realizacin de operaciones matemticas. Solamente indicaremos las que anteriormente se encontraban en otras libreras: a) Gain: Ganancia (multiplica por una constante). b) Slider gain: Ganancia mediante corredera. c) Sum: comparador (sumador con signo).

Bibliotecas Seales y Sistemas (Signals & System) y Funciones y Tablas (Functions & Tables). Contiene, entre otras muchas: a1) Demux: Separa una seal vectorial en sus seales de salida. b1) Mux: Combina algunas lneas de entrada en una lnea vectorial. a2) Fcn: Permite realizar funciones con variables del sistema b2) MATLAB Fcn: Permite usar funciones de MATLAB.Se van a realizar algunas prcticas con lo visto hasta ahora, aadiendo lo que vaya siendo necesario en cada caso.

Ejemplo 1.En este ejemplo, se trata simplemente de colocar una entrada mediante un generador de seales, y una salida de tipo scope, y realizar la simulacin (esto es, en este caso, la planta a simular es simplemente una funcin de transferencia unitaria). Para ello, se seguirn los siguientes pasos: a) Colocar los elementos de las bibliotecas Source y Sinks elementos de la figura y unirlos mediante una flecha.

b) Ajustar el generador de seales con los valores mostrados en la figura.

c) Ajustar el rango del visor (Scope) tal y como se indica en la figura.

d) En el men Simulations, ajustar a los parmetros indicados en la figura:

e) En ese mismo men Simulations comenzar con la simulacin (Start o Ctrl-T). Si el visualizador no est en pantalla, llamarlo pulsando dos veces sobre su smbolo, hasta obtener algo semejante a la figura.

Se pueden repetir las simulaciones variando la forma de la seal del generador, para experimentar las posibles opciones, as como variar los rangos de los visualizadores.

Ejemplo 2.Ahora se trata de observar la funcin del multiplexor y como almacenar la salida en variables vectoriales de MATLAB. a) En primer lugar se monta el esquema de la figura, eligiendo dos entradas para el multiplexor, y un valor de 2 para la ganancia del bloque amplificador. Elegiendo la misma fuente senoidal que para el caso del ejemplo 1. La variable de salida se llamara sal corresponde a un bloque To Workspace (sublibreria Sinks): b) Una vez preparado el sistema, se tendra -Stop time: 2 que ajustar los parmetros de la -Solver options: simulacin, que ahora sern: Type: Fixed-step ode4 (Runge-Kutta) Tambin se ajustar el Scope para un rango horizontal de 2 y vertical de 2. c) Se iniciar la ejecucin, obteniendo la siguiente salida

Se puede llamar a la variable de MATLAB sal, tecleando su nombre, para comprobar que se han almacenado los valores en una matriz de dos columnas (la segunda de valor doble que la primera), por efecto de los elementos Gain y Mux.

Subsistemas.Se va a utilizar la posibilidad que Simulink ofrece para crear subsistemas nuevos a partir de bloques convencionales, lo que aporta gran potencia ya que permite el diseo de sistemas jerarquizados. Para ello, se va a crear un subsistema a partir del ejemplo 2, incluyendo el multiplicador, ganancia y multiplexor en un nico bloque.

a) Sobre el bloque completo, marcar con el b) Seleccionar la opcin Create Subsystem del botn derecho del ratn el rea que incluya los men Edit de Simulink. elementos que se quiere incluir en el subsistema.

Se puede deshacer el subsistema eligiendo Undo create Subsystem en el mismo men. Para ver el contenido del subsistema se puede pulsar dos veces sobre el mismo. Los subsistemas pueden enmascararse para conseguir una mayor facilidad en la introduccin de datos. Esto se ver en un apartado posterior.

Modelado de Ecuaciones.En este apartado se va a ver como se pueden modelar ecuaciones utilizando Simulink.

Ecuaciones algebraicas.Se va a construir un sistema que tome como entrada grados Fahrenheit y los convierta en Celsius (como entrada colocaremos una onda senoidal para observar un amplio rango (la salida ser un Scope con amplitud suficiente para visualizar todos los resultados). Se sabe que la ecuacin que realiza el cambio es la siguiente: Se puede construir el siguiente sistema:

Obteniendo la siguiente salida (para una entrada de amplitud 50 y frecuencia 1

Ecuacin diferencial.Se va ahora a simular la siguiente ecuacin diferencial simple Esto se puede hacer de la siguiente forma

Donde, la salida puede observarse en la figura

Funcin de Transferencia.Por ltimo, es fcil ver que la funcin de transferencia asociada al sistema anterior (definida como el cociente de las transformadas de Laplace de la salida dividida por la entrada) es:

El sistema que se puede simular es el siguiente:

cuya salida coincide con la observada en la salida anterior.

TALLER 6. LAZO CERRADO Respuesta temporal de un sistema compensado Para obtener la respuesta temporal de un sistema compensado, es decir, dentro de un lazo de realimentacin negativa, se puede emplear el comando feedback para definir la funcin de transferencia en lazo cerrado.

Los parmetros de este comando son el numerador y denominador de la funcin de transferencia directa y el numerador y denominador de la funcin de transferencia de realimentacin H(s). Por ejemplo:

n=[4] d=[1 2 0] nc=5.6*[1 3] dc=[1 5.4] [nlc,dlc]=feedback(conv(nc,n),conv(dc,d),1,1) step(nlc,dlc) En cambio, el lugar de las races del sistema compensado se debe calcular con la funcin de transferencia en lazo abierto: rlocus(conv(nc,n),conv(dc,d))

Ejercicios Introducir una funcin de transferencia G1(s) de un sistema de segundo orden: K=2.5, = 0.1 y n = 10 rad/s y una funcin de transferencia G2(s) de un sistema de primer orden: K=2 y =0.5s. Obtener la respuesta temporal de G1 ante un impulso y un escaln.>>g1n=[2.5] >>g1d=[0.01 0.02 1] >>g2n=[2] >>g2d=[0.5 1] >>impulse(g1n,g1d) Numerador de G1 Denominador de G1 Numerador de G2 Denominador de G2 Respuesta de G1 ante un impulso

25 20 15 10 Amplitude 5 0 -5 -10 -15 -20 0 1

Impulse Response

2

3 Time (sec)

4

5

6

Representar en una misma grfica las respuestas temporales a una entrada escaln de G1 y G2. >>step(g1n,g1d); >>[y1, x1,t] = step(g1n,g1d); >>hold on; >>step(g2n,g2d,t); >>hold off;4.5 4 3.5 3 Amplitude 2.5 2 1.5 1 0.5 0 0 1 2 3 Time (sec) 4 5 Step Response

Obtener la funcin de transferencia en lazo cerrado de acuerdo con la siguiente figura, y determinar la respuesta ante una entrada tipo impulso: >>[g4n, g4d] = feedback (g1n, g1d, g2n, g2d) >>impulse (g4n, g4d); >>roots(g4d) 1.25s + 2.5 0.005s + 0.02s 2 + 0.52 s + 6 Sistema inestableg4 =3

2.2319 +11.6961i 2.2319 -11.6961i -8.4638

250 200 150 Amplitude 100 50 0 -50 -100 -150 0 0.2

Impulse Response

0.4

0.6 0.8 Time (sec)

1

1.2

TALLER 7. SIMULINK EN CONTROLEn los siguientes subapartados se realizar un estudio del comportamiento de los sistemas analgicos de segundo orden, ante diversos tipos de excitacin, usando Simulink.

Sistemas de Segundo OrdenPara comenzar se estudiar la respuesta de un sistema analgico de segundo orden a una entrada tipo escaln unitario, tal como se indica en la figura 1. La seal de entrada es generada por un bloque Step input (sublibrera Sources), para el que se fijar a 1 segundo el instante en que tiene lugar el escaln. El sistema de segundo orden es un bloque Transfer Fcn (sublibrera Continuous) en el que se tienen que fijar los coeficientes del polinomio numerador y los del denominador. Si, por ejemplo, se pretende simular un sistema del tipo,

con n = 1 y = 0;5, se tendr que fijar el numerador a [1] y el denominador a [1 2*0.5*1 1]. Finalmente, para visualizar la seal de salida, se usar el bloque Scope (sublibrera Sinks).

Figura 1: Sistema de segundo orden Para realizar la simulacin se debe seleccionar la opcin Simulation. Antes de pulsar en start, se deben ajustar los parmetros de la simulacin: start time (0.0), stop time (19.94), max step size (0.02), min step size (0.01) y tolerance (0.001). Tras estos ajustes ya se puede realizar la simulacin y visualizar en el scope la seal de salida, que debe ser oscilatoria y amortiguada, por tratarse de un sistema subamortiguado ( < 1). Al abrir el bloque Scope se debern ajustar en el visualizador los rangos vertical y horizontal, que se fijaran a 2 y 20 respectivamente. La seal de salida y(t) puede transferirse en forma muestreada (y(nT), donde T es el periodo de muestreo) al entorno de MatLab usando el bloque To Workspace (sublibreria Sinks), en el que debe fijarse el nombre de la variable MatLab de salida (yout) ), se debe verificar que la variable sea array. Ya en lnea de comando de MatLab, puede visualizarse la seal de salida mediante, >>plot(tout,yout); Determinar, la sobreoscilacin y el tiempo de establecimiento al 2%, y comparar con las predicciones tericas. Repetir lo anterior para = 1 (sistema crticamente amortiguado) y = 1.5 (sistema sobreamortiguado). Comentar los resultados superponiendo en una sola grfica las respuestas escaln de los tres tipos de sistema.

Funciones de Transferencia con CerosA continuacin se comprobar el efecto de la introduccin de ceros en la funcin de transferencia. Si al sistema de segundo orden del apartado anterior ( = 0.5 y n = 1) se le aade ahora un cero en z0 = -1/a, la funcin de transferencia ser:

Comprobar el efecto de dicho cero para a = 1, 0.5, 0.2; 0.1; 0.05. Para qu valores de a puede despreciarse el efecto del cero?

Sistemas RealimentadosUn amplio rango de sistemas, entre los que se encuentran diversos tipos de sistemas de control, presenta una topologa con realimentacin. Como ejemplo de sistema realimentado se trazar el sistema realimentado de la figura 2. Siguiendo las indicaciones del apartado anterior, se medirn la sobreoscilacin y los errores de posicin y velocidad. Comprobar con las predicciones tericas.

Figura 2: Sistema de segundo orden con realimentacin. Para medir el error de velocidad, es necesario generar una seal de entrada tipo rampa unitaria, que puede obtenerse mediante el generador Rampa con una pendiente igual a 1. A continuacin se comprobar el efecto que produce en el sistema anterior la introduccin de un controlador PI (ver figura 3),

con kp = ki = 1. Medir de nuevo la sobreoscilacin y los errores de posicin y velocidad (usando entradas tipo escaln unitario y rampa unitaria). Modificar los valores de los parmetros del controlador para reducir la sobreoscilacin.

Figura 3: Sistema realimentado con controlador PI.

TALLER 8. MTODOS GRFICOS Lugar de las races Se denomina lugar de races a la grfica de la posicin de las races de la ecuacin caracterstica de un sistema, es decir el denominador de la funcin de transferencia de lazo cerrado, con la variacin de cero a infinito de algn parmetro, normalmente la ganancia de la funcin de transferencia de la rama directa.De acuerdo con lo sealado, al resultar la funcin de transferencia de lazo cerrado la forma:C (s) R( s) = G(s) 1 + G( s) H (s)

Por lo tanto la ecuacin caracterstica es: 1 + G ( s ) H ( s ) = 0 o bien: G ( s ) H ( s ) = 1 Las races de la ecuacin caracterstica determinan tanto la estabilidad del sistema como la forma de la respuesta del mismo. La funcin rlocus produce la grfica del lugar geomtrico de races de la funcin de transferencia de lazo abierto:

G ( s) H ( s) =

k b0 s n + b1 s n 1 + L + bn 1 s + bn a0 s + a1 sm m 1

(

)

+ L + am 1 s + am

en esta se tiene un polinomio numerador (num) y un polinomio denominador (den) y una ganancia K. Instruccin: [r,k] = rlocus (num,den,m) Esta instruccin determina los vectores r y k de las races (r) y las ganancias correspondientes (k) de la funcin de transferencia definida por los vectores num y den, de los coeficientes de los polinomios del numerador y denominador de la funcin de transferencia de lazo abierto G(s)H(s) y la variable de entrada opcional m, un vector de ganancias de entrada especificadas por el usuario. El comando rlocfind permite sealar un punto del lugar de las races y calcula la ganancia que sita los polos en lazo cerrado en dicho punto. Adems devuelve la posicin de todos los polos en lazo cerrado para esa ganancia. [k,p]=rlocfind(num,den) Obtener la grfica del Lugar Geomtrico de Races del siguiente sistema de realimentacin unitaria:

num=[1,2,3]; den=[1,3,3,1]; [r,k]=rlocus(num,den) r= -1.0000 -1.0000 + 0.0000i -1.0000 - 0.0000i -1.4169 -0.8082 + 0.3509i -0.8082 - 0.3509i -1.5631 -0.7570 + 0.4633i -0.7570 - 0.4633i -1.7735 -0.7023 + 0.6098i -0.7023 - 0.6098i -2.0965 -0.6576 + 0.7961i -0.6576 - 0.7961i

-2.6505 -0.6506 + 1.0155i -0.6506 - 1.0155i -3.7724 -0.7138 + 1.2268i -0.7138 - 1.2268i -4.2834 -0.7431 + 1.2732i -0.7431 - 1.2732i -9.9758 -0.8913 + 1.3927i -0.8913 - 1.3927i Inf -1.0000 + 1.4142i -1.0000 - 1.4142i k= Columns 1 through 7 0 0.0333 0.0771 0.1781 0.4117 0.9517 2.2000 Columns 8 through 10 2.7696 8.7584 Inf plot(r,'x'),title ('Grfica del Lugar de Races'),... xlabel('Eje real'),ylabel('Eje imaginario'),grid

En definitiva, la respuesta obtenida con Matlab debe interpretarse, asignando la ganancia calculada por el programa del modo que grficamente se indica para algunas de las races graficadas, a continuacin:

Diagrama de BodeEl comando bode dibuja el diagrama de Bode de una funcin de transferencia. El comando margin dibuja el diagrama de Bode y calcula los valores de los mrgenes de fase y ganancia y las frecuencias de cruce de fases y ganancias. bode(n,d) margin(n,d) Determine mediante el criterio simplificado de Bode el rango de valores de K de un controlador proporcional en cascada tanto G1 como el bucle cerrado son estables. Para hallar la funcin de transferencia en bucle cerrado es G3. >> [g3n, g3d ] = series (g1n,g1d,g2n,g2d) Se obtiene como resultado: g3n = [ 0 0 0 5 ] g3n = [ 0.005 0.02 0.52 1.0 ] siendo los polos de G3: >> roots(g3d) -1.0000 + 9.9499i -1.0000 - 9.9499i -2.0000 Para obtener el diagrama de Bode y determinar a continuacin los mrgenes de ganancia y de fase:

>>[g3m, g3f, w] = bode(g3n, g3d) >>margin(g3m,g3f,w) El resultado es:Bode Diagram Gm = -13.1 dB (at 10.2 rad/sec) , Pm = -60.7 deg (at 13.1 rad/sec)

20

Magnitude (dB) Phase (deg)

0

-20

-40

-60 0

-90

-180

-270 -1 10

10

0

10 Frequency (rad/sec)

1

10

2

Como es posible observar, el margen de ganancia es negativo y el margen de fase tambin. Para obtener su valor: >>[Gm, Rm, wGm, wFm] = margin(g3m, g3f, w); Resultado: Gm = 0.2182 Fm = -60.80 wGm = 10.206 wFm = 13.090 de donde: Margen de ganancia: Gm= 0.2182= -13.22 dB para un w= 10.206 rad/s. Margen de fase: fm= -60.80 para un w= 13.09 rad/s. Luego se determina el rango de valores de K (controlador proporcional) que estabiliza el sistema en Lazo cerrado es 0 < K < 0.2182. Verificar mediante el diagrama de Nyquist la situacin antes de compensar (K=1) y despus de compensar (K= 0.18). g5n = 0.18 * g3n; g5d = g3d; nyquist( g3n,g3d);

% la siguiente instruccin genera un vector de frecuencias % que se utilizara en la segunda grfica a superponer [re, im, w] = nyquist(g3n,g3d); hold on; nyquist(g5n ,g5d, w)Nyquist Diagram

4

3 2

Imaginary Axis

1

0 -1

-2

-3

-4 -5

-4

-3

-2

-1

0 Real Axis

1

2

3

4

5

Como se puede observar el nodo de -1+j0 es N=0.

REFERENCIAS1. MATLAB, The Language of Technical Computing- Getting Started with MATLAB 2. EHIRCH, LEONARD and WILLIAM, Using MATLAB to Analize and Design Control Systems. The Benjamin/Cummings Publishing Company, Inc. 3. MAZZONE, Virginia. Introduccin a MATLAB y SIMULINK para Control. Automatizacin y Control Industrial. Universidad Nacional de Quilmes, 2002. 4. SARMIENTO, Henry y BOTERO, Hctor. Curso bsico de Matlab. Universidad de Antioquia, Facultad de Ingeniera, Departamento de Ingeniera Elctrica. 2006. 5. SILVA BEARD, Andrea. Computacin aplicada a procesos qumicos. Departamento de Ingeniera y Ciencias Qumicas, UIA. 6. Sistemas de Control. Facultad de Ingeniera, Universidad de Buenos Aires.