Capítulo 6: Programación de MATLAB
página 63
Capítulo I
INTRODUCCION AL USO DEL MATLAB
MATL MATLAB AB fue fue orig origin inal alme ment nte e desa desarr rrol olla lado do en leng lengua uaje je FORT FORTRA RAN N para para ser ser usad usado o en computadoras mainframe. Fue el resultado de los proyectos Linpack y Eispack desarrollados desarrollados en el Argonne National Laoratory. !u nomre pro"iene de MATri# LABoratory. Al pasar de los a$os fue complementado y reimplementado en lenguaje %. Actualmente la licencia de MATLAB es propiedad de Mat&'orks (nc . La empres empresa a Mat&'o Mat&'orks rks ofrece ofrece MatLa MatLa como como su princi principa pall produc producto to para para comput computaci aci)n )n num*rica+ an,lisis y "isuali-aci)n de datos. Tami*n ofrece !imulink como un ane#o a MatLa y ue interactua con *l en lenguaje de MatLa y lenguaje de ajo ni"el %. !imulink es usado para simulaci)n modelado no lineal a"an-ado. !e ofrecen adem,s numerosas &erra &errami mien enta tass espe especi cial ales es en /Too /Tool lo# o#es es// para para reso resol" l"er er pro prole lema mass de apli aplica caci cion ones es espec0ficas+ por ejemplo control+ procesamiento de se$ales+ redes neuronales+ etc. Estas &erramientas son colecciones de rutinas escritas en MatLa.
1.1 Librería de Aplicacione de MATLAB MATLAB tiene una gran colecci)n de funciones para el procesamiento de se$al en el !ignal 1rocessing Toolo#. Este incluye funciones para2 • An,lisis de filtros digitales incluyendo respuesta en frecuencia+ retardo de grupo+
retardo de fase. •
(mplementaci)n de filtros+ tanto directo como usando t*cnicas en el dominio de la frecuencia asadas en la FFT.
•
3ise$o de filtros ((R+ incluyendo Butter4ort&+ %&eysc&e" tipo (+ %&eys&e" tipo (( y el0ptico.
•
3ise$o de filtros F(R mediante el algor0tmo )ptimo de 1arks5Mc%lellan.
•
1roce rocesa sam mien iento de la tran transsform formad ada a r,p r,pida ida de Fouri ourier er FFT+ FT+ inc incluy luyendo endo la transformaci)n para potencias de dos y su in"ersa+ y transformada para no potencias de dos.
Capítulo 6: Programación de MATLAB
página 63
La MATLAB % Mat& Lirary proporciona al usuario la capacidad computacional de MATLAB en una lireria en formato ojeto enla-ale. El ojeti"o principal de la % Mat& Lirary es soportar el desarrollo de aplicaciones 6stand alone6 utili-ando MATLAB y su compilador. 1uede 1uede ser utili-a utili-ada da indepe independi ndient enteme emente nte de MATLAB MATLAB por progra programad madore oress a"e-ad a"e-ados os en lenguaje % ue necesiten prestaciones computacionales roustas y de alto rendimiento. 7unto con el compilador de MATLAB+ la % Mat& Lirary permitir, a los programadores de aplica aplicacio ciones nes utiliutili-ar ar MATLAB MATLAB para para la creaci creaci)n )n de aplica aplicacio cione ness 6stan 6stand d alone6 alone6.. 1ara 1ara los usuarios cl,sicos de MATLAB+ se elimina as0 cualuier necesidad de "ol"er a reescriir algoritmos en lenguaje % para ser utili-ada por programas e#ternos. 1ara auellos usuarios ue sean nue"os en la tecnolog0a MATLAB+ esta tecnolog0a ofrece una nue"a "0a para la reducci)n del tiempo de desarrollo y puesta a punto de aplicaciones. La MATL MATLAB AB % Mat& Mat& Lir Lirar aryy prop propor orci cion ona a una una ampl amplia ia gama gama de func funcio ione ness cl,s cl,sic icas as del del progra programa ma MATLAB MATLAB++ propor proporcio cionad nadas as como como lirer lirer0as 0as ojeto ojeto++ incluy incluyend endo o ,sica ,sicamen mente te las siguientes categor0as de funciones presentes en MATLAB y fic&eros M compilados2 • Algera lineal. •
Funciones matem,ticas elementales y especiali-adas.
•
Operadores l)gicos y aritm*ticos.
•
Matrices elementales y manipulaci)n
•
Matrices especiales.
•
Estad0stica ,sica y an,lisis de datos.
•
1olinomios e interpolaci)n.
•
8esti)n de cadenas de caracteres.
•
Entradas y !alidas.
•
8esti)n de memoria y errores.
1.! Iniciando MATLAB 3espu*s de ejecutar el programa MatLa desde el sistema operati"o empleado+ aparece el indicador de comandos el cual est, listo para reciir instrucciones en lenguaje MatLa. Este indicador es de la siguiente forma2
99
Capítulo 6: Programación de MATLAB
página 63
La MATLAB % Mat& Lirary proporciona al usuario la capacidad computacional de MATLAB en una lireria en formato ojeto enla-ale. El ojeti"o principal de la % Mat& Lirary es soportar el desarrollo de aplicaciones 6stand alone6 utili-ando MATLAB y su compilador. 1uede 1uede ser utili-a utili-ada da indepe independi ndient enteme emente nte de MATLAB MATLAB por progra programad madore oress a"e-ad a"e-ados os en lenguaje % ue necesiten prestaciones computacionales roustas y de alto rendimiento. 7unto con el compilador de MATLAB+ la % Mat& Lirary permitir, a los programadores de aplica aplicacio ciones nes utiliutili-ar ar MATLAB MATLAB para para la creaci creaci)n )n de aplica aplicacio cione ness 6stan 6stand d alone6 alone6.. 1ara 1ara los usuarios cl,sicos de MATLAB+ se elimina as0 cualuier necesidad de "ol"er a reescriir algoritmos en lenguaje % para ser utili-ada por programas e#ternos. 1ara auellos usuarios ue sean nue"os en la tecnolog0a MATLAB+ esta tecnolog0a ofrece una nue"a "0a para la reducci)n del tiempo de desarrollo y puesta a punto de aplicaciones. La MATL MATLAB AB % Mat& Mat& Lir Lirar aryy prop propor orci cion ona a una una ampl amplia ia gama gama de func funcio ione ness cl,s cl,sic icas as del del progra programa ma MATLAB MATLAB++ propor proporcio cionad nadas as como como lirer lirer0as 0as ojeto ojeto++ incluy incluyend endo o ,sica ,sicamen mente te las siguientes categor0as de funciones presentes en MATLAB y fic&eros M compilados2 • Algera lineal. •
Funciones matem,ticas elementales y especiali-adas.
•
Operadores l)gicos y aritm*ticos.
•
Matrices elementales y manipulaci)n
•
Matrices especiales.
•
Estad0stica ,sica y an,lisis de datos.
•
1olinomios e interpolaci)n.
•
8esti)n de cadenas de caracteres.
•
Entradas y !alidas.
•
8esti)n de memoria y errores.
1.! Iniciando MATLAB 3espu*s de ejecutar el programa MatLa desde el sistema operati"o empleado+ aparece el indicador de comandos el cual est, listo para reciir instrucciones en lenguaje MatLa. Este indicador es de la siguiente forma2
99
Capítulo 6: Programación de MATLAB
página 63
Al iniciar el uso de MatLa est,n disponiles dos comandos de ayuda y demostraci)n. 1ara ejecutarlos se escrie el comando en la l0nea de comandos despu*s del s0molo 99 y se presiona la tecla Enter. 1or ejemplo2
99&elp 1ermite otener una ayuda sore los diferentes comandos de MatLa.
99demo :ace una demostraci)n de las diferentes aplicaciones de MatLa. 1ara cerrar o finali-ar el uso de MatLa se usa el comando uit .
99uit 1." Uo de co#ando La primera forma de interactuar con MatLa es a tra"*s de la l0nea de comandos. 1uede ejecutarse un comando si este est, escrito despu*s del s0molo 99 y se presiona la tecla Enter. MATLAB traaja esencialmente con matrices num*ricas rectangulares. La manera m,s f,cil de entrar matrices peue$as es enumerando los elementos de *sta de tal manera ue2 •
Los elementos est*n separados por lancos ) comas.
•
Los elementos est*n cerrados entre corc&etes+ ; <.
•
Muestre el final de cada fila con= >punto y coma?.
Ejemplo2 A @ ; C= D = G H I < resultar0a en la matri A @ C D GHI MATLAB guarda esta matri- para utili-arla luego ajo el nomre de A. !i la matri- a introducir es muy grande se puede utili-ar el siguiente formato2 A @ ; C D G H I<
Capítulo 6: Programación de MATLAB
página 63
El comando load y la funci)n fread pueden leer matrices generadas en sesiones anteriores ) generadas por otros programas. Ja ue MatLa se asa en el ,lgera de matrices como ejemplo crearemos una matri-. Estas pueden estar formadas por un s)lo elementos >escalar?+ por una fila o una columna >"ector? o por una serie de filas y columnas >matri- propiamente dic&a?. 99A@ define A como un escalar de "alor . Al definir A autom,ticamente MatLa presenta en pantalla su "alor. A @ 1ara no presentar el "alor de la "ariale creada+ dee agregarse punto y coma >=? al final del comando. 3espu*s de crear una "ariale+ puede presentarse su "alor en pantalla escriiendo la "ariale despu*s del prompt >99?. 99A !e pueden redefinir "ariales+ por ejemplo2 99A@; C< define A como un "ector de tres elementos+ A>?@+ A>?@ y A>C?@C. Estos elementos deen separase con espacios en lanco o comas >+?. 1ara definir una matri- se deen separar las filas con punto y coma >=? o con retorno >Enter?. 99A@; C= D < o 99A@; C D < amos comandos producen el mismo efecto2 A @ C D !i al final de la introducci)n de un comando cualuiera no se pone punto y coma >=?+ aparecer, e#pl0citamente en pantalla el resultado de dic&o comando. En caso contrario+ el comando se ejecutar, pero no se mostrar, su resultado. 3ic&o resultado se &ar,
Capítulo 6: Programación de MATLAB
página 63
almacenado en la "ariale a la ue se asigna o+ si no se reali-a asignaci)n+ se guardar, en una "ariale de entorno llamada ans. En caso de ue se asigne a una "ariale+ esta se crear, autom,ticamente+ sin necesidad de una declaraci)n pre"ia. Las "ariales a las ue se asignan resultados+ as0 como las "ariales de entorno+ se almacenan en lo ue se denomina el espacio de traajo de matla >4orkspace?. Los elementos de una matri- pueden ser cualuier e#presi)n de MATLAB. Ejemplo2 # @ ;5.C+srt>C?+>KKC? D< resultar0a en #@ 5.C .GC D.H Nos podemos referir a elementos indi"iduales de la matri- con 0ndices entre par*ntesis. Ejemplo2 En el ejemplo anterior #>D? @ as>#>?? resultar0a #@ 5.C .GC D.H .C 1ara a$adir otra fila a la matri- A de arria podemos &acer lo siguiente2 r @ ; <= A @ ;A= r< y resultar0a A @ C D GHI Los ejemplos ue &emos dado se &an guardado en "ariales ue est,n en el espacio de traajo de MATLAB. 1ara listar las "ariales en el espacio de traajo se utili-a el comando who. 1ara "er informaci)n adicional acerca de estas "ariales se utili-a el comando whos.
Las "ariales permanentes son auellas con significado especial+ y ue no se pueden eliminar. Estas son por ejemplo las "ariales ans y eps. La "ariale eps es una tolerancia
Capítulo 6: Programación de MATLAB
página 63
para determinar. 1or ejemplo la singularidad y el rango. !u "alor inicial es la distancia de . al pr)#imo nmero de punto flotante mayor. Otra serie de "ariales predefinidas en matla+ son las siguientes2 •
pi2 P
•
i+ j2
•
inf2 Q. !e trata de un "alor e#cesi"amente grande para ser almacenado.
•
NaN2 Not a number . Es el resultado ue se proporciona si durante una operaci)n se
−1 . %onstante imaginaria
produce una indeterminaci)n+ del tipo
0, ∞,
0 0
,
∞ , etc ∞
•
clock2 Reloj.
•
3ate2 Fec&a
•
flops2 Nmero de operaciones en punto flotante reali-adas &asta el momento.
El comando who muestra las "ariales e#istentes en el espacio de traajo generadas por el usuario+ pero no las "ariales especiales. 1ara orrar alguna "ariale de memoria se utili-a clear nomre5"ariales separadas por espacios. 1ueden orrarse todas las "ariales a la "e- si no se especifica ningn nomre a continuaci)n del nomre del comando. Adem,s de "ariales num*ricas+ escalares o matriciales+ en matla pueden usarse cadenas de caracteres. 1ara ello se delimita una secuencia de caracteres mediante apostrofes2 cadena @ 6ejemplo de cadena de caracteres6 1ara &acer referencia a cualuiera de los caracteres ue componen una cadena+ podemos &acerlo como si de un "ector se tratara. 1ara salir de MATLAB se escrie quit ) exit . Al terminar una sesi)n de MATLAB+ las "ariales en el espacio de traajo se orran. !i deseas guardar tu espacio de traajo escries save+ guarda todas las "ariales en un arc&i"o llamado matla.mat. !e puede utili-ar save y load con otros nomres de arc&i"os+ ) para guardar solo "ariales seleccionadas Ejemplo2 sa"e temp J S
Capítulo 6: Programación de MATLAB
página 63
Este ejemplo guarda las "ariales + J+ S en el arc&i"o temp.mat. sando el comando load temp las otienes nue"amente del arc&i"o temp.mat. load y save tami*n pueden importar y e#portar informaci)n de arc&i"os A!%((.
1.$ Operacione con %ectore & #atrice !e puede generar un "ector utili-ando dos puntos. Los dos puntos+ 2+ son importantes en MATLAB. 1or ejemplo # @ 2 genera un "ector fila ue contiene los nmeros enteros del al 2 #@ CD No necesariamente se tiene ue incrementar por nmeros enteros+ pueden ser decimales+ nmeros negati"os ) constantes. 1odemos referirnos a elementos indi"iduales de matrices encerrando sus 0ndices en par*ntesis. Ejemplo2 A @ C D GHI A>C+ C? @ A>+ C? K A>C+ ? resultar0a A @ C D G H n 0ndice puede ser un "ector. !i # y " son "ectores+ entonces #>"? es ;#>">??+ #>">??+ ...+#>">n??<. 1ara matrices+ los 0ndices de "ectores permiten acceso a sumatrices contiguas y no contiguas. 1or ejemplo+ suponga ue A es una matri- por . Entonces A>2+ C?
Capítulo 6: Programación de MATLAB
página 63
especifica la sumatri- # + ) "ector columna+ ue consiste de los primeros cinco elementos en la tercera columna de A. Tami*n A>2+ G2? es la sumatri- # D de las primeras cinco filas y las ltimas cuatro columnas. tili-ando solo los dos puntos denota todo lo correspondiente a la fila ) columna. 1odr0amos tener una instrucci)n como2 A>2+ ;C @ B>2+ 2C? ue reempla-a la tercera+ uinta y d*cima columna de A con las primeras tres columnas de B. Entonces los dos puntos sir"en para generar secuencias. 1or ejemplo2 2.2 8enerar0a una secuencia comen-ando por &asta + cada elemento de la secuencia estar0a separado del anterior en .. 2 !i se o"ia el "alor central+ la separaci)n entre cada dos elementos de la secuencia seria . ;2.2< !i lo ponemos entre corc&etes+ estaremos generando un "ector con los elementos de la secuencia. En la forma mas directa+ los elementos de una matri- se referencian mediante A>i= j?+ donde i y j son los 0ndices del elemento correspondiente. 1odemos usar una secuencia ue facilite la inde#aci)n de mltiples elementos+ como en los siguientes ejemplos2 A>+2C? dar0a como resultado los elementos de las columnas y C pertenecientes a la primera fila. A>2+? dar0a como resultado todos los elementos pertenecientes a la segunda columna. L)gicamente+ en estos casos+ los elementos especificados como inicio+ final e incremento para producir la secuencia deen ser enteros. Otra forma de generar datos secuencialmente es usando los comandos linspace y logspace+ su formato es2 t @ linspace>n+n+n?=
Capítulo 6: Programación de MATLAB
4 @ logspace>n+n+n?=
página 63
El comando linspace genera un "ector desde n a n de longitud n+ cuyos componentes poseen "alores espaciados linealmente. 1or su parte+ logspace produce tami*n un "ector de n elementos+ pero sus "alores est,n espaciados logaritmicamente desde n a n. Este ultimo comando resultar, til para la generaci)n de escalas frecuenciales para el an,lisis de sistemas mediante diagramas de Bode+ Nyuist+ etc.
1.$.1 Tranpueta de una #atri' El caracter 6 >ap)strofe? denota la transpuesta de la matri-. !i tenemos la matri- A y llamamos B @ A6+ B es la transpuesta de la matri- A.
1.$.! Su#a & reta de #atrice Las operaciones suma >K? y resta >5? son definidas para las matrices siempre y cuando *stas tengan la misma dimensi)n. Es decir+ si A y B son matrices C # C+ entonces A K B se puede calcular. Las operaciones suma y resta tami*n est, definidas si uno de los operandos es un escalar+ es decir+ una matri- # . Ejemplo2 #@ 5 y@#5 resultar0a y@ 5 5 Ejemplo2 99A@; C=D <= B@; D= C <= define las matrices A y B. 1ara sumarlas se escrie la operaci)n2 99AKB El resultado de la operaci)n es por defecto almacenado en la "ariale ans e inmediatamente presentado en pantalla2 ans @
Capítulo 6: Programación de MATLAB
GGG
página 63
GGG 1ara almacenar la suma de A y B en la "ariale %2 99%@AKB %@ GGG GGG
1.$." Multiplicaci(n de Matrice La operaci)n de multiplicaci)n de matrices est, definida siempre ue el nmero de columnas de la primera matri- sea igual a el nmero de filas de la segunda matri-.
1.$.$ Di%ii(n de Matrice En di"isi)n de matrices+ si A es una matri- cuadrada no5singular+ entonces AUB y BA corresponden a la multiplicaci)n i-uierda y derec&a de B por el in"erso de A+ esto es+ in">A? B y B in">A? respecti"amente. El resultado es otenido directamente sin la computaci)n del in"erso. @ AUB es una soluci)n a A @ B @ BA es una soluci)n a A @ B AUB es definido cuando B tiene la misma cantidad de filas ue A. !i A es cuadrada+ el m*todo usado es la Eliminaci)n 8aussiana. El resultado es una matri- con las mismas dimensiones ue B. !i A no es cuadrada+ se factori-a utili-ando la ortogonali-aci)n de :ouse&older con pi"oteo de columnas. Los factores son usados para resol"er sistemas de ecuaciones su5determinados y sore 5determinados. El resultado es una matri- m5por5n donde m es el nmero de columnas de A y n es el nmero de columnas de B. %ada columna de tiene+ al menos+ k componentes diferentes de cero+ donde k es el rango efecti"o de A. C.C.
Tipos de datos
Ja se &a dic&o ue MATLAB es un programa preparado para traajar con "ectores y matrices. %omo caso particular tami*n traaja con "ariales escalares >matrices de dimensi)n ?. MATLAB traaja siempre en dole precisi)n+ es decir guardando cada dato en H ytes+ con unas cifras de5 cimales e#actas. Ja se "er, m,s adelante ue tami*n puede traajar con cadenas de caracteres >strings? y+ desde la "ersi)n .+ tami*n con otros tipos de datos2 Matrices de m,s dos dimensio5 nes+ matrices dispersas+ "ectores y
Capítulo 6: Programación de MATLAB
página 63
matrices de celdas+ estructuras y clases y ojetos. Algunos de estos tipos de datos m,s a"an-ados se "er,n en la ltima parte de este manual. C.C.. NVMERO! REALE! 3E 3OBLE 1RE%(!(WN Los elementos constituti"os de "ectores y matrices son nmeros reales almacenados en H ytes >C its para la mantisa y para el e#ponente de = entre y cifras decimales eui"alentes?. Es importante saer c)mo traaja MATLAB con estos nmeros y los casos especiales ue presentan. MATLAB mantiene una forma especial para los nmeros muy grandes >m,s grandes ue los ue es capa- de representar?+ ue son considerados como infinito. 1or ejemplo+ os*r"ese c)mo responde el programa al ejecutar el siguiente comando2 99 .. 'arning2 3i"ide y -ero ans @ (nf As0 pues+ para MATLAB el infinito se representa como inf ) (nf. MATLAB tiene tami*n una re5 presentaci)n especial para los resultados ue no est,n definidos como nmeros. 1or ejemplo+ ejec5 tense los siguientes comandos y os*r"ense las respuestas otenidas2 99 'arning2 3i"ide y -ero ans @ NaN 99 infinf ans @ NaN En amos casos la respuesta es NaN+ ue es la are"iatura de Not a Numer. Este tipo de respuesta+ as0 como la de (nf+ son enormemente importantes en MATLAB+ pues permiten controlar la fiaili5 dad de los resultados de los c,lculos matriciales. Los NaN se propagan al reali-ar con ellos cual5 uier operaci)n aritm*tica+ en el sentido de ue+ por ejemplo+ cualuier nmero sumado a un NaN da otro NaN. MATLAB tiene esto en cuenta. Algo parecido sucede con los (nf. MATLAB dispone de tres funciones tiles relacionadas con las operaciones de coma flotante. Estas funciones+ ue no tienen argumentos+ son las siguientes2
Capítulo 6: Programación de MATLAB
eps
página 63
de"uel"e la diferencia entre . y el nmero de coma flotante inmediatamente supe5
rior. 3a una idea de la precisi)n o nmero de cifras almacenadas. En un 1%+ eps "a5 le .De5. realmin
de"uel"e el nmero m,s peue$o con ue se puede traajar >.e5CH?
realma# de"uel"e el nmero m,s grande con ue se puede traajar >.GIGGeKCH? C.C.. OTRO! T(1O! 3E XAR(ABLE!2 (NTE8ER+ FLOAT J LO8(%AL %omo ya se &a comentado+ por defecto MATLAB traaja con "ariales de punto flotante y dole precisi)n >doule?. %on estas "ariales pueden resol"erse casi todos los prolemas pr,cticos y con frecuencia no es necesario complicarse la "ida declarando "ariales de tipos distintos+ como se &ace con cualuier otro lenguaje de programaci)n. !in emargo+ en algunos casos es con"eniente decla5 rar "ariales de otros tipos porue puede a&orrarse muc&a memoria y pueden &acerse los c,lculos muc&o m,s r,pidamente. MATLAB permite crear "ariales enteras con + + D y H ytes >H+ + C y D its?. A su "e-+ estas "ariales pueden tener signo o no tenerlo. Las "ariales con signo representan nmeros en inter"a5 los /casi/ sim*tricos respecto al = las "ariales sin signo representan nmero no negati"os+ desde el al nmero m,#imo. Los tipos de los enteros con signo son intH+ int+ intC e intD+ y sin signo uintH+ uint+ uintC y uintD. 1ara crear una "ariale entera de un tipo determinado se pueden utili-ar sentencias como las siguientes2 99 i@intC>?=
Y se crea un entero de D ytes con "alor
99 j@-eros>?= i@intC>j?=Y se crea un entero i a partir de j 99 i@-eros>++6intC6?=
Y se crea una mari- # de enteros
Las funciones intmin>6intD6? e intma#>6intD6? permiten por ejemplo saer el "alor del entero m,s peue$o y m,s grande >en "alor algeraico? ue puede formarse con "ariales enteras de D its2
Capítulo 6: Programación de MATLAB
99 disp>;intmin>6intD6?+ intma#>6intD6?
página 63
5ICCGCHDGGHH ICCGCHDGGHG La funci)n isinteger>i? de"uel"e si la "ariale i es entera y en otro caso. La funci)n class>i? de5 "uel"e el tipo de "ariale ue es i >intH+ int+ ...?+ mientras ue la funci)n isa>i+ 6int6? permite saer e#actamente si la "ariale i corresponde a un entero de its. MATLAB dispone de dos tipos de "ariales reales o float2 single y doule+ ue ocupan respecti"a5 mente D y H ytes. 1or defecto se utili-an doules. Las funciones single>#? y doule>y? permiten reali-ar con"ersiones entre amos tipos de "ariales. Las funciones realmin y realma# permiten saer los nmeros doule m,s peue$o y m,s grande >en "alor asoluto? ue admite el computador. 1ara los correspondientes nmeros de simple preci5 si)n &ar0a ue utili-ar realmin>6single6? y realma#>6single6?. La funci)n isfloat>#? permite saer si # es una "ariale real+ de simple o dole precisi)n. 1ara saer e#actamente de u* tipo de "ariale se rata se pueden utili-ar las funciones isa>#+ 6single6? ) isa>#+ 6doule6?. Os*r"ese el ejemplo si5 guiente+ en el ue se "e c)mo con "ariales single se reduce el tiempo de %1 y la memoria2 99 n@= AA@rand>n?= A@single>AA?= 99 tic+ Bs@in">A?= toc Elapsed time is .IH seconds. 99 tic+ Bd@in">AA?= toc Elapsed time is D.I seconds. Zui-,s las "ariales m,s interesantes [aparte de las "ariales por defecto+ las doule[ sean las "a5 riales logical+ ue s)lo pueden tomar los "alores true >? y false >?. Las "ariales l)gicas surgen
como resultado de los operadores relacionales >@@+ \+ \@+ 9+ 9@+ ]@+ "er Apartado C.+ en la p,gina CH? y de muc&as funciones l)gicas como any y all ue se aplican a "ectores y matrices+ y ue se "er,n en el Apartado D.+ a partir de la p,gina D.
Capítulo 6: Programación de MATLAB
página 63
La funci)n logical>A? produce una "ariale l)gica+ con el mismo nmero de elementos ue A+ con "alores ) segn el correspondiente elementos de A sea distinto de cero o igual a cero. na de las aplicaciones m,s importantes de las "ariales l)gicas es para separar o e#traer los elemn5 tos de una matri- o "ector ue cumplen cierta condici)n+ y operar luego selecti"amente sore dic&os elementos. Os*r"ese+ el siguiente ejemplo2 99 A@magic>D? A @
C
C
H
I
G
D
D 99 j@A9
j @
99 isa>j+6logical6? ans @ 99 A>j?@5 A @ 5
C
5
5
H
I
G
5
D
5
5
C.C.C. NVMERO! %OM1LE7O!2 FN%(WN %OM1LE En muc&os c,lculos matriciales los datos yo los resultados no son reales sino complejos+ con parte real y parte imaginaria. MATLAB traaja sin ninguna dificultad con nmeros complejos. 1ara "er como se representan por defecto los nmeros complejos+ ejectense los siguientes comandos2
Capítulo 6: Programación de MATLAB
99 a@srt>5D?
página 63
a@ K .i 99 C K Dj ans @ C. K D.i En la entrada de datos de MATLAB se pueden utili-ar indistintamente la i y la j para representar el nmero imaginario unidad >en la salida+ sin emargo+ puede "erse ue siempre aparece la i?. !i la i o la j no est,n definidas como "ariales+ puede intercalarse el signo >?. Esto no es posile en el caso de ue s0 est*n definidas+ porue entonces se utili-a el "alor de la "ariale. En general+ cuando se est, traajando con nmeros complejos+ con"iene no utili-ar la i como "ariale ordinaria+ pues puede dar lugar a errores y confusiones. 1or ejemplo+ os*r"ense los siguientes resultados2 99 i@ i@ 99 KCi ans @ . K C.i 99 KCi
ans @ H 99 KCj ans @ . K C.i %uando i y j son "ariales utili-adas para otras finalidades+ como unidad imaginaria puede utili-ar5 se tami*n la funci)n srt>5?+ o una "ariale a la ue se &aya asignado el resultado de esta funci)n.
Capítulo 6: Programación de MATLAB
página 63
La asignaci)n de "alores complejos a "ectores y matrices desde teclado puede &acerse de las dos formas+ ue se muestran en el ejemplo siguiente >con"iene &acer antes clear i+ para ue i no est* definida como "ariale= este comando se estudiar, m,s adelante?2 99 A @ ;Ki KCi= 5Ki 5Ci< A @ . K .i
. K C.i
5. K .i . 5 C.i 99 A @ ; = 5 < K ; C= 5C<(
Y En este caso el es necesario
A @ . K .i
. K C.i
5. K .i . 5 C.i 1uede "erse ue es posile definir las partes reales e imaginarias por separado. En este caso s0 es necesario utili-ar el operador >?+ segn se muestra en el ejemplo anterior. MATLAB dispone asimismo de la funci)n comple#+ ue crea un nmero complejo a partir de dos argumentos ue representan la parte real e imaginaria+ como en el ejemplo siguiente2 99 comple#>+? ans @ . K .i Es importante ad"ertir ue el operador de matri- traspuesta >6?+ aplicado a matrices complejas+ pro5 duce la matri- conjugada y traspuesta. E#iste una funci)n ue permite &allar la matri- conjugada >conj> ?? y el operador punto y ap)strofo >.6? ue calcula simplemente la matri- traspuesta. C.C.D. %A3ENA! 3E %ARA%TERE! MATLAB puede definir "ariales ue contengan cadenas de caracteres. En MATLAB las cadenas de te#to "an entre ap)strofos o comillas simples >N)tese ue en % "an entre comillas doles2 /cade5 na/?. 1or ejemplo+ en MATLAB2 s @ 6cadena de caracteres6
Capítulo 6: Programación de MATLAB
página 63
Las cadenas de te#to tienen su m,s clara utilidad en temas ue se "er,n m,s adelante y por eso se difiere &asta entonces una e#plicaci)n m,s detallada. C.D. C.D.
Xari Xaria ale less y e#pr e#pres esio ione ness mat matri rici cial ales es
Ja &an aparecido algunos ejemplos de "ariales y e#presiones matriciales. A&ora se "a a tratar de generali-ar un poco lo "isto &asta a&ora. na "ariale es un nomre ue se da a una entidad num*rica+ ue puede ser una matri-+ un "ector o un escalar. El "alor de esa "ariale+ e incluso el tipo de entidad num*rica ue representa+ puede camiar a lo largo de una sesi)n de MATLAB o a lo largo de la ejecuci)n de un programa. La for5 ma m,s normal de camiar el "alor de una "ariale es coloc,ndola a la i-uierda del operador de asignaci)n >@?. na e#presi)n de MATLAB puede tener las dos formas siguientes2 primero+ asignando su resultado a una "ariale+
"ariale @ e#presi)n y segundo e"aluando simplemente el resultado del siguiente modo+ e#presi)n en cuyo caso el resultado se asigna autom,ticamente a una "ariale interna de MATLAB llamada ans >de ans4er? ue almacena el ltimo resultado otenido. !e considera por defecto ue una e#5 presi)n termina cuando se pulsa intro. !i se desea ue una e#presi)n contine en la l0nea siguiente+ &ay ue introducir tres puntos >...? antes de pulsar intro. Tami*n se pueden incluir "arias e#presio5 nes en una misma l0nea separ,ndolas por comas >+? o puntos y comas >=?. !i una e#presi)n termina en punto y coma >=? su resultado se calcula+ pero no se escrie en pantalla. Esta posiilidad es muy interesante+ tanto para e"itar la escritura de resultados intermedios+ como para e"itar la impresi)n de grandes cantidades de nmeros cuando se traaja con matrices de gran tama$o.
Capítulo 6: Programación de MATLAB
página 63
A semejan-a de %+ MATLAB distingue entre maysculas y minsculas en los nomres de "aria5 les. Los nomres de "ariales deen empe-ar siempre por una letra y pueden constar de &asta C letras y nmeros. La funci)n namelengt&ma# permite preguntar al programa por este nmero m,#imo de caracteres. El car,cter gui)n ajo >^? se considera como una letra. A diferencia del len5 guaje %+ no &ace falta declarar las "ariales ue se "ayan a utili-ar. Esto &ace ue se dea tener es5 pecial cuidado con no utili-ar nomres err)neos en las "ariales+ porue no se reciir, ningn a"iso del ordenador. %uando se uiere tener una relaci)n de las "ariales ue se &an utili-ado en una sesi)n de tra traaj ajo o se pued puede e utili utili-a -arr el coma comand ndo o 4&o. 4&o. E#is E#iste te otro otro coma comand ndo o llam llamad ado o 4&os 4&os ue ue proporciona adem,s in5 formaci)n sore el tama$o+ la cantidad de memoria ocupada y el car,cter real o complejo de cada "ariale. !e sugiere utili-ar de "e- en cuando estos comandos en la sesi)n de MATLAB ue se tie5 ne aierta. Esta misma informaci)n se puede ote otene nerr gr,f gr,fic icam amen ente te con con el 'ork 'orksp spac ace e Bro4 Bro4se ser+ r+ ue ue apar aparec ece e con con el coma comand ndo o Xie4'orkspace o acti"ando la "entana correspondiente si estaa aierto. El comando clear tiene "arias formas posiles2 clear clear sin argument argumentos+ os+ clear clear elimina elimina todas las las "ariales "ariales creadas creadas pre"ia pre"iamente mente >e#5 >e#5 cepto cepto las "ariales gloales?. clea lear A+
orra las "aria iales les indicadas. clear gloal
clear fu functions clea clearr all all C.. C..
orra las "aria iales les gloales.
orra las fu funciones.
orr orra a tod todas as las las "ar "aria ial les es++ incl incluy uyen endo do las las glo gloa ale les+ s+ y las las func funcio ione nes. s.
Otra Otrass form formas as de de defi defini nirr matr matric ices es
MATLAB dispone de "arias formas de definir matrices. El introducirlas por teclado s)lo es pr,ctico en casos de peue$o tama$o y cuando no &ay ue repetir esa operaci)n muc&as "eces. Recu*rdese ue en MATLAB no &ace falta definir el tama$o de una matri-. Las matrices toman tama$o al ser definidas y este tama$o puede ser modificado por el usuario mediante adici)n yo orrado de filas y columnas. A continuaci)n se "an a "er otras formas m,s potentes y generales de definir yo modifi5 car matrices. C... C... T(1O! 3E MATR(%E! MATR(%E! 1RE3EF(N(3 1RE3EF(N(3O! O! E#isten en MATLAB "arias funciones orientadas a definir con gran facilidad matrices de tipos par5 ticulares. Algunas de estas funciones son las siguientes2
Capítulo 6: Programación de MATLAB
página 63
eye>D?forma la matri- unidad de tama$o >D_D?
-eros> -eros>C+ C+??
forma forma una una matrimatri- de cero ceross de de tama$ tama$o o >C_? >C_? -eros> -eros>D? D? 0dem 0dem de tama$o tama$o >D_D? >D_D?
ones ones>C >C??
form forma a una una matri matri-- de unos unos de tama tama$o $o >C_C >C_C?? one ones> s>+ +D? D? idem idem de tama tama$o $o >_D >_D??
linspace>#+#+n? genera un "ector con n "alores "alores igualmente espaciados espaciados entre # y # logspace>d+d+n? genera un "ector con n "alores espaciados logar0tmicamente entre `d y `d. !i d es piI+ los puntos se generan entre `d y pi rand rand>C >C??
form forma a una una matr matrii- de de nme nmero ross alea aleato tori rios os ent entre re y + + con con dist distri riu uci ci)n )n uni unifo form rme+ e+
de tama$o >C_C? rand>+?
ide idem de tama$o >_?
rand randn> n>D? D?
form forma a una una matr matrii- de nme nmero ross alea aleato tori rios os de tama tama$o $o >D_D >D_D?+ ?+ con con dist distri riu u55 ci)n ci)n
normal+ de "alor medio y "arian-a . magi magic> c>D? D?
crea crea una una mat matri ri-- >D_D? >D_D? con con los los nme nmero ross + + ... ... DD+ DD+ con la la propi propied edad ad de de ue ue
todas las filas y columnas suman lo mismo &il>? &il>? crea una matri- de :ilert :ilert de tama$o tama$o >_?. La matri- de :ilert es una matri- cuyos elementos >i+j? responden a la e#presi)n >>iKj5??. Esta es una matri- especialmente dif0cil de manejar por los grandes errores nu5 m*ricos a los ue conduce in"& in"&il il> >??
crea crea dir direc ecta tame ment nte e la in"e in"ers rsa a de de la matr matrii- de de :il :iler ertt
kron kron># >#+y +y??
prod produc uce e una una matr matrii- con con tod todos os los los pro produ duct ctos os de de los los eleme element ntos os del del "ect "ector or # por por
los elementos del "ector y. Eui"alente a #6y+ donde # e y son "ectores fila compan>po compan>pol? l?
construye construye una matri- cuyo polinomio polinomio caracter0st caracter0stico ico tiene como coefi5 coefi5
cientes los elementos del "ector pol >ordenados de mayor grado a me5 nor? "ande "ander>" r>"??
constr construye uye la matrimatri- de Xand Xanderm ermond onde e a partir partir del "ect "ector or " >las >las colu columna mnass son son las
potencias de los elementos de dic&o "ector?
Capítulo 6: Programación de MATLAB
página 63
E#isten otras funciones para crear matrices de tipos particulares. %on :elpMatla :elp se puede otener informaci)n sore todas las funciones disponiles en MATLAB+ ue aparecen agrupadas por categor0as o por orden alfa*tico. En la categor0a Mat&ematics aparecen la mayor parte de las funciones estudiadas en este apartado. C... FORMA%(WN 3E NA MATR(S A 1ART(R 3E OTRA! MATLAB ofrece tami*n la posiilidad de crear una matri- a partir de matrices pre"ias ya defini5 das+ por "arios posiles caminos2
reciiendo alguna de sus propiedades >como por ejemplo el tama$o?+
por composici)n de "arias sumatrices m,s peue$as+
C
modific,ndola de alguna forma.
A continuaci)n se descrien algunas de las funciones ue crean una nue"a matri- a partir de otra o de otras+ comen-ando por dos funciones au#iliares2
I
pi es una "ariale predefinida en MATLAB+ ue como es f,cil suponer representa el
nmero P.
;m+n<@si-e>A? de"uel"e el nmero de filas y de columnas de la matri- A. !i la matri- es cuadrada asta recoger el primer "alor de retorno n@lengt&>#? calcula el nmero de elementos de un "ector # -eros>si-e>A?? forma una matri- de ceros del mismo tama$o ue una matri- A pre"iamen5 te creada ones>si-e>A?? A@diag>#?
0dem con unos
forma una matri- diagonal A cuyos elementos diagonales son los elemen5 tos
de un "ector ya e#istente # #@diag>A? e#istente A
forma un "ector # a partir de los elementos de la diagonal de una matri- ya
Capítulo 6: Programación de MATLAB
diag>diag>A??crea una matri- diagonal a partir de la diagonal de la matri- A
página 63
lkdiag>A+B? crea una matri- diagonal de sumatrices a partir de las matrices ue se le pasan como argumentos triu>A? forma una matri- triangular superior a partir de una matri- A >no tiene por u* ser cuadrada?. %on un segundo argumento puede controlarse ue se mantengan o eliminen m,s diagonales por encima o deajo de la diagonal principal. tril>A? 0dem con una matri- triangular inferior rotI>A+k?
8ira kI grados la matri- rectangular A en sentido anti&orario. k es un entero
ue puede ser negati"o. !i se omite+ se supone k@ flipud>A?
&alla la matri- sim*trica de A respecto de un eje &ori-ontal fliplr>A? &alla
la
matri- sim*trica de A respecto de un eje "ertical res&ape>A+m+n? %amia el tama$o de la matri- A de"ol"iendo una matri- de tama$o m_n cuyas columnas se otienen a partir de un "ector formado por las columnas de A puestas una a continuaci)n de otra. !i la matri- A tiene menos de m_n elementos se produce un error. n caso especialmente interesante es el de crear una nue"a matri- componiendo como sumatrices otras matrices definidas pre"iamente. A modo de ejemplo+ ejectense las siguientes l0neas de co5 mandos y os*r"ense los resultados otenidos2 99 A@rand>C? 99 B@diag>diag>A?? 99 %@;A+ eye>C?= -eros>C?+ B< En el ejemplo anterior+ la matri- % de tama$o >_? se forma por composici)n de cuatro matrices de tama$o >C_C?. Al igual ue con simples escalares+ las sumatrices ue forman una fila se separan con lancos o comas+ mientras ue las diferentes filas se separan entre s0 con intros o puntos y co5 mas. Los tama$os de las sumatrices deen de ser co&erentes. C..C. 3(RE%%(ONAM(ENTO 3E XE%TORE! J MATR(%E! A 1ART(R 3E XE%TORE! Los elementos de un "ector # se pueden direccionar a partir de los de otro "ector ". En este caso+ #>"? eui"ale al "ector #>">??+ #>">??+ ... %onsid*rese el siguiente ejemplo2 99 "@; C D< "@
Capítulo 6: Programación de MATLAB
C
página 63
D
99 #@rand>+? #@ .HII
.DIHG
.GC
.GC
.IC
.IC
.DDI
.IGI
99 #>"? ans @ .HII
3e forma an,loga+ los elementos de una matri- A pueden direccionarse a partir de los elementos de dos "ectores f y c. X*ase por ejemplo2 99 f@; D<= c@; <= 99 A@magic>D? A @
C
C
H
I
G
D
D 99 A>f+c?
ans @
D
D
El siguiente ejemplo [continuaci)n del anterior[ permite comproar c)mo los elementos de una matri- se pueden direccionar con un s)lo 0ndice+ considerando ue las columnas de la matri- est,n una a continuaci)n de otra formando un "ector2 99 f@; C G<= 99 A>f?+ A>?+ A>? ans
@
ans
@
ans
@
I
G
Capítulo 6: Programación de MATLAB
página 63
M,s adelante se "er, ue esta forma de e#traer elementos de un "ector yo de una matritiene aundantes aplicaciones+ por ejemplo la de modificar selecti"amente esos elementos. C..D. O1ERA3OR 3O! 1NTO! >2? Este operador es muy importante en MATLAB y puede usarse de "arias formas. !e sugiere al lector ue practiue muc&o sore los ejemplos contenidos en este apartado+ introduciendo todas las modi5 ficaciones ue se le ocurran y &aciendo prueas aundantes >1roar es la mejor forma de apren5 derb?. 1ara empe-ar+ def0nase un "ector # con el siguiente comando2 99 #@2 #@
C
D
G
H
I
En cierta forma se podr0a decir ue el operador >2? representa un rango2 en este caso+ los nmeros enteros entre el y el . 1or defecto el incremento es + pero este operador puede tami*n utili-ar5 se con otros "alores enteros y reales+ positi"os o negati"os. En este caso el incremento "a entre el "alor inferior y el superior+ en las formas ue se muestran a continuaci)n2 99 #@22 #@
C
G
I
99 #@2.2 #@ .
.
D.
.
G.
H
D
H.
.
99 #@252 #@
I
G
C
1uede "erse ue+ por defecto+ este operador produce "ectores fila. !i se desea otener un "ector columna asta trasponer el resultado. El siguiente ejemplo genera una tala de funciones seno y
Capítulo 6: Programación de MATLAB
página 63
coseno. Ejectese y os*r"ese el resultado >recu*rdese ue con >=? despu*s de un comando el resul5 tado no aparece en pantalla?. 99 #@;.2pi2pi<6= 99 y@sin>#?= -@cos>#?= 99 ;# y -< El operador dos puntos >2? es an m,s til y potente [y tami*n m,s complicado[ con matrices. A continuaci)n se "a a definir una matri- A de tama$o _ y despu*s se reali-ar,n di"ersas operacio5 nes sore ella con el operador >2?. 99 A@magic>? A @ C
I
D
C
C
G
C
C
I
G
H
H
CC
G
C
CD
D
D
C
I
C
H
Recu*rdese ue MATLAB accede a los elementos de una matri- por medio de los 0ndices de fila y de columna encerrados entre par*ntesis y separados por una coma. 1or ejemplo2 99 A>+C? ans @ G El siguiente comando e#trae los D primeros elementos de la fila2 99 A>+ 2D? ans @ D
C
I
C
Los dos puntos aislados representan /todos los elementos/. 1or ejemplo+ el siguiente comando e#5 trae todos los elementos de la C fila2 99 A>C+ 2?
Capítulo 6: Programación de MATLAB
página 63
ans @ C
I
G
1ara acceder a la ltima fila o columna puede utili-arse la palara end+ en lugar del nmero corres5 pondiente. 1or ejemplo+ para e#traer la se#ta fila >la ltima? de la matri-2 99 A>end+ 2? ans @ D
C
I
C
H
El siguiente comando e#trae todos los elementos de las fil as C+ D y 2 99 A>C2+2? ans @ C
I
G
H
H
CC
G
C
CD
D
!e pueden e#traer conjuntos disjuntos de filas utili-ando corc&etes ; <. 1or ejemplo+ el siguiente comando e#trae las filas + y 2 99 A>;
<+2?
C
I
D
C
C
G
C
C
CD
D
ans @
En los ejemplos anteriores se &an e#tra0do filas y no columnas por moti"os del espacio ocupado por el resultado en la &oja de papel. Es e"idente ue todo lo ue se dice para filas "ale para columnas y "ice"ersa2 asta camiar el orden de los 0ndices. El operador dos puntos >2? puede utili-arse en amos lados del operador >@?. 1or ejemplo+ a conti5 nuaci)n se "a a definir una matri- identidad B de tama$o _ y se "an a reempla-ar filas de B por filas de A. Os*r"ese ue la siguiente secuencia de comandos sustituye las filas + D y de B por las filas + y C de A+
Capítulo 6: Programación de MATLAB
página 63
99 B@eye>si-e>A??=
99 B>; D <+2?@A>2C+2? B@
C
I
D
C
C
G
C
C
I
G
!e pueden reali-ar operaciones an m,s complicadas+ tales como la siguiente2 99 B@eye>si-e>A??= 99 B>2+2?@; = <B>2+2? %omo nue"o ejemplo+ se "a a "er la forma de in"ertir el orden de los elementos de un "ector2 99 #@rand>+? #@ .IC
.G
.
.DG
.GC
.
.G
.IC
99 #@#>252? #@ .GC
.DG
Os*r"ese ue por &aer utili-ado par*ntesis [en "e- de corc&etes[ los "alores generados por el operador >2? afectan a los 0ndices del "ector y no al "alor de sus elementos. 1ara in"ertir el orden de las columnas de una matri- se puede &acer lo siguiente2 99 A@magic>C? A @ H
C
G
D
I
99 A>2+C252? ans @
H
G
C
Capítulo 6: Programación de MATLAB
I
D
página 63
aunue &uiera sido m,s f,cil utili-ar la funci)n fliplr>A?+ ue es espec0fica para ello. Finalmente+ &ay ue decir ue A>2? representa un "ector columna con las columnas de A una detr,s de otra. C... MATR(S XA%A A; <. BORRA3O 3E F(LA! O %OLMNA! 1ara MATLAB una matri- definida sin ningn elemento entre los corc&etes es una matriue e#is5 te+ pero ue est, "ac0a+ o lo ue es lo mismo ue tiene dimensi)n cero. %onsid*rense los siguientes ejemplos de aplicaci)n de las matrices "ac0as2
!e sustituyen las dos primeras filas de B por el producto de dic&as filas por una matri-
de permutaci)n.
99 A@magic>C? A @ H
C
G
D
I
99 B@;< B@ ;< 99 e#ist>B? ans @ ;< 99 isempty>B? ans @ 99 A>2+C?@;< A @ H
C
D
I
Capítulo 6: Programación de MATLAB
página 63
Las funciones e#ist>? e isempty>? permiten c&euear si una "ariale e#iste y si est, "ac0a. En el l5 timo ejemplo se &a eliminado la C columna de A asign,ndole la matri- "ac0a. C... 3EF(N(%(WN 3E XE%TORE! J MATR(%E! A 1ART(R 3E N F(%:ERO MATLAB acepta como entrada un fic&ero nomre.m >siempre con e#tensi)n .m? ue contiene ins5 trucciones yo funciones. 3ic&o fic&ero se llama desde la l0nea de comandos tecleando simplemente su nomre+ sin la e#tensi)n. A su "e-+ un fic&ero .m puede llamar a otros fic&eros .m+ e incluso puede llamarse a s0 mismo >funciones recursi"as?. Las "ariales definidas dentro de un fic&ero de comandos .m ue se ejecuta desde la l0nea de comandos son "ariales del espacio de traajo ase+ esto es+ pueden ser accedidas desde fuera de dic&o fic&ero= no sucede lo mismo si el fic&ero .m corresponde a una funci)n. !i un fic&ero de comandos se llama desde una funci)n+ las "ariales ue se crean pertenecen al espacio de traajo de dic&a funci)n. %omo ejemplo se puede crear un fic&ero llamado unidad.m ue construya una matri- unidad de tama$o C_C llamada CC en un directorio llamado c2Umatla. Este fic&ero deer, contener la l0nea siguiente2 CC@eye>C? 3esde MATLAB ll,mese al comando unidad y os*r"ese el resultado. Entre otras ra-ones+ es muy importante utili-ar fic&eros de comandos para poder utili-ar el 3eugger y para e"itar teclear mu5 c&as "eces los mismos datos+ sentencias o e#presiones. C..G. 3EF(N(%(WN
3E
XE%TORE!
J
MATR(%E!
ME3(ANTE
FN%(ONE!
J
3E%LARA%(ONE! Tami*n se pueden definir las matrices y "ectores por medio de funciones de lirer0a >las ue se "er,n en la siguiente secci)n? y de funciones programadas por el usuario >ue tami*n se "er,n m,s adelante?. C..
Operadores relacionales
El lenguaje de programaci)n de MATLAB dispone de los siguientes operadores relacionales2 \
menor ue
Capítulo 6: Programación de MATLAB
9
mayor ue
\@
menor o igual ue
9@
mayor o igual ue
@@
igual ue
]@
distinto ue
página 63
Os*r"ese ue+ sal"o el ltimo de ellos+ coinciden con los correspondientes operadores relacionales de %. !in emargo+ *sta es una coincidencia m,s ien formal. En MATLAB los operadores relacio5 nales pueden aplicarse a "ectores y matrices+ y eso &ace ue tengan un significado especial. Al igual ue en %+ si una comparaci)n se cumple el resultado es >true?+ mientras ue si no se cumple es >false?. Rec0procamente+ cualuier "alor distinto de cero es considerado como true y el cero eui"ale a false. La diferencia con % est, en ue cuando los operadores relacionales de MA5 TLAB se aplican a dos matrices o "ectores del mismo tama$o+ la comparaci)n se reali-a elemento a elemento+ y el resultado es otra matri- de unos y ceros del mismo tama$o+ ue recoge el resulta5 do de cada comparaci)n entre elementos. %onsid*rese el siguiente ejemplo como ilustraci)n de lo ue se acaa de decir2 99 A@; = C<= B@;D = <= 99 A@@B ans @
99 A]@B ans @
C.G.
Operadores l)gicos
Los operadores l)gicos de MATLAB son los siguientes2
Capítulo 6: Programación de MATLAB
página 63
and >funci)n eui"alente2 and>A+B??. !e e"alan siempre amos operandos+ y el
resultado es true s)lo si amos son true.
and re"e2 si el primer operando es false ya no se e"ala el segundo+ pues el resul5
tado final ya no puede ser m,s ue false.
or >funci)n eui"alente2 or>A+B??. !e e"alan siempre amos operandos+ y el re5
sultado es false s)lo si amos son false.
or re"e2 si el primer operando es true ya no se e"ala el segundo+ pues el resulta5
do final no puede ser m,s ue true. ]
negaci)n l)gica >funci)n eui"alente2 not>A??
#or>A+B?
reali-a un /or e#clusi"o/+ es decir+ de"uel"e en el caso en ue amos sean
) amos sean . Los operadores l)gicos se cominan con los relacionales para poder comproar el cumplimiento de condiciones mltiples. M,s adelante se "er,n otros ejemplos y ciertas funciones de las ue dispone MATLAB para facilitar la aplicaci)n de estos operadores a "ectores y matrices. Los operadores l)gicos re"es >? y >? se utili-an para simplificar las operaciones de compara5 ci)n e"itando operaciones innecesarias+ pero tami*n para e"itar ciertos errores ue se producir0an en caso de e"aluar incondicionalmente el segundo argumento. %onsid*rese por ejemplo la siguiente sentencia+ ue e"ita una di"isi)n por cero2 r @ >]@? >a9?=
Capítulo 6: Programación de MATLAB
página 63
Capítulo II
INTRODUCCION AL USO DEL MATLAB
). *RO+RAMACI,N DE MATLAB Como ya se ha dicho varias veces –incluso con algún ejemplo– MATLAB es una aplicación ue se puede programar muy !"cilmen#e$ %e #odas !ormas, como lenguaje de programación pron#o ver" ue no #iene #an#as posi&ilidades como o#ros lenguajes 'ni #an complicadas$$$($ )e comen*ar" viendo las &i!urcaciones y &ucles, y la lec#ura y escri#ura in#erac#iva de varia&les, ue son los elemen#os &"sicos de cualuier programa de una cier#a complejidad$ 6.1. Bifurcaciones y bucles
MATLAB posee un lenguaje de programación ue –como cualuier o#ro lenguaje– dispone de sen+ #encias para reali*ar bifurcaciones y bucles$ Las bifurcaciones permi#en reali*ar una u o#ra opera+ ción según se cumpla o no una de#erminada condición$ La igura -. mues#ra #res posi&les !ormas de &i!urcación$
!alse Condición
!alse Condición
#rue )en#encias
Condición 1
#rue Bloue 1
#rue
!alse Condición -
Bloue 1 #rue
Bloue !alse
Bloue /
Bloue -
igura -.$ jemplos gr"!icos de &i!urcaciones$
Los bucles permi#en repe#ir las mismas o an"logas operaciones so&re da#os dis#in#os$ Mien#ras ue en CC223ava el 4cuerpo4 de es#as sen#encias se de#ermina&a median#e llaves 5$$$6, en MATLAB se u#ili*a la pala&ra end con an"loga !inalidad$ 7is#en #am&i8n algunas o#ras di!erencias de sin+ #a7is$ !alse Condición
)en#encias
Capítulo 6: Programación de MATLAB
página 63 #rue
)en#encias
Condición #rue !alse
igura /0$ Bucles con con#rol al principio pr incipio y al !inal$
La igura /0 mues#ra dos posi&les !ormas de &ucle, con el con#rol si#uado al principio o al !inal del mismo$ )i el con#rol es#" si#uado al comien*o del &ucle es posi&le ue las sen#encias no se ejecu#en ninguna ve*, por no ha&erse cumplido la condición cuando se llega al &ucle por primera ve*$ )in
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 6#
em&argo, si la condición es#" al !inal del &ucle las sen#encias se ejecu#ar"n por lo menos una ve*, aunue la condición no se cumpla$ Muchos lenguajes de programación disponen de &ucles con con+ #rol al principio ' for for y while en CC223ava( y al !inal ' do … while en CC223ava($ n MATLAB no hay &ucles con con#rol al !inal del &ucle, es decir, no e7is#e cons#rucción an"loga an"loga a do ... while$ Las &i!urcaciones y &ucles no sólo son ú#iles en la preparación de programas o de !icheros *.m$ Tam&i8n se aplican con !recuencia en el uso in#erac#ivo de MATLAB, como se ver" m"s adelan#e en algunos ejemplos$ 9$1$1$ ):T:C;A $% n su !orma m"s simple, la sen#encia if se escri&e en la !orma siguien#e 'o&s8rvese ue –a di!eren+ cia de CC223ava– la condición no va en#re par8n#esis, aunue se pueden poner si se desea( 1<= if condicion sentencias
end
7is#e #am&i8n la bi&urcación m'ltiple, en la ue pueden conca#enarse #an#as condiciones como se desee, y ue #iene la !orma= if condicion1 bloque1
elseif condicion2 bloque2
elseif condicion3 bloque3 else % opción por defecto para cuando no se cumplan las condiciones 1,2,3 bloque4
end
donde la opción por de!ec#o else puede ser omi#ida= si no es#" presen#e no se hace nada en caso de ue no se cumpla ninguna de las condiciones ue se han cheueado$ >na o&servación muy impor#an#e= la condición del if puede ser una condición matricial , del #ipo A??B, donde A y B son ma#rices del mismo #ama@o$ ara ue se considere ue la condición se cumple, es necesario ue sean iguale! do! a do! todos lo! elemento! de las ma#rices A y B 'aij?bij, 1≤i≤m, 1≤ (≤n($ Bas#a ue haya dos elemen#os aij y bij di!eren#es para ue las ma#rices ya no sean iguales, y por #an#o las sen#encias del if no se ejecu#en$ An"logamen#e, una condición en la !orma A∼?B e7ige ue #odos los elemen#os sean di!eren#es dos a dos ' aijbij, 1≤i≤m, 1≤ (≤n($ Bas#ara ue hu&iera dos elemen#os aij y bij iguales para ue la condición no se cumpliese$ n resumen= i! A??B e7ige ue todos los elemen#os sean iguales dos a dos i! A∼?B e7ige ue todos los elemen#os sean diferentes dos a dos Como se ha dicho, MATLAB dispone de !unciones especiales para ayudar en el cheueo de condi+ ciones ma#riciales$ or ejemplo, la !unción isequal(A, B) devuelve un uno si las dos ma#rices son id8n#icas y un cero en caso de ue di!ieran en algo$ 9$1$-$ ):T:C;A )*$TC+ La sen#encia switch reali*a una !unción an"loga a un conjun#o de if...elseif conca#enados$ )u !orma general es la siguien#e=
1D
n los ejemplos siguien#es las sentencias aparecen despla*adas hacia la derecha respec#o al if , else o end $ s#o se hace as para ue el programa resul#e m"s legi&le, resul#ando m"s !"cil ver dónde empie*a y #ermina la &i!urcación o el &ucle$ s muy recomenda&le seguir es#a pr"c#ica de programación$
Capítulo 6: Programación de MATLAB
página 6,
switch switch_expresion case case_expr1, bloque1
case {case_expr2, case_expr3, case_expr4,... bloque2 ...
otherwise,
% opción por defecto
bloque3
end
Al principio se evalúa la switch_expresion, cuyo resul#ado de&e ser un número escalar o una cadena de carac#eres$ s#e resul#ado se compara con las case_expr , y se ejecu#a el &loue de sen#encias ue corresponda con ese resul#ado$ )i ninguno es igual a switch_expresion se ejecu#an las sen#encias correspondien#es correspondien#es a otherwise$ )egún puede verse en el ejemplo an#erior, es posi&le agrupar varias condiciones den#ro de unas llaves 'cons#i#uyendo lo ue se llama un cell arra- o vec#or de celdas, e7plicado en el apar#ado <$D(E &as#a la igualdad con cualuier elemen#o del cell array para ue se ejecu#e ese &loue de sen#encias$ La FigualdadG de&e en#enderse en el sen#ido del operador de igualdad '??( para escalares y la !unción strcmp() para cadenas de carac#eres($ A di!erencia de CC223ava19, en MATLAB sólo se ejecu#a uno de los &loues relacionado con un case$ 9$1$/$ ):T:C;A %/ La sen#encia for repi#e un conjun#o de sen#encias un número prede#erminado de veces$ La sen#encia for de MATLAB es muy di!eren#e y no #iene la generalidad de la sen#encia for de CC223ava$ La siguien#e cons#rucción ejecu#a !entencia! con valores de i de 1 a n, variando de uno en uno$ for i!1"n sentencias
end
o &ien, for i!#ector$alores sentencias
end
donde vectorValores es un vec#or con los dis#in#os valores ue #omar" la varia&le i$ n el siguien#e ejemplo se presen#a el caso m"s general para la varia&le del &ucle ' "alor0inicial: incremento: "alor0&inal (E (E el &ucle se ejecu#a por primera ve* con i=n, y luego i se va reduciendo de 0$- en 0$- has#a ue llega a ser menor ue 1, en cuyo caso el &ucle se #ermina= for i!n"&.2"1 sentencias
end
n el siguien#e ejemplo se presen#a una es#ruc#ura correspondien#e correspondien#e a dos bucles anidados$ La varia+ &le j es la ue vara m"s r"pidamen#e 'por cada valor de i, j #oma #odos sus posi&les valores(= for i!1"m for '!1"n sentencias
end end
>na úl#ima !orma de in#er8s del &ucle for es la siguien#e ' A es una ma#ri*(= for i!( sentencias
end 1<
n C se ejecu#a el caso seleccionado y #odos los siguien#es, salvo ue se u#ilice la sen#encia brea $
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 66
en la ue la varia&le i es un vec#or ue va #omando en cada i#eración el valor de una de las columnas de A$ Cuando se in#roducen in#erac#ivamen#e en la lnea de comandos, los &ucles for se ejecu#an sólo des+ pu8s de in#roducir la sen#encia end ue los comple#a$ 9$1$D$ ):T:C;A *+$L1 La es#ruc#ura del &ucle while es muy similar a la de CC223ava$ )u sin#a7is es la siguien#e= while condicion sentencias
end
donde condicion puede ser una e7presión vec#orial o ma#ricial$ Las !entencia! se siguen ejecu#ando mien#ras haya elemen#os dis#in#os de cero en condicion, es decir, mien#ras haya algún o algunos elemen#os true$ l &ucle se #ermina cuando todo! lo! elemento! de condicion son false 'es decir, cero($ 9$1$<$ ):T:C;A B/1A2 Al igual ue en CC223ava, la sen#encia brea hace ue se #ermine la ejecución del &ucle for yo while m"s in#erno de los ue comprenden a dicha sen#encia$ 9$1$9$ ):T:C;A CT$41 La sen#encia continue hace ue se pase inmedia#amen#e a la siguien#e i#eración del &ucle for o whi! le, sal#ando #odas las sen#encias ue hay en#re el continue y el !in del &ucle en la i#eración ac#ual$ 9$1$H$ ):T:C;A) T/5 $$$CATC+ $$$ 1 La cons#rucción tr"...catch...end permi#e ges#ionar los errores ue se pueden producir en #iempo de ejecución$ )u !orma es la siguien#e= try sentencias1
catch sentencias2
end
n el caso de ue duran#e la ejecución del &loue sentencias# se produ*ca un error, el con#rol de la ejecución se #rans!iere al &loue sentencias$$ )i la ejecución #ranscurriera normalmen#e, senten! cias$ no se ejecu#ara nunca$ MATLAB dispone de una !unción lasterr ue devuelve una cadena de carac#eres con el mensaje correspondien#e al úl#imo error ue se ha producido$ n la !orma las! terr(%%) pone a cero es#e con#ador de errores, y hace ue la !unción lasterr devuelva la ma#ri* vaca IJ has#a ue se produ*ca un nuevo error$ 6.2. Lectura y escritura interactiva de variables
)e ver" a con#inuación una !orma sencilla de leer varia&les desde #eclado y escri&ir mensajes en la pan#alla del C$ M"s adelan#e se considerar"n o#ros modos m"s generales –y complejos– de hacerlo$ 9$-$1$
>:C;K: $P4T
La !unción input permi#e imprimir un mensaje en la lnea de comandos de MATLAB y recuperar como valor de re#orno un valor num8rico o el resul#ado de una e7presión #ecleada por el usuario$ %espu8s de imprimir el mensaje, el programa espera ue el usuario #eclee el valor num8rico o la e7presión$ Cualuier e7presión v"lida de MATLAB es acep#ada por es#e comando$ l usuario pue+
Capítulo 6: Programación de MATLAB
página 67
de #eclear simplemen#e un vec#or o una ma#ri*$ n cualuier caso, la e7presión in#roducida es eva+ luada con los valores ac#uales de las varia&les de MATLAB y el resul#ado se devuelve como valor de re#orno$ 8ase un ejemplo de uso de es#a !unción= >> n = input('Teclee el número de ecuaciones')
#ra posi&le !orma de es#a !unción es la siguien#e 'o&s8rvese el par"me#ro )s)(= >> nombre = input('¿Cómo te llamas?''s')
n es#e caso el #e7#o #ecleado como respues#a se lee y se devuelve sin evaluar, con lo ue se alma+ cena en la cadena nombre$ As pues, en es#e caso, si se #eclea una !órmula, se almacena como #e7#o sin evaluarse$ 9$-$-$
>:C;K: $)P
La !unción disp permi#e imprimir en pan#alla un mensaje de #e7#o o el valor de una ma#ri*, pero sin imprimir su nom&re$ n realidad, disp siempre imprime vec#ores yo ma#rices= las cadenas de carac+ #eres son un caso par#icular de vec#ores$ Consid8rense los siguien#es ejemplos de cómo se u#ili*a= >> disp('!l pro"rama ha terminado') >> #=rand($$) >> disp(#)
jecú#ense las sen#encias an#eriores en MATLAB y o&s8rvese la di!erencia en#re las dos !ormas de imprimir la ma#ri* A$ 6.3. Ficheros *.
Los !icheros con e7#ensión ' .m( son !icheros de #e7#o sin !orma#o '!icheros A)C;;( ue cons#i#uyen el cen#ro de la programación en MATLAB$ Na se han u#ili*ado en varias ocasiones$ s#os !icheros se crean y modi!ican con un edi#or de #e7#os cualuiera$ n el caso de MATLAB ejecu#ado en un C &ajo &indows, lo mejor es u#ili*ar su propio edi#or de #e7#os, ue es #am&i8n 'ebugger $ 7is#en dos #ipos de !icheros *.m, los ficheros de comandos 'llamados !cript! en ingl8s( y las fun! ciones$ Los primeros con#ienen simplemen#e un conjun#o de comandos ue se ejecu#an sucesiva+ men#e cuando se #eclea el nom&re del !ichero en la lnea de comandos de MATLAB o se incluye dicho nom&re en o#ro !ichero *.m$ >n !ichero de comandos puede llamar a o#ros !icheros de co+ mandos$ )i un !ichero de comandos se llama desde de la lnea de comandos de MATLAB, las va+ ria&les ue crea per#enecen al espacio de trabao base de MATLAB 'recordar apar#ado -$<$9(, y permanecen en 8l cuando se #ermina la ejecución de dicho !ichero$ Las funciones permi#en de!inir !unciones en#eramen#e an"logas a las de MATLAB, con su nombre, sus argumentos y sus alores de retorno $ Los !icheros *.m ue de!inen !unciones permi#en e7#en+ der las posi&ilidades de MATLABE de hecho e7is#en &i&lio#ecas de !icheros *.m ue se venden 'toolits( o se dis#ri&uyen gra#ui#amen#e 'a #rav8s de $nternet ($ Las !unciones de!inidas en !icheros *.m se carac#eri*an porue la primera lnea 'ue no sea un comen#ario( comien*a por la pala&ra function, seguida por los "alore! de retorno 'en#re corche#es I J y separados por comas, si hay m"s de uno(, el signo igual '?( y el nombre de la &unción, seguido de los argumento! 'en#re par8n#esis y separados por comas($ Oecu8rdese ue un !ichero *.m puede llamar a o#ros !icheros *.m, e incluso puede llamarse a s mismo de !orma recursiva$ Los !icheros de comandos se pueden llamar #am&i8n desde !unciones, en cuyo caso las varia&les ue se crean per#enecen al espacio de trabao de la funcin $ l espacio de #ra&ajo de una !unción es independien#e del espacio de #ra&ajo &ase y del espacio de #ra&ajo de las dem"s !unciones$ s#o implica por ejemplo ue no puede ha&er colisiones en#re nom&res de varia+
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 6
&les= aunue varias !unciones #engan una varia&le llamada A, en realidad se #ra#a de varia&les com+ ple#amen#e dis#in#as 'a no ser ue A haya sido declarada como varia&le global ($ A con#inuación se ver" con un poco m"s de de#alle am&os #ipos de !icheros *.m$ 9$/$1$ ;CPO) % CMA:%) ') C/$PT) ( Como ya se ha dicho, los !icheros de comandos o !cript! son !icheros con un nom&re #al como fi! le#.m ue con#ienen una sucesión de comandos an"loga a la ue se #ecleara en el uso in#erac#ivo del programa$ %ichos comandos se ejecu#an sucesivamen#e cuando se #eclea el nom&re del !ichero ue los con#iene 'sin la e7#ensión(, es decir cuando se #eclea file# con el ejemplo considerado$ Cuando se ejecu#a desde la lnea de comandos, las varia&les creadas por file# per#enecen al espacio de #ra&ajo &ase de MATLAB$ or el con#rario, si se ejecu#a desde una !unción, las varia&les ue crea per#enecen al espacio de #ra&ajo de la !unción 'ver apar#ado -$<$9, en la p"gina 1D($ n los !icheros de comandos conviene poner los pun#os y coma 'E( al !inal de cada sen#encia, para evi#ar una salida de resul#ados demasiado cuan#iosa$ >n !ichero *.m puede llamar a o#ros !icheros *.m, e incluso se puede llamar a s mismo de modo recursivo$ )in em&argo, no se puede hacer pro! file 'ver apar#ado 9$11, en la p"gina .<( de un !ichero de comandos= sólo se puede hacer de las !un+ ciones$ Las varia&les de!inidas por los !icheros de comandos son varia&les del espacio de #ra&ajo desde el ue se ejecu#a el !ichero, es#o es varia&les con el mismo car"c#er ue las ue se crean in#erac#iva+ men#e en MATLAB si el !ichero se ha ejecu#ado desde la lnea de comandos$ Al #erminar la ejecu+ ción del !cript , dichas varia&les permanecen en memoria$ l comando echo hace ue se impriman los comandos ue es#"n en un !cript a medida ue van siendo ejecu#ados$ s#e comando #iene varias !ormas= echo on echo o!! echo !ile on echo !ile o!! echo !ile echo on all echo o!! all
ac#iva el echo en #odos los !icheros scrip# desac#iva el echo donde Q!ileQ es el nom&re de un !ichero de !unción, ac#iva el echo en esa !unción desac#iva el echo en la !unción pasa de on a off y viceversa ac#iva el echo en #odas las !unciones desac#iva el echo de #odas las !unciones
Mención especial merece el !ichero de comandos startup.m 'ver apar#ado -$H($ s#e !ichero se eje+ cu#a cada ve* ue se en#ra en MATLAB$ n 8l puede in#roducir #odos auellos comandos ue le in#eresa se ejecu#en siempre al iniciar la sesión, por ejemplo format compact y los comandos nece+ sarios para modi!icar el path$ 9$/$-$ %;:;C;K: % >:C;:) La primera l+nea de un !ichero llamado name.m ue de!ine una !unción #iene la !orma= function %lista de &alores de retorno = name(lista de ar"umentos)
donde name es el nom&re de la !unción$ n#re corche#es y separados por comas van los alores de retorno 'siempre ue haya m"s de uno(, y en#re par8n#esis #am&i8n separados por comas los argu! mentos$ uede ha&er !unciones sin valor de re#orno y #am&i8n sin argumen#os$ Oecu8rdese ue los argumentos son los datos de la !unción y los alores de retorno sus resultados$ )i no hay valores de re#orno se omi#en los corche#es y el signo igual '?(E si sólo hay un valor de re#orno no hace !al#a poner corche#es$ Tampoco hace !al#a poner par8n#esis si no hay argumen#os$
Capítulo 6: Programación de MATLAB
página 68
>na di!erencia impor#an#e con CC223ava es ue en MATLAB una !unción no puede modi!icar nunca los argumen#os ue reci&e, de cara al en#orno ue ha reali*ado la llamada$ Los resul#ados de una !unción de MATLAB se oienen siempre a #rav8s de los valores de re#orno, ue pueden ser múl#iples y ma#riciales$ Tan#o el número de argumen#os como el de valores de re#orno no #ienen ue ser !ijos, dependiendo de cómo el usuario llama a la !unción 1H$ Las varia&les de!inidas den#ro de una !unción son ariables locales, en el sen#ido de ue son inac+ cesi&les desde o#ras par#es del programa y en el de ue no in#er!ieren con varia&les del mismo nom+ &re de!inidas en o#ras !unciones o par#es del programa$ )e puede decir ue per#enecen al propio espacio de #ra&ajo de la !unción y no son vis#as desde o#ros espacios de #ra&ajo$ ara ue la !unción #enga acceso a varia&les ue no han sido pasadas como argumen#os es necesario declarar dichas varia&les como ariables globales, #an#o en el programa principal como en las dis#in#as !unciones ue de&en acceder a su valor$ s !recuen#e u#ili*ar el convenio de usar para las varia&les glo&ales nom&res largos 'm"s de < le#ras( y con mayúsculas$ or ra*ones de e!iciencia, los argumen#os ue reci&e una !unción de MATLAB no se copian a va+ ria&les locales si no son modi!icados por dicha !unción 'en #8rminos de CC22 se dira ue se pasan por referencia ($ s#o #iene impor#an#es consecuencias en #8rminos de e!iciencia y ahorro de #iempo de c"lculo$ )in em&argo, si den#ro de la !unción se reali*an modi!icaciones so&re los argumen#os reci&idos, an#es se sacan copias de dichos argumen#os a varia&les locales y se modi!ican las copias 'dirase ue en es#e caso los argumen#os se pasan por alor ($ %en#ro de la !unción, los valores de re#orno de&en ser calculados en algún momen#o 'no hay sen#en+ cia return o&liga#oria, como en CC223ava($ %e #odas !ormas, no hace !al#a calcular siempre #odos los posi&les valores de re#orno de la !unción, sino sólo los que el usuario espera obtener en la sen+ #encia de llamada a la !unción$ n cualuier !unción e7is#en dos varia&les de!inidas de modo au#o+ m"#ico, llamadas nargin y nargout , ue represen#an respec#ivamen#e el número de argumen#os y el número de valores de re#orno con los ue la !unción ha sido llamada$ %en#ro de la !unción, es#as varia&les pueden ser u#ili*adas como el programador desee$ La ejecución de una !unción #ermina cuando se llega a su úl#ima sen#encia ejecu#a&le$ )i se uiere !or*ar el ue una !unción #ermine de ejecu#arse se puede u#ili*ar la sen#encia return, ue devuelve inmedia#amen#e el con#rol al en#orno de llamada$ 9$/$/$ ):T:C;A /1T4/ %e ordinario las !unciones devuelven el con#rol despu8s de ue se ejecu#e la úl#ima de sus sen#en+ cias$ La sen#encia return, incluida den#ro del código de una !unción, hace ue se devuelva inmedia+ #amen#e el con#rol al programa ue reali*ó la llamada$ 9$/$D$ >:C;:) C: :RMO AO;ABL % AOS>M:T) %esde la versión <$0, MATLAB dispone de una nueva !orma de pasar a una !unción un número varia&le de argumen#os por medio de la varia&le arargin, ue es un ector de celdas 'ver apar#ado <$D, en la p"gina <9( ue con#iene #an#os elemen#os como sean necesarios para poder recoger en dichos elemen#os #odos los argumen#os ue se hayan pasado en la llamada$ :o es necesario ue arargin sea el único argumen#o, pero s de&e ser el úl#imo de los ue haya, pues recoge #odos los argumen#os a par#ir de una de#erminada posición$ Oecu8rdese ue a los elemen#os de un cell arra" se accede u#ili*ando llaves 56, en lugar de par8n#esis '($ 19
s un concep#o dis#in#o del de funciones sobrecargadas '!unciones dis#in#as con el mismo nom&re y dis#in#os argu+ men#os(, u#ili*adas en CC223ava$ n MATLAB una misma !unción puede ser llamada con m"s o menos argumen+ #os y valores de re#orno$ Tam&i8n en CC22 es posi&le #ener un número varia&le de argumen#os, aunue no de valo+ res de re#orno$
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 7
%e !orma an"loga, una !unción puede #ener un número inde#erminado de valores de re#orno u#ili+ *ando arargout , ue es #am&i8n un cell arra" ue agrupa los úl#imos valores de re#orno de la !un+ ción$ uede ha&er o#ros valores de re#orno, pero arargout de&e ser el úl#imo$ l cell array arar! gout se de&e crear den#ro de la !unción y hay ue dar valor a sus elemen#os an#es de salir de la !un+ ción$ Oecu8rdese #am&i8n ue las varia&les nargin y nargout indican el número de argumen#os y de valores de re#orno con ue ha sido llamada la !unción$ A con#inuación se presen#a un ejemplo senci+ llo= o&s8rvese el código de la siguien#e !unción atan= function #arar*out!atan3+#arar*in if nar*in!!1 rad ! atan+#arar*in{1elseif nar*in!!2 rad ! atan2+#arar*in{1,#arar*in{2else disp+)rror" m/s de dos ar*umentos) return end #arar*out{1!radif nar*out01 #arar*out{2!rad1&piend
MATLAB 'y muchos o#ros lenguajes de programación( dispone de dos !unciones, llamadas atan y atan$, para calcular el arco cuya #angen#e #iene un de#erminado valor$ l resul#ado de dichas !un+ ciones es#" e7presado en radianes$ La !unción atan reci&e un único argumen#o, con lo cual el arco ue devuelve es#" comprendido en#re – ð- y 2ð- 'en#re –.0 y .0(, porue por ejemplo un arco de D< es indis#ingui&le de o#ro de –1/<, si sólo se conoce la #angen#e$ La !unción atan$ reci&e dos argumen#os, uno proporcional al seno del "ngulo y o#ro al coseno$ n es#e caso ya se pueden dis#in+ guir los "ngulos en los cua#ro cuadran#es, en#re – ð y ð 'en#re –1U0 y 1U0($ La !unción atan de!inida an#eriormen#e puede reci&ir uno o dos argumen#os= si reci&e uno llama a atan y si reci&e dos llama a atan$ 'si reci&e m"s da un mensaje de error($ Adem"s, atan puede devolver uno o dos valores de re#orno$ or ejemplo, si el usuario la llama en la !orma= >> a = atan()*
devuelve un valor de re#orno ue es el "ngulo en radianes, pero si se llama en la !orma= >> %a b = atan(+)*
devuelve dos valores de re#orno, uno con el "ngulo en radianes y o#ro en grados$ &s8rvese cómo la !unción atan u#ili*a los vec#ores de celdas arargin y arargout , as como el número ac#ual de argumen#os nargin con los ue ha sido llamada$ 9$/$<$ + 1LP AOA LA) >:C;:) % >)>AO; Tam&i8n las !unciones creadas por el usuario pueden #ener su help, an"logo al ue #ienen las pro+ pias !unciones de MATLAB$ s#o se consigue de la siguien#e !orma= las primeras lneas de comen+ #arios de cada !ichero de !unción son muy impor#an#es, pues permi#en cons#ruir un help so&re esa !unción$ n o#ras pala&ras, cuando se #eclea en la ven#ana de comandos de MATLAB= >> help mi,func
el programa responde escri&iendo las primeras lneas del !ichero mi_func.m ue comien*an por el car"c#er 'V(, es decir, ue son comen#arios$ %e es#as lneas, #iene una impor#ancia par#icular la primera l+nea de comentarios 'llamada en oca+ siones lnea P1($ n ella hay ue in#en#ar poner la in!ormación m"s relevan#e so&re esa !unción$ La ra*ón es ue e7is#e una !unción, llamada loofor ue &usca una de#erminada pala&ra en cada prime+ ra lnea de comen#ario de #odas las !unciones *.m$
Capítulo 6: Programación de MATLAB
página 79
9$/$9$ + 1LP % %;OCTO;) MATLAB permi#e ue los usuarios creen una ayuda general para #odas las !unciones ue es#"n en un de#erminado direc#orio$ ara ello se de&e crear en dicho direc#orio un !ichero llamado con! tents.m$ A con#inuación se mues#ra un !ichero #pico contents.m correspondien#e al direc#orio tool! box-local de MATLAB= % % % % % % % % % % % % % % % % % %
references. 5a#ed preferences files. startup 6ser startup 7file. finish 6ser finish 7file. matlabrc 7aster startup 7file. pathdef 5earch path defaults. docopt 8eb browser defaults. printopt rinter defaults. reference commands. cedit 5et command line editor 9e:s. terminal 5et *raphics terminal t:pe. ;onfi*uration hostid license #ersion
% 6tilities. % userpath
information. 7(<=(> ser#er host identification number. =icense number. 7(<=(> #ersion number. 6ser en#ironment path.
% ;op:ri*ht 1?42&&2
Compru8&ese ue la in!ormación an#erior es e7ac#amen#e la ue se imprime con el comando >> help local
)i el !ichero contents.m no e7is#e, se lis#an las primeras lneas de comen#arios 'lneas P1( de #odas las !unciones ue haya en ese direc#orio$ ara ue el elp de direc#orios !uncione correc#amen#e hace !al#a ue ese direc#orio es#8 en el search path de MATLAB o ue sea el direc#orio ac#ual$ 9$/$H$ )>B+>:C;:) Tradicionalmen#e MATLAB o&liga&a a crear un !ichero *.m di!eren#e por cada !unción$ l nom&re de la !unción de&a coincidir con el nom&re del !ichero$ A par#ir de la versión <$0 se in#rodujeron las sub!funciones , ue son !unciones adicionales de!inidas en un mismo !ichero *.m, con nom&res di+ !eren#es del nom&re del !ichero 'y del nom&re de la !unción principal( y ue las sub!funciones slo pueden ser llamadas por las funciones contenidas en ese fichero , resul#ando Finvisi&lesG para o#ras !unciones e7#ernas$ A con#inuación se mues#ra un ejemplo con#enido en un !ichero llamado mi_fun.m= function y=mi,fun(ab) y=subfun(ab)* function -=subfun(y.) -=subfun/(y.)* function -=subfun/(y.) -=y0.0/*
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 7
9$/$U$ >:C;:) O;A%A) Las !unciones privadas ' priate( son !unciones ue no se pueden llamar desde cualuier o#ra !un+ ción, aunue se encuen#ren en el path o en el direc#orio ac#ual$ /lo ciertas funciones est0n autori! 1adas a utili1arlas$ Las !unciones privadas se de!inen en su&+direc#orios ue se llaman priate y sólo pueden ser llamadas por !unciones de!inidas en el direc#orio padre del su&+direc#orio priate$ n la &úsueda de nom&res ue hace MATLAB cuando encuen#ra un nom&re en una e7presión, las !unciones privadas se &uscan inmedia#amen#e despu8s de las su&+!unciones, y an#es ue las !uncio+ nes de #ipo general$ 9$/$.$ >:C;:) W$ Las !unciones *.p son !unciones *.m pre+compiladas con la !unción pcode$ or de!ec#o el resul#ado del comando pcode func.m es un !ichero func.p en el direc#orio ac#ual 'el !ichero func.m puede es#ar en cualuier direc#orio del search path($ l comando pcode !inplace func.m crea el !ichero func.p en el mismo direc#orio donde encuen#ra el !ichero func.m$ ueden pasarse varios !icheros *.m al comando pcode de una sola ve*$ Los !icheros *.p se ejecu#an algo m"s r"pidamen#e ue los *.m y permi#en ocul#ar el código de los !icheros A)C;; correspondien#es a las !unciones *.m de MATLAB$ 9$/$10$AO;ABL) O);)T:T) Las ariables persistentes son varia&les locales de las !unciones 'per#enecen al espacio de #ra&ajo de la !unción y sólo son visi&les en dicho espacio de #ra&ajo(, ue conseran su alor en#re dis#in#as llamadas a la !unción$ or de!ec#o, las varia&les locales de una !unción se crean y des#ruyen cada ve* ue se ejecu#a la !unción$ Las varia&les persis#en#es se pueden de!inir en !unciones, pero no en !icheros de comandos$ s ha&i#ual u#ili*ar para ellas le#ras mayúsculas$ Las varia&les se declaran como persis#en#es u#ili*ando la pala&ra persistent seguida de los nom&res separados por &lancos, como por ejemplo= 00 persistent $=G;@C(C <@7G
Las varia&les persistent se iniciali*an a la ma#ri* vaca IJ y permanecen en memoria has#a ue se hace clear de la !unción o cuando se modi!ica el ⁣ero
Como ya se ha apun#ado, es#as varia&les sólo son visi&les en los espacios de #ra&ajo de las !unciones ue las declaran como #ales 'y en el propio espacio de #ra&ajo &ase, si #am&i8n ah han sido declara+ das como glo&ales($ Na se ha dicho #am&i8n ue se suele recurrir al cri#erio de u#ili*ar nom&res lar+ gos y con mayúsculas, para dis#inguirlas !"cilmen#e de las dem"s varia&les$ 6.!. "eferencias de funci#n $function handles%
Las referencias de funcin ' &unction ;andle!( cons#i#uyen un nuevo mecanismo pera re!erirse a un nom&re de !unción, in#roducido en MATLAB 9$0$ n versiones an#eriores la única !orma de re!erir+
Capítulo 6: Programación de MATLAB
página 73
se a una !unción era por medio del nombre$ T8ngase en cuen#a ue MATLAB, al igual ue o#ros lenguajes de programación como CC22 y 3ava, admi#e funciones sobrecargadas 'o"erloaded &unc< tion!(, es#o es, !unciones di!eren#es ue #ienen el mismo nom&re pero se di!erencian en#re s por el número y #ipo de los argumen#os$ Cuando un programa llama a una !unción so&recargada, MA+ TLAB anali*a los #ipos de los argumen#os incluidos en la llamada y llama a la !unción ue mejor se adap#a a esos #ipos de argumen#os$ Las referencias de funcin permi#en al programador un mayor con#rol so&re la !unción ue es e!ec#ivamen#e llamada y #ienen algunas o#ras ven#ajas ue se ver"n en es#e apar#ado y en sus su&+apar#ados$ l principal uso de las referencias de funcin 'como de los nom&res de !unción en versiones an#e+ riores( es el pasar a una !unción el nom&re de o#ra !unción, jun#o con sus argumen#os, para ue la pueda ejecu#ar$ A es#as !unciones ue ejecu#an o#ras !unciones ue se les pasan como argumen#os se les llama funciones de funcin , y se anali*an con m"s de#alle en el apar#ado 9$10, a par#ir de la p"+ gina U/$ or ejemplo, MATLAB dispone de una !unción llamada quad ue calcula la in#egral de!i+ nida de una !unción en#re unos lmi#es dados$ La !unción quad es gen8rica, es#o es calcula, median+ #e m8#odos num8ricos, in#egrales de!inidas de una amplia variedad de !unciones, pero para ue pue+ da calcular dicha in#egral hay ue proporcionarle la !unción a in#egrar$ or ejemplo, para calcular la in#egral en#re 2 y ð de la !unción seno(x) se puede u#ili*ar la sen#encia= >> area=6uad('sin'7pi) area = /87777
La !unción quad ejecu#a la !unción sin por medio de la !unción feal , ue #iene la siguien#e !orma general= fe&al(funcname ar" ar"/ ar" 888)
donde funcname es una cadena de carac#eres con el nom&re de la !unción a evaluar, y arg#, arg$, arg, $$$ son los argumen#os ue se le pasan a feal para ue se los pueda pasar a funcname$ A par#ir de la versión 9$0 de MATLAB ya no se pasa, a las !unciones de !unción, el nom&re de la !unción como en el ejemplo an#erior, sino una referencia de funcin o &unction ;andle$ %e #odas !ormas, para man#ener la compa#i&ilidad con los programas desarrollados en versiones an#eriores, se sigue admi#iendo ue se pase a feal el nom&re de la !unción, pero es#e mecanismo ya no se sopor+ #ar" en versiones pos#eriores$ n MATLAB 9$W la !orma correc#a de ejecu#ar el ejemplo an#erior sera 'se e7plicar" con m"s de#alle a con#inuación(= fh=9sin* area=6uad(fh7pi)*
donde la varia&le fh es una referencia de funcin , ue es un nueo tipo de dato de MATLAB, con #odas las posi&ilidades y limi#aciones ue es#o supone$ 9$D$1$ COAC;K: % OO:C;A) % >:C;K: Na se ha comen#ado ue las referencias de funcin son un nuevo #ipo de da#os de MATLAB 9$ >na re!erencia de !unción se puede crear de dos !ormas di!eren#es= 1$ Median#e el operador 3 '4a#4 o 4arro&a4( La re!erencia a la !unción se crea precediendo el nom&re de la !unción por el operador X$ l resul#ado puede asignarse a una varia&le o pasarse como argumen#o a una !unción$ jemplos= fh = 9sin* area = 6uad(9sin 7 pi)*
-$ Median#e la !unción str$func
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 7#
La !unción str$func reci&e como argumen#o una cadena de carac#eres con#eniendo el nom&re de una !unción y devuelve como valor de re#orno la re!erencia de !unción$ >na de las ven#ajas de es#a !unción es ue puede reali*ar la conversión de un vec#or de celdas con los nom&res en un vec#or de re!erencias de !unción$ jemplos= >> fh = str/func('sin')* >> str/func(:'sin''cos''tan';) ans = 9sin 9cos 9tan
>na carac#ers#ica común e impor#an#e de am&os m8#odos es ue se aplican solamen#e al nombre de la funcin, y no al nom&re de la !unción precedido o cuali!icado por su path$ Adem"s los nom&res de !unción de&en #ener menos de /1 carac#eres$ 9$D$-$ AL>AC;K: % >:C;:) M%;A:T OO:C;A) La principal aplicación de las referencias de funcin es pasar in!ormación de !unciones a o#ras !un+ ciones para ue au8llas puedan ser ejecu#adas por 8s#as$ ara evaluar una re!erencia de !unción MATLAB u#ili*a la !unción feal , ue se llama de la !orma siguien#e= %r r/ r 888 = fe&al(fh ar" ar"/ ar" 888)
donde fh es una re!erencia de !unción y r#, r$, r, $$$ y arg#, arg$, arg, $$$ son respec#ivamen#e los valores de re#orno y los argumen#os de la !unción cuya re!erencia es fh$ )o&re la !unción feal hay ue hacer dos o&servaciones= 1$ La re!erencia de !unción fh de&e ser un escalar$ n o#ras pala&ras, no es posi&le evaluar un array de re!erencias de !unción con una sola llamada a feal $ -$ La !unción fh ue se ejecu#a en el momen#o de la llamada a feal depende de la si#uación en el momen#o en ue se creó la re!erencia de !unción, y no de la si#uación en el momen#o de la lla+ mada a feal $ or ejemplo, si despu8s de crear la re!erencia fh se cam&ia de direc#orio la !un+ ción correspondien#e, en el momen#o de la ejecución no ser" posi&le encon#rarlaE si despu8s de crear fh se crea una nueva !unción con el mismo nom&re, es#a !unción no podr" nunca ser eje+ cu#ada por medio de la re!erencia creada previamen#e$ l siguien#e ejemplo mues#ra cómo se puede ejecu#ar una sub!funcin desde o#ra !unción de!inida en un !ichero *.m di!eren#e$ Oecu8rdese ue, en principio, las su&+!unciones sólo son accesi&les desde o#ras !unciones de!inidas en el mismo !ichero *.m$ )upóngase ue se crea un !ichero llamado pruebafh.m ue con#iene las siguien#es lneas 'se de!ine una !unción principal pruebafh ue se lla+ ma como el !ichero y una su&+!unción subf (= < fichero pruebafh8m function mifh=pruebafh mifh=9subf* function #=subf(4 C) #=40C*
&s8rvese ue la !unción principal pruebafh devuelve una re!erencia a la su&+!unción subf $ n principio sólo pruebafh #iene acceso a subf y gracias a ese acceso puede crear la re!erencia mifh$ )in em&argo, una ve* ue la re!erencia a subf ha sido creada y devuel#a como valor de re#orno, cualuier !unción con acceso a pruebafh podr" #am&i8n acceder a la su&+!unción subf $ l siguien#e programa principal, de!inido en un !ichero pruebafh4ain.m, puede acceder a la su&+!unción gra+ cias a la re!erencia de !unción 'si se in#en#a acceder direc#amen#e se oiene un error($
Capítulo 6: Programación de MATLAB
página 7,
% fichero pruebafh7ain.m
fh=pruebafh (!rand+3>!e:e+31&-
C=fe&al(fh#4) % C!subf+(,> % BBGB disp+)Ha he terminado)
s#e ejemplo sencillo es &as#an#e signi!ica#ivo respec#o a los &ene!icios ue se pueden oener de las re!erencias de !unción$ 9$D$/$ ; :OMAC;K: C:T:;%A O >:A OO:C;A % >:C;K:$ >:C;:) )BOCAOSA%A) >na re!erencia de !unción puede con#ener in!ormación de varias !unciones, en concre#o de #odas auellas !unciones ue !ueran 4visi&les4 en el momen#o en el ue dicha re!erencia !ue creada$ Oe+ cu8rdese ue !unciones visi&les, adem"s de las !unciones in#rnsecas de MATLAB ' built> info=functions(9deblan) function" t:pe" file" methods"
)deblan9) )o#erloaded) )c"ImatlabDpFItoolboxImatlabIstrfunIdeblan9) J1x1 structK
>> info8methods ans ! cell" )c"ImatlabDpFItoolboxImatlabIstrfunILcellIdeblan9)
n es#e caso concre#o se ha considerado la !unción deblan , ue permi#e eliminar carac#eres en &lanco en cadenas de carac#eres o en vec#oras de celdas con cadenas de carac#eres$ l valor de re+ #orno de la !unción functions es una es#ruc#ura con los cua#ro campos siguien#es= !unc#ion
cadena de carac#eres con el nom&re de la !unción a la ue corresponde la re!e+ rencia
#ype
Cadena de carac#eres con uno de los siguien#es valores= =!imple= , =!ub&unction= , =pri"ate= , =con!tructor= y =o"erloaded= $
! ile
Cadena de carac#eres ue con#iene el nom&re del !ichero *.m en el ue es#" de+ !inida la !unción o &ien el #e7#o Q MATLAB built
me#hods
s#ruc#ura ue con#iene los paths de los !icheros *.m en los ue es#"n de!inidas las !unciones so&recargadas ue se corresponden con es#a re!erencia$
l argumen#o de la !unción functions de&e ser una re!erencia de !unción escalar 'no puede ser un array de re!erencias de !unción($ Los dis#in#os valores del campo t"pe #ienen los siguien#es signi!icados= simple
unciones in#rnsecas no so&recargadas$
overloaded
unciones so&recargadas$ )on las únicas ue #ienen campo methods$
cons#ruc#or
Cons#ruc#ores relacionados con clases y o&je#os$
su&!unc#ion unciones de!inidas en un !ichero *.m de o#ra !unción$ priva#e
unciones privadas 'de!inidas en un su&direc#orio priate($
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 76
Las funciones sobrecargadas 'o"erloaded ( #ienen un in#er8s especial, pues son las únicas ue #ie+ nen el campo methods y las ue pueden dar origen a m"s di!icul#ades o pro&lemas$ %e modo an"lo+ go a o#ros lenguajes de programación como CC22 y 3ava, las !unciones so&recargadas de MA+ TLAB son !unciones ue #ienen el mismo nom&re, pero dis#in#os #ipos de argumen#os y dis#in#o código 'en o#ras pala&ras, !unciones di!eren#es ue sólo coinciden en el nom&re($ Las !unciones default son las ue no #ienen argumen#os especiali*ados$ #ras !unciones esperan reci&ir un argumen#o de un #ipo m"s concre#o$ )alvo ue haya una !unción especiali*ada cuyos ar+ gumen#os coincidan con los #ipos de la llamada, MATLAB u#ili*ar" la !unción default $ 9$D$D$ TO) A)CT) % LA) OO:C;A) % >:C;K: %e la misma manera ue una cadena de carac#eres pude ser conver#ida en una re!erencia de !unción por medio de la !unción str$func, MATLAB dispone de la !unción func$str ue reali*a la conver+ sión inversa$ uede ser in#eresan#e conver#ir una re!erencia de !unción en cadena de carac#eres para cons#ruir mensajes de error en relación con cons#rucciones tr"...catch$ #ras !unciones ue pueden u#ili*arse en relación con las re!erencias de !unción son las siguien#es 'se presen#as median#e ejemplos(= isa(una1ariable 'function,handle')
unción ue devuelve 414 ó 404 según una5ariable sea o no una re!erencia de !unción$ s+ #a !unción se podra u#ili*ar den#ro de una !unción de !unción para compro&ar ue el argu+ men#o ue indica la !unción a ejecu#ar con feal ha llegado correc#amen#e$ ise6ual(unfh otrofh)
unción ue compara dos re!erencias a !unción e indica si dan acceso e7ac#amen#e a los mismos m8#odos o no$ Como las re!erencias de !unción son varia&les es#"ndar de MATLAB, pueden guardarse y recupe+ rarse de una sesión a o#ra por medio de los comandos sae y load $ Pay ue #ener cuidado al u#ili*ar re!erencias de !unción creadas en sesiones an#eriores, porue si ha cam&iado el en#orno de #ra&ajo en algo ue les a!ec#e se oendr" un error en #iempo de ejecución$ 9$D$<$ >T;L;%A% % LA) OO:C;A) % >:C;K: La principal u#ilidad de las re!erencias de !unción es el pasar in!ormación de una !unción a o#ras !unciones ue la de&en poder ejecu#ar por medio de feal $ Algunas o#ras ven#ajas de las re!erencias de !unciones son las siguien#es= 1$ )e pueden encon#rar #odas las !unciones con el mismo nom&re ue son visi&les en un de#er+ minado es#ado del programa$ %e es#a !orma se #iene m"s con#rol so&re la !unción ue verda+ deramen#e se va a ejecu#ar$ -$ Acceder desde cualuier par#e de un programa a las !unciones privadas y a las su&+!unciones$ %e es#a !orma se puede reducir el número de !icheros *.m necesarios, pues muchas !unciones se podr"n de!inir como su&+!unciones en un mismo !ichero$ /$ Mejorar la e!iciencia de las !unciones ue se u#ili*an repe#idamen#e, pues no es necesario &us+ car el !ichero *.m cada ve*$ D$ Las re!erencias de !unción son, como se ha dicho, varia&les ordinarias de MATLAB ue pue+ den ser agrupadas en arrays de una o m"s dimensiones$
Capítulo 6: Programación de MATLAB
página 77
9$D$9$ >:C;:) ;:L;: MATLAB permi#e de!inir !unciones a par#ir de e7presiones ma#em"#icas por medio de la !unción inline$ s#a !unción #ra#a de averiguar in#eligen#emen#e cu"les son los argumen#os de la !unción inline, a par#ir del con#enido de la e7presión ma#em"#ica$ or de!ec#o se supone ue Q7Q es el ar+ gummen#o, aunue es #am&i8n posi&le de#erminarlos e7plci#amen#e al llamar a inline$ Consid8ren+ se los siguien#es ejemplos= 00 f!inline+)expresión entre apóstrofos)00 f!inline+)expresión), a1, a2, a3- % los ar*umentos son )a1), )a2), )a3) 00 f!inline+)expresión), M- % los ar*umentos son )x), )1), ..., )M)
Las !unciones inline se llaman con el handle ' f en las sen#encias an#eriores( seguido de los argu+ men#os en#re par8n#esis$ 9$D$H$ >:C;:) A:K:;MA) Las !unciones anónimas cons#i#uyen una !orma muy !le7i&le de crear !unciones so&re la marcha, &ien en la lnea de comandos, &ien en una lnea cualuiera de una !unción o de un !ichero *.m$ La !orma general de las !unciones anónimas es la siguien#e= fhandle ! L+ar*umentos expresión-
%espu8s de ser creada, la !unción anónima puede ser llamada a #rav8s del fhandle seguido de la lis#a de argumen#os ac#uales en#re par8n#esis, o #am&i8n puede ser pasada a o#ra !unción como ar+ gumen#o, #am&i8n por medio del fhandle$ or ejemplo, la siguien#e !unción anónima calcula el va+ lor del seno del "ngulo do&le= seno(n*Coble ! L+an* 2sin+and.cos+an*-
Las !unciones anónimas acceden a las varia&les del espacio de #ra&ajo en el ue son de!inidas y crean en ese momen#o una copia de las varia&les ue u#ili*an$ l valor de dichas varia&les ya no se ac#uali*aE sólo los argumen#os pueden cam&iar de valor$ %e es#a !orma, las !unciones anónimas pueden ejecu#arse a rav8s del handle en o#ros espacios de #ra&ajo$ )i las !unciones anónimas no #ienen argumen#os hay ue poner los par8n#esis vacos, #an#o al de!i+ nirlas como al llamarlas$ or o#ra par#e, pueden #ener varios valores de re#orno cuando la e7presion ue con#ienen devuelve varios valores$ )e pueden recoger #odos o sólo algunos de es#os valores$ La única limi#ación impor#an#e de las !unciones anónimas es ue es#"n limi#adas a una 6nica ex! presin ejecu#a&le de MATLAB$ or o#ra par#e, su uso no #iene m"s limi#aciones ue las del uso del ;andle de una !unción cualuiera$ 9$D$U$ >:C;:) A:;%A%A%A) Las funciones anidadas 'ne!ted &unction!( son !unciones de!inidas den#ro de o#ras !unciones, las llamadas funciones contenedoras $ Cuando se de!inen !unciones anidadas es imprescindi&le #ermi+ nar con una sen#encia end la de!inición de cada una de las !unciones con#enidas en el !ichero *.m$ Las !unciones anidadas sirven para #ener un mayor y mejor con#rol so&re la visi&ilidad de las !un+ ciones 'u8 !unción puede ser llamada y desde dónde(, as como so&re la visi&ilidad ue dichas !iunciones #ienen so&re las dis#in#as varia&les del espacio de #ra&ajo, incluyendo las ue no les han sido pasadas como argumen#os$ >na !unción puede con#ener varias !unciones anidadas al mismo nivel, y una !unción anidada puede #am&i8n ser con#enedora, es decir con#ener a su ve* una ó m"s !unciones anidadas$ A con#inuación se mues#ra un ejemplo sencillo de múl#iples !unciones anidadas a varios niveles=
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 7
function (+ar*1 ... function (a+a1,a2 ... function (a1+ ... end end .... function (b+ ... function (b1+ ... end ... function (b2+ ... end ... end .... end
Oeglas para llamar a las !unciones anidadas= 1$ >na !unción anidada se puede llamar desde cualuier o#ra !unción ue #enga acceso al handle$ -$ >na !unción anidada se puede llamar direc#amen#e desde la !unción del nivel inmedia#amen#e superior$ or ejemplo, la !unción A puede llamar a las !unciones Aa y Ab, pero no a las !uncio+ nes Ab1 y Ab2 ue es#"n dos niveles m"s a&ajo$ /$ >na !unción anidada puede llamar a o#ras !unciones anidadas en la misma !unción con#enedora y al mismo nivel$ or ejemplo, la !unción Aa puede llamar a la !unción Ab, y la Ab1 a la Ab2$ D$ >na !unción anidada puede llamar a #odas las ue es#"n por encima de ella en lnea direc#a$ or ejemplo, la !unción Ab2 puede llamar a las !unciones A y Ab$ >na !unción anidada no puede llamar a las ue es#"n al mismo nivel en o#ra ramaE por ejemplo, Aa1 no pueede llamar a Ab2$ <$ Adem"s, cualuier !unción anidada puede llamar a #odas las su&+!unciones de!inidas en el mis+ mo !ichero$ Oeglas para la visi&ilidad de las varia&les con su&+!unciones y !unciones anidadas= 1$ n general, las !unciones y su&+!unciones de!inidas en el mismo !ichero #ienen espacios de #ra+ &ajo di!eren#es$ Como consecuencia, las varia&les de!inidas en una !unción son ariables loca! les ue no pueden ser vis#as por o#ras !unciones o su&+!unciones$ -$ Tam&i8n una !unción anidada #iene su propio espacio de #ra&ajo, pero adem"s #iene acceso a #odas las varia&les de!inidas por las !unciones ue es#"n por encima de ella en la jerarua de !unciones anidadas$ /$ Tam&i8n las !unciones con#enedoras ven y pueden modi!icar las varia&les locales de!inidas en sus !unciones anidadas, siempre ue de!inan o usen dichas varia&les$ Como regla general, una varia&le usada o de!inida en una !unción anidada per#enece al espacio de #ra&ajo de la !unción con#enedora m"s e7#erior ue de alguna manera accede a dicha varia&le$ D$ Como consecuencia de lo dicho, si una !unción con#enedora no usa o de!ine una varia&le, pero esa varia&le es de!inida por dos !unciones anidadas al mismo nivel en dicha !unción, dichas va+ ria&les en las !unciones anidadas son realmen#e varia&les dis#in#as, pues al no ser usadas por la !unción con#enedora no se #ransmi#en a su espacio de #ra&ajo$
Capítulo 6: Programación de MATLAB
página 78
<$ Las varia&les correspondien#es a los valores de re#orno de una !unción anidada no per#enecen al espacio de #ra&ajo de las !unciones con#enedoras ue las llaman$ Los valores d ere#orno de&en ser recogidoa e7plci#amen#e$ Oecu8rdese ue el handle de&e ser creado desde un pun#o del programa en el ue la !unción es visi+ &le$ )in em&argo, es posi&le u#ili*arlo luego en o#ro pun#o desde el ue la !unción ya no sea visi&le$ s#as reglas se aplican #am&i8n a las !unciones anidadas, aunue con algunas peculiaridades$ n el momen#o de la creación del handle, las !unciones anidadas #ienen acceso a un espacio de #ra&ajo ampliado con el de o#ras !unciones del !ichero *.m, según se ha e7pues#o$ ara ue es#a !unción pueda ser llamada a #rav8s del handle en o#ro lugar del programa, en el momen#o de la creación del handle se crea una copia de las varia&les de su espacio de #ra&ajo ampliadoE es#as copias son de #ipo persistent y se conservan en#re llamadas$ )e recomienda ver los ejemplos en el elp de MATLAB$ 6.&. 'ntrada y salida de datos
Na se ha vis#o una !orma de reali*ar la en#rada in#erac#iva de da#os por medio de la !unción input y de imprimir resul#ados por medio de la !unción disp$ Ahora se van a ver o#ras !ormas de in#ercam+ &iar da#os con o#ras aplicaciones$ 9$<$1$ ;MOTAO %AT) % TOA) AL;CAC;:) Pay varias !ormas de pasar da#os de o#ras aplicaciones –por ejemplo de 7xcel – a MATLAB$ )e pueden enumerar las siguien#es= –
se puede u#ili*ar el 8op" y 9aste para copiar da#os de la aplicación original y deposi#arlos en+ #re los corche#es de una ma#ri* o vec#or, en una lnea de comandos de MATLAB$ Tiene el in+ convenien#e de ue es#os da#os no se pueden edi#ar$
–
se puede crear un !ichero *.m con un edi#or de #e7#os, con lo cual no e7is#en pro&lemas de edición$
–
es posi&le leer un flat file escri#o con carac#eres A)C;;$ >n &lat &ile es un !ichero con !ilas de longi#ud cons#an#e separadas con :ntro, y varios da#os por !ila separados por blanco!$ s#os !icheros pueden ser ledos desde MATLAB con el comando load $ )i se ejecu#a load datos.txt el con#enido del flat file se deposi#a en una ma#ri* con el nom&re datos$ or ejemplo, creando un !ichero llamado flat.txt ue con#enga las lneas= 23.4FD FD.&32 DE.&2 3.E4? ?.?&D 34.?1&
el comando #=load('flat8t-t') leer" es#os valores y los asignar" a la ma#ri* A$ ara m"s in!ormación u#ili*ar help load $ –
el comando textread permi#e leer da#os de cualuier #ipo de un !ichero siempre ue es#8n con+ venien#emen#e separados$ er el elp para m"s in!ormación$
–
se pueden leer da#os de un !ichero con las !unciones fopen y fread 'ver apar#ados 9$9$1 y 9$9$/, en las p"ginas U0 y U1($
–
e7is#en #am&i8n o#ros m8#odos posi&les= escri&ir !unciones en C para #raducir a !orma#o *.mat 'y cargar despu8s con load (, crear un !ichero ejecu#a&le *.mex ue lea los da#os, e#c$ :o se ve+ r"n en es#os apun#es$
9$<$-$ YOTAO %AT) A TOA) AL;CAC;:) %e !orma an"loga, #am&i8n los resul#ados de MATLAB se pueden e7por#ar a o#ras aplicaciones como &ord o 7xcel $
Aprenda Matlab 7. como !i e!tu"iera en Primero
página
–
u#ili*ar el comando diar" para da#os de peue@o #ama@o 'ver apar#ado -$., en la p"gina -1(
–
u#ili*ar el comando sae con la opción ;ascii 'ver apar#ado -$H, en la p"gina 1.(
–
u#ili*ar las !unciones de &ajo nivel fopen, fwrite y o#ras 'ver apar#ados 9$9$1 y 9$9$/, en las p"ginas U0 y U1( – o#ros m8#odos ue no se ver"n au= escri&ir su&ru#inas en C para #raducir de !orma#o *.mat 'guardando previamen#e con sae(, crear un !ichero ejecu#a&le *.mex ue escri&a los da#os, e#c$ Pay ue se@alar ue los !icheros &inarios *.mat son #raspor#a&les en#re versiones de MATLAB en dis#in#os #ipos de compu#adores, porue con#ienen in!ormación so&re el #ipo de m"uina en el ;ea< der del !ichero, y el programa reali*a la #rans!ormación de modo au#om"#ico$ Los !icheros *.m son de #ipo A)C;;, y por #an#o pueden ser ledos por dis#in#os compu#adores sin pro&lemas de ningún #ipo$ 6.6. Lectura y escritura de ficheros
MATLAB dispone de !unciones de lec#uraescri#ura an"logas a las del lenguaje C 'en las ue es#"n inspiradas(, aunue con algunas di!erencias$ n general son versiones simpli!icadas –con menos opciones y posi&ilidades– ue las correspondien#es !unciones de C$ 9$9$1$ >:C;:) %P1 N %CL)1 s#as !unciones sirven para a&rir y cerrar !icheros, respec#ivamen#e$ La !unción fopen #iene la !orma siguien#e= %fite-to = fopen('filename''c')
donde fi es un valor de re#orno ue sirve como iden#i!icador del !ichero, te(to es un mensaje para caso de ue se produ*ca un error, y c es un car"c#er 'o dos( ue indica el #ipo de operación ue se desea reali*ar$ Las opciones m"s impor#an#es son las siguien#es= QrQ QZQ QaQ Qr2Q
lec#ura 'de read ( escri#ura reempla*ando 'de >rite( escri#ura a con#inuación 'de append ( lec#ura y escri#ura
Cuando por alguna ra*ón el !ichero no puede ser a&ier#o, se devuelve un '+1($ n es#e caso el valor de re#orno te(to puede proporcionar in!ormación so&re el #ipo de error ue se ha producido '#am+ &i8n e7is#e una !unción llamada ferror ue permi#e oener in!ormación so&re los errores$ n el elp del programa se puede ver cómo u#ili*ar es#a !unción($ %espu8s de reali*ar las operaciones de lec#ura y escri#ura deseadas, el !ichero se puede cerrar con la !unción close en la !orma siguien#e= st = fclose(fi)
donde st es un valor de re#orno para posi&les condiciones de error$ )i se uieren cerrar a la ve* #o+ dos los !icheros a&ier#os puede u#ili*arse el comando= st = close('all')
9$9$-$ >:C;:) %)CA% , ))CA% , %P/$T% N )P/$T% s#as !unciones permi#en leer y escri&ir en !icheros A)C;;, es decir, en !icheros !orma#eados$ La !orma general de la !unción fscanf es la siguien#e= %&ar&ar/888 = fscanf(fi'cadena de control'si.e)
Capítulo 6: Programación de MATLAB
página 9
donde fi es el iden#i!icador del !ichero 'devuel#o por la !unción fopen(, y si)e es un argumen#o op+ cional ue puede indicar el #ama@o del vec#or o ma#ri* a leer$ &s8rvese o#ra di!erencia con C= las varia&les ledas se devuelven como valor de re#orno y no como argumen#os pasados por re!erencia 'precedidos por el car"c#er [($ La cadena de control va encerrada en#re após#ro!os simples, y con+ #iene los especi!icadores de !orma#o para las varia&les= Vs Vd V! Vl!
para cadenas de carac#eres para varia&les en#eras para varia&les de pun#o !lo#an#e para varia&les de do&le precisión
La !unción sscanf es similar a fscanf pero la en#rada de carac#eres no proviene de un !ichero sino de una cadena de carac#eres$ inalmen#e, la !unción fprintf dirige su salida !orma#eada hacia el !ichero indicado por el iden#i!i+ cador$ )u !orma general es= fprintf(fi'cadena de control'&ar&ar/888)
\s#a es la !unción m"s parecida a su homóloga de C$ La cadena de con#rol con#iene los !orma#os de escri#ura, ue son similares a los de C, como mues#ran los ejemplos siguien#es= fprintf(fi'!l número de ecuaciones es
%e !orma an"loga, la !unción sprintf convier#e su resul#ado en una cadena de carac#eres ue devuel+ ve como valor de re#orno, en ve* de enviarlo a un !ichero$ 8ase un ejemplo= resultado = sprintf('!l cuadrado de
donde resultado es una cadena de carac#eres$ s#a !unción cons#i#uye el m8#odo m"s general de conver#ir números en cadenas de carac#eres, por ejemplo para ponerlos como ##ulos de !iguras$ 9$9$/$ >:C;:) %/1A N %*/$T1 s#as !unciones son an"logas a fscanf y fprintf , pero en ve* de leer o escri&ir en un !ichero de #e7#o 'A)C;;(, lo hacen en un ⁣ero binario, no legi&le direc#amen#e por el usuario$ Aunue dichos !i+ cheros no se pueden leer yo modi!icar con un edi#or de #e7#os, #ienen la ven#aja de ue las opera+ ciones de lec#ura y escri#ura son mucho m"s r"pidas, e!icien#es y precisas 'no se pierden decimales al escri&ir($ s#o es par#icularmen#e signi!ica#ivo para grandes !icheros de da#os$ ara m"s in!orma+ ción so&re es#as !unciones se puede u#ili*ar el help$ 9$9$D$ ;CPO) % ACC) %;OCT %e ordinario los !icheros de disco se leen y escri&en secuencialmen#e, es decir, de principio a !inal, sin volver nunca hacia a#r"s ni reali*ar sal#os$ )in em&argo, a veces in#eresa acceder a un !ichero de un modo ar&i#rario, sin ningún orden prees#a&lecido$ s#o se puede conseguir con las !unciones ftell y fsee $ n cada momen#o, hay una especie de cur!or ue indica en u8 par#e del !ichero se es#" posiciona+ do$ La !unción fsee permi#e mover es#e cursor hacia delan#e o hacia a#r"s, respec#o a la posición ac#ual 'Qco!Q(, respec#o al principio 'Q&o!Q( o respec#o al !inal del !ichero 'Qeo!Q($ La !unción ftell indica en u8 posición es#" el cursor$ )i alguna ve* se necesi#a u#ili*ar es#e #ipo de acceso a disco, se puede &uscar m"s in!ormación por medio del help$
Aprenda Matlab 7. como !i e!tu"iera en Primero
página
6.. "ecoendaciones +enerales de ,ro+raaci#n
Las !unciones vec#oriales de MATLAB son mucho m"s r"pidas ue sus con#rapar#idas escalares$ n la medida de lo posi&le es muy in#eresan#e vec#ori*ar los algori#mos de c"lculo, es decir, reali*arlos con vec#ores y ma#rices, y no con varia&les escalares den#ro de &ucles$ Aunue los vec#ores y ma#rices pueden ir creciendo a medida ue se necesi#a, es mucho m"s r"pido reservarles #oda la memoria necesaria al comien*o del programa$ )e puede u#ili*ar para ello la !un+ ción 1eros$ Adem"s de es#e modo la memoria reservada es con#igua$ s impor#an#e u#ili*ar el profile para conocer en u8 sen#encias de cada !unción se gas#a la mayor par#e del #iempo de c"lculo$ %e es#a !orma se descu&ren Fcuellos de &o#ellaG y se pueden desaroollar aplicaciones mucho m"s e!icien#es$ Conviene desarrollar los programas incremen#almen#e, compro&ando cada !unción o componen#e ue se a@ade$ %e es#a !orma siempre se cons#ruye so&re algo ue ya ha sido compro&ado y ue !un+ ciona= si aparece algún error, lo m"s pro&a&le es ue se de&a a lo úl#imo ue se ha a@adido, y de es#a manera la &úsueda de errores es#" aco#ada y es mucho m"s sencilla$ Oecu8rdese ue de ordi+ nario el #iempo de corrección de errores en un programa puede ser D ó < veces superior al #iempo de programación$ l debugger es una herramien#a muy ú#il a la hora de acor#ar ese #iempo de pues#a a pun#o$ n es#e mismo sen#ido, puede decirse ue pensar &ien las cosas al programar 'so&re una hoja de papel en &lanco, mejor ue so&re la pan#alla del C( siempre es ren#a&le, porue se disminuye m"s ue proporcionalmen#e el #iempo de depuración y eliminación de errores$ #ro o&je#ivo de la programación de&e ser man#ener el código lo m"s sencillo y ordenado posi&le$ Al pensar en cómo hacer un programa o en cómo reali*ar de#erminada #area es convenien#e pensar siempre primero en la solución m"s sencilla, y luego plan#earse o#ras cues#iones como la e!iciencia$ inalmen#e, el código de&e ser escri#o de una manera clara y ordenada, in#roduciendo comen#arios, u#ili*ando lneas en &lanco para separar las dis#in#as par#es del programa, sangrando las lneas para ver claramen#e el rango de las &i!urcaciones y &ucles, u#ili*ando nom&res de varia&les ue recuer+ den al signi!icado de la magni#ud !sica correspondien#es, e#c$ n cualuier caso, la mejor !orma 'y la única( de aprender a programar es programando$ 6.-. Acelerador /0 $ust /n 0ie% en A0LAB
La versión 9$< de MATLAB incorporó por primera ve* un acelerador para los !icheros *.m, ue permi#e acercarse a las velocidades de o#ros lenguajes de programación como or#ran y CC22$ s impor#an#e sa&er u8 #ipo de programas pueden ser acelerados y cu"les no lo son$ n principio MATLAB acelera los &ucles de los !icheros *.m ue no con#ienen cier#o #ipo de sen#encias$ M"s en concre#o, se pueden o!recer las siguien#es recomendaciones pr"c#icas= 1$ :o u#ili*ar es#ruc#uras, vec#ores de celdas, clases ni llamadas a !unción por medio de re!eren+ cias$ -$ :o u#ili*ar hiperma#rices con m"s de #res dimensiones$ /$ >#ili*ar sólo llamadas a !unciones na#ivas de MATLAB '!unciones compiladas, no de!inidas por medio de !icheros *.m o !icheros MY($ D$ :o u#ili*ar varia&les ue cam&ian de #ipo a lo largo de la ejecución 'por ejemplo, una varia&le ue primero es una cadena de carac#eres y luego pasa a ser una ma#ri* real($
Capítulo 6: Programación de MATLAB
página 3
<$ :o u#ili*ar las varia&les i yo j con números complejos como si !ueran varia&les normales 'por ejemplo, no u#ili*ar 3*i, sino 3i($ 9$ :o u#ili*ar vec#ores yo ma#rices ue crecen a lo largo de la ejecución del programa$ s mu+ cho mejor reservar previamen#e #oda la memoria necesaria median#e la !unción 1eros, ones o euivalen#e$ 6.. Llaada a coandos del sistea o,erativo y a otras funciones e(ternas
s#ando en la ven#ana de comandos de MATLAB, se pueden ejecu#ar comandos de M)+%) pre+ cedi8ndolos por el car"c#er '](, como por ejemplo= >> Aedit fichero8m
)i el comando va seguido por el car"c#er ampersand '[( el comando se ejecu#a en F&ac^groundG, es decir, se recupera el con#rol del programa sin esperar ue el comando #ermine de ejecu#arse$ or ejemplo, para arrancar > Anotepad B
7is#e #am&i8n la posi&ilidad de arrancar una aplicación y dejarla iconi*ada$ s#o se hace pos#po+ niendo el car"c#er &arra ver#ical '_(, como por ejemplo en el comando= >> Anotepad
Algunos comandos de MATLAB reali*an la misma !unción ue los comandos an"logos del sis#ema opera#ivo M)+%), con lo ue se puede evi#ar u#ili*ar el operador ']($ Algunos de es#os comandos son los siguien#es= dir
con#enido del direc#orio ac#ual Zha# !icheros *.m en el direc#orio ac#ual dele#e !ilename &orra el !ichero llamado filename m^dir'nd( crea un su&+direc#orio con el nom&re nd copy!ile'sc, ds#( copia el !ichero sc en el !ichero dst #ype !ile$#7# imprime por la pan#alla el con#enido del !ichero de #e7#o file.txt cd cam&iar de direc#orio ac#ivo pZd mues#ra el pa#h del direc#orio ac#ual Zhich !unc locali*a una !unción llamada func loo^!or pala&ra &usca palabra en #odas las primeras lneas de los !icheros *.m 6.1. Funciones de funci#n
Como ya se ha comen#ado al ha&lar de las re!erencias de !unción, en MATLAB e7is#en !unciones a las ue hay ue pasar como argumen#o el nom&re de o#ras !unciones, para ue puedan ser llamadas desde dicha !unción$ As sucede por ejemplo si se desea calcular la in#egral de!inida de una !unción, resolver una ecuación no lineal, o in#egrar num8ricamen#e una ecuación di!erencial ordinaria 'pro+ &lema de valor inicial($ s#os ser"n los #res casos –de gran impor#ancia pr"c#ica– ue se van a ver a con#inuación$ )e comen*ar" por medio de un ejemplo, u#ili*ando una !unción llamada prueba ue se va a de!inir en un !ichero llamado prueba.m$
Aprenda Matlab 7. como !i e!tu"iera en Primero
página #
ara de!inir es#a !unción, se de&e elegir =:>7?na ve* a&ier#o el 7ditor , se de&en #eclear las - lneas siguien#es= function y=prueba(-) y = 8D((-+8)8E/087)08D888 ((-+8F)8E/087$)+G*
guard"ndolo despu8s con el nom&re de prueba.m$ La de!inición de !unciones se ha vis#o con de#alle en el apar#ado 9$/$-, a par#ir de la p"gina 9U$ l !ichero an#erior ha de!inido una nueva !unción ue puede ser u#ili*ada como cualuier o#ra de las !unciones de MATLAB$ An#es de seguir adelan#e, conviene ver el aspec#o ue #iene es#a !unción ue se aca&a de crear$ ara di&ujar la !unción prueba, #ecl8ense los siguien+ #es comandos=
igura /1$ unción Fprue&aG$
>> -=+78/* >> plot(-prueba(-))
l resul#ado aparece en la igura /1$ Na se es#" en condiciones de in#en#ar hacer c"lculos y prue&as con es#a !unción$ 9$10$1$; :TSOAC;K: :>M\O;CA % >:C;:) Lo primero ue se va a hacer es calcular la in#egral de!inida de es#a !unción en#re dos valores de la a&scisa ($ n ingl8s, al c"lculo num8rico de in#egrales de!inidas se le llama ?uadrature$ )a&iendo eso, no resul#a e7#ra@o el comando con el cual se calcula el "rea comprendida &ajo la !unción en#re los pun#os 0 y 1 'o&s8rvese ue la re!erencia de la !unción a in#egrar se pasa por medio del operador X precediendo al nom&re de la !unción$ Tam&i8n podra crearse una varia&le para ello(= >> area = 6uad(9prueba 7 ) area ! 2?.F3
)i se #eclea help quad se puede oener m"s de in!ormación so&re es#a !unción, incluyendo el m8+ #odo u#ili*ado ')imp!on( y la !orma de con#rolar el error de la in#egración$ La !unción quadl() u#ili*a un m8#odo de orden superior ' Lobatto(, mien#ras ue la !unción dblquad() reali*a in#egrales de!inidas do&les y la !unción triplequad() reali*a in#egrales de volu+ men$ er el elp o los manuales online para m"s in!ormación$ 9$10$-$C>AC;:) : L;:AL) N T;M;`AC;K: %espu8s de #odo, calcular in#egrales de!inidas no es #an di!cil$ M"s di!cil es desde luego calcular las races de ecuaciones no lineales, y el mnimo o los mnimos de una !unción$ MATLAB dispone de las #res !unciones siguien#es= !*ero !min&nd !minsearch op#imse#
calcula un cero o una ra* de una !unción de una varia&le calcula el mnimo de una !unción de una varia&le calcula el mnimo de una !unción de varias varia&les permi#e es#a&lecer los par"me#ros del proceso de c"lculo
)e empe*ar" con el c"lculo de races$ %el gr"!ico de la !unción prueba en#re +1 y - resul#a eviden#e ue dicha !unción #iene dos races en ese in#ervalo$ La !unción f1ero calcula una y se con!orma=
Capítulo 6: Programación de MATLAB
página ,
Cu"l es la ue calculab ues depende de un par"me#ro o argumen#o ue indica un pun#o de par#ida para &uscar la ra*$ 8anse los siguien#es comandos y resul#ados= >> f.ero(9prueba +8H) ans ! &.131D
>> f.ero(9prueba /) ans ! 1.2??F
n el primer caso se ha dicho al programa ue empiece a &uscar en el pun#o +0$< y la solución en+ con#rada ha sido +0$1/19$ n el segundo caso ha empe*ado a &uscar en el pun#o de a&scisa - y ha encon#rado o#ra ra* en el pun#o 1$-..<$ )e ven claras las limi#aciones de es#a !unción$ La !unción f1ero() #iene #am&i8n o#ras !ormas in#eresan#es= !*ero'Xprue&a, I71,7-J(
calcula una ra* en el in#ervalo 71+7-$ s necesario ue la !un+ ción #enga dis#in#o signo en los e7#remos del in#ervalo$
!*ero'Xprue&a, 7, op#ions(
calcula la ra* m"s pró7ima a ( con cier#as opciones de!inidas en la es#ruc#ura o,tions$ s#a es#ruc#ura se crea con la !unción optimset $
La !unción optimset #iene la siguien#e !orma general= options ! optimset+)param1),#al1,)param2),#al2,...
en la ue se indican los nom&res de los par"me#ros u opciones ue se desean modi!icar y los valores ue se desea dar para cada uno de dichos par"me#ros$ >na segunda !orma general es= options ! optimset+oldopts, )param1),#al1,)param2),#al2,...
en la ue se oienen unas nuevas opciones modi!icando unas opciones an#eriores con una serie de parejas nombre<"alor de par"me#ros$ 7is#en muchas opciones ue pueden ser de!inidas por medio de la !unción optimset $ Algunas de las m"s carac#ers#icas son las siguien#es 'las dos primeras es#"n dirigidas a evi#ar procesos i#era#ivos ue no aca&en nunca y la #ercera a con#rolar la precisión en los c"lculos(= Ma7unvals Ma7;#er TolY
m"7imo número de evaluaciones de !unción permi#idas m"7imo número de i#eraciones error m"7imo permi#ido en la a&scisa de la ra*
Ahora se va a calcular el mnimo de la !unción prueba$ %e!nase una !unción llamada prueba$ ue sea prueba cam&iada de signo, y #r"#ese de reproducir en el C los siguien#es comandos y resul#a+ dos 'para calcular m"7imos con fmin &as#ara con cam&iar el signo de la !unción(= >> plot(-prueba/(-)) >> fminbnd(9prueba/ +/) ans ! &.3&&4
>> fminbnd(9prueba/ 78H) ans ! &.?2E
Tam&i8n a la !unción fminbnd se le puede pasar la es#ruc#ura options$ or ejemplo, para !ijar un error de 10+0U se puede proceder del siguien#e modo= >> options=optimset('TolI' e+7J)* >> fminbnd(9prueba/ 78H options)
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 6
n cualuier caso, es impor#an#e o&servar ue para calcular las races o los valores mnimos de una !unción, hay ue pasar el nom&re de es#a !unción como argumen#o a la !unción de MATLAB ue va a hacer los c"lculos$ n es#o consis#e el concep#o de funcin de funcin$ MATLAB #iene un toolbo@ o paue#e especial 'ue de&e ser aduirido apar#e(( con muchas m"s !unciones orien#adas a la optimiación, es decir al c"lculo de valores mnimos de !unciones, con o sin res#ricciones$ 9$10$/$; :TSOAC;K: :>M\O;CA % C>AC;:) %;O:C;AL) O%;:AO;A) s#e es o#ro campo en el ue las capacidades de MATLAB pueden resul#ar de gran u#ilidad a los ingenieros o !u#uros ingenieros in#eresados en la simulacin$ MATLAB es capa* de calcular la evo+ lución en el #iempo de sis#emas de ecuaciones di!erenciales ordinarias de primer orden, lineales y no lineales$ or el momen#o se supondr" ue las ecuaciones di!erenciales se pueden escri&ir en la !or+ ma= y = f ( y t ) 'H( donde t es la varia&le escalar, y #an#o y como su derivada son vec#ores$ >n ejemplo #pico puede ser el tiro parablico, considerando una resis#encia del aire proporcional al cuadrado de la velocidad$ )e supone ue dicha !uer*a responde a la siguien#e e7presión vec#orial=
⎧ @ ⎫ ⎧ % ⎫ ⎨ @⎬ = −c ( @ + - ) ⎨ ⎬ ⎩ % - ⎭ ⎩ - ⎭
'U(
donde c es una cons#an#e conocida$ Las ecuaciones di!erenciales del movimien#o ser"n= ⎫ ⎧ @ ⎫ ⎞ ⎧ h @h⎫ 1 ⎛ ⎧ − c @ - + - = 0
(
⎨ h h⎬ -
)
⎜ ⎨ −mg ⎬ m ⎟ ⎝⎠ ⎩ ⎭
⎨ ⎬
'.(
⎩ ⎭
pero 8s#e es un sis#ema de - ecuaciones di!erenciales de orden -$ ara poderlo in#egrar de&e #ener la !orma del sis#ema 'H(, y para ello se va a #ras!ormar en un sis#ema de D ecuaciones di!erenciales de primer orden, de la !orma siguien#e= u" ⎧ u ⎫ ⎧ 0 ⎫ - ⎧ ⎫
⎪ ⎪ ⎪ ⎪ " − g c ⎨ ⎬= ⎨ ⎬−
⎪ ⎪ ⎪ ⎪ ⎪ @h ⎪ ⎪ u ⎪ ⎩⎪ -h ⎭⎪ ⎩⎪ " ⎭⎪
m
(u
)
+ " ⎪⎨ ⎪⎬
'10(
⎪ ⎪ ⎪ 0⎪ ⎩⎪0⎭⎪
MATLAB dispone de varias !unciones para in#egrar sis#emas de ecuaciones di!erenciales ordinarias de primer orden, en#re ellas ode$, ue u#ili*a el m8#odo de /unge<2utta de segundo#ercer orden, y ode, ue u#ili*a el m8#odo de /unge<2utta<%e;lberg de cuar#ouin#o orden$ Am&as e7igen al usuario escri&ir una !unción ue calcule las derivadas a par#ir del vec#or de varia&les, en la !orma indicada por la ecuación 'H($ Cree con el 7ditor?'ebugger un !ichero llamado tiropar.m ue con#enga las siguien#es lneas= function deri&=tiropar(ty)
Aprenda Matlab 7. como !i e!tu"iera en Primero
fac=+(7877D87)@s6rt((y()E/0y(/)E/))* deri&=.eros($)* deri&()=fac@y()* deri&(/)=fac@y(/)+F8J* deri&()=y()* deri&($)=y(/)*
página 6
Capítulo 6: Programación de MATLAB
página 7
n el programa an#erior se han supues#o unas cons#an#es con los valores de c?0$001, m?1 y g ?.$U$ al#a !ijar los valores iniciales de posición y velocidad$ )e supondr" ue el proyec#il par#e del ori+ gen con una velocidad de 100 mseg y con un "ngulo de /0, lo ue conduce a los valores iniciales siguien#es= u'0(?100Wcos'pi9(, "'0(?100Wsin'pi9(, @'0(?0, -'0(?0$ Los comandos para reali*ar la in#egración son los siguien#es 'se suponen agrupados en un !ichero tiropar4ain.m(= % fichero tiropar7ain.m % inter#alo de inte*ración
tspan=%7F* % condiciones iniciales
y7=%77@cos(piDG) 77@sin(piDG) 7 7'* % llamar a la función de inte*ración numNrica
%tK=ode$H(9tiropartspany7)* % dibu'o de la altura en función del tiempo plot+t,H+",4, *rid disp+)Ha he terminado)
n es#os comandos ts,an es un vec#or ue de!ine el in#ervalo #emporal de in#egración$ s muy impor#an#e ue en la !unción ode, el vec#or de condiciones ini+ ciales y sea un vec#or columna$ l vec#or t devuel#o por ode con#iene los valores del #iempo para los cua+ les se ha calculado la posición y velocidad$ %ichos va+ lores son con#rolados por la !unción ode y no por el usuario, por lo ue de ordinario no es#ar"n igualmen#e espaciados$ La ma#ri* de resul#ados 4 con#iene cua#ro columnas 'las dos velocidades y las dos coordenadas de cada posición( y #an#as !ilas como elemen#os #iene el vec#or t$ n la igura /- se mues#ra el resul#ado del ejemplo an#erior 'posición ver#ical en !unción del #iem+ po($ igura /-$ Tiro para&ólico 'posición ver#ical en !unción del #iempo($ MATLAB dispone de varias !unciones para la in#egra+ ción de sis#emas de ecuaciones di!erenciales ordinarias$ )e pueden ci#ar las siguien#es, clasi!icadas según una carac#ers#ica de las ecuaciones ue se desea in#egrar= )is#emas no+rgidos )is#emas rgidos
ode$, ode y ode## ode#s , ode$s , od$/# y ode$tb
La rigide1 ' !ti&&ne!!, en la li#era#ura inglesa( es una carac#ers#ica de muchos sis#emas de ecuaciones di!erenciales ordinarias ue aparecen en la pr"c#ica y ue los hace m"s di!ciles de resolver$ >na e7plicación de#allada de es#a carac#ers#ica e7cede la !inalidad de es#e manual, pero s se puede dar una muy &reve e7plicación$ Muchos in#egradores num8ricos es#"n &asados en !órmulas ue permi#en predecir el valor de la !un+ ción en t5Ät a par#ir del valor de la !unción y de su derivada en el ins#an#e t y an#eriores= y t + Δt
= & ( y t , y t −Δt ,$$$, y t , y t −Δt
'11(
,$$$, t )
A es#os in#egradores se les llama integradores expl+citos$ Todo lo ue necesi#an es ue el usuario programe una !unción ue calcule la derivada en la !orma indicada en la ecuación 'H($ n la solución de un sis#ema de ecuaciones di!erenciales ordinarias aparecen com&inadas diversas componen#es oscila#orias '#ipo seno, coseno o similar($ Algunas de es#as componen#es oscilan m"s r"pidamen#e ue o#ras '#ienen una !recuencia m"s elevada($ Los pro&lemas r+gidos o stiff son aue+ llos en cuya solución par#icipan componen#es de !recuencias muy di!eren#es 'muy al#as y muy &a+
Aprenda Matlab 7. como !i e!tu"iera en Primero
página
jas($ Todos los in#egradores de MATLAB #ienen con#rol au#om"#ico del error$ uiere es#o decir ue el usuario !ija el error ue es#" dispues#o a admi#ir en la solución y MATLAB ajus#a el paso de la in#egración para conseguir ese error$ Los in#egradores e7plci#os de#ec#an la posi&le presencia de componen#es de al#a !recuencia en la solución y #ra#an de adap#ar a ellas su paso, ue se hace dema+ siado peue@o y #ermina por de#ener la in#egración$ Los integradores impl+citos son mucho m"s apropiados para los pro&lemas stiff $ n lugar de u#ili*ar !órmulas del #ipo de la ecuación '11( u#ili*an !órmulas del #ipo= y t +Δ t = & ( y t +Δt , y t , y t −Δt ,$$$, y − Δt ,$$$,
t +Δ t
, y t , y t
'1-(
t )
l pro&lema con la e7presión '1-( es ue para calcular la !unción en t5Ät hace uso de la derivada en ese mismo ins#an#e, ue no puede ser conocida si no se conoce la !unción$ so uiere decir ue el sis#ema '1-( es un sistema de ecuaciones no lineal es ue hay ue resolver i#era#ivamen#e$ Los sis+ #emas de ecuaciones no lineales se resuelven mucho m"s r"pidamen#e si se conoce la derivada de la !unción 'un ejemplo es el m8#odo de e>ton
en cuyo caso el usuario #am&i8n #iene ue proporcionar una !unción ue calcule la ma#ri* $y7t %$ La ecuación '1/( represen#a un gran número de casos pr"c#icos, por ejemplo los ue surgen de las ecuaciones di!erenciales del movimien#o en Mec"nica$ La !orma m"s &"sica para #odos los in#egradores de MATLAB es la siguien#e= %t K = sol&ername(fh tspan y7)
donde fh es una re!erencia de la !unción ue permi#e calcular la derivada según la e7presión 'H(, ts,an puede ser un vec#or de dos elemen#os I tini7 tfinalJ ue represen#an el comien*o y el !in de la in#egración o un vec#or de #iempos I tini8tste,8tfinalJ en los cuales se desea ue MATLAB devuelva resul#ados, e y es un vec#or columna con los valores iniciales$ Como resul#ado se oiene el vec#or t de #iempos en los ue se dan resul#ados y una ma#ri* 4 con #an#as !ilas como #iempos de salida y ue represen#an cada una de ellas la salida en el correspondien#e ins#an#e de #iempo$ >na !orma m"s ela&orada de llamar a los in#egradores de MATLAB es la siguien#e= %t K = sol&ername(fh tspan y7 options)
donde options es una es#ruc#ura similar a la vis#a en el apar#ado an#erior para el c"lculo de races y mnimos de !unciones$ n es#e caso la es#ruc#ura options 'ue es di!eren#e de la an#erior, aunue se es#8 u#ili*ando el mismo nom&re( se de#ermina por medio de la !unción odeset , ue admi#e las !or+ mas siguien#es= options = odeset('param' &al'param/' &al/ 888)* options = odeset(oldopt 'param' &al'param/' &al/ 888)*
n#re los par"me#ros u opciones m"s impor#an#es se pueden ci#ar los siguien#es 'se puede oener m"s in!ormación so&re ellos consul#ando odeset en el elp$ Los parámetro! en cur!i"a ser"n u#ili+ *ados o e7plicados en los ejemplos ue siguen(= ara el error ara el paso
/elTol , Ab!Tol , :ormCon#rol
;ni#ial)#ep, Ma7)#ep
Capítulo 6: Programación de MATLAB
página 8
ara la ma#ri* M Ma!!, M!tateependence, M"Pattern, Mass)ingular e ;ni#ial)lope ara el 3aco&iano acobian, Pattern, Dectoried utput%cn, utput)el , Oe!ine, )tat! ara la salida A con#inuación se va a repe#ir el eemplo de tiro parablico presen#ado al comien*o de es#a )ección u#ili*ando el in#egrador implci#o ode#s con algunas opciones modi!icadas$ ara ello la ecuación '10( se va a re+escri&ir en la !orma de la ecuación '1/(, resul#ando= ⎡ m 0 0 0 ⎤ ⎧uh ⎫ ⎫ ⎧u ⎫
⎧ ⎢ ⎢0 m ⎢ 0 0⎨
0
⎪ ⎥⎪ ⎪⎪ mg − ⎪ ⎪ = ⎨ ⎬ ⎬ 1− c 0⎥ @h 0 0 ⎥ ⎪ " ⎪
u
⎢ ⎥ ⎪⎪ ⎪ ⎪ ⎣ 0 0 0 1⎦ ⎩ ⎩⎪ -h ⎭⎪ ⎭⎪
(
u
-
⎪⎪"⎪⎪ + "- )
⎪ "
'1D(
⎨ ⎬ 0
⎪ ⎪ ⎩⎪0 ⎭⎪
n es#e caso el programa principal se ha denominado tiropar4ain$ y #iene la siguien#e !orma= < fichero tiroparLain/8m clear all, close all t&!&- tf!1&- npoints!F1:&!J1&&cos+piD,1&&sin+piD,&,&K)% #ector de puntos en los que se desea resultados tspan!Jt&"+tft&+npoints1"tfK% modificación de las opciones por defecto m!1- L=eye($)* L()=m* L(//)=m*
options = odeset('2elTol'e+7$ '#bsTol'e+7G 888 'Mtats''on' 'Lass'L 888 'NutputOcn'9odeplot 'NutputMel'%/$)* % llamada a la función de inte*ración numNrica
%tK=odeHs(9tiropar/tspany7options m)* % dibu'o de la altura del mó#il en función del tiempo fi*ure, plot+t,H+",4, *rid disp+)Ha he terminadoO)
&s8rvese cómo se han de!inido nuevas #olerancias para los errores a&solu#o y rela#ivo, ue se ha ac#ivado la opción de imprimir es#ads#icas y ue se le indica al programa ue se le da una ma#ri* de masas cons#an#e en una varia&le llamada 'La o#ra opción para el argumen#o Q assQ es una re!e+ rencia a la !unción ue se encargar" de calcular la ma#ri* de masas($ La !unción tiropar$ no ha su+ !rido cam&ios impor#an#es respec#o a tiropar y es as= function deri&=tiropar/+t,:, m % cuación diferencial en la forma % 7:p!f+t,:deri#!Peros+4,1fac!+&.&&1sqrt++:+1Q2R:+2Q2deri#+1!fac:+1deri#+2!fac:+2?.mderi#+3!:+1deri#+4!:+2-
l cam&io m"s impor#an#e consis#e en ue a la !unción tiropar$ se le ha pasado como argumen#o la msa del proyec#il$ n e!ec#o, la !orma ue #iene MATLAB para pasar argumen#os desde el pro+ grama principal a las !unciones llamadas por el in#egrador es poner es#os argumen#os a con#inuación de options, en la llamada al in#egrador$ l in#egrador recoge es#os argumen#os y los #ransmi#e$ l resul#ado de MATLAB incluye las es#ads#icas solici#adas y es el siguien#e=
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 8
32 successful steps & failed attempts F function e#aluations 1 partial deri#ati#es ? =6 decompositions F1 solutions of linear s:stems
>na #ercera y m"s so!is#icada !orma de llamar a los in#egradores de MATLAB podra ser la ue se mues#ra a con#inuación$ Aunue se #ra#a de un ejemplo muy sencillo, se han incluido en 8l muchas de las carac#ers#icas m"s avan*adas de los in#egradores de MATLAB, de aplicación en casos mu+ cho m"s complicados$ Los lec#ores in#eresados en las #8cnicas de simulación de&en es#udiar con a#ención el programa ue sigue y los comen#arios ue se acompa@an$ 1.
% fichero tiropar7ain3.m
/8
function tiroparLain
3. 4. F. D.
% @nter#alo de inte*racion t&!&- tf!12- npoints!F1tspan!Jt&"+tft&+npoints1"tfK% condiciones iniciales
P8
y7=%77@cos(piDG)77@sin(piDG)7+7'*
. ?.
% elementos S!& en la Tacobiana de f+ en la ec. dif. 7+t,::p!f+t,: Tp!sparse+J1 1 & &- 1 1 & &- 1 & & &- & 1 & &K-
78 8 /8 8
options = odeset('2elTol'e+7G '#bsTol'e+7G 'Lass'9tiroparLasa 888 'LMtateQep''none' 'NutputOcn'9tiroparMalida 'NutputMel'%$ 888 'RSattern'Rp '1ectori.ed''on' '!&ents'9tiropar!&entos 'Mtats''on')* sol=odeHs(9tiropartspany7options7877)*
14.
% forma alternati#a de llamar al inte*rador
H8
< %TK t!& y!& e&=odeHs(9tiropartspany7options7877)*
1D. 1E. 1. 1?. 2&. 21. 22.
% resultados del c/lculo de e#entos % sol.xe tiempos en los que se ha producido el e#ento disp+)
/8
T=tspan(find(tspansol8-e(/)))*
24.
% la funcion de#al calcula la solucion en los tiempos deseados
/H8
K=de&al(solT)*
2D. 2E. 2.
% forma alternati#a de llamar al inte*rador disp+)Ha he terminadoO)
33.
2?.
% calculo de la matriP de masas
78
function L=tiroparLasa(tmc)
31. 7!dia*+Jm,m,1 ,1K- 32. % función para controlar la salida de resultados
$8
function status=tiroparMalida(tyfla"mc)
3F. 3D. 3E.
% se llama a tiropar35alida+ en cada punto de salida : % esta función se encar*a de llamar a odeplot status!&-
J8
switch fla"
3?. case )init) 4&. disp+J)ntrando en salida
$G8 $P8 $J8 $F8 H78
< puede haber resultados para mUs de un tiempo de salida for i=len"th(t) disp(%'!ntrando en salidaTiropar$ para t='num/str(t(i)))* odeplot(t(i)y(i))* end H8 end F2.
Capítulo 6: Programación de MATLAB
F3.
% funcion para controlar los e#entos
H$8
function %&aloresOinaldireccion=tiropar!&entos(tymc)
FF.
if :+20& #alor ! :+4% unico #alor que se controla esWinal ! &% no termina la inte*ración al lle*ar al suelo direccion ! 1% lle*ar al suelo en dirección ascendente else #alor ! :+4esWinal ! 1% termina la inte*ración al lle*ar al suelo direccion ! 1- % lle*ar al suelo en dirección descndente end
FD. FE. F. F?. D&. D1. D2. D3.
página 89
or o#ra par#e, el !ichero tiropar.m ue evalúa la ecuación di!erencial es el siguien#e= 8 /8 8 $8 H8 G8 P8
function dy=tiropar(tymc) < &ersion &ectori.ada fac!csqrt+:+1,".Q2R:+2,".Q2d:!Peros+siPe+:d:+1,"!fac.:+1,"d:+2,"!fac.:+2,"?.md:+3,"!:+1,"d:+4,"!:+2,"-
)o&re las !unciones de!inidas en el !ichero tiropar4ain.m se pueden hacer los siguien#es comen#a+ rios= 1$ l programa se ha de!inido como funcin sin argumentos 'lnea -( y no como !ichero de co+ mandos$ La ra*ón es para poder u#ili*ar sub!funciones '!unciones de!inidas en el mismo !i+ chero(, ue no es#"n permi#idas en los !icheros de comandos$ -$ Las condiciones iniciales 'lnea H( se parecen a las de los ejemplos an#eriores, pero el movi+ mien#o comien*a con una ordenada nega#iva 'por de&ajo del origen($ s#e hecho se u#ili*ar" en relación con los eentos$ /$ Las ecuaciones di!erencias se suponen en la !orma de la ecuación '1D( ' 't , y (yh = f 't , y ( (, ue permi#e proporcionar m"s in!ormación al in#egrador$ n la lnea . se de!ine una ma#ri* dispersa con 4unos4 en las posiciones correspondien#es a los #8rminos dis#in#os de cero de la ma#ri* 3aco&iana del segundo miem&ro, es#o es, a las derivadas parciales dis#in#as de cero del vec#or f 't ,y( respec#o al vec#or y$ l in#egrador ode#s va a calcular dichas derivadas num8ri+ camen#e y la in!ormación con#enida en la ma#ri* , so&re los #8rminos no nulos le permi#e ahorrar mucho #ra&ajo$ D$ La es#ruc#ura o,tions, de!inida en las lneas 10+1-, #iene una gran impor#ancia, pues con#rola los aspec#os !undamen#ales de la in#egración$ Como ya se ha dicho, sus valores se es#a&lecen en la !orma de parejas parámetroE"alor $ Los primeros argumen#os son los valores de las #ole+ rancias de error rela#ivo y a&solu#o, ya comen#ados previamen#e$ A con#inuación se comen#an las res#an#es opciones$ n los nom&res de los par"me#ros MATLAB no dis#ingue en#re ma+ yúsculas y minúsculas y no hace !al#a escri&irlos con #odas las le#ras= &as#a poner su!icien#es le#ras para evi#ar la am&igedad en el nom&re$ or ejemplo, 4/tate'ep y mstate ser"n consi+ derados como euivalen#es a 4/tate'ependence$ s convenien#e sin em&argo ue la elección de es#os nom&res no a!ec#e a la legi&ilidad del código$ <$ La #ercera pareja de argumen#os de o,tions declara ue la ma#ri* de masas 'par"me#ro 4ass( es de!inida por la !unción tiropar4asa , cuya re!erencia se da como valor$ #ra posi&ilidad es la ue se ha u#ili*ado an#es= cuando la ma#ri* de masas es cons#an#e, se calcula previamen#e su valor y se incluye el nom&re de la varia&le como valor de es#e argumen#o$ La lnea 11 in+ cluye el argumen#o 4/tate'ep, #am&i8n relacionado con la ma#ri* de masas, ue es#a&lece el #ipo de dependencia de dicha ma#ri* respec#o al vec#or de es#ado y$ )us posi&les valores son none, wea y strong $ #ro argumen#o relacionado con la ma#ri* de masas, no u#ili*ado en es#e ejemplo, es 49attern, cuyo valor de&e ser una ma#ri* sparse an"loga a ,, u#ili*ada para de+
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 8
!inir la dependencia de los elemen#os de la ma#ri* de masas respec#o al vec#or y 'su !par!it pattern($ 9$ l par"me#ro Dutput=cn permi#e al usuario con#rolar la salida de resul#ados a medida ue se van haciendo los c"lculos y no solamen#e al !inal$ l valor de es#e par"me#ro es una re!erencia de !unción ' 3tiropar/alida( ue ser" u#ili*ada por el in#egrador varias veces a lo largo de la in#egración$ MATLAB dispone de cua#ro !unciones de salida preprogramadas ' odeplot , odep! has$, odephas y odeprint ( ue pueden ser u#ili*adas sin m"s ue pasar como valor una re!e+ rencia a ellas$ n es#e caso se ha programado una !unción de salida llamada tiropar/alida ue es#" de!inida a par#ir de la lnea /D$ s#a !unción se llama al inicio de la in#egración, en cada ins#an#e de salida de resul#ados y al #erminar la in#egración$ l par"me#ro Dutput/el permi#e de!inir los elemen#os del vec#or de es#ado en los ue se es#" in#eresado$ n es#e caso se le han pasado como valor el vec#or I/, DJ, lo ue har" ue la !unción de salida reci&a las posiciones y no las velocidades 'ue es#"n en las dos primeras posiciones del vec#or de es#ado y($ H$ La 3aco&iana de la !unción f 't ,y( respec#o al vec#or y #iene una gran impor#ancia, so&re #odo en pro&lemas stiff $ l usuario puede proporcionar una 3aco&iana al in#egrador, pero si no lo hace 8s#e la calcula num8ricamen#e$ l usuario puede #am&i8n proporcionar una re!erencia de !unción ue calcule una 3aco&iana anal#icamen#e 'de modo e7ac#o o apro7imado( por medio del par"me#ro Cacobian$ Cuando no se u#ili*a es#e par"me#ro, el in#egrador calcula la 3aco&ia+ na num8ricamen#e y #am&i8n en es#e caso el programador puede ayudar a acelerar mucho los c"lculos$ l par"me#ro C9attern, ya comen#ado previamen#e, permi#e indicar al in#egrador u8 elemen#os de la 3aco&iana son dis#in#os de cero$ Adem"s, como una 3aco&iana con#iene n- de+ rivadas parciales y cada derivada se calcula a par#ir de la di!erencia en#re dos evaluaciones de f 't ,y(, es#e c"lculo puede ser muy cos#oso para valores grandes de n$ l par"me#ro C9attern permi#e reducir el c"lculo de derivadas num8ricas$ Adem"s, el par"me#ro 5ectori1ed permi#e reali*ar es#e c"lculo mucho m"s r"pidamen#e u#ili*ando las capacidades vec#oriales de MA+ TLABE sus posi&les valores son on y off $ M"s adelan#e se ver" cómo se ha vec#ori*ado en es#e ejemplo la !unción tiropar$ U$ l penúl#imo par"me#ro ue aparece en la es#ruc#ura o,tions es 7ents$ s#e par"me#ro puede #ener una gran impor#ancia en simulación$ n es#e con#e7#o, se llaman eentos a #odas aue+ llas circuns#ancias ue pueden acaecer a lo largo de la simulación y ue cam&ian su na#urale*a u o&ligan a #omar una decisión$ or ejemplo, si se es#" simulando el movimien#o de un veh+ culo #odo #erreno, cada ve* ue las ruedas pierden o vuelven a #omar con#ac#o con el suelo se produce un cam&io en el sis#ema a simular, pues se eliminan o a@aden ecuaciones y grados de li&er#ad$ Los eentos de MATLAB permi#en de#ec#ar semi+au#om"#icamen#e es#as si#uaciones y #omar las medidas adecuadas$ n el ejemplo de #iro para&ólico ue se es#" considerando el único even#o ue se va a considerar es ue el proyec#il llegue al suelo, es decir, ue su coor+ denada " se anule 'se supone ue el suelo es la super!icie -F($ l valor del par"me#ro 7ents es la re!erencia de la !unción de usuario ue se ocupar" de ges#ionarlos$ .$ l úl#imo par"me#ro de o,tions es /tats, ue cuando es#" en on hace ue el in#egrador calcule e imprima las es#ads#icas so&re el #ra&ajo ue ha sido necesario en la in#egración$ 10$ La lnea 1/ con#iene la llamada al integrador , en es#e caso a la !unción ode#s $ La lnea 1< mues#ra −comen#ada, para ue no se ejecu#e − una forma alternatia de reali*ar es#a llamada$ n el primer caso, ue !ue una novedad de la versión 9$0 de MATLAB, el in#egrador en#rega #odos los resul#ados como campos de una es#ruc#ura, ue en es#e caso se ha llamado sol$ l lis+ #ado del programa indica los signi!icados de los campos m"s impor#an#es= sol.( es un vec#or con los #iempos en los ue se devuelven resul#ados y sol.y es una ma#ri* cuyas !ilas son los re+
Capítulo 6: Programación de MATLAB
página 83
sul#ados correspondien#es$ )i es#"n ac#ivados los even#os hay #res campos adicionales (e, ye e ie, ue represen#an respec#ivamen#e los ins#an#es de #iempo en ue se han producido los even+ #os, los valores del vec#or de es#ado en esos ins#an#es de #iempo, y el even#o concre#o 'pueden con#rolarse varios even#os di!eren#es( ue se ha producido en cada uno de esos ins#an#es$ 11$ Tan#o en la lnea 1/ como en la 1< aparecen de#r"s de o,tions dos argumen#os adicionales ue represen#an la masa '1( y el amor#iguamien#o c '0$001($ Todos los argumen#os ue apa+ re*can de#r"s de o,tions son siempre considerados argumen#os adicionales por el in#egrador, ue se limi#a a recogerlos y pas"rselos a #odas las !unciones de usuario #ales como tiropar, tiropar4asa, e#c$ l in#egrador es un mero #ransmisor de argumen#os en#re el programa principal y las res#an#es !unciones de usuario$ s muy impor#an#e ue toda! la! &uncione! de u!uario reco(an e!to! argumento! adicionale! aunue no los necesi#en, pues en o#ro caso se oiene un error de in!u&iciente n'mero de argumento!$ &s8rvese ue es#os argumen#os apa+ recen en las lneas /0, /D y
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 8#
19$ Llega el momen#o de hacer unos comen#arios so&re la !unción ue maneja los eentos$ l in+ #egrador necesi#a del usuario para de#ec#ar los even#os ue se pueden producir a lo largo de la simulación$ ara MATLAB un eento es siempre una ariable cu"o alor pasa por cero , &ien en dirección ascendente o descendente$ sa varia&le puede ser una coordenada, una dis+ #ancia, una !uer*a, $$$ )i en ve* de hacerse cero #iene ue alcan*ar un valor de#erminado, &as+ #ar" con#rolar la di!erencia correspondien#e$ l usuario de&e decir pues al in#egrador u8 valo+ res #iene ue con#rolar$ s#o se hace por medio de los valores de re#orno de la !unción ue ges#iona les even#os, en es#e caso tiropar7entos 'ver lnea ($ Cada !ila de la ma#ri* resul#ado dy se calcula con una única ins#rucción, en !unción de las !ilas de la ma#ri* y$ s#a simple modi!icación 'en o#ros ejemplos puede ser mucho m"s complicada( hace ue los c"lculos sean mucho m"s e!icien#es$ :o se puede en#rar con m"s de#enimien#o en es#as cues#iones especiali*adas$ ara el lec#or in#eresa+ do en es#os pro&lemas se recomienda acudir a la ayuda de MATLAB, concre#amen#e al #ema #i#ula+ do :nitial 5alue 9roblem /olers, accesi&le desde la ven#ana principal del elp de MATLAB en 4athematics, 'ifferential 7quations, :nitial 5alue 9roblems for D'7s and 'A7s $ Tam&i8n pue+ de ser muy ú#il consul#ar la in!ormación ue aparece so&re 4AE>AB D'7 /uite, en la sección de 9rintable 'ocumentation (9'=), en la ven#ana de elp$ s#os documen#os con#ienen una e7plica+ ción muy de#allada de #odas las posi&ilidades de las !unciones re!eridas, as como numerosos ejem+ plos$ 9$10$D$LA) >:C;:) 1DAL, 1DALC , %1DAL 5 1DAL$ s#as !unciones #ienen mucho ue ver con las cadenas de carac#eres, ya ue necesi#an la !le7i&ilidad de 8s#as para alcan*ar #odas sus posi&ilidades$ Las !unciones para manipular cadenas de carac#eres se ver"n en un pró7imo apar#ado$ La !unción eal(%cadena de caracteres%) hace ue se evalúe como e7presión de MATLAB el #e7#o con#enido en#re las comillas como argumen#o de la !unción$ s#e #e7#o puede ser un comando, una !órmula ma#em"#ica o +en general+ cualuier e7presión v"lida de MATLAB$ La !unción eal de&e #ener los valores de re#orno necesarios para recoger los resul#ados de la e7presión evaluada$ s#a !orma de de!inir macros es par#icularmen#e ú#il para pasar nom&res de !unción a o#ras !uncio+ nes de!inidas en !icheros *.m$ l siguien#e ejemplo va creando varia&les llamadas A1, A2, $$$, A1 u#ili*ando la posi&ilidad de conca#enar cadenas an#es de pas"rselas como argumen#o a la !unción eal =
Capítulo 6: Programación de MATLAB
página 8,
for n = 7 e&al(%'#'num/str(n)' = ma"ic(n)') end
La !unción eal() se puede usar #am&i8n en la !orma eal(%tr"/tring%, %catch/tring%)$ n es#e caso se evalúa la cadena %tr"/tring% , y si se produce algún error se evalúa la cadena %catch/tring% $ s una !orma simpli!icada de ges#ionar errores en #iempo de ejecución$ La !unción EFealc() es similar a eal() pero con la di!erencia de ue cualuier salida ue la e7pre+ sión pasada como argumen#o hu&iera enviado a la ven#ana de comandos de MATLAB es cap#urada, y almacenada en una ma#ri* de carac#eres 0 cuyas !ilas #erminan con el car"c#er QnQ$ or su par#e la !unción feal sirve para evaluar, den#ro de dicha !unción, o#ra !unción cuya re!eren+ cia o cuyo nom&re con#enido en una cadena de carac#eres se le pasan como primer argumen#o$ s posi&le ue es#e nom&re se haya ledo desde #eclado o se haya reci&ido como argumen#o$ A la !un+ ción feal hay ue pasarle como argumen#os #an#o la re!erencia o el nom&re de la !unción a evaluar como sus argumen#os$ or ejemplo, si den#ro de una !unción se uiere evaluar la !unción calcu! lar(A, b, c) , donde el nom&re calcular o la re!erencia 3calcular se enva como argumen#o en la cadena nombre, en#onces feal(nombre, A, b, c) euivale a calcular(A, b, c)$ inalmen#e, la !unción ealin(ws, %expresion%) evalúa =e@pre!ion= en el espacio de #ra&ajo ws$ Los posi&les valores de ws son %caller% y %base% , ue indican el espacio de #ra&ajo de la !unción ue lla+ ma a ealin o el espacio de #ra&ajo &ase$ Los valores de re#orno se recogen del modo ha&i#ual$ 6.11. ?istribuci#n del esfuer)o de c@lculo8 9rofiler
l profiler es una u#ilidad ue permi#e sa&er u8 #iempo de c"lculo se ha gas#ado en cada lnea de una funcin de!inida en un !ichero *.m o en general de un programa de MATLAB$ l profiler #am+ &i8n puede u#ili*arse con ficheros de comandos *.m, es decir con programas ue no sean !unciones$ ermi#e asimismo de#erminar el número de llamadas a dicha !unción, las !unciones ue la han lla+ mado ' parent &unction!(, las !unciones llamadas por ella ' c;ild &unction!(, e#c$ l profiler mejora la calidad de los programas, pues permi#e de#ec#ar los Fcuellos de &o#ellaG de una aplicación y concen#rar en ellos los es!uer*os para mejorar su e!iciencia$ or ejemplo, sa&iendo el número de veces ue se llama a una !unción y el #iempo ue cues#a cada llamada, se puede decidir si es mejor emplear m"s memoria en guardar resul#ados in#ermedios para no #ener ue calcular va+ rias veces lo mismo$ l profiler ha sido mejorado en las dis#in#as versiones de MATLAB, disponiendo de una in#er!ace de usuario propia 'ver igura // y siguien#es($ Con el profiler se puede medir el #iempo 'en cen#8+ simas de segundo( empleado en cada lnea del !ichero, en cada llamada a una !unción e incluso en cada operador del lenguaje$ ara arrancar la ven#ana del profiler se puede ejecu#ar el comando 9rofiler en el menú 'estop, u#ili*ar el menú /tart?4atlab o simplemen#e #eclear profile iewer en la ven#ana de comandos$ l resul#ado ser" ue se a&re la ven#ana ue se mues#ra en la igura //$ Ahora se de&e in#roducir en la ven#ana Gun this code el nom&re de la !unción o !ichero *.m ue se uiere anali*ar y despu8s clicar en el &o#ón /tart 9rofiling $ ;nmedia#amen#e el programa empie*a a ejecu#arse &ajo la supervisión del profiler , lo cual se sa&e porue en la par#e superior derecha de la ven#ana aparece una marca verde y comien*a a correr el #iempo$ Al aca&ar la ejecución se mues#ra el resumen de resul#ados ' 9rofile /ummar"(, ue para el programa tiropar4ain.m e7plicado en el apar#ado 9$10$/, es el mos#rado en la igura /D$ n es#a !igura se mues#ra un in!orme del n de veces ue ha sido llamada cada !unción y del #iempo #o#al ue se ha empleado en ella$
Aprenda Matlab 7. como !i e!tu"iera en Primero
página 86
igura //$ en#ana inicial del 9rofiler $
igura /D$ 9rofile /ummar" para tiropar4ain$
igura /<$ ;n!ormación so&re la !unción tiroparsalida$
igura /9$ ;n!ormación adicional so&re tiroparsalida$
Clicando so&re el enlace a la !unción tiroparsalida se mues#ra la in!ormación de la igura /< y de la igura /9$ n la par#e de arri&a de la ven#ana 'igura /<( se mues#ra el número de veces ue ha sido llamada cada lnea de código y el #iempo empleado en ella$ n la par#e in!erior de la ven#ana 'igura /9( aparece una in!ormación similar re!erida al código !uen#e del !ichero$ Las sen#encias ue se han llevado m"s #iempo de C> aparecen coloreadas en un #ono rosa de in#ensidad crecien#e$ >na in!ormación par#icularmen#e in#eresan#e es la proporcionada &ajo el epgra!e 4!>int results, 'no mos#rados en las !iguras( ue con#iene sugerencias para mejorar la e!iciencia del programa$ or ejemplo, se avisa de la e7is#encia de varia&les ue se calculan pero no se u#ili*an pos#eriormen#e, de la e7is#encia de al#erna#ivas m"s e!icien#es, e#c$ l profiler proporciona #am&i8n in!ormación so&re la !unción padre 'la ue la ha llamado( y las !unciones hijas de cada !unción$ #ra !orma de llamar al profiler es por medio de la !unción profile, ue se in#ercala en el código !uen#e en la !orma 'se supone ue es#as lneas !orman par#e de un !ichero *.m(= profile on +detail 'builtin'* sol!ode1Fs+Ltiropar4,tspan2,:&,options,1,&.&&1-
profile &iewer*
(ndice
(ntroduccio n a M ATL AB y !( M L (Nj 5
donde la primera lnea ac#iva el profiler a la ve* ue de!ine el grado de detalle ue se desea y el #ipo de #iempo ue se desea medir$ La segunda lnea es una llamada a la !unción ode#s ue a su ve* llama a muchas o#ras !unciones y la #ercera lnea de#iene el profiler y le pide un in!orme con los resul#ados calculados$ Los in!ormes presen#ados por el pro!iler son similares a los de la igura /D y siguien#es, aunue en es#e caso no se mues#ra un in!orme #o#al so&re la !unción tiropar4ain, sino sólo so&re la par#e de código ue es#" en#re profile on y profile iewer $ 7is#en dos posi&les grados de de#alle respec#o a la in!ormación ue se le pide al profiler = Qmme7Q Q&uil#inQ
de#ermina el #iempo u#ili*ado por !unciones y su&+!unciones de!inidas en !icheros *.m y *.mex $ \s#a es la opción por de!ec#o$ como el an#erior incluyendo las funciones intr+nsecas de MATLAB$
#ros posi&les comandos relacionados con el profiler de MATLAB son los siguien#es= pro!ile vieZer pro!ile on pro!ile on –de#ail level pro!ile on –his#ory pro!ile o!! pro!ile resume pro!ile clear s ? pro!ile'Qs#a#usQ( s#a#s ? pro!ile'Qin!oQ(
a&re la ven#ana del profiler mos#rada en la igura /D$ ac#iva el profiler poniendo a cero los con#adores como el an#erior, pero con el grado de de#alle indicado ac#iva el profiler con in!ormación so&re el orden de las llamadas a las !unciones 'puede regis#rar has#a 10000 llamadas( desac#iva el profiler sin poner a cero los con#adores vuelve a ac#ivar el profiler sin poner a cero los con#adores pone a cero los con#adores mues#ra una es#ruc#ura con#eniendo los da#os del profile de#iene el profiler y mues#ra una es#ruc#ura con los resul#ados 'con+ sul#ar el elp para m"s in!ormación so&re las varia&les miem&ro de es#as es#ruc#uras(
l profiler se puede aplicar a !unciones y a !icheros de comandos$ La ejecución de un programa con el profiler puede ser &as#an#e m"s len#a ue sin 8l, por el #ra&ajo e7#ra ue conlleva$
(ndice
(ntroduccio n a M ATL AB y !( M L (Nj 5
Capítulo III
A*LICACI,N DE MATLAB EN SISTEMAS DE CONTROL 1.1 Con%erio-
n
de
una
uncio-
n
tran.erencia
>na !unciof n #rans!erencia puede descri&irse en M ATLAB u#ili*ando dos vec#ores !ilas= uno para los coe!icien#es del numerador y o#ro para los coe!icien#es del denominador$ A menudo se reuiere para anali*ar o disen ar un sis#ema conocer la u&icaci of n de sus polos y cerosE dicha in!ormaciof n es#af con#enida en la !unciof n #rans!erencia del sis#ema$ Cuando la !un+ ciof n de #rans!erencia es#af especi!icada como ra*of n de polinomios, podemos conocer sus polos, ceros y ganancia, o viceversa$ Los comandos ue nos permi#en efs#o son= tf2Pp, ue de un cocien#e de polinomios nos devuelve los ceros, polos y una ganancia, y Pp2tf, ue de conocer los polos, ceros y la ganancia de un sis#ema nos da el numerador y denominador de su !unciof n de #rans!erencia$ !upongamos la funcio n Ejemplo . transferencia G>s?
s K N D s K N+
@ s K
si sacamos el < !ac#or comuf n del numerador y !ac#ori*amos el denominador u#ili*ando sus rafces, nos ueda de la !orma G>s?
@
>s K D? . >s K − D j ?> s K K D j ?
%omando
Bre"e e#plicacio n
exp sin cos sinh cosh clf plot subplot hold title xlabel :label text print fi*ure impulse step
E#ponencial. !eno. %oseno. !eno :ipero lico. %oseno :ipero lico. Elimina la figura actual. %rea graficas. %rea mu ltiples graficos en la misma figura. Mantiene la grafica anterior . Agrega ttulo del grafico. Agrega nomre del eje5. Agrega nomre del eje5J. Agrega te#to al gra fico. (mprime el grafico o lo guarda en un ar c&i"o %rea figuras >"entana para gra ficos?. Respuesta al (mpulso. Respuesta al escalo n unitario. %rea un modelo en funcio n de transferencia. %rea un modelo de cero5polo5ganancia. %on"ersi o n de modelo en espacio de estados a funcio n de transferencia. %on"ersi o n de modelo en funcio n de transferencia a polos y ceros. %on"ersi o n de modelo en espacio de estados a polos y ceros. %on"ersi o n de modelo en polos y ceros a funcio n de transferencia.
tf Pp9
ss2tf tf2Pp ss2Pp Pp2tf tf2ss Pp2ss
Ta&la 1= Comandos ue u#ili*ar emos
llevar a ca&o lo mismo con M ATLAB, de&emos ingresar los polinomios numerador y denominador, en !orma de vec#ores de la siguien#e manera= ara
num!JF 2&Kden!J1 4 2&KM&servemos ue para de!inir el vec#or lo hacemos colocando en#re corche#es los coe!i+ cien#es de cada #efrmino, ordenados de mayor orden al menor$ ara separar las columnas del vec#or lo hacemos con un espacio, o #am&iefn podrfamos u#ili*ar coma$ l pun#o y coma !inal es para ue el resul#ado de lo ejecu#ado por M ATLAB no salga por pan#alla$
)i ahora ingresamos= JP,p,9K!tf2Pp+num,den
enemos= P!4 p!J2R4' 24'K 9!F
%ado ue #oda !unciof n #rans!erencia dada por un cocien#e de polinomios se puede escri&ir de la !orma
G>s?
@
k
∏i @m >s − z i ? ∏i @ >s − pi ?
con m ≤ n+
n
podemos armar !afcilmen#e nues#ra !unciof n #rans!erencia, haciendo G>s?
@
>s K D? . >s K K D j ?> s K − D j ?
)i ueremos reali*ar el procedimien#o inverso, necesi#amos ingresar las varia&les G , y p$ Con la ins#rucciof n= Jnum,denK!Pp2tf+P,p,9oenemos
el numerador y denominador de la !unciof n #rans!erencia=
num!JF 2&K den!J1 4 2&K
l hecho de #ener el numerador y el denominador de la !unciof n de #rans!erencia en dos varia&les, no signi!ica ue M ATLAB la iden#i!iue como #al$ ara ello se u#ili*a el co+ mando tf, ue descri&e en una sola varia&le la #rans!erencia dada por su numerador y al denominador$ Lo u#ili*amos de la siguien#e !orma= X!tf+num,den)i ueremos ue M ATLAB arme la !unciof n #rans!erencia como cocien#e ceros y los polos, para ello u#ili*amos Pp9, de la siguien#e !orma=
X!Pp9+P,p,9-
de produc#os de los
1.! Ra-/ce de un polino#io n el jemplo 1 vimos ue el polinomio denominador de la !unciof n #rans!erencia venfa dado por= !- 2 D ! 2 -0, y pudimos hallar sus rafces dado ue se #ra#a de una ecuaciof n de segundo or den$
n polinomios de orden superior, la #area de encon#rar sus rafces no siempre es #an ! af cil$ Con la !unciof n de M ATLAB roots podemos calcular las rafces de cualuier polinomio$ ara ejecu#ar dicha !unciof n #enemos ue ingresar el polinomio, como vec#or, r ecor dando ue los polinomios se ingresan en la primer componen#e el #efrmino de mayor orden y luego en !orma descenden#e separados por coma o un espacio$ Ejemplo . %onsideremos el siguiente polinomio2 P @ sD K D s C K D s B K
s
K
N
;ngresamos
el polinomio p!J1 4 4 1
2&K
y luego=
r!roots+p-
n lugar de hacer la operaci of n en dos pasos, podemos hacerlo solo en unoE si #ipeamos r!roots+J1 4 4 1 2&K oenemos el mismo resul#ado Las cua#ro rafces del polinomio an#erior ue surgen de M ATLAB son= −-$9DD< ± 1$-<.< ( y 0$9
:o#emos ue el polinomio P ue ouvimos es moHnicoE si uisieframos cualuier o#r o, de&er famos mul#iplicar a P por el coe!icien#e principal$ #ra cosa a #ener en cuen#a es ue siempre ue pongamos una raf* compleja de&emos poner su conjugada$
1." Dearrollo en raccione i#ple Cuando anali*amos un sis#ema de con#rol, por lo general disponemos de su !unciof n #rans+ !erencia 5 ' ( a la*o cerrado I' !(, donde I' !( ? $ Con lo /ue > ? podemos escri&ir la salida en !unciof n de la #rans!erencia y la en#rada= 5 ' !( ? I' !( /' !($ )i deseaframos conocer la respues#a #emporal g 't ( del sis#ema cuando lo e7ci#amos con sen al de en#rada r 't (, de&emos calcular la #rans!ormada inversa de Laplace, es decir g 't ( ? una −1 −1 ! "5 ' !(# ? ! " I' ! ( /' !( #$ Como sa&emos, es mafs sencillo de an#i#rans!ormar cuando se #ra#a de un cocien#e de polinomios, dado ue si lo e7presamos en !racciones simples podemos u#ili*ar una #a&la de #rans!ormadas de Laplace$ 1(emplo /. )upongamos ue #enemos la siguien#e !unciof n #rans!erencia= !
s
G>s?
@
AF s K y ue R >s? @ >s K ?> s K D? s
Como las rafces del denominador sor r eales y dis#in#as, el mef#odo de desarrollo en !rac+ ciones simples nos permi#e escri&ir a I' !( /' !( de la siguien#e manera= s K A @ K s >s K ?> s K s
B s
D?
K
K
C s
K
D
Ahora podemos calcular c' t ( se la siguien#e !orma= c >t ?
@
@
−
.
!
!
A K s
−
−
A K B e
B
Ks K
s −t
. .
C D sK KsK
. A . ! . K
@
B
!
−
. s
C
K D
−Dt
K
C e
ara calcular los valores de A, B y C lo hacemos median#e la ! of rmula es#e ejemplo los polos son de primer
.
de residuos, dado ue en
orden, resul#a ue R es" p # s
@ li m>s p
−
p?F >s? $
donde p es el polo para el cual se es#af ejemplo= A
m>s? @ li s$ N
calculado el residuo$ eamos como serfa en es#e
AF s K s >s K ?> s K
@
D?
> N? K
> K ?> K D?@
AF s K s >s K ?> s K
@
AF s K D > K ? C @ lim s $ −D s >s K ?> s K
@
B @ lim >s K ? $ − s
D? s
D?
−? K @ D >−?> − K D?
>
−D? K @ − >−D?> −D K ?
>
%on estos residuos+ ueda determinada la salida como2 c >t ?
−t
@ K De
−
e−Dt n general, es#os caflculos pueden #ornarse muy complicados de reali*ar a mano$ eamos como se simpli!ican u#ili*ando la !unciof n M ATLAB residue$ ;ngresemos nuevamen#e los polinomios numerador y denominador de la misma !orma como lo venimos haciendo has#a ahora$ ;ngresemos ahora la sen#encia=
Jres,pK!residue+num,den-
s#a !unciof n nos devuelve dos parafme#ros vec#oriales= en la varia&le res aparecen los residuos correspondien#es a los polos ue !iguran en la varia&le p, es decir, el primer r esid+ uo corresponde al primer polo y asf sucesivamen#e$ )i la !unciof n #rans!erencia resul#a ser propia, es decir ue el grado del numerador es igual al del denominador, podemos an adir una parafme#ro mafs al argumen#o del lado i*uier do, ue lo podemos llamar G $ eamos como serfa es#o median#e o#ro ejemplo= Ejemplo D. !upongamos ue ueremos &allar f >t ? siendo2
F >s?
@
s
C K s K
Cs K
sC K FsB K AA s K
%
f >t ?
@ !−
F >s? "#
)i aplicamos el comando= Jres,p,9K!residue+num,den-
y si armamos, como lo hicimos an#eriormen#e, la !unciof n desarrollada en !racciones sim+ ples, el #efrmino es el ue aparece el la varia&le G $ or lo #an#o % ' !( ? C − −D independien#e K K K K K + de donde a&ora calcular la f > t ? resulta muy sencillo. KC )i ahora nues#ro in#erefs es el inverso, es decir ue #enemos una !unciof n escri#a en !rac+ ciones simples y uisieframos oener la !unciof n como cocien#e de polinomios, analf#icamen#e de&er famos sacar comuf n denominador y hacer #odas las cuen#as correspondien#es$ s#o re+ sul#a inmedia#o con el comando de M AT L A B= s
s
s
Jnum,denK!residue+res,p,9-
1.$ 0uncio- n tranerencia a la'o cerrado Ejemplo . !upongamos ue disponemos del sistema de la Figura donde G >s? @ .D= = H >s? @ KN y + 1 ' !( ? 1E y pre#endemos hallar la !unciof n #rans!erencia a G >s? @ >NN K ? s
s s
!
la*o cerrado I' !( ?
5 ' ! (
$ )i aplicamos r educciof n de &loues, o resolviendo el diagrama de
/>s ?
R >s?
E >s? & ' &
>s?
V >s?
G
& '
&
G >s?
&
> s?
(
−)
)
H >s? *
H > s? *
igura 1= %iagrama de &loues !lujo y aplicando Mason, oenemos= G>s?
@ sC K
DNs K HNN
BB sB K AHN s K HNN
n M ATLAB la !unciof n #rans!erencia a la*o cerrado se puede calcular de dos !ormas=
>#ili*ando ); M> L ; : j 'lo veremos mafs adelan#e($ >#ili*ando las !unciones de M ATLAB series, parallel, ara calcular la !unciof n #rans!erencia
feedbac9 : cloop $
a la*o cerrado I' !( sigamos los siguien#es pasos=
. %e!inimos los numeradores y denominadores de las !unciones #rans!erencia de cada &loue de la siguien#e !orma= num*1!&.4num*2!1&&numh2!J1 &K-
den*1!1den*2!J1 2 &Kdenh2!J1 2&K-
. Calculamos la !unciof n #rans!erencia de D ' !( a 5 ' !(= Jnum#c,den#cK!feedbac9+num*2,den*2,numh2,denh2,1-
C. Ahora calculamos la !unciof n #rans!erencia de 1 ' !( a 5 ' !( con= Jnumec,denecK!series+num*1,den*1,num#c,den#c-
D. or uf l#imo calculamos el la*o cerrado= Jnum, denK!cloop+numec,denec,1-
Lo ue ouvimos son los vec#ores numerador y denominador de la !unciof n #rans!eren+ cia por separado$ Oecordemos ue para ingresarla como !unciof n de #rans!erencia a M AT + LA B, de&emos u#ili*ar tf$
1. Repueta al i#pulo Ahora ue ya sa&emos como pasar de la respues#a #emporal a Laplace, veri!iuemos ue la respues#a al impulso de la #rans!ormada de Laplace coincide con la respues#a #emporal$ ara ello u#ili*aremos el comando de M ATLAB impulse$ 1(emplo 9. )upongamos ue #enemos una !unciof n #rans!erencia de la siguien#e !orma= >s? @ = donde a @ A+ b @ >s K a?> s K b?
)i calculamos ahora la an#i#rans!ormada, desarrollando en !racciones simples como en la secciof n −t −-t 1$/, resul#a ue - 't ( ? e − e $ ;ngresemos los vec#ores numerador y denomi+ nador y luego ejecu#emos el comando= impulse+num,den-
eremos ue es#e comando devuelve el graf!ico de la igura - Como podemos ver, solo nos mues#ra los primeros 9 segundos de la r espues#a$ )i uisieframos ue nos mos#rara 1- segundos, de&emos de!inir un vec#or de #iempo$ ara ello ingresemos, por ejemplo, t!&"&.1"12-
l vec#or t #endraf como primer elemen#o el 0 y como uf l#imo al 1-$ Cada elemen#o es#araf a una dis#ancia de 0$1 de su consecu#ivo$ )i ahora in#roducimos es#e parafme#ro en el coman+ do impulse+num,den,t , el graf!ico mos#raraf los primeros 1- segundos de la respues#a al impulso$
:o#emos ue es#e comando no !ue asignado a ninguna varia&leE podrfamos asignarle un vec#or, es decir :!impulse+num,den,t , y asf #endrfamos los valores de la salida de la respues#a al impulso en dicho vec#or$ odrfamos #am&iefn gra!icar es#e vec#or con el comando plot+t,:, comando ue veremos en la secciof n 1$H$
(mpulse Response From2 >? N.E
N.
N.E
e d u t i l p m A
? > J 2 o T
N.
N.NE
N
C
D
Time >sec.?
igura -= Oespues#a al impulso %ado ue la !unciof n #rans!erencia de un sis#ema lineal invarian#e en el #iempo se de+ !ine como la #rans!ormada de Laplace de la respues#a al impulso cuando #odas las condi+ ciones iniciales son nulas, comparemos el resul#ado oenido con el ue resul#arfa si cal+ culaframos la respues#a #emporal$ ara ello u#ili*aremos el mismo vec#or #emporal t , y la ins#rucciof n f!exp+tRexp+2t$ Ahora podemos comparar los valores oenidos desde la respues#a al impulso con los oenidos desde la respues#a #emporal 'por ejemplo, res#afndolos($
1.) Repueta al ecalon
%e la misma !orma ue en la secciof n an#erior, podrfamos uerer gra!icar la respues#a al es+ calof n uni#ario$ M ATLAB posee un comando, llamado step, para calcular la salida #emporal cuando la en#rada se #ra#a de un escalof n uni#ario$ Lo uf nico ue necesi#a es#e comando es el numerador y el denominador de la !unciof n #rans!erencia$ step+num,den:!step+num,den-
)i u#ili*amos el comando sin asignarle la salida a ninguna varia&le, M ATLAB a&re una ven#ana graf!ica mos#rando el graf!ico de la salida a la e7ci#aciof n escalof n uni#ario, de la misma !orma ue an#es$ )in em&argo,al igual ue vimos en el comando impulse, cuando efs#e es asignado a una varia&le, los valores oenidos se guardan en el vec#or -$ 1(emplo H. Calculemos la respues#a al escalof n uni#ario de la !unciof n #rans!erencia= D >s? G>s?
@
@
R >s?
sB K N.H s K D
)i ingresamos el comando step+num,den, veremos un graf !ico similar al ue podemos o&servar en la igura /$
!tep Response From2 >? .
.D
.
e d u t i l p m A
? > J N.H 2 o T
N.
N.D
N.
N
E
Time >sec.?
igura /= Oespues#a al escalof n uni#ario
)i ahora ueremos la respues#a a una en#rada rampa uni#aria, M ATLAB no posee ninguf n comando ue lo resuelva$ or lo ue veremos cof mo con el comando step podemos oener una rampa$ )i seguimos con el ejemplo an#erior y e7ci#amos al sis#ema con r 't ( ? t , es decir ue /' !( ? 1 , #enemos lo siguien#e= !
>s?
@
$
D
$
sB K N.H s K D
1
s
%
>s? @
$
D
sC K N.H ! B
$ K Ds
1
s
or lo ue u#ili*ando como denominador de la !unciof n #rans!erencia al polinomio !/ 2 0$U !2 D !, es decir den!J1 &. 4 &K , y calculando la respues#a al escalof n uni#ario con step+num,den, oenemos la respues#a a la rampa uni#aria ue se mues#ra en la igura D$
1.2 +ra.ico
Como vimos en secciones an#eriores los comandos step e impulse gra!ican las respues#as al escalof n y al impulso respec#ivamen#e, pero ahora vamos a in#roducir algo mafs general$ ara gra!icar cualuier !unciof n en general u#ili*aremos el comando plot, ue sof lo necesi#a de!inir el vec#or a gra!icar en la !orma &afsica plot+#ector-
oiene un graf!ico donde el eje de a&scisas seraf la posiciof n del elemen#o del vec#or y la ordenada el valor ue #iene el vec#or en dicha posiciof n$ n el ejemplo 9, guardamos en el vec#or - los valores de la salida de la respues#a al impulso$ )i ahora ingresamos plot+: , en lugar de #ener segundos en el eje de a&scisas #endremos la can#idad de elemen#os de ese vec#or$ )i ingresamos plot+t,:, ahora el eje de a&scisas corresponderaf al vec#or #empo+ ral ya de!inido e iraf desde t ? 0 a t ? 1-, ue es como lo #enfamos de!inido$ Sra!iuemos )e
!tep Response From2 >? E
N
E
e d u t i l p m A
? > J 2 o T
N
E
N
E
Time >sec.?
igura D= Oespues#a a la rampa uni#aria
en#onces los valores guardados en el vec#or & $ s#os valores corresponden a la r espues#a
#emporal, por lo ue el graf!ico de&eraf ser el mismo$ )i ingresamos plot+t,f, oen+ dremos el graf!ico de la igura < Como podemos ver, no hay casi di!erencias con la !igura -, e7cep#o por el #f#ulo y los nom&res de los ejes ue el comando impulse+num,den pone au#omaf#icamen#e$ eamos ue no es di!fcil si se lo ueremos agregar a un graf!ico, para ello u#ili*aremos las sen#encias title, xlabel y :label$ s#os comandos se u#ili*an luego de ingresar el comando plot, ya ue #an#o el #f#ulo, como los nom&res de los ejes, se escri&irafn el la !igura ue se encuen#re a&ier#a= title+YBespuesta al @mpulsoYxlabel+Y
:o#emos ue el #e7#o ue ueremos ue apare*ca es#af escri#o en#re comillas simples$ Los comandos an#eriores, pueden ser #am&iefn u#ili*ados con step y impulse, aunue cuando son u#ili*ados en es#os comandos, el #f#ulo y el nom&re de los ejes ue #rae la !un+ ciof n por de!ec#o #am&iefn aparecen$ #ros comandos ue pueden ser uf #iles a la hora de #ra&ajar con graf!icos son *rid y text, ue se u#ili*an para agregar una grilla y agregar #e7#o respec#ivamen#e$ l comando text se u#ili*a de la misma !orma ue ue title, es decir, el #e7#o ue apareceraf sera f el ue se encuen#ra escri#o en#re las comillas simples , pero an#es de&emos ingresar las coordenadas ' @, -( donde ueremos ue apare*ca el #e7#o$ l comando *rid, se usa sin parafme#ros$ eamos el siguien#e ejemplo= 1(emplo U. )upongamos ue #enemos la !unciof n #rans!erencia de la igura 1, ue ya la cal+ culamos con M ATLAB en el jemplo -$-$ A&ramos un archivo nuevo e ingresemos lo sigu+ ien#e=
.
.
.
.
.
D
H
igura <= Oespues#a #emporal del ejemplo 9
num!J4& &&KdenJ1 22 1& &&Kt!&"&.&1"2:!step+num,den,tplot+t,:title+YBespuesta al escalon unitarioYxlabel+Y
)i ejecu#amos el programa vamos a oener el graf!ico de la igura 9$ )upongamos ahora ue ueremos gra!icar en la misma !igura dos o mafs graf!icos para poder compararlas$ s#o es posi&le u#ili*ando el comando hold on hold off , ue man#iene la !igura y superpone el siguien#e graf!ico so&re la misma !igura, como veremos en el siguien#e ejemplo$ 1(emplo .. )upongamos ue ueremos gra!icar #res sinusoides con !recuencias di!eren#es, ingresemos en un archivo nuevo= t!&"pi2&"2pi:1!sin+t:2!sin+tpi2:3!sin+tpiplot+t,:1hold onplot+t,:2plot+t,:3hold off-
Respuesta
al escal)n
.D
. ma#i mo "alor
a m eN.H t s i s l e d a d i N. l a !
N.D
N.
N
.
.D
.
.H
. Tiempo >seg.?
.D
.
.H
igura 9= Oespues#a al escalof n del ejemplo
Luego de ejecu#ar es#as lfneas veremos ue en la !igura ue resul#a, aparecen / graf!icas en el mismo color, e imposi&le de iden#i!icar cual corresponde a cada una porue am&as se encuen#ran gra!icadas con el mismo #ipo de linea y el mismo color$ ara ello veamos un parafme#ro del #ipo !tring ue podemos agregar al comando plot para especi!icaciones del es#ilo del graf!ico$ Los parafme#ros ue !iguran en la Ta&la - son para elegir el color de la lfnea, los ue se encuen#ran en la Ta&la / son para elegir el es#ilo de la lfnea y los ue se encuen#ran el la Ta&la D son para elegir el #ipo de marca ue apareceraf so&re los pun#os del vec#or gra!icado$
Espec. %olor r
r ojo
a-ul >por defecto? lanco
4
g c m y k
"er de
cian magneto amarillos
negro
Ta&la -= speci!icadores de color Ahora especi!iuemos cada uno de los del comando plot+t,: escri&amos= plot+t,:1,Y.rxYplot+t,:2,YmoYplot+t,:3,Y"bsY-
plot
con un es#ilo di!eren#e, por ejemplo, en lugar
Espec. 5 [ 2 5.
Estilo de linea linea so lida >por defecto? linea rayada linea punteada linea punto5raya
Ta&la /= speci!icadores de linea
Espec. Estilo de marca K signo mas cr culo o ,
-
s
d # p &
punto
asterisco cuadrado diamante cru-
estrella de puntas estrella de puntas
Ta&la D= speci!icadores de marca
)i corremos nuevamen#e el archivo veremos ue hay di!erencia en#re una !unciof n y la o#ra, pero seguimos sin sa&er cuaf l corresponde a uef !unciof n$ ara ello u#ilicemos el comando le*end , ue pone la leyenda ue ueramos a cada graf!ico$ s decir, escri&amos como u f l#ima linea= le*end+Ysin+tY, Ysin+tpi2Y,Ysin+tpiY-
Ahora si o&servamos el graf!ico de&erfa ser como el de la igura H$ Tam&iefn podrfamos uerer cada graf!ico en una !igura di!eren#e$ ara ello de&emos ejecu#ar el comando fi*ure+2 an#es de gra!icar por segunda ve* y fi*ure+3 an#es del uf l#imo graf!ico$ s#as sen#encias se usan sin el comando de hold on hold off y lo ue hacen es a&rir una nueva !igura para cada graf!ico$ #ra opciof n vaflida para M AT L A B, por ejemplo, es ue las #res !unciones apare*can en una sola !igura pero las #res gra!icadas en !orma independien#e$ ara ello u#ilicemos subplot+m,n,p , ue dividir af a la !igura en m !ilas y n columnas, pero crea una !igura en la posiciof n p$ ;ngresemos lo siguien#e para ver como !unciona= clf%borra el *rafico actual subplot+3,1,1plot+t,:1,Y.rYtitle+Ysin+tYsubplot+3,1,2plot+t,:2,YmYtitle+Ysin+tpi2Ysubplot+3,1,3plot+t,:3,Y"bY-
N.H
sin>t? sin>tpiM? sin>tpi?
. .D . . .D . .H
C
D
G
igura H= Tr es graf!icos en una misma !igura
title+Ysin+tpiY-
:o#emos ue con el sfm&olo V, comen#amos #e7#o den#ro del archivo$ )i ejecu#amos nuevamen#e el programa, oenemos lo ue se o&serva en la igura U Con respec#o a graf!icos, M ATLAB posee muchas o#ras opciones, como gra!icar en es+ cala logarf#mica, con lo*lo*, semilo*x : semilo*: , graf!icos en #res dimensiones, plot3, graf!icos de &arras, bar, e#c$ Tam&iefn permi#e con el comando print, guardar el graf!ico en un archivo de e7#ensio f n, por ejemplo po!t!cript o .(pg , o #am&iefn lo podemos imprimir con el mismo comando indicando el nom&re de la impresora$ :o nos olvidemos ue M ATLAB cuen#a con una ayuda a la cual podemos recurrir en ca+ so de no recordar como se u#ili*a un comando$ )i inves#igamos un poco el help, podemos encon#rar !unciones ue resuelven muchas o#ras cosas in#eresan#es$ ;nvi#o a ue se me#an a conocerlas, como asf #am&iefn a ue cono*can las dis#in#as demos#raciones ue pueden encon#rar si #ipean= demo$
! Introduccio-
n
a
S IMULIN3 Pas#a ahora vimos ue M ATLAB dispone de un en#orno de pr ogramaciof n con lfneas de of rdenes, ahora veremos como se puede suplemen#ar u#ili*ando un in#er!a* de usuario graf!ica llamada ); M > L ; :j $ s#e en#orno nos permi#e descri&ir graf!icamen#e un sis#ema di&ujando su diagrama en &loues, ue resul#a muy convenien#e para la simulaciof n y anaflisis de sis#emas dinafmicos$
!.1 Acceo & decripcion ara acceder a ); M > L ; : j , desde la ven#ana de comandos de M ATLAB , #enemos varias op+ ciones= una es escri&iendo el comando simulin9, de es#a !orma se a&riraf solo una ven#ana
sin>t?
. .
C
D
G
D
G
D
G
sin>tpiM?
. .
C sin>tpi?
. .
C
igura U= Tr es graf!icos di!eren#es en la misma !igura
con las li&rerfas disponi&lesE o#ra es desde la &arra de menuf %ile elegir la opciof n 3e> Model , de es#a !orma se a&ren no sof lo las li&rerfas sino #am&iefn el en#orno donde vamos a #ra&ajarE por uf l#imo, e7is#e un &o#of n de acceso direc#o a las li&rerfas #an#o en el en#orno de #ra&ajo de M ATLAB como en el de ); M > L ; :j $ >na ve* a&ier#as las li&rerfas, lo ue encon#raremos depende de la versiof n de MAT L A B ue se encuen#re ins#alada$ :os vamos a re!erir a la versiof n <$/$ %en#ro de la li&r er fa )imulinG se encuen#ran los elemen#os ue vamos a u#ili*ar organi*ados en su&li&rerfas de acuerdo con su compor#amien#o$ Las su&li&rerfas ue aparecen son=
Con#inous 'Bloues para sis#emas en #iempo con#inuo( %iscre#e= 'Bloues para sis#emas en #iempo discre#os( unc#ions [ Ta&les Ma#h ')umadores, Sanancias ma#riciales o cons#an#es, e#c$( + :onlinear
)ignals [ )is#ems'mul#eple7ores, demul#e7ores, e#c$( )in^s 'Sra!icadores, e#c$( )ources 'arias !uen#es de en#radas( Con un do&le clic^ so&re la li&rerfa podemos visuali*ar los elemen#os ue posee$ or ejemplo si ingresamos a Continou!, en#re los elemen#os disponi&les u#ili*aremos los sigu+ ien#es=
Deri%ati%e4 loue deri"ador+ es decir
"u "t
.
Inte5rator4 loue integrador+ funcio n transferencia .
s
Atate6A,ace8 &loue para e7presar
al sis#ema en modelo de es#ados$
0ransfer Fnc8 &loue para e7presar al sis#ema como cocien#e de polinomios$
ero,ole8 &loue para e7presar al sis#ema con ceros, polos y una ganancia$
!.! 0uncio-
n
tranerencia
a
la'o
cerrado
n la )ecciof n -$- vimos como podemos calcular la !unciof n #rans!erencia a la*o cerrado desde la ven#ana de comandos$ Tomemos el mismo ejemplo para ver como lo hacemos con ); M> L ; :j , ingresemos el diagrama en &loues como se puede ver en la igura .$ .D
(n
8ain
NN sKs
Transfer Fcn
Out
s sKN
Transfer Fcn
igura .= %iagrama en &loues con ara poder implemen#ar
); M > L ; : j
dicho graf!ico se procediof de la siguien#e !orma=
. ara inser#ar un &loue de !unciof n #rans!erencia, ya sa&emos ue se encuen#ra en Continou!, lo #omamos y lo arras#ramos has#a la ven#ana de #ra&ajo de ) ; M > L ; : j $ )i hacemos do&le clic^ so&re el &loue se despliega una ven#ana de propiedades del &loue, donde #enemos ue ingresar el numerador y el denominador de la misma !orma ue lo hacemos desde el en#orno de #ra&ajo de MATLAB, es decir en#re corche#es y separado por espacios$ )i en lugar de seleccionar el &loue de !unciof n #rans!erencia elegimos el &loue de polos y ceros, los parafme#ros a de!inir serafn los polos, los ceros y la ganancia$ . ara inser#ar o#ro &loue igual no es necesario reali*ar el f#em an#erior nuevamen#e, podemos seleccionar el &loue an#erior, haciendo un clic^ con el &o#of n derecho del mouse, copiar el &loue y pegarlo donde ueramos$ s#o mismo se puede hacer sim+ plemen#e arras#rando el o&je#o seleccionado con el &o#of n derecho del mouse$ %e la misma !orma ue an#es, ingresamos los parafme#ros de es#a !unciof n de #rans!erencia$ ara girar el &loue, para ue uede mejor orien#ado para hacer la r ealimen#aciof n, #enemos ue seleccionar el o&je#o, ir a %ormat de la &arra de menuf , y seleccionar %lip BlocG o simplemen#e con las #eclas ctrf$ C. l &loue de ganancia lo encon#ramos en Mat;, lo mismo ue los sumadores$ ara ingresarlos a la !igura procedemos de la misma manera, arras#rando el o&je#o has#a donde ueremos u&icarlo$ l sumador, por de!ec#o, viene con dos en#radas sumadas, si hacemos do&le clic^ so&re efl, podemos no solo cam&iar el signo ue ueramos sino #am&iefn agregarle las en#radas ue ueramos, en es#e caso solo modi!icamos 22 por
2−$ #ra propiedad ue podemos modi!icar es la !orma del icono$ :o#emos ue cuando hacemos un do&le clic^ en cualuier o&je#o, encon#ramos una peuen a ayuda en la par#e superior de la ven#ana, efs#o nos es uf #il para sa&er con ue da#os hay ue comple#ar cada campo$ ara el &loue de la ganancia, solo ingresamos el valor ue corresponde 0$D$
D. ara unir los &loues solo #enemos ue hacer un clic^ en la salida de un &loue y arras#ra el mouse has#a la en#rada de o#ro, cuando sol#amos, si la conecciof n es#af &ien hecha, marcaraf una !lecha negra, en caso de es#ar uniendo con un nodo, de+ &eremos ver un cuadradi#o negro$ ara &orrar cualuier elemen#o, simplemen#e lo seleccionamos y con la #ecla C= se elimina$ . or uf l#imo nos !al#a solo indicar cuaf l es la en#rada y cual es la salida, es#o lo hacemos para poder sacar la #rans!erencia a la*o cerrado, de o#ra !orma no lo pondrfamos$ La necesidad de marcar la en#rada y la salida es para ue M A T L A B sepa desde donde has+ #a donde vamos a uerer la #rans!erencia$ s#os &loues los encon#ramos en )ignal! J )-!tem!, se llaman G;n1G e Gu#1G$
. )alvemos el archivo, por ejemplo con el nom&re FuncTransG, si ingresamos desde la ven#ana de comando de MATLAB las sen#encias J(,>,;,CK!linmod+YWuncttransYJnum,denK!ss2tf+(,>,;,Coenemos la !unciof n #rans!erencia$ La primer orden produce un modelo de es#ado del sis#ema de &loues, #omando la en#rada y la salida ue seleccionamosE y la segun+ da sen#encia convier#e ese modelo de es#ados en el numerador y el denominador de la !unciof n #rans!erencia$ n es#e caso el resul#ado es
num!J4& &&K den!J1 22 1& &&K
ue si los comparamos con los oenidos an#es son idefn#icos$
!." Repueta al Ecalon
)iguiendo con el sis#ema de la igura ., nos in#eresa sa&er ahora cof mo responde a una en#rada escalof n uni#ario$ Como #enemos la !unciof n #rans!erencia a la*o cerrado, podr famos u#ili*ar el comando step+num,den desde la ven#ana de comandos para oener la salida$ ero veamos cof mo lo podemos hacer desde ) ; M> L ; :j $ ara ello cam&iemos el &loue de en#rada por un &loue de en#rada escalof n, ue lo encon#ramos el la li&rerfa )our ce! &ajo el nom&re F)#epG$ A dicho &loue podemos modi!icarle algunos parafme#ros como el #iempo en ue se reali*araf el escalof n, el valor inicial y !inal de escalof n y en caso de ue lo necesi#emos discre#o, el #iempo de mues#reo$ ara nues#ro ejemplo, elegimos como valor inicial 0, valor !inal 1 y #iempo de r eali*aci of n del escalof n 0 ! e g $$ ara poder visuali*ar la salida, de&emos conec#ar a la salida un osciloscopio$ s#e &loue lo encon#ramos en )inG! &ajo el nom&re F)copeG$ Luego de agregados es#os &loues, el sis#ema resul#an#e es el ue o&servamos en la igura 10$
s Ks Transfer Fcn
.D !tep
8ain
!cope
s sK Transfer Fcn
igura 10= )is#ema e7ci#ado con un escalof n
.D
.
.H
.
.D
.
.
.D
.
.H
.
.D
.
igura 11= )en al ue mues#ra el osciloscopio
.H
:erramientas de M ATLA B 5
)i hacemos do&le clic^ so&re el &loue F)copeG, veremos la salida del sis#ema como en la igura 11$ s#e &loue #am&iefn posee algunas propiedades ue podemos modi!icar , en#re ellas es#a fn los valores de los ejes, el #f#ulo y la escala$ Cuen#a #am&iefn con Koom para visuali*ar alguna *ona en de#alle$ #ra propiedad es la posi&ilidad de asignarle los da#os ue posee a una varia&le$ Luego desde la ven#ana de comandos podemos visuali*ar los valores o gra!icarlos dado ue ) ; M > L ; : j guarda #am&iefn en una varia&le el vec#or #emporal ue u#ili*a en la simulaciof n, dicha varia&le se llama tout$ )i en lugar de la respues#a al escalof n uni#ario ueremos la respues#a al impulso, dado ue ) ; M> L ; :j no posee un &loue generador de impulsos, de&emos generarlo noso#ros como res#a de dos escalones$
!.$ Utili'acio-
n
de
para- #etro
&a
de.inido
nos permi#e u#ili*ar varia&les de!inidas ya sea en la ven#ana de comando de MATLAB, como #am&iefn en archivos del edi#or$ ara ello de&emos de!inir las varia&les con an#icipaciof n y luego u#ili*arlas den#ro de los &loues con el mismo nom&re$ %e es#a !orma, ) ; M> L ; :j iden#i!ica el valor de dicho parafme#ro y es el ue u#ili*a en los caflculos$ s#o resul#a apropiado cuando ueremos u#ili*ar un mismo disen o para dis#in#os valores de parafme#ros, o nos permi#iraf u#ili*ar el mismo sis#ema cada ve* ue nos encon#remos con pro&lemas similares$ ) ; M > L ; : j
:erramientas de M ATLA B 5
E!TAB(L(3A3 %ON MATLAB n es#e apun#e veremos algunas !unciones de M ATLAB relacionadas con lugar de las rafces, gr af!ico de Bode y de :yuis#$ n#re ellas nos cen#rali*aremos en de#allar las siguien#es= %omando
Bre"e e#plicacio n
rlocus rlocfind rltool Ppmap bode n:quist
%alcula y grafica el lugar de las rakces de un sistema LT( !(!O Encuentra la ganancia del lugar de las rakces para polos dados 1ermite disen ar un compensador !(!O usando lugar de las ra ces %alcula y grafica polos y ceros de un sistema LT( Respuesta en frecuencia de Bode para modelos LT( Respuesta en frecuencia de Nyuist para modelos LT( Ta&la 1= Comandos de Ma#la&
1 Lu5ar de la Ra-/ce A con#inuaciof n de#allaremos el uso de las !unciones de M ATLAB relacionadas con el graf!ico del lugar de las rafces$ n donde ci#aremos algunos ejemplos para clari!icar $
n
1.1 unciof rlocus
Calcula y gra!ica el lugar de las rafces de un sis#ema LT; );)M$ l graf!ico del lugar de las rafces se u#ili*a para anali*ar el la*o de r ealimen#aciof n nega#iva de la igura 1 y mues#ra las #rayec#orias de los polos a la*o cerrado cuando la ganancia 2 varfa de 0 a . $ &
/
−
)
&
s#s $ *
& s # s >s ? G >s? @ K $ s # s>s?
igura 1= Oealimen#aci of n nega#iva y su !unciof n de #rans!erencia
:erramientas de M ATLA B 5 C
La !unciof n puede u#ili*arse de la siguien#e !orma= B!rlocus+s:s,Z JB,ZK!rlocus+s: s
donde en el parafme#ro / ma#ricial devuelve el lugar complejo de la raf* para la ganancia 2 $ n el primer caso indicamos uef in#ervalo de valores de ganancias es#amos in#eresados, mien#ras ue si no le ingresamos dicho parafme#ro, 2 varfa de 0 a .$ l sis#ema puede ser ingresado como !unciof n #rans!erencia, con el comando tf o Pp9, o simplemen#e pasafndole el numerador y el denominador del sis#ema, es decir rlocus+num,den$
n
1.! unciof rlocfind
!unciof n nos permi#e hallar la ganancia del graf!ico del lugar de rafces correspondien#e para un conjun#o de polos dados$ l comando ingresado de la siguien#e !orma s#a
JZ,polosK!rlocfind+s:s se u#ili*a
para seleccionar la ganancia del lugar de las rafces generado por rlocus en !orma in#e+ rac#iva$ Luego de ejecu#ado dicho comando, aparece una cru* so&re el graf!ico del lugar de las ra fces con el ue seleccionaremos el lugar deseado para los polos a la*o cerrado$ La ganancia asociada con el pun#o seleccionado es la ue es#e comando devuelve en la varia&le 2 y #odos los polos a los ue le corresponde esa ganancia los devuelve en la varia&le pol o !$
1." unciof s*rid
n
una grilla en el plano complejo ! para un lugar de las rafces ya e7is#en#e o un mapa de polos y ceros$ )e di&ujan lfneas de amor#iguamien#o ' ( y !recuencia na#ural ' Nn ( cons#an#es$ l comando se u#ili*a de la siguien#e !orma= Senera
s*rid+P,wn
1.$ jemplos 1(emplo
1. %ada la siguien#e !unciof n de #rans!erencia a la*o
a&ier#o G >s? H >s?
@
$ > K ?
+
s s
vamos a calcular el lugar de las rafces$ ara ello ingresamos los siguien#es comandos desde el %ork!pace de M AT L A B s:s!Pp9+JK,J& 2K,1&K- rlocus+s:s-
o
s:s!tf+1,J1 2
oeniendo la igura )i #omamos el mismo sis#ema pero le agregamos un polo en p ? −/ y o#ro en p ? −D, e ingresamos nuevamen#e los comandos correspondien#es, oenemos los graf!icos de la igura / res+ pec#ivamen#e, en donde o&servamos como el graf!ico se ve !or*ado hacia la derecha de&ido a cada polo ue agregamos$ 1(emplo -. )upongamos ahora una plan#a con la siguien#e !unciof n de #rans!erencia=
G >s? H >s?
@
$ >s K ? s
>s
& ?
K
:erramientas de M ATLA B 5 D
+ donde &
@
N+ I+ H
y
C
)i ejecu#amos los mismos comandos ue en el ejemplo an#erior, es decir, ingresamos primero el sis#ema y luego le calculamos el lugar de rafces, oenemos los resul#ados ue se o&servan en la igura D y <
:erramientas de M ATLA B 5
.E
N.E s i # A g a m (
N
N.E
.E
C
.
.
. Real A#is
.
.
igura -= Sraf!ica del lugar de las rafces
D
C
s i # A g a m (
C
D
D
C
Real A#is
igura /= Sraf!ica del lugar de las rafces
H
H
D
D
s i # A
g a m (
s i # A
g N a m (
D
D
H
H
D Real A#is
D
H
H
D Real A#is
igura D= Sraf!ica del lugar de las rafces para O ? 10 y O ?
., respec#ivamen#e
D
C D
s i # A g a m (
s i # A g a m (
D
C
H
D
D D
Real A#is
C
Real A#is
igura <= Sraf!ica del lugar de las rafces para O ? U y O ?
/,
r espec#ivamen#e
7is#en casos donde ueremos anali*ar el compor#amien#o de un sis#ema a la*o cerrado 'LC(, pero donde el parafme#ro varia&le no aparece como un !ac#or mul#iplica#ivo 'como lo es la ganancia 2 en los ejemplos an#eriores( del sis#ema a la*o a&ier#o 'LA($ n esos casos #enemos ue reescri&ir la ecuaciof n carac#erfs#ica de !orma #al ue el parafme#ro varia&le apare*ca como un !ac#or mul#iplica#i+ vo de I' !( + ' !( y asf podremos u#ili*ar el comando rlocus $ Los ejemplos a con#inuaciof n ilus#ran cof mo podemos proceder en dis#in#os casos$ 1(emplo /. Sra!iuemos el lugar de las rafces del diagrama de la igura 9$ La !unciof n de #rans!er en+ R >s? &
/ &/ &
()−)
N >sK ?> sK D?
k
C >&s?
&
s
*
igura 9= )is#ema de con#r ol cia a LA resul#a G >s? H >s?
@
D? K Nk s donde la ecuaciof n carac#erfs#ica es !/ 2 < !- 2 D ! 2 -0 2 -0G! ? 0$ Como la varia&le ajus#a&le no aparece como !ac#or mul#iplica#ivo, llamemos 2 ? -0G y reescri&amos la ecuaciof n carac#er fs#ica$ )i ahora dividimos am&os miem&ros por el polinomio ue no #iene #efrminos con 2 , #enemos >
s s
K
?> s K
$ s
nu m>s? ue es del tipo K $ . sC K EsB K Ds K " en >s? Ahora podemos gra!icar el lugar de las rafces u#ili*ando la sen#encia rlocus+num,den$ K
1(emplo D. Consideremos una plan#a con !unciof n #rans!erencia I0 ' !( y un con#rolador en r ealimen+ #aciof n con !unciof n #rans!erencia C ' !(, donde 1
GN >s?
@
y
>s K & ?
C >s ?
@
D
s
$
? ueremos conocer cof mo varfa la u&icaciof n de los polos a la*o cerrado para O variando en O 2 $ eamos ue los polos a la*o cerrado del sis#ema son los ceros de >s
K
?> s K
K & K D s >s K s − s
?
@
>
s s
K
>
s − ? K D s K
s s
K
s − ?
D&
@
%
>
s s
K
s
K
? K D& @
)i dividimos am&os miem&ros por !' !- 2 ! 2 -(, conver#imos la ecuaciof n a la !orma 1 2 G I' !(, donde G > s? @ y k @ D& >
s s
K
s
K ?
Lo uf nico ue ueda ahora es ingresar el comando rlocus para oener la igura H C
s i # A g a m (
C
.H
.
.D
.
Real A#is
.
.D
.
.H
igura H= >&icaciof n de los polos a LC cuando el cero del con#rolador varfa
! Repueta en 0recuencia n es#a secciof n de#allaremos las !unciones de M ATLAB para gra!icar la respues#a en !recuencia, es decir para oener los graf!icos de Bode y de :yuis#, con las !unciones bode y n:quist respec#i+ vamen#e$
!.1 unciof bode
n
s#a !unciof n nos permi#e oener la respues#a en !recuencia de Bode para modelos LT;$ n#re las !ormas mafs comunes de u#ili*ar es#a !unciof n se encuen#ran= bode+s:s= di&uja el graf!ico de Bode del modelo LT; !-! 'creado con tf o Pp9($ l rango de !recuencia y el nuf mero de pun#os ue #omaraf para gra!icar los elige en !orma au#omaf#ica$ bode+s:s,wmin,wmax= di&uja el graf!ico de Bode para !recuencias en#re >min y >ma@ 'en radseg($ bode+s:s,w= u#ili*a el el vec#or > de !recuencias propues#o para calcular el Bode$ %ado ue el vec#or > de&e es#ar en escala logarf#mica, e7is#e en M ATLAB la !unciof n lo*space ue genera un vec#or de !recuencias en !orma logar f#mica$ bode+s:s1,s:s2,...,w= di&uja el graf!ico de Bode de varios modelos LT; en una sola !igu+ ra$ l parafme#ro > es opcional, #am&iefn se puede especi!icar color, #ipo de linea y marcadores como se los u#ili*a con el comando plot$ Jma*,faseK!bode+s:s,w o Jma*,fase,wK!bode+s:s = devuelve la magni#ud y la !ase en grados$ s#e comando no di&uja en pan#alla, mag::GQ y &a!e::GQ de#ermina la en >'G ($ ara oener magni#udes en dB, de&emos calcular respues#a ma*db!2&lo*1&+ma*$
1(emplo <.
%ada la siguien#e #rans!erencia, ueremos oener el graf!ico de Bode -<00
I' !( ?
> K ?> s K N?
s s
ara ello ejecu#emos los siguien#es comandos desde
el >orG!pace=
X!Pp9+JK,J& F F&K,2F&&- bode+XBode 3iagrams From2 >?
? B d > e d u t i n g a
M
= ? g e d >
e s a & 1
? > J 2 o T
CNN N
N
N
C
Freuency >radsec?
igura U= Sraf!ico de Bode oenido con el comando bode+X
!.! unciof n M:quist s#a !unciof n nos permi#e oener la respues#a en !recuencia de :yuis# !ormas mafs comunes de u#ili*ar es#a !unciof n se encuen#ran=
para modelos LT;$ n#re las
n:quist+s:s = di&uja el graf!ico de :yuis# de !-! ue es un modelo LT; creado con los comandos tf o Pp9$ l rango de !recuencia y el nuf mero de pun#os ue u#ili*araf para gra!icar son elegidos en !orma au#omaf#ica$ Las dis#in#as al#erna#ivas para es#e comando son las misma ue para la !unciof n bode, e7cep#o el uf l#imos de los f#ems ue se reempla*a por= JBe,@mK!n:quist+s:s,w o JBe,@m,wK!n:quist+s:s = devuelve la par#e real e ima+ ginaria de la respues#a en !recuencia, a lo largo de >$ La respues#a a la !recuencia >' G ( es#af dada por /e::GQR$m::GQ 1(emplo 9.
%ado el sis#ema cuya !unciof n #rans!erencia viene dada por G >s ?
@
oener el diagrama de :yuis#$ ara ello ingresamos los siguien#es comandos X!Pp9+JK,J1 1K,1- n:quist+X
y ouvimos la igura .
>s K ?
Nyuist 3iagrams From2 >?
N.H
.
.D
s i # A ? y r > a J 2 n i o g T a m (
.
.
.D
.
.H
.H
.
.D
.
.
.D
.
.H
Real A#is
igura .= Sraf!ico de :yuis# oenido con el comando n:quist+X
" Dien6
o
de
control resen#aremos ahora una herramien#a de disen o
para=
in#erac#ivo llamada rltool ue puede u#ili*arse
Anali*ar el lugar de las rafces para los sis#emas de con#rol LT; );)$ speci!icar los parafme#ros de un compensador de r ealimen#aciof n= polos, ceros y ganancia$ 7aminar cof mo cam&iando los parafme#ros del compensador, cam&ia el lugar de las rafces y varias r espues#as a la*o cerrado, como la respues#a al escalof n uni#ario, respues#a al impulso uni#ario, diagramas de Bode yo :yuis# en#re o#ros$
".1 unciof rltool
n
e7plicar mejor el uso de es#a herramien#a, seguiremos un ejemplo ue involucra un servome+ canismo elec#ro+hidrafulico, ue esencialmen#e es un ampli!icador de po#encia elec#r o+hidr a f ulico, con#rolado por una vaflvula pilo#o y un ac#uador, igura 10$ s#os servomecanismos son muy pe+ uen os y se u#ili*an para con#rolar posici of n$ >n modelo a la*o cerrado para el con#rol de posiciof n puede represen#arse como aparece en la igura 10 'de#alles del modelado ma#emaf#ico del mecanis+ mo y su lineali*aciof n ver I-, pag$ .1J o I1, pag$ D/J($ n la igura 10, 2 ' !( represen#a el compensador ue deseamos disen ar$ s#e compensador pue+ de ser #an#o una ganancia como un sis#ema LT;$ La plan#a lineali*ada viene dada por ara
G
r ' o
se
>s ?
@
D$10H
> K N?>s K DN s K
s s
I.ND ? ara es#e ejemplo, ueremos dise n ar un con#rolador de !orma #al la*o cerrado cumpla con las siguien#es especi!icaciones de disen o=
l #iempo de es#a&lecimien#o menor a 0$0< seg$ l so&revalor maf7imo menor al
ue la respues#a al escalof n a
u
&
/
()
&$ >s?
&
G
r ' o >s ?
#
&
se
igura 10= )ervomecanismo elec#ro+hidrafulico y el diagrama de &loues del sis#ema mafs el com+ pensador, respec#ivamen#e$
igura 11= en#ana de la herramien#a rltool
ara comen*ar, desde el >orG!pace de M ATLAB, ingresemos el comando rltool, con el ue a&rimos una nueva ven#ana, igura 11, en la ue encon#ramos= >na &arra de menuf , en#re los ue encon#ramos, por ejemplo, una opciof n para impor#are7por#ar modelos y para edi#arlos$ >n graf!ico de &loues ue es la es#ruc#ura de r ealimen#aciof n ue u#ili*aremosE si hacemos clicG so&re el &loue 2 , podemos ver o edi#ar el compensador, y so&re P , % o + para ver las carac#erfs#icas de disen o del modelo$ >n &o#of n para cam&iar en#re r ealimen#aciof n nega#iva y posi#iva$ >na descripciof n del compensador ue con!iguraremos$ or de!ec#o #oma el valor de ganancia igual a 1 ' 2 ? 1($ Cua#ro &o#ones ue u#ili*aremos para agregar polos o ceros del compensador, &orrarlos o moverlos$ >n cuadro de #e7#o para edi#ar la ganancia ue modi!icaraf el lugar de los polos a LC$ Bo#ones para edi#ar los ejes$ Bo#ones para modi!icar el Aoom del graf!ico$ C;ecG bo@e! para a&rir herramien#as de anaflisis de respues#a del sis#ema$ >na &arra de !tatu! ue provee in!ormaciof n$ >na ve* a&ier#a la ven#ana, de&emos impor#ar el modelo del sis#ema para el ue ueremos disen ar un compensador$ 7is#en cua#ro !ormas para impor#ar un modelo LT;, y efs#as son= . Cargar el modelo desde el >orG!pace de M ATLAB, con el comando rltool+s:s,comp , don+ de !-! es la !unciof n #rans!erencia del sis#ema ingresada como #al, y comp la del
compensador 'opcional($ . Cargar el modelo desde un archivo de e7#ensiof n .mat de un disco$ C. Cargar &loues LT; );)M desde un diagrama de ); M>L ; : j $ D. Crear los modelos u#ili*ando tf, ss o Pp9$
ara es#e ejemplo, impor#emos nues#ro modelo del servomecanismo desde el >orG!pace$ ara ello de&emos previamen#e ingresar el modelo con la !unciof n tf o Pp9 y guardarla en una varia&le, por ejemplo I!er"o$ >na ve* cargado el modelo, lo podemos impor#ar desde el menuf $mport Model del menuf %ile$ n la ven#ana de impor#aciof n ue se desplegaraf encon#raremos >n diagrama correspondien#e a la es#ruc#ura de r ealimen#aciof n ue u#ili*ar emos$ >n &o#of n ue conmu#a en#re las dos posi&les es#ruc#uras de r ealimen#aciof n ue hay con!igu+ radas$ >na lis#a para seleccionar desde dof nde se impor#araf el modelo$ >na lis#a de sis#emas LT; disponi&les o &loues$ >n cuadro de #e7#o para edi#ar el nom&re del disen o$ Tres &o#ones con !lechas para #rans!erir el modelo seleccionado de la lis#a al componen#e de disen o del modelo, ya sea P , % o + $
Tr es cuadros de #e7#os para los nom&res de los componen#es del disen o$ %esde es#e recuadro podemos #am&iefn de!inir !unciones de #rans!erencias para cada componen#e, u#ili*ando tf, ss o Pp9$ Na sea en cualuiera de las dos con!iguraciones, cada componen#e represen#a= % + pre!il#roE P + modelo de la plan#aE + + dinafmica de la plan#aE 2 + compensador a disen ar$ )iguiendo con nues#ro ejemplo, carguemos el modelo lineal en P , seleccionafndolo desde la lis#a de >orG!pace y luego haciendo un clic^ so&re la !lecha ue sen ala a P , o simplemen#e #ipeando en el cuadro de #e7#o I!er"o 'nom&re de nues#ro modelo($ Luego de seleccionar , en la r egiof n de graf!ico de la ven#ana de disen o, apareceraf el graf!ico del lugar de las rafces del modelo ingresado, igura 1-$ Los peuen os cuadros rojos so&re ef l corresponden a los polos a la*o cerrado correspon+ dien#es al valor de la ganancia del compensador$ Root Locus 3esign NN
DNN
NN
s e # A g a m (
N
NN
DNN
NN
H
D
D
NN
Real A#is
igura 1-= Lugar de las rafces ue resul#a cuando cargamos el modelo eamos has#a uef valor de ganancia podemos aplicarle al compensador para ue se man#enga es#a&le a la*o cerrado, es decir, has#a ue los polos a la*o cerrado se man#engan en el semi+plado i*uierdo del plano complejo$ s#e lfmi#e lo podemos calcular de la siguien#e !orma=
. Mover el pun#ero del mouse so&re un de los cuadrados rojos, donde apareceraf una mano en
lugar del pun#ero$ Arras#rar dicho cuadrado has#a lo mafs cerca del eje imaginario$ &servar ue el valor de la ganancia se va modi!icando$ . Como no podemos sa&er si los polos se encuen#ran e7ac#amen#e so&re el eje imaginario, u#ili+
*ar el Aoom para acercarlos mejor$ >na ve* alcan*ado el eje imaginario, ui#ar el Aoom con el &o#of n de los &inoculares$ C. or uf l#imo, veri!icar ue la ganancia correspondien#e para ue los polos a la*o cerrado sean
imaginarios puros es apro7imadamen#e D/$< ' ganancia crHStica($ l valor de la ganancia podrfa ha&erse modi!icado direc#amen#e desde el recuadro correspon+ dien#e a la ganancia del compensador, has#a ue los polos a la*o cerrado se u&iuen so&re el eje imaginario$ An#es de disen ar el compensador, uisieframos conocer cof mo se compor#a el sis#ema a la*o cerra+ do para un de#erminado valor de ganancia$ ara ello, de&emos seleccionar el c;ecG bo@ ue
aparece
en la par#e in!erior in!erior de la ven#ana ven#ana la opciof n del graf!ico ue no in#eresa conocer$ ara es#e ejemplo las especi!icaciones de disen o vienen dadas so&re la respues#a al escalof n, por lo ue seleccionare+ mos dicha opciof n, ue desplegaraf una ven#ana de LT;;kO$ )i edi#amos el valor de la presionamos :TO , veremos como la respues#a al escalof n de la ven#ana ganancia, por ejemplo -0, y presionamos LT;;+ kO se modi!icof $ Oecordemos ue en dicha ven#ana, cuando hacemos clicG so&re la !igura con el &o#of n derecho del mouse, podemos seleccionar ue nos mues#re las carac#erfs#icas ue necesi#amos, en es#e caso el so&revalor y el #iempo de es#a&lecimien#o$ odemos o&servar ue en es#e caso por mafs ue modi!iuemos la ganancia, las especi!icaciones nunca se alcan*an$ or lo ue para ue se cumplan cumplan de&emos disen ar un compensador$ ara disen ar el compensador, de&emos conocer dof nde ueremos ue se u&iuen los polos a la*o cerrado para ue las especi!icaciones se cumplan$ or eso vamos a elegir del menuf (ools+ la IridEBoundar-, ue reali*araf r ec#as ec#as donde se especi!iuen, en es#e caso le indicaremos opciof n Add IridEBoundar-, el #iempo de es#a&lecimien#o igual a 0$0< seg$ y el !ac#or de amor#iguamien#o igual a 0$H 'ver I1, con#ra#apaJ( $ >na ve* seleccionados dichos valores, veremos ue en el graf!ico aparecen las dos r ec#as ec#as correspondien#es a las carac#erfs#icas ingresadas$ Ahora sa&emos ue para ue se cumplan las especi!icaciones de disen o, los polos dominan#es del sis#ema a la*o cerrado de&erafn u&icarse en la in#erseccio f n de dichas r ec#as$ ec#as$ ara ello, de&emos mo"er el lugar de las rafces agregando polos y ceros al compensador$ ara ello de&emos proceder de alguna alguna de las siguien#es !ormas= Utili'ando lo botone de a5re5ar7 o 8uitar7 polo o cero4 seleccionar el oto n correspon5 diente+ luego con el puntero del mouse indicar do nde se uicara el polo y &acer un click en dic&o lugar . ara nues#ro ejemplo, u&iuemos un par de polos complejos conjugados por de&ajo y a la derecha de los polos a la*o a&ier#o$ Agreguemos un par de ceros complejos conjugados cerca de los polos a la*o a&ier#o$ M&servemos cof mo se modi!icof el lugar lugar de las rafces$ )i #odavfa pasa por la in#erseccio f n de las r ec#as ec#as correspondien#es a las carac#erfs#icas de disen o, no pasa mover los polos yo ceros$ >na ve* conseguido es#o, modi!icar la ganancia para ue los polos a la*o cerrado se u&iuen donde ueremos, igura igura 1/$ or uf l#imo l#imo nos ueda ueda veri!icar veri!icar especi!icaciones dadas, igura 1D$ con la respues#a al escalof n ue se cumplen las especi!icaciones Root Locus 3esign NN
DNN
NN
s e # A g a m (
N
NN
DNN
NN
H
D
D
Real A#is
igura 1/= >&icaciof n deseada de los polos a LC$
NN
;:S:;O;A % );)TMA) % C:TOL
1<
!tep Respons e Fr om 2 > ?
N.H
e d u t i l p m A
? > J 2 o T
N.
N.D
N.
N
.
.
.
.
.
.C
.C
.D
.D
N.NE
Time >sec. ?
igura 1D= Oespues#a al escalof n del sis#ema a LC$ Utili'ando el #enu- Edit compensator del #enu- Tools+ o &aciendo un click sore el compensa5 dor del grafico de loues de la derec&a. !i ya reali-amos el procedimie procedimiento nto anterior+ anterior+ saemos saemos ue los polos+ polos+ ceros y ganancia del compensador se puede apro#imar con $@ I.G P ol os
@
−AAN ±
DNi
C eros
@
−GN ±
GNi
>na ve* encon#rado el compensador ue lleva a nues#ro sis#ema a ue cumpla con las desde el menuf %ile, %ile, con la opciof n especi!i+ caciones dadas, podemos guardar los parafme#ros desde 1@port podemos llevarlo llevarlo a un disco, o al >orG!pace de M AT L A B$
19
;:S:;O;A % );)TMA) % C:TOL
;:S:;O;A % );)TMA) % C:TOL
1H
%omo se descrii) en la secci)n anterior+ un sistema de control es una intercone#i)n de componentes ue forman una configuraci)n del sistema ue proporcionar, una respuesta deseada del sistema. n sistema de control puede representarse mediante un loue2
Figura . Representaci)n de un !istema de %ontrol
El ojeti"o del control autom,tico es mantener en determinado "alor de operaci)n las "ariales del proceso+ anulando la acci)n de las perturaciones sore la "ariale controlada. 1ara tal prop)sito se dise$a el controlador adecuado permitiendo otener salidas controladas ue cumplan con los reuerimientos de dise$o. 1ara lograr dic&o ojeti"o+ tenemos ue conocer las leyes f0sicas de la planta o proceso+ plantear el sistema de ecuaciones y escoger el controlador para otener la salida deseada.
1.E9e#plo de Site#a de Control 1.)Claiicaci(n de Site#a de Control a: Site#a de Control Lineale & no Lineale 3e acuerdo a su naturale-a+ se pueden clasificar como sistemas de control lineal y no lineal. n sistema de control lineal es auel ue posee la propiedad de superposici)n2 si una entrada consiste en la suma ponderada de "arias se$ales+ entonces la salida es simplemente la superposici)n >suma ponderada? de las respuestas del sistema para cada una de estas se$ales.
Figura . !istema de %ontrol Lineal
Todos los sistemas son in&erentemente no lineales. !i las "ariaciones de magnitud de las "ariales del proceso son peue$as+ entonces el sistema puede lineal i-arse y
;:S:;O;A % );)TMA) % C:TOL
1U
aplicarse las t*cnicas de control lineal= sin emargo+ si dic&as "ariaciones son amplias+ entonces tienen ue aplicarse t*cnicas de control no lineal. Ejemplo de ecuaci)n diferencial ue representa a un !istema de %ontrol lineal2 't ( @
+ < @ 't ( + /@'t ( = 0
Ejemplo de ecuaci)n diferencial ue representa a un !istema de %ontrol no lineal2 @'t ( + D @ 't ( + @ - 't ( = !en' >t (
En el caso de ue un sistema sea no lineal+ para poder reali-ar el an,lisis del !istema de %ontrol+ pre"iamente deer, ser lineali-ado.
b: Site#a de Control In%ariante & ;ariante con el tie#po Los sistemas "ariantes en el tiempo son los sistemas cuyas caracter0sticas >tal como el "alor de masas o resistencias? camian en el tiempo. Los "alores de los elementos pueden camiar deido a factores amientales tales como temperatura o radiaci)n. Otro ejemplo de elementos "ariantes en el tiempo puede ser la masa de un co&ete donde el comustile es importante respecto a la masa total del co&ete >y la misma camia al irse uemando el comustile?. En las ecuaciones diferenciales descriiendo los sistemas "ariantes en el tiempo+ algunos de los coeficientes de las ecuaciones son funciones del tiempo. 1ara sistemas in"ariantes en el tiempo+ cuyas caracter0sticas no camian con el tiempo+ el modelo del sistema ue descrie las relaciones entre entradas+ "ariales de estado y salidas+ es independiente del tiempo. !i tal sistema est, inicialmente en reposo+ retrasar la entrada por t " unidades de tiempo solo &ace retrasar la salida por la misma cantidad t " de unidades de tiempo+ sin camiar su forma ni tama$o.
c: Site#a de Control Cauale & no Cauale n sistema es causal si su salida en cualuier instante de tiempo depende s)lo de los "alores de la entrada en el momento presente y en el pasado. Tami*n se denomina no anticipati"o. Ejemplo2
-' t (
= @'t −1( + @' t (
En la naturale-a la mayor0a de las se$ales son causales. n sistema se denomina no causal cuando la salida depende de una se$al futura.
;:S:;O;A % );)TMA) % C:TOL
1.
Ejemplo2
-' t (
= @'t +1( + @' t +-(
d: Site#a de Control Etable e Inetable n sistema es estale cuando al reciir una entrada limitada >su magnitud no crece en forma ilimitada?+ genera una salida tami*n limitada.
e: Site#a de Control Continuo & Dicreto Las se$ales sir"en para descriir los fen)menos f0sicos y se representan matem,ticamente como funciones con una ) m,s "ariales independientes. En el caso de las se$ales continuas+ la "ariale independiente es continua+ es decir puede tomar cualuier "alor real.
Figura .C !e$al continua
Las se$ales discretas s)lo est,n definidas en un conjunto discreto de "alores de la "ariale independiente.
Figura .D !e$al discreta
1.2Repreentaci(n de Site#a de Control n componente o proceso ue "aya a ser controlado puede representarse mediante un loue.
Figura . Representaci)n de un proceso mediante un loue
Todos los componentes de un !istema de %ontrol en forma similar pueden representarse mediante loues.
;:S:;O;A % );)TMA) % C:TOL
-0
Figura . Representaci)n de un !istema de %ontrol
En la Figura .+ se muestra un sistema de control en la-o cerrado el cual usa una medida de la salida y la realimentaci)n de esta se$al para compararla con la referencia. La realimentaci)n permite controlar una salida deseada y puede mejorar la precisi)n+ pero reuiere ue se preste atenci)n al tema de la estailidad de la respuesta. La siguiente figura muestra un !istema de %ontrol+ donde se muestran todas las "ariales presentes.
Figura .G Xariales en un !istema de %ontrol
A continuaci)n se descrie los componentes y las "ariales presentes en un !istema de %ontrol2
*lanta4 1roceso o sistema a controlar >motor de %%+ &orno el*ctrico+ in"ernadero?. ;ariable Controlada4 Es la cantidad o condici)n ue se mide y controla. Es considerada la salida del sistema.
;ariable Manipulada4 Es la "ariale o condici)n de la planta ue se modifica a fin de influir sore la "ariale controlada a tra"*s de la din,mica de la planta.
*erturbaci(n4 Xariale de entrada a la planta+ accionador y elementos de medida+ sore las ue no se puede actuar. >(nterferencias electromagn*ticas+ carga del motor+ ruptura de pl,stico en in"ernadero+ etc.?.
Re5ulador o Controlador4 Reali-a una acci)n de control con la finalidad de corregir el error de des"iaci)n ue pudiera e#istir+ entregando una se$al de control.
;:S:;O;A % );)TMA) % C:TOL
-1
Accionador o Actuador4 %on"ierte las "ariaciones de salida del controlador en "ariaciones correspondientes en la se$al actuante o "ariale manipulada cuyos camios afectan el "alor de la "ariale controlada manteni*ndola en el "alor deseado.
Ele#ento de Medida o de reali#entaci(n4 Es un transductor o sensor ue mide el "alor de la "ariale controlada y la adapta para poder reali-ar la comparaci)n con la se$al de referencia.
*erturbaci(n4 La perturaci)n es una se$al ue tiende a afectar ad"ersamente el "alor de la salida de un sistema. 1uede ser interna si es originada por un componente del sistema+ o e#terna si es originada por una fuente e#terna.
;:S:;O;A % );)TMA) % C:TOL
--
Capítulo II
MODELO MATEMATICO DE SISTEMAS
1ara entender y controlar sistemas+ tenemos ue otener sus modelos matem,ticos cuantitati"os de ellos. 1ara empe-ar con el an,lisis y dise$o lo primero ue tenemos ue &acer es otener su modelo matem,tico ue representa la din,mica del sistema. En la teor0a de control necesitamos utili-ar modelos din,micos de los procesos in"olucrados+ ue deen estar descriptos por ecuaciones diferenciales ordinarias in"ariantes en el tiempo. En la p,gina de la referencia iliogr,fica de 3orf+ encontramos una tala de resumen de las distintas ecuaciones din,micas para distintos casos2 circuitos el*ctricos+ flujo &idr,ulico+ flujo de calor+ etc. En primer lugar se aplican las leyes f0sicas del proceso y se otiene una ecuaci)n >lineal o no lineal?+ en el caso ue nuestro sistema est* descrito por ecuaciones no lineales deemos proceder a lineali-arlas alrededor del punto en euilirio de operaci)n del proceso. Los modelos matem,ticos nos rindan los medios de capturar el comportamiento de un sistema sujeto a condiciones iniciales+ entradas de control y perturaciones mediante un conjunto de ecuaciones matem,ticas. La importancia de los modelos matem,ticos radica en ue pueden ser2 •
!imulados en situaciones &ipot*ticas.
•
Ensayados en estados ue ser0an peligrosos en el sistema real.
•
sados como ase para dise$ar controladores.
;:S:;O;A % );)TMA) % C:TOL
-/
!.1 0unci(n de Tranerencia La funci)n de transferencia de un sistema lineal es la transformada de Laplace de la "ariale de salida del sistema entre la transformada de Laplace de la "ariale de entrada+ con todas las condiciones iniciales asumidas como cero.
Figura . Entrada y salida de un sistema
La funci)n de transferencia ser,2
I ' ! (
= C ' !( / ' ! (
Otra definici)n para la funci)n de transferencia dice ue es la transformada de Laplace de la respuesta del elemento >sistema? a la funci)n impulso cuando se toman las condiciones iniciales como nulas.
Figura . Respuesta al impulso de un sistema
La funci)n de transferencia ser,2 L[ g 't (] = I ' ! ( Ejemplo2 !i un proceso est, descrito por la siguiente ecuaci)n diferencial ordinaria+ donde u es la se$al de entrada+ e y la se$al de salida2 ••
•
•
- + / - + - - = - u+ u
Apliuemos la transformada de Laplace+ llamando >s? e J>s? a las transformadas de las se$ales u e y+ respecti"amente2 •
! - $ 5 ' !( − !$ -' 0( − -'0 ( + /!$ 5 ' !( − /$ -' 0( + -$ 5 ' !( = -!$4 ' !( − -$ u' 0( + 4 ' !(
!uponiendo las condiciones iniciales nulas+ y reali-ando el cociente J>s?>s?+ determinamos la funci)n de transferencia 8>s?2 I' ! ( =
5 '!( 4 ' !(
=
- ! + 1 !
-
+ /! + -
En general los sistemas ue "amos a considerar est,n descritos por modelos lineales+ estacionarios en tiempo continuo. Estos sistemas pueden siempre representarse por una ecuaci)n diferencial ordinaria de la forma2 'n(
' n −1(
- + a n−1 -
+
' m(
+ a0 - = bm u +
+ b0 u
;:S:;O;A % );)TMA) % C:TOL
-D
Asumiendo condiciones iniciales nulas+ aplicamos la transformada de laplace a la ecuaci)n diferencial y la con"ertimos en algeraica. ! 5 ' ! ( + a n −1 ! n
n −1
5 ' ! ( + + a 0 5 ' ! (
La funci)n de transferencia ser,2 Zue tami*n puede e#presarse como2
= bm ! m4 ' !( + + b04 ' !(
I ' !( 5 ' ! (
=
5 ' ! ( 4 ' !(
=4 ' ! (I ' ! (
La funci)n de transferencia es un modelo entrada [ salida. Algunas definiciones de la funci)n de transferencia2 •
%eros del sistema2 !on las ra0ces del numerador de 8>s?.
•
1olos del sistema2 !on las ra0ces del denominador de 8>s?.
•
8rado relati"o2 Es el "alor de n[m.
!.! Lineali'aci(n de Site#a Los sistemas estudiados &asta el momento fueron lineales+ pero si un sistema tiene un componente no lineal+ deemos lineali-ar el sistema antes de encontrar la funci)n de transferencia. n sistema es no lineal si las relaciones entre algunas de sus "ariales no son lineales.
!istemas con saturaci)n2
!istemas con &ist*resis2
!istemas con -ona muerta2
;:S:;O;A % );)TMA) % C:TOL
-<
!istemas todo5nada2
La relaci)n entre dos "ariales se escrie como2 - 't ( = % ' @ 't (( 3onde
% ' @ 't (( indica
se desig esign na por por
@ 0
ue
- 't ( es
una funci)n de
@ 't ( .
El punto de operaci)n normal
. %omo %omo la cur" cur"a a es cont contin inua ua en el rang rango o de inte inter* r*s+ s+ pued puede e
desarrollarse la funci)n en serie de Taylor2
!i reali-amos una apro#imaci)n en un inter"alo peue$o de punto de operaci)n ser0a2 d% d@
@
@0
=
Luego la serie de Taylor uedar0a2
' - 't ( − - 0 (
= m' @'t ( − @0 (
La ecuaci)n lineal ser,2 ∆ - 't ( = m∆ @'t (
Ejemplo. Lineali-ar2 - 't ( = 3esarrollo2
@ +H
en @ = -
@
− @ 0 + la pendiente en el
;:S:;O;A % );)TMA) % C:TOL
-9
d-'t ( ' @'t ( − -( La apro#imaci)n lineal ser,2 -'t ( = - '-( + dt t = - 't (
=
.
+
1 - .
' @ 't ( − -(
/
= +
@ 't (
9
Esta apro#imaci)n lineal nos puede ser"ir para calcular la ra0- cuadrada de algunos "alores2
= / + 1 ' -$09 − -( = /$01
.$09
=
H + - $9
U$.9
=
H + 1$.9
9
= / + 1 '1$.9 − -( = -$..// 9
Ejemplo. Lineali-ar2 - 't ( = e −/ @ en @ = 0 3esarrollo2 d-'t ( ' @'t ( − 0( La apro#imaci)n lineal ser,2 - 't ( = -'0( + dt t =0 - 't (
= 1 + '−/e −/ @ ( t =0 @ = 1 − / @
Esta apro#imaci)n lineal nos puede ser"ir para calcular la ra0- cuadrada de algunos "alores2 e−
0$0/
= e −/' 0$01( = 1 − /'0$01( = 0$.H
1ara una funci)n de "arias "ariales2
3espreciando los t*rminos no lineales2
;:S:;O;A % );)TMA) % C:TOL
-H
n sistema o ecuaci)n no lineal se puede lineali-ar suponiendo ue las perturaciones >camios? de las "ariales dependientes+ respecto a sus "alores en una condici)n de euilirio permanente o estacionaria aritraria+ son lo suficientemente peue$os para ue los productos y potencias de las "ariales perturadas y sus deri"adas puedan despreciarse. Analicemos la siguiente ecuaci)n no lineal2 - Q 't ( + - - − / @ -
=0
!." Dia5ra#a de Blo8ue Es una representaci)n gr,fica de las funciones reali-adas por cada componente y del fluj flujo o de las las se$a se$ale les. s. (ndi (ndica ca las las inte interr rrel elac acio ione ness ue ue e#is e#iste te entr entre e los los di"e di"ers rsos os componentes. na forma esuem,tica de representar los sistemas de control es a tra"*s de los diagramas de loues. En dic&o diagrama identificamos los principales componentes como loues+ omitiendo detalles y mostrando la direcci)n principal de la informaci)n y flujo de energ0a desde un componente a otro. Los diagramas de loues constan de loues operacionales y unidireccionales ue representan la funci)n de transferencia de las "ariales de inter*s.
Figura .C 3iagrama de loue unitario
3el grafico podemos escriir2 I ' ! (
=
5 ' !( 4 ' ! (
⇒5 ' ! ( = 4 ' !(I '!(
En sistemas de control se usan frecuentemente puntos de suma y de ifurcaci)n+ muy frecuentes en sistemas de control de la-o cerrado.
;:S:;O;A % );)TMA) % C:TOL
-U
Figura .D 1unto de suma y punto de ifurcaci)n o separaci)n
!.".1 Tranor#acione de dia5ra#a de blo8ue 1odemos encontrar di"ersos sistemas de control+ representados con diagramas de loues complejos. 3ic&os diagramas los podemos reducir a un simple loue empleando las siguientes transformaciones2 a? %ominaci)n de loues en serie2
? %ominaci)n de loues en paralelo2
c? Mo"imiento de un punto de suma anterior a un loue2
d? Mo"imiento de un punto de separaci)n anterior a un loue2
e? Eliminaci)n de un circuito de realimentaci)n2
Ejemplo2 Reducir el siguiente diagrama de loues2
Figura . 3iagrama de loues a reducir
En las figuras . y .G mostramos dos reducciones sucesi"as al diagrama del ejemplo.
;:S:;O;A % );)TMA) % C:TOL
-.
Figura . 1rimera reducci)n.
Figura .G !egunda reducci)n.
Finalmente+ de la figura .G+ otenemos la funci)n de transferencia 8>s? @ J>s?R>s?2 I1 $ II' !( =
5 '!( /'! (
=
1 − I1 $ I/ $ I< I1 $ I- $ ID
1+
1 − I1 $ I/
+
I9
I $I $ I + I $I = 1 - < 1 9 I- 1 − I1 $ I/ + I1 $ I- $ ID
!.$ Dia5ra#a o +r<ica de 0lu9o de Se=ale Es una forma alternati"a de diujar los diagramas de loues+ tami*n llamado diagramas de Mas)n. En estos diagramas las funciones de transferencias las representamos a tra"*s de l0neas con flec&as >loues?+ y las "ariales a tra"*s de nodos. %on el sentido de la flec&a indicamos el sentido en como "a la informaci)n >como en los diagramas de loues?. na gr,fica de flujo de se$al es un diagrama formado por nodos ue se conectan mediante "arias deri"aciones y es una representaci)n gr,fica de un conjunto de relaciones lineales.
Figura .H 8rafica de flujo de se$al unitaria
Los puntos de entrada y salida o uniones se llaman nodos. 5 - ' ! ( = I1-' ! (5 1' ! (
;:S:;O;A % );)TMA) % C:TOL
/0
Mason gener) una regla sistem,tica para la reducci)n de dic&os diagramas ue enumeramos a continuaci)n. Estas reglas incluyen a sistemas con mltiples entradas y salidas+ y con "arios la-os cerrados. La regla de Mason dice ue la funci)n de transferencia desde la entrada j a la salida k+ est, dada por2 I (G ' ! (
=
∑I
(Gi
$∆ (Gi
i
∆
donde2 8 jki @ es la ganancia de un camino directo i ue une la entrada j con la salida k= i toma los "alores de &asta la cantidad de caminos directos ue unen la entrada j con k. ∆ @ es el determinante del sistema @ 5 la sumatoria de las ganancias de todos los
la-os cerrados K la sumatoria de los productos de las ganancias de la-os cerrados ue no se tocan de a pares 5 la sumatoria de los productos de las ganancias de los la-os ue no se tocan tomados de a tres K....... ∆ jki @ es el determinante del camino directo i+ ue une la entrada j con la salida k @ es el
"alor de ∆ pero para la parte del diagrama ue no toca el camino (. Ejemplo2 En la figura .I representamos el diagrama de Mason para el mismo sistema representado por diagramas de loues en la figura .G.
Figura .I 3iagrama a reducir
3e la figura oser"amos dos caminos directos+ cuyas ganancias son2 % @ 8.8.8= y % @ 8.8. E#isten dos la-os cerrados en todo el sistema+ cuyas ganancias son2 L @ 8.8C+ y L @ 58D.8.8. No e#isten la-os ue no se touen entre s0+ por lo tanto el determinante del sistema es2 ∆ @ 5 >L K L? @ 5 8.8C K 8D.8.8. Los determinantes de amos caminos directos son > ∆ @ ∆ @ ?+ puesto ue los dos caminos directos tocan amos la-os cerrados. Entonces+ finalmente la funci)n de transferencia de este sistema ueda2 I ' ! (
=
C 1 $∆1
+ C - $∆I $I $I + I $I = 1 - < 1 9 1 − I1 $I/ + I1 $I- $ID ∆
;:S:;O;A % );)TMA) % C:TOL
/1
Oser"emos ue es el mismo resultado otenido en el ejemplo de los diagramas de loues.
!. ;ariable de Etado En los temas anteriores se &an presentado distintas estrategias para modelar el comportamiento de sistemas din,micos continuos+ entre ellas2 •
Ecuaciones diferenciales
•
Funci)n de transferencia
•
Respuestas al impulso
•
3iagramas de loue
•
3iagramas de flujo de se$al
En esta parte se estudia una nue"a alternati"a ue emplea un conjunto de "ariales denominadas 'ariables "e esta"o. 1uede pensarse ue *stas son tan s)lo "ariales matem,ticas au#iliares+ aunue en ocasiones tienen un sentido f0sico. Algunas de las "entajas ue se otienen con esta nue"a representaci)n son las siguientes2 •
La representaci)n de sistemas de mltiples entradas y mltiples salidas es m,s sencilla.
•
Toda la din,mica del sistema se representa por ecuaciones diferenciales de primer orden.
•
1ermite el desarrollo de m*todos computacionales m,s eficientes para la simulaci)n de sistemas din,micos.
• •
Brinda una nue"a perspecti"a sore la din,mica de los sistemas. Algunas de las t*cnicas de control moderno >como el control rousto? se asan en este tipo de representaci)n.
Figura . !istema 3in,mico con mltiples entrada s y mltiples salidas
E9e#plo ).!1 1ara conocer el comportamiento de un circuito RL% serie como el de la figura .+ es necesario estalecer los 'alores de "ariales
i' t (
y
" C 't (
i L ' 0
sir"en como "ariales de estado.
+
(
y
" C ' 0
+
(
+ por esta ra-)n+ las
;:S:;O;A % );)TMA) % C:TOL
/-
Figura . %ircuito RL% en serie.
tili-ando las leyes de irc&of otenemos2
Escriiendo en forma matricial2
!upongamos ue en el circuito se uiere estudiar el comportamiento de las "ariales " / ' t (
e
i L ' t (
+ es decir+ ue seleccionamos estas "ariales como las salidas del
sistema. 3ado ue
" / 't (
= /i L ' t ( + podremos escriir en forma matricial2
La representaci)n con "ariales de estado del circuito estar0a dada por las ecuaciones2
Zue son de la forma2
3onde2
El estado de un sistema es un conjunto de "ariales tales ue el conocimiento de estas "ariales y de las funciones de entrada+ junto con las ecuaciones ue descrien la din,mica+ proporcionan la salida y el estado futuro del sistema. 1ara un sistema din,mico+ el estado de un sistema se descrie en funci)n de un conjunto de "ariales de estado [ @1 't (, @ - 't (, , @n 't (] Estas "ariales son las ue determinan el comportamiento futuro de un sistema cuando se conocen el estado presente de *ste y las se$ales de e#citaci)n.
!..1 Ecuaci(n de Etado El estado de un sistema se descrie por el conjunto de ecuaciones diferenciales de primer orden escritas en funci)n de las "ariales de estado [ @1 't (, @- 't (, , @ n 't (] . Estas ecuaciones pueden escriirse de forma general como2
;:S:;O;A % );)TMA) % C:TOL
//
En las ecuaciones sistema+
- 't (
u 't (
es un "ector ue contiene cada una de las m entradas al
es un "ector ue contiene cada una de las ) salidas del sistema+
@ 't ( es
un "ector ue contiene cada una de las n "ariales de estado del sistema+ es decir2
n sistema puede representarse mediante la notaci)n compacta como2
3onde2 @ 't ( 2 Xector de estado >n #? 't ( 4 3eri"ada del "ector de estado con respecto @ - 't ( 2 Xector de salida >p#? u 't ( 2 Xector de entrada o de control >m#?
A B % 3
al tiempo >n #?
2 Matri- de estado o del sistema o de e"oluci)n >n #n? 2 Matri- de entrada o de distriuci)n >n#p? 2 Matri- de salida o de oser"aci)n >p #n? 2 Matri- de transmisi)n directa o de prealimentaci)n >p #m?
La funci)n de transferencia para una entrada y una salida a partir de la ecuaci)n de estado+ puede otenerse utili-ando la transformada de Laplace2 5 ' ! ( 4 ' ! (
= C ( !$ − A) −1 B + 6
1ara otener una representaci)n con "ariales de estado de sistemas de una entrada y una salida de los cuales se conoce la ecuaci)n diferencial2
!e seleccionan las siguientes "ariales de estado2
J la ecuaci)n diferencial puede escriirse como2
J en forma matricial.
/D
;:S:;O;A % );)TMA) % C:TOL
;:S:;O;A % );)TMA) % C:TOL
/<
Capítulo III
ANALISIS DE SISTEMAS DE CONTROL EN EL DOMINIO DEL TIEM*O
El primer paso para reali-ar el an,lisis temporal de un sistema de control es la otenci)n de su modelo matem,tico+ es decir+ un conjunto de ecuaciones diferenciales >en general? ue descrian el comportamiento de los elementos ue componen dic&o sistema y la interacci)n entre los mismos. na "e- otenido el modelo del sistema ya s)lo ueda anali-ar su comportamiento. 1ara &acerlo+ diferenciamos dos tipos de respuesta en funci)n de las condiciones en ue se produce2 respuesta lire y respuesta for-ada. La primera consisten en el comportamiento del sistema cuando+ sin necesidad de e#citaci)n e#terna >entrada?+ el sistema parte de un estado inicial distinto al euilirio >por ejemplo es el caso si solt,ramos un p*ndulo desde una posici)n de Dq respecto a la "ertical sin aplicar ninguna fuer-a e#terna sore *l?. La respuesta for-ada+ consiste en el comportamiento del sistema cuando partiendo del euilirio >condiciones iniciales nulas?+ se aplica sore *l una determinada entrada >por ejemplo+ la aplicaci)n de una fuer-a &ori-ontal al p*ndulo cuando *ste se encuentra en reposo en su posici)n "ertical?. !e denomina respuesta temporal de un sistema a la e"oluci)n en funci)n del tiempo >din,mica? de las se$ales de salida. Los conceptos fundamentales relacionados con el comportamiento din,mico de los sistemas son su estailidad y el an,lisis de los reg0menes transitorio y permanente. Los aspectos matem,ticos del an,lisis y s0ntesis de sistemas de control se efectan ordinariamente tanto en el dominio del tiempo como en el dominio de la frecuencia+ segn resulte m,s c)modo+ o dependiendo de en cual de ellos se &ayan dado las especificaciones a cumplir por un determinado dise$o de sistemas de control. En este cap0tulo se aordar, el an,lisis en el dominio del tiempo+ el cual incluye el estudio de la respuesta completa de un sistema+ es decir+ tanto su r*gimen transitorio como su r*gimen permanente >o estacionario?.
;:S:;O;A % );)TMA) % C:TOL
/9 - 't (
= - 't ( tran!itori a + - 't ( permanente
La respuesta transitoria se refiera a la forma en ue llega el sistema a las condiciones de estado estacionario2 m,s o menos r,pido+ con oscilaciones m,s o menos amortiguas+ sorepasando en mayor o menor medida la referencia deseada+ etc. !e define el r*gimen transitorio como el periodo de tiempo en ue la salida e"oluciona desde las condiciones iniciales &asta apro#imadamente su "alor final. !e define el r*gimen permanente como el periodo de tiempo a partir del cual la salida &a alcan-ado su "alor final.
Figura C. R*gimen permanente y transitorio
Anali-ar la respuesta transitoria de un sistema de control es importante porue permite conocer la "elocidad de respuesta del sistema a las se$ales de referencia >cuanto m,s r,pido mejor? y sopesar el esfuer-o ue sufren los componentes mec,nicos ue casi siempre forman parte de *l+ ya ue pr,cticamente todos ellos poseen cierta inercia y sufren ro-amientos ue se manifiestan en retardos temporales en la respuesta. 1or tanto+ si un sistema de control incluye componentes mec,nicos es seguro ue la salida de un sistema no seguir, instant,neamente a "ariaciones muy r,pidas de la entrada >por ejemplo una entrada escal)n?. En funci)n de la forma en ue un sistema alcan-a el r*gimen permanente distinguimos entre sistemas soreamortiguados y suamortiguados= se dice ue un sistema es soreamortiguado si no se producen oscilaciones durante el periodo transitorio+ y suamortiguado en caso contrario.
Figura C. !istemas suamortiguados y soreamortiguados
;:S:;O;A % );)TMA) % C:TOL
/H
No ostante &ay ue tener en cuenta ue no siempre se alcan-a un "alor final de euilirio ya ue &ay sistemas en los ue no se llega a alcan-ar nunca el r*gimen permanente= es el caso de los sistemas inestales. Tami*n e#iste la posiilidad de ue la salida se uede oscilando alrededor de un determinado "alor. 1or tanto+ otra de las principales caracter0sticas ue interesa conocer al anali-ar un sistema es s0 *ste alcan-a el r*gimen permanente en algn momento. Nos referimos a este aspecto como la estailidad asoluta del sistema. En el caso de ue se alcance el r*gimen permanente+ interesa tami*n conocer de u* forma se llega al mismo+ o sea+ cuales son las caracter0sticas del r*gimen transitorio. Nos referimos a este ltimo aspecto como estailidad relati"a del sistema. No es lo mismo llegar poco a poco de forma sua"e al "alor final de salida+ ue dando anda-os+ aunue en amos casos se alcance el "alor final de euilirio. La &erramienta fundamental para el an,lisis de sistemas din,micos es el conocimiento de la situaci)n de los polos y ceros del sistema+ deido a ue el comportamiento de un sistema+ sea lire o for-ado+ ueda completamente caracteri-ado por su locali-aci)n. Los ceros del sistema son las ra0ces del numerador de la funci)n de transferencia y los polos son las ra0ces del denominador. 3ado ue los coeficientes ai y i de la funci)n de transferencia de un sistema f0sico son reales+ los ceros y polos del sistema deen ser siempre reales o aparecer en forma de pares complejos conjugados.
+ bm −1 ! m−1 + + b0 I ' ! ( = a n ! n + a n −1 ! n −1 + + a 0 bm ! m
!i un sistema es estale+ en algn momento se alcan-ar, el r*gimen permanente. !i aplicamos un escal)n a la entrada+ la salida se mantendr, constante una "ealcan-ado el permanente. 3ic&a constante recie el nomre de "alor final del sistema. !i un sistema es estale+ en algn momento se alcan-ar, el r*gimen permanente. !i aplicamos un escal)n a la entrada+ la salida se mantendr, constante una "ealcan-ado el permanente. 3ic&a constante recie el nomre de "alor final del sistema. El "alor final de un sistema "iene dado por2 - t =∞
- 't ( = lím t →∞
!i el sistema es estale >asolutamente estale? podemos aplicar el teorema del "alor final y tenemos ue - t =∞
!5 ' !( = lím !I ' ! ( / ' ! ( = !lím →0 ! →0
%onsideremos por ejemplo una entrada escal)n de amplitud A+ entonces2
;:S:;O;A % );)TMA) % C:TOL
/U
- t =∞
= lím !I' !( /' !( = lím !I' !( ! →0
! →0
A !
= I'0( A
El "alor final de la salida ante una entrada escal)n es la amplitud del escal)n >A? multiplicada por el factor 8>? y se le denomina ganancia est,tica del sistema y determina en cuanto se amplifica o atena la entrada. La respuesta en r*gimen permanente es la respuesta temporal cuando t tiende a infinito+ es decir+ cuando &a concluido el transitorio y se &a alcan-ado el r*gimen estacionario= el sistema por tanto es estale >supuestamente? y responde a l a acci)n de control. La respuesta permanente indica la precisi)n del sistema de control= cuando se acerca la salida real a la de referencia >idealmente amas deer0an coincidir?. !i la respuesta en r*gimen permanente no coincide e#actamente con la entrada+ el sistema presenta un error en estado estacionario ue caracteri-ar, la e#actitud de la acci)n de control. - p 't ( = lím - 't ( t →∞
!e define el error en estado estacionario como la diferencia entre la se$al de referencia y la se$al de salida en estado estacionario >supuesto ue el sistema es estale?. Este error coincide con el "alor estacionario de la se$al originada en el detector de error >si la realimentaci)n es unitaria?. e !!
= lím [ r 't ( − -'t (] t → ∞
El dise$o de uenos controladores permitir, lle"ar el error en r*gimen permanente >si e#iste? dentro de los l0mites estalecidos por las especificaciones de dise$o.
".1 Repueta e5>n la ubicaci(n de lo polo %uando el sistema en estudio est, representado por ecuaciones diferenciales ordinarias simult,neas+ la funci)n de transferencia resulta ser una ra-)n de polinomios= esto es2 I' ! (
=
b' ! ( a' ! (
donde a>s? y >s? son polinomios en s. 1ara sistemas f0sicamente reales el orden del polinomio denominador a>s? siempre es mayor o igual al orden del numerador >s?+ por ra-ones de causalidad. 3enominamos polos de 8>s?+ a auellos lugares del plano complejo s+ en donde la funci)n de transferencia 8>s? se &ace infinita+ o sea donde a>s? @ >las ra0ces del polinomio denominador a>s??.
;:S:;O;A % );)TMA) % C:TOL
/.
3enominan ceros de 8>s?+ a auellos lugares del plano complejo s+ en donde la funci)n de transferencia 8>s? se &ace cero+ o sea donde >s?@ >las ra0ces del polinomio numerador >s??. Los polos y ceros descrien completamente a 8>s?+ e#cepto por un multiplicador constante+ esto significa ue las funciones 8>s? las podemos representar directamente en el plano s. Ja ue la respuesta de un sistema a un impulso est, dada por su funci)n de transferencia+ a dic&a respuesta se la denomina respuesta natural del sistema. 1odemos usar los polos y ceros para determinar la respuesta temporal y as0 identificar la forma de las respuestas temporales con las uicaciones correspondientes de los polos y ceros de la funci)n de transferencia. Tomemos por ejemplo la siguiente funci)n de transferencia2 I' !( =
-! + 1 !
-
+ /! + -
=
- ! + 1 ' ! + 1(' ! + - (
!eparando en fracciones simples2 I' ! ( =
/ −1 + ' ! + 1( ' ! + - (
tili-ando la tala de transformadas de Laplace+ otenemos la respuesta natural del sistema del ejemplo2 −e −t + /$ e −-$t , t ≥ 0 g't ( = t < 0 0,
3el ejemplo+ podemos e#tendernos al caso general de polos en el eje real+ oser"ando ue la uicaci)n de los polos dan los coeficientes de las e#ponenciales+ y ue los ceros afectan solo en la magnitud de la amplitud de la respuesta. 1ara el caso de ra0ces complejas conjugadas otenemos una conclusi)n similar2 los polos determinan la forma de la respuesta temporal. 3ada la funci)n de transferencia2 I'!( =
-! + 1 ! -
+ -! + <
!eparando en fracciones simples2 I' ! ( =
'1 + Di ( Di ! + 1 + -i
+
'1 − Di( −Di ! + 1 − -i
=
A
⋅
e − iθ
- ! + 1 + -i
A
+ ⋅
e iθ
- ! + 1 − - i
tili-ando la tala de transformadas de Laplace2 g't ( =
A -
A
- t + θ ( ⋅ e − iθ ⋅ e − t ⋅ e −-it + ⋅ e iθ ⋅ e − t ⋅ e i- t = A ⋅ e −t ⋅ cos'
-
;:S:;O;A % );)TMA) % C:TOL
D0
%omo "emos+ la respuesta natural a un par de polos complejos conjugados es una sinusoide amortiguada por una e#ponencial. Tanto la e#ponencial+ como la frecuencia de la sinusoide dependen solo de los polos. En la figura C.C esuemati-amos las respuestas naturales de los sistemas dependiendo de la uicaci)n de los polos.
Figura C.C Respuestas temporales asociadas con los polos en el plano s.
Los polos complejos conjugados los podemos definir en t*rminos de sus partes real e imaginaria+ tradicionalmente2 ! = − σ
± i$ ω d
Ja ue los polos complejos "ienen de a pares+ el denominador correspondiente al par de complejos es2 a' ! ( = ' ! + σ
− i$ ω d ('! + σ + i$ ω d ( = '! + σ (- + ω -d
%uando encontramos la funci)n de transferencia a partir de ecuaciones diferenciales+ t0picamente I'!( =
podemos
ω n ! + -ξω n ! + ω n -
escriir
el
resultado
en
la
forma
polinomial2
;:S:;O;A % );)TMA) % C:TOL
D1
Figura C.D 1ar,metros de los polos complejos.
%omparando las dos ltimas ecuaciones+ encontramos la relaci)n entre los par,metros2 σ
= ξω n
ωd
= ωn
y 1 − ξ -
A ξ la conocemos como coeficiente de amortiguamiento+ y a ωn como frecuencia natural no5amortiguada. En la figura C.D oser"amos el significado gr,fico de cada uno de estos par,metros. 1odemos oser"ar >"er la figura C.? ue cuando el coeficiente de amortiguamiento ξ es cercano a cero las respuestas del sistema son oscilatorias+ mientras ue cada "eue el mismo se acerca a es mayor el amortiguamiento de las oscilaciones &asta el punto de no presentarlas.
Figura C. Respuestas a un escal)n para un sistema de segundo orden+ para distintos
"alores del coeficiente de amortiguamiento > ξ @ .+ .+ .+... + .?.
".! Epeciicacione en el do#inio te#poral Las especificaciones para el dise$o de un sistema de control frecuentemente in"olucran ciertos reuerimientos asociados a la respuesta temporal del sistema. Los reuerimientos para una respuesta a un escal)n los e#presamos en t*rminos de "alores est,ndar ilustrados en la figura C.2 Tiempo de crecimiento >rise time? t r es el tiempo ue toma el sistema para alcan-ar la "ecindad de su nue"o set5point. Tiempo de estalecimiento >settling time? t s es el tiempo ue toma el sistema para ue el transitorio decaiga. !orepico >o"ers&oot? M p es la cantidad m,#ima ue el sistema se sorepasa en el transitorio su "alor final di"idido ese "alor final >frecuentemente se lo da en porcentaje?.
;:S:;O;A % );)TMA) % C:TOL
D-
Tiempo del pico >peak time? tp es el tiempo ue toma el sistema para alcan-ar el m,#imo "alor >el sorepico?.
Figura C. 3efiniciones de tiempo de crecimiento+ tiempo de estalecimiento+ tiempo del pico y sorepico de una respuesta a un escal)n.
Analicemos el caso de una respuesta de un sistema de segundo orden >oser"emos la figura C.?. E#aminando las cur"as ajo las definiciones de las especificaciones podemos dar relaciones entre las especificaciones y los "alores de ξ y ωn. !i consideramos+ por ejemplo+ la cur"a para ξ @ . >como promedio?+ podemos decir ue el tiempo de crecimiento es2 t r
=
1$U
ω n
1ara el sorepico podemos determinar una relaci)n en forma m,s anal0tica+ oteniendo para u* punto la deri"ada de la respuesta a un escal)n de un sistema de segundo orden se &ace cero+ y luego e"alu,ndola en ese punto. As0 otenemos2 t p
=
π ω d
y
M p
= e −πξ
1−ξ -
,
0
≤ ξ < 1
1ara el caso del tiempo de estalecimiento+ la duraci)n del mismo estar, dada principalmente por la e#ponencial en"ol"ente e − t + y a partir del mismo otenemos2 σ
t !
=
D$9
σ
=
D$9
ξω n
>considerando la anda ±Y?
Este tipo de especificaciones nos dar,n inecuaciones ue limitar,n los par,metros ωn+ ξ+ y σ= ue a su "e- limitar,n la uicaci)n de los polos en el plano s+ como mostramos
en la figura C.G.
;:S:;O;A % );)TMA) % C:TOL
D/
Figura C.G. Representaciones de las limitaciones en el plano s de2 >a? en ωn+ >? en el coeficiente de amortiguamiento ξ+ >c? en σ+ y >d? los tres par,metros en conjunto.
"." Eecto de lo polo adicionale & de lo cero :asta a&ora &emos estudiado el comportamiento de los sistemas de segundo orden. A&ora estudiaremos como afectan a la respuesta temporal agregar un cero o un polo. Estudiemos el siguiente caso+ tenemos una funci)n de transferencia de la siguiente forma2 I1 ' !(
=
' ! + 1(' ! + -(
!eparando en fracciones simples ueda2 I1 ' ! (
-
=
' ! + 1(
−
'! + -(
Xemos ue amas e#ponenciales tienen una amplitud similar. Agreguemos un cero en 5.. La funci)n de transferencia uedar, de la forma2 -' ! +11 $ ( I- '! ( = 11 $ ' ! +1('! + - ( J separando en fracciones simples nos ueda2 I- ' ! ( =
0$1U ' ! + 1(
+
1$9D '! + - (
%omo "emos+ la e#ponencial m,s r,pida disminuy) su amplitud en m,s de "eces. :agamos un an,lisis m,s detallado2 Tengamos en cuenta la funci)n de transferencia normali-ada de la siguiente manera2 I'!( =
'! α ⋅ ξ ⋅ ω n ( + 1 ' ! ω n (
-
+ -ξ ⋅ '! ω n ( + 1
Oser"emos ue el cero lo agregamos a un factor α con respecto a la parte real de los polos complejos conjugados2 s @ 5 α.ξ.ωn @ 5α.σ.
;:S:;O;A % );)TMA) % C:TOL
DD
Figura C.H Respuesta a un escal)n para la funci)n de transferencia
I'!( =
'! α ⋅ ξ ⋅ ω n ( + 1 ' ! ω n (
-
+ -ξ ⋅ '! ω n ( + 1 + para ξ @ . y α @ + + D+ + e infinito.
Figura C.I !orepico en funci)n de α y ξ.
En la figura C.H mostramos las respuestas a un escal)n de esta funci)n de transferencia para ξ @ . y para distintos "alores de α. 3e la figura concluimos ue a medida ue el cero se acerca al "alor de la parte real de los polos+ el sorepico aumenta. En la figura C.I. "emos como aumenta el sorepico al disminuir el "alor de α para distintos "alores de ξ. 3e la misma podemos afirmar ue el "alor del sorepico no es muy afectado por el cero si el mismo se encuentra m,s all, de un factor D de la parte real de los polos complejos conjugados. !i escriimos la funci)n de transferencia de la siguiente manera2 I'!( =
1
!
-
+
1
+ -ξ ⋅ ! + 1 α ⋅ ξ
⋅
!
! -
+ -ξ ⋅ ! + 1
Notamos ue el primer t*rmino es la funci)n de transferencia original >sin el cero?+ y el segundo t*rmino es la deri"ada de la funci)n de transferencia original afectada por una constante > α.ξ?. 1or lo tanto+ la respuesta a un escal)n de la funci)n de transferencia 8>s? ser, la respuesta a un escal)n de la funci)n de transferencia sin el cero+ mas la deri"ada de esa respuesta por la constante. 3e esta manera podemos e#plicar la presencia de un sorepico mayor. En la figura C. mostramos la respuesta a un
;:S:;O;A % );)TMA) % C:TOL
D<
escal)n para el sistema original+ su deri"ada y la suma de amas >respuesta al sistema con el cero?.
Figura C. Respuesta del sistema original+ su deri"ada y la suma de amas.
1ara el caso de un cero en el semiplano derec&o+ deemos considerar α \ + y sigue "aliendo el mismo an,lisis. En la figura C.+ mostramos la e"oluci)n de la respuesta a un escal)n del sistema original+ su deri"ada camiada de signo y la respuesta del sistema con un cero en el semiplano derec&o >un cero de no m0nima fase?. 3e esta figura oser"amos ue la respuesta al escal)n puede comen-ar en sentido contrario a la referencia y luego se corrige.
Figura C. Respuesta a un escal)n del sistema original+ su deri"ada camiada de signo y la suma de amas.
Analicemos a&ora el caso de agregar un polo. Escriamos la funci)n de transferencia de la siguiente forma2
;:S:;O;A % );)TMA) % C:TOL
D9 I' !( =
1 ! ! ! + 1 ⋅ + -ξ ⋅ + 1 α ⋅ ξ ⋅ ω n ω n ω n
En la figura C. mostramos las respuestas a un escal)n para los sistemas donde ξ es . y α toma distintos "alores.
Figura C. Respuesta a un escal)n para el sistema I'! ( =
1 ! ! ! + 1 ⋅ + -ξ ⋅ + 1 + para ξ @ . y α @ + + + e infinito. α ⋅ ξ ⋅ ω n ω n ω n
%omo podemos oser"ar de la figura+ la presencia de un polo adicional afecta sensilemente al tiempo de crecimiento+ y el mismo se &ace m,s grande cuanto el polo adicional se acerca m,s al origen. En la figura C.C. mostramos el comportamiento del tiempo de crecimiento en funci)n del "alor de α parametri-ada con ξ. 3el mismo podemos inferir ue si el polo adicional est, m,s lejos ue D "eces la parte real de los polos complejos conjugados+ el tiempo de crecimiento no es pr,cticamente afectado.
Figura C.C Tiempo de crecimiento en funci)n de α+ para ξ @ .+ .G y ..
Reglas a considerar en el dise$o de un sistema de control2
;:S:;O;A % );)TMA) % C:TOL
DH
? 1ara un sistema de segundo orden con ceros no finitos+ los par,metros transitorios los apro#imamos por2 t r M p
≅ '1 − t !
ξ 0$9
≅
≅ 1$U ω n
(,
D$9 σ
0
=
≤ ξ < 0$9
D$9 ξω n
? n cero adicional en el semiplano i-uierdo aumentar, el sorepico si est, en un factor D de la parte real de los polos complejos. C? n cero adicional en el semiplano derec&o ajar, el sorepico >y puede ue la respuesta a un escal)n parta en direcci)n contraria?. D? n polo adicional en el semiplano i-uierdo aumentar, el tiempo e#tra dentro de un factor D de la parte real de los polos complejos.
".$ Error de etado etacionario & ite#a tipo El error e>t? de un sistema lo definimos como la referencia menos la entrada. En la figura C.D mostramos dos diagramas de loues eui"alentes+ con la definici)n del error. Oser"emos del segundo diagrama de loues ue si :( @ + e>t? @ a>t?. 3ic&o error tendr, un transitorio+ y luego llegar, a un estacionario al cual se lo denomina error de estado estacionario.
Figura C.D. 3iagrama de loues para la definici)n del error.
!istema tipo2 Es una clasificaci)n til ue se reali-a en control por sus respuestas segn la entrada de referencia polinomiales.
;:S:;O;A % );)TMA) % C:TOL
DU
Llamemos F>s? a la funci)n de transferencia desde la entrada al error2 E>s? @ F>s? . R>s? !upongamos ue el sistema sea estale >ue F>s? tenga polos en el semiplano i-uierdo de s?+ y r>t? es un polinomio. 1or el teorema del "alor final+ tenemos ue el error de estado estacionario "ale2 e !!
=
lim e't ( = lim ! $ / '! ($ % '! ( !→ 0 t →∞
Este l0mite puede "aler cero+ ser finito o infinito. La &ailidad del sistema de control para seguir funciones polinomiales est, dada por el grado m,s alto+ k+ del polinomio para el cual el error es finito+ pero distinto de cero. Entonces a dic&o sistema lo denominaremos de sistema de tipo k. 1or ejemplo+ un sistema de tipo tiene un error de estado estacionario finito+ no cero+ a una entrada polinomial de grado >o sea a un escal)n?. n sistema de tipo tendr, un error de estado estacionario finito distinto de cero para una rampa de entrada. Analicemos cuando "ale el error de estado estacionario para un escal)n y una rampa a la entrada2 Escal)n2 /' !( =
1 !
Rampa2 /'!( =
1 !
-
e !!
= !lim →0
e !!
= lim !→ 0
% '! ( = % '0 ( % '! ( !
= d%
d! ! = 0
utili-ando L:ospital El tipo de sistema se fija entonces en el comportamiento de F>s? alrededor del cero2 e#pandiendo en serie de Taylor la funci)n F>s? %' !( = C0
+ C1 ⋅ ! + C- ⋅ !- + ⋅⋅⋅
entonces el "alor del error en estado estacionario ser,2 e !!
1ero /' ! ( =
1 ! G +1
= !lim →0
/'!( ⋅ ( C0
+ C1 ⋅ ! + C- ⋅ !- + ⋅⋅⋅)
+ para el polinomio de grado k e !!
C 0 + C 1 + C - + ⋅⋅⋅ = !lim → 0 ! G ! G −1 ! G −
J este l0mite e#istir,+ si y solo si+ % @ + ......+ %k5 @ + %k distinto de cero= y *ste es el "alor del l0mite. A los %i los denominamos coeficientes de error y nuestro sistema es de tipo k si el primer coeficiente distinto de cero es % k. %aso especial2 Retroalimentaci)n unitaria y constantes de error.
;:S:;O;A % );)TMA) % C:TOL
D.
!i : @ (+ podemos modelar el sistema con retroalimentaci)n unitaria como muestra la figura D..
Figura C. 3iagrama de loues de la retroalimentaci)n unitaria.
donde 8>s? @ (>s?.3>s?.8p>s?. Entonces tendremos2 %' !(
1ara un sistema de tipo 2
C 0
=
=
1 1 + I' ! (
1 1 + I' 0 (
1 1 C lim = ⋅ G G J para un sistema de tipo k >k ≥ ?2 !→ 0 ! 1 + I'!(
=
1 lim !
G
!→ 0
⋅ I'!(
!e define entonces constante de error del sistema retroalimentado unitario de tipo k a2 2 G = lim ! G ⋅ I' !( !→ 0
A las constantes de error para los tipos + y = los denominamos respecti"amente2 constante de error de posici)n > p @ ?+ de "elocidad > " @ ? y de aceleraci)n > a @ ?. 1ara la retroalimentaci)n unitaria+ el tipo de sistema nos da un grado de la rouste- de nuestro sistema >nos da el grado del polinomio ue el sistema puede seguir?. 1ara el caso de retroalimentaci)n unitaria+ el sistema tipo est, dado por la cantidad de integradores puros >s? ue posee el sistema. Ejemplo2 !ea la funci)n de transferencia de nuestra planta2
I p ' ! (
!iendo :>s? @ &+ tendremos ue nuestro error "ale2 1 ' ! (
Entonces2
% ' ! (
=
= /'! ( − 5 '! ( =
1 + ' ; − 1( ⋅ I p ' ! ( 1 + ; ⋅ I p ' !(
⋅ /' !(
1 + ' ; − 1( ⋅ I p ' ! ( 1 + ; ⋅ I p ' !(
J el error de estado estacionario a una entrada escal)n ser,2 e !!
= lim ! → 0
%' !(
!'1 + !T ( + '; − 1( ; − 1 = lim = !→0 !'1 + !T ( + ; ;
=
1 ! ⋅ '1 + ! ⋅ T (
;:S:;O;A % );)TMA) % C:TOL
<0
%omo "emos+ el sistema es de tipo a pesar ue la planta tiene un integrador puro. !i & @ >retroalimentaci)n unitaria?+ el error de estado estacionario a un escal)n es + y el sistema pasa a ser de tipo .
;:S:;O;A % );)TMA) % C:TOL
<1
Capítulo I;
ESTABILIDAD DE SISTEMAS DE CONTROL
La estailidad es una propiedad cualitati"a de los sistemas din,micos a la ue cae considerar como la m,s importante de todas. Ello es deido a ue+ en la pr,ctica+ todo sistema dee ser estale. !i un sistema no es estale+ normalmente carece de todo inter*s y utilidad. Reali-aremos el an,lisis de la estailidad de los sistemas din,micos+ es decir+ a estalecer criterios ue permitan discernir si un determinado sistema din,mico+ dado en una cierta forma de representaci)n matem,tica+ es estale o no. En cap0tulos posteriores se estudiaran las modificaciones a introducir en los sistemas din,micos para modificar su estailidad. n sistema+ inicialmente en reposo+ se dice estable si ante cualuier se$al de entrada acotada+ es decir+ ue no alcan-a "alores infinitos+ responde con una se$al de salida acotada. n sistema lineal y estacionario+ representado por una funci)n racional propia G>s? es estale si y solo si+ todos los polos de G>s? est,n situados en el semiplano i-uierdo aierto del plano s. na forma eui"alente de e#presar lo anterior es decir ue los polos de G>s? tienen la parte real negati"a. En el semiplano i-uierdo aierto+ a ue se alude en el anterior teorema+ se e#cluye el eje imaginario. !i se incluye este eje imaginario se &ala del semiplano i-uierdo cerrado. Teorema. n sistema con funci)n de transferencia *+s, es estale si y solo si los polos de *+s, tienen parte real negati"a+ esto es+ si y solo si los polos de *+s, est,n uicados en la parte i-uierda del plano complejo.
;:S:;O;A % );)TMA) % C:TOL
<-
En conclusi)n2 na condici)n necesaria y suficiente para la Estailidad de un sistema es ue los polos est*n en el semiplano i-uierdo aierto >polos con parte real negati"a+ Re pl - ?
$.1. Etabilidad con entrada & alida li#itada 3efinici)n2 !e dice ue un sistema tiene estailidad de entrada y salida limitada si cada entrada limitada da lugar a una salida limitada. Oser"emos ue esta definici)n es independiente de lo ue ocurra dentro del sistema2 una "ariale interna del sistema puede crecer ilimitadamente segn esta definici)n. %omproar esta propiedad es f,cil utili-ando la propiedad de con"oluci)n2 Llamando u>t? a la entrada+ y>t? la salida y &>t? la respuesta a un impulso+ tenemos ue la salida es2 -'t ( =
+∞
∫ ;'τ ( ⋅ u't − τ ( d τ
−∞
!i u>t? es limitada+ entonces e#iste M tal ue
u
≤ M < ∞ y entonces la salida est,
limitada por2 +∞
-
=
∫ ; ⋅ u dτ ≤ ∫ ; ⋅ u dτ ≤ M ⋅ ∫ ;'τ ( d τ
−∞
+∞
1or lo tanto+ la salida estar, limitada si la integral
∫ ;'τ ( d τ es limitada.
−∞
1or otro lado+ supongamos ue esta integral es no limitada+ y consideramos la entrada limitada u>t5τ? @ K+ si &>t? 9 + y u>t5t? @ 5+ si &>t? \ . En este caso2 +∞
-' t ( =
∫ ;'τ ( d τ
−∞
y por lo tanto la salida es no limitada. O sea ue si la integral es no limitada+ el sistema no es estale. %onclusi)n2 El sistema con respuesta de impulso &>t? es estale con entrada y salida limitadas si+ y +∞
solo si+ la integral
∫ ;'τ ( d τ es limitada.
−∞
;:S:;O;A % );)TMA) % C:TOL
Figura D.. %ircuito el*ctrico.
Ejemplo2 Analicemos la estailidad del circuito el*ctrico ue muestra la figura D.. 1ara este sistema el*ctrico tenemos ue el capacitor &ace de un integrador puro+ y por lo tanto la respuesta al impulso ser, el escal)n unitario >si % @ ?. 1or lo tanto la integral ser,2 +∞
+∞
−∞
0
∫ ;'τ ( dτ = ∫ d τ
y esta integral es no limitada+ por lo tanto segn esta definici)n de estailidad+ este sistema no es estale. Notar ue la funci)n de transferencia de este sistema tiene un polo en el origen >en el eje imaginario?2 8>s? @ s. !i un sistema constante tiene cualuier polo en el eje imaginario o en el semiplano derec&o+ la respuesta no ser, estale con entrada y salida limitadas. !i todos los polos est,n dentro del semiplano i-uierdo+ entonces la respuesta ser, estale con entrada y salida limitadas. 1or lo tanto+ para sistemas constantes+ podemos utili-ar la uicaci)n de los polos de la funci)n de transferencia del sistema para "erificar su estailidad.
$.!. Criterio de etabilidad de Rout? %omo concluimos en la secci)n anterior+ asta proar ue todos los polos de la funci)n de transferencia est*n en el semiplano derec&o para afirmar ue el sistema es estale. El criterio de Rout& nos dice si todas las ra0ces de la ecuaci)n caracter0stica >polos de la funci)n de transferencia? est,n en el semiplano i-uierdo+ o en su defecto+ cu,ntas ra0ces est,n fuera del mismo. La forma de "erificar la estailidad de un sistema consiste entonces en calcular las ra0ces del polinomio denominador de la funci)n de transferencia. Esto es relati"amente f,cil si uno dispone de un soft4are como Matla. 1or ejemplo+ si el polinomio denominador es2 6 ' ! (
= ! / + 9 ! - + 11! + 9
;:S:;O;A % );)TMA) % C:TOL
Las ra0ces del polinomio ser,n2 5= 5 y 5C. !urge el interrogante de si e#istir, alguna condici)n sore los coeficientes del polinomio denominador de la funci)n transferencia ue asegure ue sus ra0ces >es decir+ los polos de la funci)n de transferencia? est*n todas en el semiplano i-uierdo del plano s+ es decir ue asegure ue el sistema sea estale+ sin necesidad de calcular las ra0ces. 3e &ec&o esta condici)n e#iste y es conocida como el %riterio de Estailidad de Rout&. !i ien el criterio es del siglo I+ cuando no e#ist0a Matla+ es toda"0a de utilidad para determinar el rango de coeficientes del polinomio ue aseguran la estailidad+ cuando estos coeficientes est,n en forma sim)lica. %riterio2 3ada la ecuaci)n caracter0stica de nuestro sistema de la forma2 %ondiciones2 ? na condici)n necesaria es ue los a i sean todos positi"os. !i alguno de ellos es cero o negati"o significa ue algn polo no pertenece al semiplano i-uierdo. ? Es condici)n necesaria y suficiente para la estailidad+ es ue todos los coeficientes de la primera columna del arreglo de Rout& sean positi"os. !i alguno lo fuera+ la cantidad de camios de signos en la primera columna nos dice la cantidad de polos inestales del sistema. El arreglo de Rout& se construye de la siguiente manera2 sn2 sn52 sn52 sn5C2 . . s2 s2 s2
a c . .
a aC c
aD a C cC
... ... ... ...
Los coeficientes + a + + c+ ... = son los coeficientes de la primera columna del arreglo de Rout&+ ue nos dicen si el sistema es estale. Los coeficientes de la tercera fila los determinamos de la siguiente manera2
;:S:;O;A % );)TMA) % C:TOL
<<
b1
1 − de# a1 =
a- a/
b-
a1
1 − de# a1 =
aD a<
1 − de# a1 =
a9
a − de# 1 b1 c/ =
aH
b/
a1
aH
a1
Los coeficientes de la cuarta fila2
a − de# 1 b1 c1 =
a/ b-
c-
b1
a − de# 1 b1 =
a< b/
b1
bD
b1
J as0 se completan todas las filas sucesi"amente. Ejemplo2 Tenemos ue la ecuaci)n caracter0stica de cierta funci)n de transferencia es2 a' !(
= ! 9 + D$ ! < + /$ ! D + -$ ! / + ! - + D$ ! + D
%umple la condici)n necesaria. Armemos el arreglo de Rout&2 s2 s2 sD2 sC2 s2 s2
s2
D . C 5
C 5.D D 5
.G D 5
D D 5 5 5
D 5 5 5 5 5
5
5
3el arreglo "emos ue en la primera columna &ay dos camios de signo+ por lo tanto esta ecuaci)n tiene dos raices en el semiplano derec&o+ o sea+ la funci)n de transferencia tiene dos polos inestales. 1odemos determinar ue los polos son2 5C.DD+ .GI ± j..GDHH >los dos polos inestales?+ 5.D ± j..IIC y 5.HHH. El criterio de Rout& es til para determinar el rango de ganancias el controlador ue aseguran la estailidad de un sistema retroalimentado. 1or ejemplo+ si tenemos el siguiente sistema de control+ necesitamos conocer para ue "alores de el sistema es estale.
La funci)n transferencia en la-o cerrado resulta2 I LC ' !( =
2 ' ! + 1( ! /
+ < ! - + ( G − 9) ! + 2
;:S:;O;A % );)TMA) % C:TOL
<9
El arreglo de Rout& resulta2 sC2 s2 s2 s2
>D5C?
5 5 5
1ara ue el sistema sea estale se dee cumplir ue2 D 2 − /0 >0 y <
Es decir2 2 > H,<
2 > 0
2 > 0
y
1or lo ue el sistema ser, estale si se cumple ue2
2 > H,<
%asos especiales2 ? 1rimer elemento de una fila es cero2 !i el primer elemento en una fila es cero+ lo reempla-amos por una constante ε peue$a positi"a+ y continuamos construyendo el arreglo de Rout&. Esto significa ue e#isten polos sore el eje imaginario. Ejemplo2 Tenemos la siguiente ecuaci)n caracter0stica2
a' ! ( = ! D
+ <$ ! / + H$ ! - + <$ ! + 9
El arreglo de Rout& es2 sD2 sC2 s2 s2 nue" o
s2 s2
G
5 5
ε
5
5 5
En este caso tenemos dos ra0ces en el eje imaginario+ ya ue si ε fuera negati"o+ &ar0a dos camios de signo y por lo tanto dos polos en el semiplano derec&o. 1odemos comproar ue las ra0ces de esta ecuaci)n caracter0stica son2 .5C+ 5 y ±.j >polos en el eje imaginario?. ? Fila entera con ceros2 !i una fila est, llena de ceros+ tomamos el polinomio au#iliar de la fila anterior y lo deri"amos con respecto a s+ y el resultado lo utili-amos para seguir construyendo el arreglo de Rout&.
;:S:;O;A % );)TMA) % C:TOL
Ejemplo2 Tenemos la siguiente ecuaci)n caracter0stica2 a' ! (
= ! < + <$ ! D + 11$ ! / + -/$ ! - + -U$ ! + 1-
El arreglo de Rout& es2 s2 sD2 sC2 s2 s2 nue"o s2 s2
.D C
C .
H 5 5
5
5 5
Au0 utili-amos la ecuaci)n au#iliar a >s? @ C.s K >de la cuarta fila?+ y la deri"amos2 s= reempla-ando la uinta fila. Au0 "emos ue no e#iste ningn camio de signo+ lo ue significa ue no e#iste ninguna ra0- en el semiplano derec&o. Zue e#ista una fila completa de ceros+ significa la e#istencia de ra0ces sim*tricas con respecto al origen+ sore el eje imaginario o sore el eje real. En estos casos+ estas ra0ces est,n dadas por la ecuaci)n au#iliar a >s? >en este ejemplo las ra0ces son s @ ±.j?. 1odemos comproar ue las ra0ces de esta ecuaci)n caracter0stica son2 .5C+ 5 + 5 y ±.j >polos en el eje imaginario?.
;:S:;O;A % );)TMA) % C:TOL
Capítulo ;
LU+AR DE RAICES
Es una gr,fica ue nos sir"e para predecir el comportamiento de un sistema a la-o cerrado+ cuando algunos par,metros del sistema se camian >normalmente la ganancia?. 1ara comprender la importancia del lugar de ra0ces+ "amos a anali-ar el comportamiento de un sistema cuando se encuentra en un sistema de control. !upongamos ue el sistema se define por la siguiente funci)n de transferencia2 I ' ! (
=
1 ! ' ! + /(
Xamos a controlar este sistema con un controlador muy simple+ en el ue la entrada al sistema a ser controlado es proporcional >con ganancia ?.
Figura .. 1lanta con un controlador proporcional
La ganancia a la-o cerrado est, dado por2 2 C ' !( /' !(
=
!' ! + /( 2
1+
!' ! + /(
=
2 ! -
+ / ! + 2
Zueremos e#aminar de u* manera el comportamiento del sistema "ar0a segn los camios de + as0 ue se pruea "arios "alores de . 1roamos con @ + y .
;:S:;O;A % );)TMA) % C:TOL
<.
Figura .. Respuesta al escal)n con @
Oser"ando la figura .+ podemos concluir ue la respuesta es demasiado lenta.
Figura .C. Respuesta al escal)n con @
%on @ la respuesta es casi deseale+ aunue es posile ue se desee ajustar + para llegar a tener menos soreoscilaci)n.
Figura .D. Respuesta al escal)n con @
La respuesta con @ es demasiado oscilatoria. Es e"idente ue con este m*todo pruea y error/ se puede tardar muc&o tiempo en encontrar un adecuado "alor para . Es necesario otro enfoue para &acer frente a esos sistemas. 1ara el sistema descrito anteriormente+ es posile calcular la uicaci)n precisa de las ra0ces+ y elegir un "alor de ue nos de una uena respuesta. 1ara sistemas m,s
;:S:;O;A % );)TMA) % C:TOL
90
complicados no es tan simple por lo ue se necesita un m*todo m,s general para resol"er el prolema. Este m*todo m,s general se llama el m*todo Lugar de Ra0ces/. %on esta t*cnica podemos &acer una gr,fica de las ra0ces "ariando un par,metro >por lo general+ la ganancia?. Analicemos la ecuaci)n caracter0stica de2 C ' !( /' ! (
El cual ser,2
! -
=
2 !
-
+ / ! + 2
+ / ! + 2 = 0
1odemos encontrar algunas ra0ces para diferentes "alores de 2 3 D D
Raíce 5++ 5+CH 5+ 5 5+ j.C 5+ j.GH 5+ jD. 5+ j.D 5+ jI.HI
Luego diujamos las diferentes ra0ces en el plano s
Figura .. 8r,fica de las ra0ces de la ecuaci)n caracter0stica para diferentes "alores de
!e oser"a ue para "alores peue$os de el sistema comien-a soreamortiguado+ y conforme aumenta se con"ierte en suamortiguado cada "e- m,s. El lugar de ra0ces muestra el camino de las ra0ces cuando "aria+ pero no muestra los "alores actuales de . La gr,fica del lugar de ra0ces ser,2
;:S:;O;A % );)TMA) % C:TOL
91
Figura .. Lugar de Ra0ces diujado en el MATLAB
El punto de partida para las ra0ces+ cuando @ + se muestra por las dos peue$as /#/+ en s @ y s @5 C. %uando aumenta las dos ra0ces se mue"en &ori-ontalmente y se renen en ! @5 ++ luego se mue"en "erticalmente. A continuaci)n se reali-ar, un an,lisis m,s general para diujar el lugar de ra0ces. !upongamos tener el sistema de la figura .G+ donde A es la ganancia de nuestro controlador+ el cual puede ser elegido por el dise$ador.
Figura .G. 3iagramas de loues del sistema de control t0pico.
La funci)n de transferencia de este sistema es2 2 ⋅ 2 ⋅ I '! ( 5 ' !( = A p /' ! ( 1 + 2 A ⋅ 2 p ⋅ I '! ( Los polos de esta funci)n de transferencia estar,n dados por las ra0ces de la ecuaci)n caracter0stica2 1 + 2 A ⋅ 2 p ⋅ I' !(
=0.
3ependiendo de la ganancia A ue elija el dise$ador+ ser, la respuesta din,mica ue tendr, el sistema retroalimentado >la uicaci)n de los polos depende de esta ganancia?. !e propuso ue el dise$ador del sistema de control construya el lugar geom*trico de todas las ra0ces posiles de la ecuaci)n 1 + 2 A ⋅ 2 p ⋅ I' !( = 0 a medida ue A "ar0a desde a infinito. 3e esta manera podemos elegir adecuadamente la ganancia A y "er los efectos de polos y ceros adicionales.
;:S:;O;A % );)TMA) % C:TOL
9-
Tenemos ue la funci)n de transferencia de la planta es2 I p ' ! ( = 2 p ⋅ I ' ! ( = 2 p ⋅
b' ! ( a' ! (
donde a>s? y >s? son polinomios de grado n y m respecti"amente+ y n ≥ m. Estos polinomios los podemos escriir de las siguientes maneras2
= ! m + b1 $ ! m −1 + ⋅⋅⋅ + bm b' ! ( = ' ! − 1 ($' ! − - ( ⋅⋅⋅ '! − m ( b' ! (
m
b' ! (
= ∏' ! − i ( i =1
= ! n + a1 $ ! n −1 + ⋅⋅⋅ + an a' ! ( = ' ! − p1 ($' ! − p - ( ⋅⋅⋅ ' ! − pm ( a' ! (
m
a' ! (
= ∏' ! − pi ( i =1
Llamemos a2 @ A . p. Entonces la ecuaci)n caracter0stica la podemos escriir de las siguientes maneras2 1 + 2 ⋅ I' ! ( = 0 ;.< 1 + 2 ⋅
b' ! ( a' !(
=0
a'!( + 2 ⋅ b' !(
I' ! ( = −
1 2
=0
;.< ;.C< ;.D<
%onsideraremos primeramente el caso en ue es positi"o. El grado de la ecuaci)n caracter0stica es el grado mayor de los dos polinomios a>s? y >s? >oser"ando la ecuaci)n .C?+ y por lo tanto es de grado n. Esto significa ue el nmero de ramas del lugar geom*trico de las ra0ces estar, dado por n el grado del polinomio denominador de la funci)n de transferencia a la-o aierto. 3e la ecuaci)n .C tami*n podemos decir ue para @ + las ra0ces de la ecuaci)n caracter0stica estar, dada por los polos de la funci)n de transferencia a la-o aierto >las ra0ces de a>s??= y ue para infinito+ las ra0ces de la ecuaci)n caracter0stica estar, dada por los ceros de la funci)n de transferencia a la-o aierto >las ra0ces de >s??. %onclusi)n2 e#istir, n ramas en el lugar geom*trico de las ra0ces ue partir,n de los polos a la-o aierto y terminar,n en los ceros a la-o aierto. 1autas para el tra-ado de un lugar geom*trico de las ra0ces2 3efinici)n (2
;:S:;O;A % );)TMA) % C:TOL
9/
El lugar geom*trico de las ra0ces+ es el lugar geom*trico de "alores de s para el cual K .8>s? @ se cumple+ ya ue el par,metro >real? "ar0a desde cero a infinito. 1or lo general+ K .8>s? es el denominador de una funci)n de transferencia de inter*s+ de modo ue las ra0ces en el lugar geom*trico son polos en la-o cerrado del sistema. 1artiendo de la ecuaci)n .D+ y teniendo en cuenta ue la funci)n compleja la podemos discriminar en su magnitud y fase+ y para positi"os+ podemos arriar a la siguiente definici)n2 3efinici)n ((2 El lugar geom*trico de las ra0ces de 8>s? es el lugar geom*trico de puntos en el plano s donde la fase de 8>s? es H °. Esto se lo conoce como la condici)n de fase+ ue significa matem,ticamente2 I'! ( =1U0
+l ⋅/90
+ con l entero.
Figura .H. 1unto de pruea y los ,ngulos
formados con los polos y ceros. Ejemplo2 Tenemos la siguiente funci)n de transferencia 8>s? a la-o aierto2 ! +1 I'! ( = ! ⋅ { [ ( ! + - ) + D] ⋅ ( ! + D) } En la figura .H mostramos con cruces la uicaci)n de los polos de esta funci)n de transferencia+ y con c0rculos los ceros. !uponemos un punto de pruea uicado en s o @ 5 K .j+ y reali-amos la suma de las contriuciones de las fases para determinar si es o no punto del lugar de ra0ces2 I
= Ψ1 − Φ1 − Φ - − Φ/ − Φ D
@ Io 5 o. 5 o 5Go 5CCo.G @ 5Co.C La fase de 8 para este punto de pruea "ale 5C o.C+ y no Ho por lo tanto este punto de pruea no pertenece al lugar geom*trico de las ra0ces.
;:S:;O;A % );)TMA) % C:TOL
9D
.1. *ao para tra'ar el lu5ar 5eo#@trico de la raíce 1A!O 2 3iujamos los polos y ceros de la funci)n de transferencia a la-o aierto >con # y o?. 1A!O 2 Encontramos la parte del eje real de los lugares geom*tricos de las ra0ces. !i tomamos un punto de pruea sore el eje real+ la contriuci)n en ,ngulo de los ceros o polos complejos conjugados se anular,+ puesto ue uno de los ,ngulos se cancela con el de su conjugado. Entonces deemos considerar solo los polos y ceros ue se encuentran sore el eje real. Los mismos aportar,n ° si el punto de pruea est, a la derec&a del polo o cero+ y aportar, con 5H ° o KH° si el punto de pruea est, a la i-uierda del polo o cero+ respecti"amente. %onclusi)n2 Es lu/ar /eom0trico "e las ra1ces2 a)uel lu/ar "el eje real )ue est3 a la iz)uier"a "e un n4mero impar "e polos # ceros.
1A!O C2 3iujamos las as0ntotas para "alores grandes de . %uando tiende a infinito+ la ecuaci)n K .8>s? @ se satisface solamente si 8>s? @ . Esto puede ocurrir de dos maneras2 ( 5 En los ceros de 8>s?+ o sea las ra0ces del polinomio >s?. (( 5 Escriamos la ecuaci)n caracter0stica de la siguiente manera2 1 + 2 ⋅
b' ! (
=0
a' !(
+ b1 $ ! m−1 + ⋅⋅⋅ + bm =0 1 + 2 ⋅ n n −1 ! + a1 $ ! + ⋅⋅⋅ + an !m
!i n 9 m+ 8>s? tiende a cero cuando s tiende a infinito. 1ara grandes+ m ceros se cancelar0an con m polos+ y los >n5m? polos restantes se "er0an agrupados como en un solo polo mltiple en α2 1 + 2 ⋅
1 ' ! − α (
n− m
=0
Tomemos un punto de pruea
0 ! →
! 0
∞,
2 → ∞
= / ⋅ e ( $φ + para un "alor grande y fijo de R+ y φ
"ariale. Aplicando el criterio de la fase+ tenemos2 ' n − m( ⋅ φ l
= 1U0 o + l ⋅ /90 o
;:S:;O;A % );)TMA) % C:TOL
9<
El ,ngulo φl nos dar, el ,ngulo ue forman las as0ntotas+ ue ser,n de2 φ l
o o = 1U0 + l ⋅ /90 ' n − m(
l = 0, 1, -, $$$ , n − m − 1
El lugar de origen de las as0ntotas est, en !0 = α . A"erigvemos cu,nto "ale α2 ! n
+ a1 $ ! n −1 + a- $ ! n−- + ⋅⋅⋅ + an = '! − p1 ($'! − p- ($$$$$'! − pn (
Es f,cil de deducir ue2 a1 = −
n
∑ p + el opuesto de la sumatoria de los polos a la-o i
i =1
aierto. 1or otro lado+ la ecuaci)n caracter0stica la podemos escriir de la siguiente manera2 !
n
+ a1 $ ! n−1 + a- $ ! n−- + ⋅⋅⋅ + an + 2 ⋅ ' ! m + b1 $ !m−1 + b- $ !m− - + ⋅⋅⋅ + bm ( = 0
!i m \ >n5?+ tenemos ue no afectar, el coeficiente de s n5+ ue ser, a= y por lo tanto+ si llamamos r i las ra0ces de esta ecuaci)n+ tenemos ue2 n
n
i =1
i =1
− a1 = ∑ ri = ∑ pi A&ora+ para grandes+ m de las ra0ces coinciden con los ceros - i+ y >n5m? son del sistema asint)tico
1 ' ! − α ( n − m
+ cuyos polos sumar,n >n5m? . α. 1or lo tanto2 n
∑ r = + ' n − m( ⋅ i
α
i =1
m
n
i =1
i =1
+ ∑ i = ∑ pi
Entonces+ el centro de las as0ntotas estar, dado por2 n
m
∑ p − ∑ i
α =
i =1
i
i =1
'n − m(
1A!O D2 %alculamos los ,ngulos de salida y de llegada de polos y ceros. Esto lo anali-amos considerando un punto de pruea muy cercano al polo o al cero+ y aplicando el criterio de fase. 1A!O 2 Estimamos >o calculamos? los puntos donde los lugares geom*trico de las ra0ces cru-an el eje imaginario. Esto podemos otener determinando el + para el cual el sistema se torna inestale >con el criterio de Rout&?+ y luego determinando las ra0ces de la ecuaci)n caracter0stica para ese .
;:S:;O;A % );)TMA) % C:TOL
99
Otra manera de determinarlo es reempla-ar en la ecuaci)n caracter0stica s por j. ω+ de esta manera tenemos dos ecuaciones >una para la parte real de la ecuaci)n y otra para la imaginaria?+ con dos inc)gnitas2 y ω. 1A!O 2 Estimamos la locali-aci)n de las ra0ces mltiples+ especialmente en el eje real+ y determinamos los ,ngulos de llegada y salida de estos lugares. !upongamos ue para un determinado + e#isten ra0ces mltiples. Llamemos en ese caso r i+ a las ra0ces de la ecuaci)n caracter0stica para ese + o sea2 1 + 2 $ I '! ( = 0
= ' ! − r1 ($' ! − r- ($$$$' ! − rn ( = %' !(
Llamemos r α a la ra0- mltiple+ entonces &ar, un t*rmino de la productoria ue ser,2 >s5 r α?a+ con a ≥ . O sea2 n−a
%' !( = ' ! − rα (
a
⋅ ∏ ' ! − r i ( i =1
3eri"emos esta productoria+ y e"alu*mosla en s @ r α2 d% ' !( d!
! =r α
d% ' !( d!
n −a
n −a
n −a −1
i =1
i =-
i =1
= α ⋅ ' ! − rα ( α −1 ⋅ ∏' ! − ri ( + '! − rα ( a ⋅ ∏'! − ri ( +⋅⋅⋅ + '! − rα ( a ⋅ ∏'! − r i ( = 0 + 0 +⋅⋅⋅ + 0 = 0
! =r α
Aplicando *ste resultado a la ecuaci)n caracter0stica+ y saiendo ue se dee cumplir en s @ r α2 a' !( + 2 $ b' !( da d! ! =r
+ 2 $
α
=0
db d!
y =0
! =r α
%ominando amas ecuaciones para eliminar 2 da d! ! =rα
−
a' !( db b' ! (
⋅
d!
=0 ! =r α
Zue es eui"alente a2 da a' ! ( db ⋅ − ⋅ b' ! ( d! ! =r b' !( d! 1
α
= 0 ! =r α
!i di"idimos esta ecuaci)n por 5>s?+ otendremos ue2 d a
−
d! b ! =r α
=0
Entonces tenemos ue la condici)n de ra0ces mltiples es la siguiente2 −1 =0 d! I' !( ! =r d
α
1A!O G2 %ompletamos el diujo+ cominando los resultados anteriores.
;:S:;O;A % );)TMA) % C:TOL
9H
Ejemplo2 Tenemos la siguiente funci)n de transferencia a la-o aierto2 I' ! ( =
! +1 !
-
⋅ '! + .(
En la figura .I mostramos los resultados de los sucesi"os pasos seguidos para el tra-ado del lugar geom*trico de las ra0ces para esta funci)n de transferencia.
1A!O
1A!O
1A!O C
1A!O D
1A!O
1A!O
1A!O G
;:S:;O;A % );)TMA) % C:TOL
9U
Figura .I. 1asos para el tra-ado del lugar geom*trico de las ra0ces para la funci)n de transferencia del ejemplo.
1ara el paso C+ el c,lculo del centro y ,ngulo de las as0ntotas son2 φ l =
1U0
+ l ⋅ /90 = .0 / −1
, -H0
σ A =
−. − 0 − 0 + 1 = −D /−1
1ara el paso D+ el c,lculo de los ,ngulos α de salida de los polos en el origen >suponiendo un apartamiento peue$o de los mismos?+ aplicando el criterio del ,ngulo2 - ⋅α
+ 0 − 0 = 1U0 + n ⋅ /90
⇒
α = −.0 , .0
3e la misma manera podemos determinar el ,ngulo de salida del otro polo+ y el de llegada al cero. 1ara el paso + determinamos la ra0- mltiple reali-ando la deri"ada+ la cual "ale σ m = − / .
1odemos comproar ue la multiplicidad de esta ra0- es C+ ya ue la deri"ada
segunda de 58>s? con respecto a s e"aluada en ese punto tami*n es cero. 1or lo tanto los ,ngulos β de entrada a ese polo mltiple es2 /⋅β
− 1U0 = n ⋅ /90
⇒
β = −90 , 90 , 1U0
J los ,ngulos γ de salida son2 / ⋅γ
− 1U0 = 1U0 + n ⋅ /90
⇒
γ = −1-0 , 0 , 1-0
.!. Condici(n de #a5nitud El criterio de magnitud es el siguiente ue lo otenemos aplicando el m)dulo a la ecuaci)n ;.D<2 I' ! (
=
1 2
+
y para 9 2 2 =
1 I' ! (
Este criterio nos permite determinar el "alor de + una "e- escogido una uicaci)n determinada del lugar geom*trico de las ra0ces.
;:S:;O;A % );)TMA) % C:TOL
9.
Figura . Lugar de las ra0ces del ejemplo+ con un punto de pruea y los "ectores para determinar la ganancia.
Ejemplo2 !upongamos tener la siguiente funci)n de transferencia2 I' ! ( =
1 ! ⋅ ' !
-
+ D ⋅ ! + U(
cuyos polos se uican en el origen y en 5 ±.j. En la figura . mostramos el lugar de las ra0ces para esta funci)n de transferencia. Elegimos un punto de pruea en 5.G ±.j+ ue pertenece al lugar geom*trico de las ra0ces+ pues ese punto cumple con ciertos reuerimientos para nuestro sistema de control. Entonces determinamos la ganancia para llegar a ese punto como2 2 =
1 I' ! (
= !0 ⋅ !0 − ! - ⋅ !0 − ! /
2 = -$10U ⋅ 1$ /// ⋅ D$-19
= 11$ U<
;:S:;O;A % );)TMA) % C:TOL
H0
Capítulo ;I
ANALISIS DE SISTEMAS DE CONTROL EN EL DOMINIO DE LA 0RECUENCIA
!i tenemos una planta 8>s? >"er la figura .? estale+ al cual se aplica una entrada sinusoidal r>t? @ a. sen>ω.t?+ "amos a demostrar ue la salida ser, tami*n una funci)n sinusoidal con la misma frecuencia ω+ luego del transitorio inicial >o sea cuando t tiende a infinito?.
Figura . !istema de %ontrol con entrada senoidal
!i la entrada a la planta tiene la forma r>t? @ a. sen>ω.t?+ su transformada de Laplace es2 /'!( =
a ⋅ ω ! -
+ ω -
Entonces la salida de la planta J>s? ser,2 5 ' !( = I' !( ⋅ /' !(
= I' !( ⋅
a ⋅ ω !
-
+ ω -
= I'!( ⋅
a ⋅ ω
' ! + ( ⋅ ω ( ⋅ ' ! − ( ⋅ ω (
%omo 8>s? es estale+ s @ ± j.ω son polos simples de J>s?. Entonces J>s? puede ser e#pandida+ usando e#pansi)n en fracciones simples+ como2 5 ' ! (
=
G 1
+
G 1∗
! − ( ⋅ ω ! + ( ⋅ ω
+ Terminos de&idos a los polos de S's(
donde2 G 1
= I' !( ⋅
a ⋅ω !
+ ( ⋅ω ! = (
= I' ( ⋅ω ( ⋅ ω
a ⋅ω - ⋅ ( ⋅ω
=
a - ⋅ (
⋅ I' ( ⋅ω (
;:S:;O;A % );)TMA) % C:TOL
H1 G 1∗
=
a
−- ⋅ (
⋅ I' − ( ⋅ ω (
%omo todos los polos de 8>s? tienen su parte real negati"a+ sus respuestas tender,n a cero cuando el tiempo t tienda a infinito. Entonces+ la respuesta estacionaria del sistema deido a la entrada sinusoidal ser,2 - ! 't (
ω ω = L−1 a ⋅ I' ( ⋅ ( − a ⋅ I' ( ⋅ ( - ( ⋅ '! − ( ⋅ ω ( - ( ⋅ ' ! + ( ⋅ ω (
Todos los coeficientes de 8>s? los asumimos ue son reales+ pero generalmente es compleja+ y la podemos e#presar como su forma polar2 I' ( ⋅ ω(
= A'ω ( ⋅ e (⋅θ'ω (
donde A y θ est,n definidos como2 A'ω (= = I ' (ω(
= [ ( Oe'I ' ( ⋅ ω(( ) - + ( ;m' I ' ( ⋅ ω(( ) - ]
θ 'ω ( = arc#an
1
-
;m'I ' ( ⋅ ω (( Oe'I' ( ⋅ ω ((
A es la amplitud de 8 y θ es la fase de 8. !i 8>s? tiene todos los coeficientes reales+ entonces A> ω? es una funci)n par >o sea A>ω? @ A>5ω??= y θ>ω? es una funci)n impar >o sea+ θ>ω? @ 5θ>5ω??. Entonces2 I' − ( ⋅ ω(
= A' −ω( ⋅ e (⋅θ ' −ω( = A'ω ( ⋅ e − (⋅θ'ω(
y sustituyendo en y s>t? tenemos2 - ! 't (
- ! 't (
a ⋅ A'ω( ⋅ e (⋅θ 'ω ( ⋅ e ( ⋅ω⋅t
=
- (
= a ⋅ A'ω ( ⋅
e ( ⋅'ω⋅t +θ 'ω((
−
a ⋅ A'ω ( ⋅ e − ( ⋅θ 'ω ( ⋅ e − ( ⋅ω ⋅t
- (
− e − (⋅'ω⋅t +θ'ω(( - (
- ! 't ( = a ⋅ A'ω ( ⋅ sin'ω ⋅ t + θ 'ω ((
ue demuestra ue la salida tami*n es senoidal.
).1Dia5ra#a de Bode Los diagramas de Bode es otra forma de representar el comportamiento din,mico de alguna planta. Apro"ec&,ndose del resultado otenido en el punto anterior+ Bode representa la planta a tra"*s de dos diagramas2 uno de magnitud donde muestra en cuanto camia logar0tmicamente la amplitud del seno en funci)n de la frecuencia de la sinusoide+ y otra en donde representa el camio de fase tami*n en funci)n de la frecuencia ω.
;:S:;O;A % );)TMA) % C:TOL
H-
!upongamos una funci)n de transferencia 8>s? descripta por sus ceros y polos. E"aluemos 8>j.ω?+ suponiendo un cero y dos polos2 →
( ⋅θ r 1 (⋅'θ +θ ( ⋅ ω + 1 !1 r1 ⋅ e =→ →= = I' ( ⋅ ω ( = ⋅ e ( ⋅θ ( ⋅θ ' ( ⋅ ω + p1 ( ⋅ ' ( ⋅ ω + p- ( ! ⋅ ! ⋅ r- ⋅ e r/ ⋅ e r- ⋅ r / / 1
1
-
-
+θ / (
/
Entonces el m)dulo de 8>j. ω? ser,2 I' ( ⋅ ω (
=
r 1 r- ⋅ r /
y su logaritmo2 log 10 I' ( ⋅ ω (
= log 10 r1 − log 10 r- − log 10 r/
en decieles2 I
db
= -0 ⋅ log 10 r1 − -0 ⋅ log 10 r- − -0 ⋅ log10 r/
J la fase es2 I = θ 1
− θ - − θ /
1or lo tanto para reali-ar el diagrama Bode de 8>s? asta conocer como son las respuestas de cada uno de sus polos y ceros+ pues luego se suman directamente. Estudiemos entonces tres casos de diagramas de Bode2 (? n polos o ceros en el origen2 2 ⋅ ' ( ⋅ ω ( n ((? polos o ceros simples2
' ( ⋅ ω ⋅ τ + 1(
±1
( ⋅ ω ( ⋅ ω + 1 + - ⋅ ξ ⋅ (((? polos o ceros complejos conjugados2 ω n ω n
±1
%aso (2 Magnitud2 -0 ⋅ log 10 2 ⋅ ' ( ⋅ ω ( n
= -0 ⋅ log 10
-0 ⋅ log 10 2 ⋅ ' ( ⋅ ω ( n
2
+ n ⋅ -0 ⋅ log 10 ( ⋅ω
= -0 ⋅ log 10 2 + n ⋅ -0 ⋅ log 10 ω
son rectas de distintas pendientes+ segn el "alor de n >"er la figura .?. !i &uiera un distinto de + deer0a sumarse una constante > . log ? a la recta.
;:S:;O;A % );)TMA) % C:TOL
H/
Figura .. 3iagrama de magnitud para polos y ceros en el origen >con @ ?.
Fase2 La fase estar, dada por >j. ω?n+ ue ser, constante >independiente del "alor de ω?+ y ser, de n.I°2 para n @ 5 la fase ser, constante y "aldr, 5I °+ para n @ 5 la fase ser, constante y "aldr, 5H °+ para n @ la fase ser, constante y "aldr, KI °. %aso ((2 En este caso+ tanto para el diagrama de magnitud como para el diagrama de fase+ las cur"as se apro#iman por as0ntotas para frecuencias muy ajas o muy alt as. Magnitud2 Analicemos j.ω.τK ( ⋅ω⋅τ + 1 ≅ 1
para ω.τ \\ +
⇒
-0 ⋅ log 10 I' ( ⋅ ω (
=0
para ω.τ 99 + ( ⋅ ω ⋅ τ + 1 ≅ ( ⋅ ω ⋅ τ
⇒
-0 ⋅ log 10 I' ( ⋅ ω (
= -0 ⋅ 'log 10 ω + log10 τ (
Figura .C. 3iagrama de magnitud para un cero simple en 5τ >τ @ ?.
;:S:;O;A % );)TMA) % C:TOL
HD
Figura .D. 3iagrama de fase para un cero simple en 5 τ >τ @ ?.
El punto de cruce de estas as0ntotas est, en ω @ τ >"er la figura .C?. En ese punto es la m,#ima des"iaci)n de la cur"a de las as0ntotas+ ue "ale C d. 1ara el caso de un polo simple+ la pendiente de la recta ser0a negati"a. Fase2 1ara ω.τ \\ +
1 =0
1ara ω.τ 99 +
( ⋅ ω ⋅ τ = .0
1ara ω.τ @ +
' ( ⋅ω ⋅ τ +1( = D<
>para un polo ser0a 5I °? >para un polo ser0a 5D °?
En la figura .D mostramos como es la cur"a de la fase de un cero simple con las as0ntotas ue la representan. %aso (((2 ±1 ( ⋅ ω ( ⋅ ω En este caso anali-amos2 + - ⋅ ξ ⋅ + 1 ω ω n n
1ara este caso podemos decir ue para el caso particular de ξ @ .+ tenemos dos polos simples en el mismo lugar+ lo ue nos dar, diagramas de magnitud y fase similares a los del caso anterior2 el diagrama de magnitud luego del punto de uiere >ue ser, en ω @ ωn? tendr, una pendiente de ±D ddec >positi"o en el caso de ceros y negati"o en el caso de polos?= y el diagrama de fase en"*s de suir o ajar ±I°+ lo &ar, a ±H° >positi"o en el caso de ceros y negati"o en el caso de polos?. 1ara ξ m,s c&icos las as0ntotas siguen siendo las mismas pero las cur"as camian alrededor de la frecuencia ωn+ como mostramos en las figuras . y .+ para el caso de polos. En el diagrama de magnitud aparece un pico de resonancia ue se &ace m,s
;:S:;O;A % );)TMA) % C:TOL
H<
pronunciado a medida ue ξ se &ace m,s c&ico. En el diagrama de fase el camio de fase se &ace cada "e- m,s arupto a medida ue ξ se &ace m,s c&ica.
Figura .. 3iagrama de magnitud de un par de polos complejos conjugados+ con ωn @ + y ξ @ .+ .+ .C+ ...... ..
Figura .. 3iagrama de fase de un par de polos complejos conjugados+ con ωn @ + y ξ @ .+ .+ .C+ ...... ..
3el diagrama de magnitud podemos "er ue la frecuencia en donde se produce el pico ωp es cercana a ωn >se apro#ima m,s a ella a medida ue ξ se &ace m,s c&ica?+ por lo
tanto podemos apro#imar el "alor del pico de la resonancia como2 M pico
≅
I' ( ⋅ ω n (
=
1 - ⋅ ξ
para
ξ < 0$<
J como "emos+ el pico est, estrec&amente relacionado con el ξ. Ejemplo2 Tenemos la funci)n de transferencia2
;:S:;O;A % );)TMA) % C:TOL
H9
I' ! (
=
-000 ⋅ ' ! + 0$<( ! ⋅ '! + 10( ⋅ '! + <0 (
a la cual ueremos otener su respuesta en frecuencia. E"aluamos entonces la funci)n en s @ j. ω2 ( ⋅ ω + 1 -⋅ 0$< I' ( ⋅ ω ( = ( ⋅ ω ( ⋅ ω + 1 ( ⋅ ω ⋅ ⋅ 10 <0 + 1
Luego reali-amos la construcci)n de los diagramas de Bode+ empe-ando por el polo en el origen+ luego por el cero en .+ y despu*s sucesi"amente por los polos en y en = mediante las as0ntotas. En las figuras .G y .H mostramos los diagramas de magnitud y de fase para este sistema+ con el tra-ado de las as0ntotas en l0nea m,s gruesa.
Figura .G. 3iagrama de magnitud para el ejemplo.
Figura .H. 3iagrama de fase para el ejemplo.
).!. Epeciicacione en la repueta en recuencia
;:S:;O;A % );)TMA) % C:TOL
HH
Anc&o de anda2 3efinimos anc&o de anda como la frecuencia m,#ima a la cual la salida de un sistema rastrear, una entrada sinusoidal de manera satisfactoria. 1or con"enci)n+ para el sistema ue mostramos en la figura H.I >sistema con retroalimentaci)n unitaria?+ el anc&o de anda es la frecuencia de r a la cual la salida y est, atenuada por un factor .GG "eces la entrada >o sea &asta 5C d?. El anc&o de anda > ω AB? es una medida de la "elocidad de respuesta del sistema+ pues est, relacionado con ωn >para ξ @ .G+ ω AB ≈ ωn = para otros ξ siempre est, dentro de un factor ?= y por lo tanto est, relacionado con el tiempo de crecimiento.
Figura .I. !istema con retroalimentaci)n unitaria y su diagrama de magnitud para la definici)n de anc&o de anda y m,#imo resonante.
Magnitud m,#ima resonante >M p?2 Es la magnitud m,#ima ue toma el diagrama de magnitud como mostramos en la figura .I. Est, relacionada con la amortiguaci)n del sistema+ pero en la pr,ctica no se usa y se usa m,s frecuentemente los conceptos de m3r/enes "e /anancia y "e fase+ para indicar el grado de amortiguaci)n del sistema. Estos conceptos los definiremos m,s adelante en la siguiente secci)n.
).". Etabilidad :a0amos "isto ue un punto del plano s+ ue cumpla con las siguientes condiciones pertenece al lugar geom*trico de las ra0ces del sistema retroalimentado2 2 ⋅ I' !(
1
=
y
I' ! ( = 1U0
!aemos ue el punto de estailidad neutra de este sistema+ es cuando las ramas del lugar geom*trico de las ra0ces cru-an el eje imaginario j. ω >generalmente+ cuando no e#isten ceros y polos en el semiplano derec&o+ al aumentar la ganancia se &ace inestale+ cuando a ajas ganancias es estale?. Entonces+ para esa ganancia+ tenemos ue los puntos de cruce ser,n2
;:S:;O;A % );)TMA) % C:TOL
HU 2 ⋅ I' ( ⋅ω (
=1
I' ( ⋅ ω (
y
= 1U0
Entonces+ para los casos en donde aumentar la ganancia conduce a la insetailidad+ el sistema ser, estale si 2 ⋅ I ' ( ⋅ ω (
<1 +
en
I ' ( ⋅ ω (
= 1U0
Esto sucede simplemente deido a ue cualuier punto menor ue el "alor en el punto neutralmente estale dee ser estale. El factor para el cual la ganancia es menor ue el "alor cr0tico se conoce como mar/en "e /anancia.
1or otro lado+ mar/en "e fase es la cantidad por la ue la fase de 8>j. ω? sorepasa los 5H° cuando la magnitud cru-a los d >o sea cuando
2 ⋅ I' ( ⋅ω (
=1 ?.
1ara sistemas de no m0nima fase+ estos criterios no pueden usarse= y deemos recurrir al criterio de estailidad de Nyuist.
).$Dia5ra#a de N&8uit El criterio de estailidad de Nyuist se asa en el principio de %auc&y+ y por lo tanto lo enunciamos au0. 1rincipio de %auc&y na e"aluaci)n del contorno de una funci)n compleja solo encerrar, al origen si el contorno contiene una singularidad de la funci)n. En la figura . ilustramos este concepto.
;:S:;O;A % );)TMA) % C:TOL
H.
Figura .. E"aluaciones de dos funciones complejas+ sore una cur"a cerrada del plano s >la primera sin cerrar ninguna singularidad y la segunda si?.
Figura .. %ontorno de %auc&y utili-ado en control.
El principio lo podemos e#tender dando caida a mltiples singularidades >polos o ceros de la funci)n?+ dentro del contorno de e"aluaci)n. Entonces el nmero y direcci)n de las "ueltas alrededor del origen camiar,. En particular+ en control+ dejamos ue el contorno % en el plano s encierre totalmente el semiplano derec&o >"er la figura .?. La e"aluaci)n resultante de :>s? solo encerrar, el origen si :>s? tiene un polo o cero en el semiplano derec&o. na idea cla"e ue &ace til esto es ue podemos emplear la e"aluaci)n del contorno % de la funci)n de la-o aierto de .8>s? para determinar la estailidad del sistema2 La funci)n de transferencia de la-o cerrado es2
;:S:;O;A % );)TMA) % C:TOL
U0
5 ' !( /' ! (
= %' ! ( =
2 ⋅ I' ! (
1 + 2 ⋅ I' !(
1or lo tanto+ las ra0ces de la-o cerrado son los ceros de2 1 + 2 ⋅ I' !( = 0 !i el contorno de e"aluaci)n de s+ ue encierra el semiplano de la derec&a+ contiene un cero o un polo de K.8>s?+ entonces el contorno e"aluado de K.8>s? encerrar, el origen. 1ero K.8>s? es simplemente .8>s? mo"ido &acia la derec&a en . 1or lo tanto+ si K.8>s? encierra al origen+ .8>s? encerrar, a 5. La representaci)n de la e"aluaci)n de .8>s? de esta manera+ la conocemos como gr,fica de Nyuist o gr,fica polar. A&ora+ si 8>s? @ >s?a>s? >con a>s? y >s? polinomios?2 1 + 2 ⋅ I'! ( = 1 + 2 ⋅
b' !( a' !(
=
a' !( + 2 ⋅ b' ! ( a' !(
%omo los polos de 8>s? se conocen+ entonces tami*n conocemos las ra0ces de a>s?. !upongamos por el momento ue no &ay ningn polo en el semiplano derec&o >no e#isten ra0ces de a>s? en ese semiplano?= una "uelta alrededor del 5 de la funci)n .8>s?+ usando el contorno de la figura .+ indica ue &ay una ra0- inestale del sistema de la-o cerrado. !i utili-amos la con"enci)n de recorrer el contorno en el sentido de las agujas del reloj+ la cantidad de "ueltas ue .8>s? alrededor del 5 en el sentido &orario indicar, la cantidad de ceros menos la cantidad de polos ue la funci)n K.8>s? tiene dentro del contorno >o sea en el semiplano derec&o?+ o sea2 N@S51 donde2 N es el nmero de "ueltas en el sentido &orario de .8>s? alrededor del 5. S es la cantidad de ceros de K.8>s? en el semiplano derec&o. 1 es la cantidad de polos de K.8>s? en el semiplano derec&o. 1ero el "alor de 1 lo conocemos+ pues son la cantidad de ra0ces de a>s? en el semiplano derec&o >o sea ue son la cantidad de polos inestales ue tiene la funci)n de transferencia de la-o aierto?. Entonces podemos determinar S+ ue es la cantidad de ra0ces de la ecuaci)n caracter0stica ue e#isten en el semiplano derec&o >o sea la cantidad de polos inestales ue posee la funci)n de transferencia a la-o cerrado?2 S@N51
;:S:;O;A % );)TMA) % C:TOL
U1
En caso de e#istir polos de la-o aierto en el eje imaginario+ se modifica el contorno en el lugar del polo con un peue$o semic0rculo de radio ε ue pasa del lado derec&o del polo >as0 se esui"a el mismo?. 1ara la construcci)n del gr,fico de Nyuist+ uno puede asarse en la informaci)n ue nos suministra los diagramas de Bode+ ya ue los mismos nos dan la magnitud y la fase de la imagen del semieje imaginario positi"o. 1ara la imagen del otro semieje+ es simplemente el reflejo de la cur"a anterior con el eje real. !olo deemos anali-ar lo ue pasa con la imagen del semic0rculo en el infinito+ y si e#isten polos de la funci)n a la-o aierto en el eje imaginario. 1odemos resumir el an,lisis de la estailidad de Nyuist en los siguientes pasos2 ? Reali-ar el gr,fico polar de .8>s?+ con ayuda de los diagramas de Bode+ como lo mencionamos anteriormente. ? %alcular el nmero de "ueltas en el sentido de las agujas del reloj alrededor de 5+ y llamarlo N. C? 3eterminar el nmero de polos inestales de 8>s? >polos en el semiplano derec&o?+ y llamarlo 1. D? La cantidad de ra0ces de la-o cerrado inestales ue llamamos S+ ser, entonces2 S @ N K 1. Ejemplo2 En la figura I.C mostramos el diagrama de loues del sistema al cual ueremos anali-ar su estailidad por el m*todo de Nyuist.
Figura .. 3iagrama de loues del sistema del ejemplo.
Reali-amos el diagrama de Nyuist para2 2 ⋅ I' ( ⋅ ω ( =
( ⋅ ω + 1
( ⋅ ω − 1 10
( ⋅ ω
El diagrama otenido lo mostramos en la figura .C. Notar ue para
59 por el lado
positi"o la fase es de I °+ con magnitud infinita= y ue alrededor del origen para 4 desde 5I° &asta KI° >pasando por los °?+ su imagen "a desde los 5I ° a los KI° pasando por H °.
;:S:;O;A % );)TMA) % C:TOL
U-
Otra cosa para oser"ar+ es ue la cur"a de 4 9 "iene desde Kj >&aitualmente "iene de 5j?. Esto es as0 por tratarse de un sistema de no m0nima fase.
Figura .C. 8r,fico de Nyuist para el sistema del ejemplo.
%omo "emos+ el sistema es condicionalmente estale+ ya ue para c&icos+ el nmero de "ueltas alrededor del 5 es de K >1 @ ?+ por lo tanto S @ N K 1 @ K @ y el sistema es inestale. 1ero para grandes+ N el nmero de "ueltas alrededor del 5 es 5 >gira en sentido anti&orario+ ya ue el punto de cruce por el eje real se corre a la i-uierda del 5?+ y por lo tanto S @ N K 1 @ 5 K @ + y el sistema es estale en ese caso. El cruce por el eje real se reali-a cuando
ω = 10
>cuando la fase "ale 5H °+ reali-ar el
diagrama de Bode?+ y as0 podemos determinar el para el cual tenemos el l0mite de estailidad ue es @ .
). M
;:S:;O;A % );)TMA) % C:TOL
U/
Figura .D. M,rgenes de ganancia y de fase en un gr,fico polar.
3e la figura "emos ue estos m,rgenes nos dicen cu,n cerca est, la cur"a de encerrar al 5. 1ara sistemas de primero y segundo orden+ la fase nunca cru-a la l0nea de 5H °+ y por lo tanto el margen de ganancia es infinito. 1ara sistemas de orden superior es posile tener m,s de un cruce de la magnitud por los d+ o tami*n m,s de un cruce de la fase por los H °+ y los m,rgenes pueden ser mal interpretados. Adem,s+ para sistemas con fase no m0nima+ e#&ien criterios de estailidad distintos a los definidos anteriormente. En todos estos casos especiales+ pueden estudiarse muy ien con el gr,fico y el criterio de Nyuist. Los m,rgenes de ganancia y de fase >sore todo *ste ltimo?+ dan una medida del grado de estailidad del sistema. Los podemos relacionar con otros par,metros2 El margen de fase lo podemos relacionar con el par,metro ξ. En la figura . mostramos ξ en funci)n del margen de fase para los sistemas de segundo orden >funci)n de transferencia a la-o cerrado
transferencia a la-o aierto apro#imar por2
I' ! ( =
MF ≈ ⋅ ξ+
ω T ' !( = ! + - ⋅ ξ ⋅ ω ⋅ ! + ω -
ω ! ⋅ ( ! + - ⋅ ξ ⋅ ω )
= y con funci)n de
?+ donde demostramos ue las podemos
para ξ \ .G.
;:S:;O;A % );)TMA) % C:TOL
UD
Figura .. ξ en funci)n del margen de fase para un sistema de segundo orden >l0nea cont0nua?+ con l0nea de tra-o y punto la apro#imaci)n utili-ada MF@ . ξ.
Figura .. !orepico >Mp? y pico resonante >Mr? en funci)n del margen de fase para un sistema de segundo orden.
Tami*n podemos "er ue el sorepico de una respuesta escal)n est, relacionado con la magnitud del pico resonante como lo mostramos en la figura ..
).) Teore#a de Bode Teorema2 1ara cualuier sistema de m0nima fase >es decir+ uno sin polos ni ceros en el semiplano de la derec&a?+ la fase de 8>j. ω? est, relacionada en forma nica con la magnitud de 8>j. ω?. En otras palaras+ dado el diagrama de magnitud de un sistema de m0nima fase+ podemos determinar su correspondiente diagrama de magnitud. No &aremos la demostraci)n au0+ pero lo ue podemos comproar es ue la pendiente de la magnitud de 8>j. ω? en las partes asint)ticas de los diagramas coincide con un "alor para la fase constante de n . I ° >donde n es la pendiente en d*cada de amplitud por d*cada de frecuencia en una escala logar0tmica contra logar0tmica?.
;:S:;O;A % );)TMA) % C:TOL
U<
1odemos concluir+ adem,s+ ue si conocemos el diagrama de fase+ podemos determinar el diagrama de magnitud >en un sistema de m0nima fase?+ solo si conocemos el "alor de la magnitud en alguna frecuencia. !istemas de no5m0nima fase2 !istemas de no5m0nima fase recien su nomre ya ue los polos y ceros en el semiplano derec&o contriuyen con una fase mayor >en "alor asoluto? ue sus respecti"os polos y ceros sim*tricos respecto al eje imaginario del semiplano i-uierdo= dando los mismos diagramas de magnitud. 3ejamos como ejercicio al lector la comproaci)n de lo enunciado. 3eemos recalcar au0 entonces ue el teorema de Bode solo es ",lido para los sistemas de m0nima fase nicamente.
).2. Repueta en recuencia de la'o cerrado :asta a&ora &emos reali-ado los diagramas de Bode de los sistemas a la-o aierto. Analicemos ue ocurre cuando cerramos el la-o. T0picamente los sistemas descrien el siguiente comportamiento2 2 ⋅ I( ( ⋅ ω)
>> 1,
para ω
<< ω c
2 ⋅ I( ( ⋅ω)
<< 1,
para ω
>> ω c
donde ωc es la frecuencia de cruce por los d >del sistema a la-o aierto?. 1or lo tanto la magnitud de la funci)n de transferencia a la-o cerrado es2 T ( ( ⋅ ω )
=
2 ⋅ I ( ( ⋅ ω )
ω ω c 1, ≅ 1 + 2 ⋅ I ( ( ⋅ ω ) j ⋅ S , ω ω c
En las cercan0as del cruce por cero+ donde
(
) =1 + T depende fuertemente
2 ⋅ I ( ⋅ω
del margen de fase. na margen de fase de I ° significa una fase de .8 e"aluada en ωc igual a 5I °+ y por lo tanto T>j.ωc? @ .GG. 1or otro lado+ un margen de fase de D ° lle"a a un T>j.ωc? @ .C. En la figura I.H mostramos los diagramas de magnitud para la-o cerrado+ para sistemas de distintas m,rgenes de fase > °+ D° y I°?. Esto muestra ue el anc&o de anda > ω AB? para "alores peue$os del margen de fase es t0picamente algo mayor ue la frecuencia del cruce por cero ωc+ y generalmente menor a .ωc. Entonces2 ωc
≤ ω AB ≤ - ⋅ ω c
;:S:;O;A % );)TMA) % C:TOL
U9
Figura .G. 3iagrama de magnitud para sistemas de la-o cerrado.
).. Retrao en el tie#po !aemos ue un retraso temporal en una funci)n de transferencia est, representada como2 I 6 ' ! ( = e − !T
Analicemos cu,nto contriuye en la magnitud del sistema2 I 6 ' ( ⋅ ω (
=
e − ( ⋅
⋅T
ω
=
cos'ω ⋅ T ( − ( $sin'ω ⋅ T (
= 1 +
para todo ω.
O sea ue el retraso temporal no afecta el diagrama de magnitud del sistema >esto es ra-onale pues e 5s.T solo retrasa la respuesta en el tiempo y no afecta la amplitud de la respuesta?. Analicemos c)mo modifica la fase2 I 6 ' ( ⋅ ω (
= −ω ⋅ T
O sea ue la fase se &ace m,s negati"a a medida ue aumenta la frecuencia ω >lo &ace linealmente con ω?. En la figura I.I mostramos el diagrama de fase para I 6 ' !( = e
− !T
+ con T @ seg.
Esto significa ue lograr anc&os de anda superiores a ω @ T se &acen imposiles y ω @ C T se &acen muy dif0ciles.