Está en la página 1de 13

1.

MATLAB Y LOS SISTEMAS DE


CONTROL
Manejo y programacin de Matlab como paquete informtico aplicado a
SERVOSISTEMAS.
En esta prctica destacaremos:
- Definicin de funciones de transferencia.
- Otros formatos y sus conversiones.
- Obtencin de los residuos de una f.d.t.

Explicacin
La toolbox de control contiene funciones tiles de ingenera de control. Los
sistemas de control son modelados mediante funciones de transferencia o en
formatos de variables de estado.
Las caractersticas a destacar son:
- Permite el manejo de sistemas continuos en el tiempo o sistemas
discretos.
- Tambin posee funciones de cambio de un formato o modelo a otro.
- Respuesta en el tiempo.
- Respuesta en frecuencia.
- Lugar de la races.
- etc...
En la presente prctica nos didicaremos: a definir f.d.t., a obtener otras formas
de representacin de las mismas, as como realizar reducciones de sistemas
formados por varios bloques o f.d.t.

Modelos de sistemas en matlab


Empleado para sistemas lineales invarientes en el tiempo. Los modelos a
emplear pueden ser:

- Contnuos en el tiempo
- Discretos en el tiempo
Y estos sistemas se pueden representar en Matlab de diversas formas:
1. Variables de estado
Ecuaciones diferenciales en el formato:

Donde:
u es un vector que contiene las entradas de control
x es un vector que contiene los elementos del vector estado
y es un vector que contiene las salidas
A, B, C, y D matrices que lo definen.
2. Funciones de transferencia
Es la representacin equivalente de sistemas de variables de estado empleando
la transofrmada de Laplace.

3. Ganancia-Polos-Zeros
Una funcin de transferencia puede representarse en formato factorizado de
ganancia-polos-ceros

Donde:

k puede ser vector fila que contiene la/s ganancias.


p puede ser vector columna que contiene los polos.
z es vector columna que contiene los ceros.
4. Fracciones parciales
Una f.d.t. puede tambin representarse en fracciones parciales o en formato de
residuos:

Donde:
p un vector columna contiene los polos.
r un vector columna contiene los residuos.
k contiene el plinomio independiente.
Conversin de modelos
[num, den]=ss2tf(a,b,c,d,iu)

De variables de estado a funcin de transferencia.

[z,p,k]=sstzp(a,b,c,d,iu)

De variable de estado a polos-ceros.

[a,b,c,d]=tf2ss(num,den)

Funcin de transferencia a variables de estado.

[z,p,k]=tf2zp(num,den)

Funcin de transferencia a polos-ceros.

[a,b,c,d]=zp2ss(z,p,k)

Polos-ceros a variables de estado.

[num,den]=zp2tf(z,p,k)

Polos-ceros a funcin de transferencia.

[r,p,k]=residue(num,den)

Funcin de trasferencia a residuos.

[num,den]=residue(r,p,k)

Residuos a funcin de transferencia.

Para cualquier duda sobre las fucniones de Matlab, se puede pedir


informacin de las mismas tecleando el comando help.
>> help residue
RESIDUE Partial-fraction expansion (residues).
[R,P,K] = RESIDUE(B,A) finds the residues, poles and direct term of
a partial fraction expansion of the ratio of two polynomials B(s)/A(s).
If there are no multiple roots,
B(s)
R(1)
R(2)
R(n)

---- = -------- + -------- + ... + -------- + K(s)


A(s)
s - P(1)
s - P(2)
s - P(n)
Vectors B and A specify the coefficients of the numerator and
denominator polynomials in descending powers of s. The residues
are returned in the column vector R, the pole locations in column
vector P, and the direct terms in row vector K. The number of
poles is n = length(A)-1 = length(R) = length(P). The direct term
coefficient vector is empty if length(B) < length(A), otherwise
length(K) = length(B)-length(A)+1.
If P(j) = ... = P(j+m-1) is a pole of multplicity m, then the
expansion includes terms of the form
R(j)
R(j+1)
R(j+m-1)
-------- + -----------+ ... + -----------s - P(j)
(s - P(j))^2
(s - P(j))^m
[B,A] = RESIDUE(R,P,K), with 3 input arguments and 2 output arguments,
converts the partial fraction expansion back to the polynomials with
coefficients in B and A.
Warning: Numerically, the partial fraction expansion of a ratio of
polynomials represents an ill-posed problem. If the denominator
polynomial, A(s), is near a polynomial with multiple roots, then
small changes in the data, including roundoff errors, can make
arbitrarily large changes in the resulting poles and residues.
Problem formulations making use of state-space or zero-pole
representations are preferable.
Class support for inputs B,A,R:
float: double, single
See also poly, roots, deconv.
Reference page in Help browser
doc residue

Matlab en control
Definicin de funciones de trasferencia
Manejamos las f.d.t. mediante polinomios. Un polinomio se prespresnta
mediante un vector que contiene los coerficientes del polinomio, donde el
primer componente es el coeficiente de mayor potencia de s, y el ltimo es el
coeficiente de orden 0.

se representa por : p=[1 3 5]


Los polinomios del numerador y del denominador de la f.d.t. se manteienen
separados. As dada la f.d.t.:

se definen dos polinomios: num=[1]; den=[1 3 5];


Multiplicacin de polinomios
Dados dos polinomios p1=[1 2] y p2=[3 5] los podemos multiplicar mediante
la funcin conv como en el ejemplo:
>> p1=[1 2]; p2=[3 5];
>> p=conv(p1,p2);
p =
3

11

10

Multiplicacin de bloques
Dos bloques en serie, se combinan al multiplicar los polinomios, o lo que es lo
mismo al convolucionar las dos repuestas impulso asociadas.
Dadas dos funciones:

>>
>>
>>
gn

g1n=[1 0]; g1d=[1 2];


g2n=[4 4]; g2d=[1 4 5];
gn=conv(g1n, g2n)
=
4

>> gd=conv(g1d, g2d)


gd =
1

13

>> ceros=roots(gn)
ceros =

0
-1
>> polos=roots(gd)
polos =
-2.0000 + 1.0000i

10

-2.0000 - 1.0000i
-2.0000

Suma y resta de funciones


La suma y resta de dos funciones el algo ms complicada, debido a que
Matlab trabaja con polinomios, tendremos que emplear lo siguiente.
Dados dos polinomios cualesquiera el polinomio suma ser:

Tendremos que recordar que al sumar dos vectores, estos tienen que tener la
misma longitud:
>>
>>
>>
gn

gn1=[1 0]; gd1=[1 2];


gn2=[4 4]; gd2=[1 4 5];
gn=conv(gn1,gd2)+conv(gd1,gn2)
=
1

17

>> gd=conv(gd1,gd2)
gd =
1

13

10

Funciones de reduccin de bloques para control


- serie Genera en un sistema SISO la f.d.t. de dos bloques SISO en serie.
[NUM,DEN] = series (NUM1,DEN1,NUM2,DEN2)
- parallel Genera la f.d.t. resultado de dos funciones de transferencia en
paralelo.
[NUM,DEN] = parallel (NUM1,DEN1,NUM2,DEN2)
- feedback General la f.d.t. de un sistema SISO al conectar dos bloques en
bucle cerrado, con realimentaciones positiva o negativoa.
[NUM,DEN] = feedback (NUM1,DEN1,NUM2,DEN2,SIGNO,)
- cloop Sistema como el anterior pero con realimentacin unitaria
[NUM,DEN] = cloop (NUM1,DEN1,SIGNO)
- Otras funciones

Las races de un polinomio p=[1 3 5], se obtienen mediante la funcin roots:


>> p=[1 3 5];
>> roots(p)
ans =
-1.5000 + 1.6583i
-1.5000 - 1.6583i

o guardar el resultado en un array columna llamado 'raices'


>> p=[1 3 5];
>> raices=roots(p)
raices =
-1.5000 + 1.6583i
-1.5000 - 1.6583i

Si dicho polinomio es el numeroador de una f.d.t. obtenemos los ceros de la


funcin, y si es el denominador obtenemos los polos.
Otras formas de representar las f.d.t.
Otra forma de representar las funciones de transferencia es la llamda forma de
ceros y polos.
[z, p, k]=tf2zp(num, den)
Obtenemos los factores de la f.d.t.:

donde:
z son los ceros (tantas columnas como filas en num)
p polos del sistema
k ganancia
>> num=[1 2];
>> den=[1 3 5 8];
>> [z,p,k]=tf2zp(num,den)
z =
-2
Inf
Inf
p =

-2.3283
-0.3359 + 1.8230i
-0.3359 - 1.8230i
k =
1

Para pasar del formato polos.ceros a f.d.t. utilizamos:


[num, den]=tf2zp(z, p, k)
donde:
z es una matriz columna con los ceros.
n es un vector columna con los polos.
k ganancia
>> z=[-2];
>> p=[-2 3 4];
>> k=5;
>> [num, den]=tf2zp(z, p, k)
num =
5

10

den =
1

-5

-2

24

Matlab dispone de una funcin que permite el clculo de residuos; es decir,


nos permiten expandir una funcin en fracciones parciales:

[r, p, ki]=residue(num, den)


donde:
r son los residuos.
n son los polos.
ki terminos independientes
>> num=[16 80];
>> den1=[1 4 8]; den2=[1 10];
>> den=conv(den1,den2);

>> [r,p,ki]=tf2zp(num,den)
r =
-1.1765
0.5882 - 1.6471i
0.5882 + 1.6471i
p =
-10.0000
-2.0000 + 2.0000i
-2.0000 - 2.0000i
k =
[ ]

Si se desea determinar la magnitud y el ngulo que forma los residuos,


emplearemos las funciones abs(), y angle():
>> magr=abs(r)
magr =
1.1765
1.7489
1.7489
>> angr=angle(r)*180/pi
angr =
180.0000
-70.3462
70.3462

Ejercicios
1. Determinar en Matlab las siguientes f.d.t.

2. Visualizar las f.d.t. anteriores en otros formatos, comentar la funcin


empleada y describe los elementos que los definen:
a) De variables de estado
b) Polos-ceros
c) Residuos

3. Comentar las siguientes lneas y definir sus elementos:


num=[4 11 9];
den=[1 6 11 6];
[r,p,ki]=residue(num,den)

4.Determina el bloque final de los sistemas siguientes

Donde:

5. Definir la accin que realizan los comandos


a) who
b) whos

Polinomios en MATLAB.

En MATLAB un polinomio se representa mediante un vector fila que contiene


los coeficientes de las potencias en orden decreciente: empezando por el
coeficiente principal y terminando por el trmino independiente.
Por ejemplo, el polinomio p(x)=3x2-2x-1 se representa con
p = [3

-2

-1];

MATLAB contempla las siguientes operaciones bsicas con polinomios:


Clculo de las races a partir de la lista coeficientes, por medio del
comando roots( ), por ejemplo
r=roots(p)

nos devuelve
r =

1.0000
-0.3333

El resultado es un vector columna de ceros.


Clculo de los coeficientes a partir del vector columna de ceros, por medio
del comando poly( ), por ejemplo
poly(r)

nos devuelve
ans =

1.0000

-0.6667

-0.3333

Observe que el polinomio devuelto siempre es mnico.


Multiplicacin de dos polinomios dados por la lista de sus coeficientes, por
medio del comando conv( , ). Por ejemplo, para comprobar que (x-5)
(x+1)=x2-4x-5 basta ejecutar
conv([1

obteniendo

-5], [1

1])

ans =

-4

-5

La divisin se realiza por medio del comando deconv( , ): si p(x)=s(x) q(x)


+ r(x), se puede usar el formato
[s, r] = deconv(p, q])

Evaluacin de un polinomio dado por la lista de sus coeficientes p en un


valor x, por medio del comando polyval(p, x). Por ejemplo, para comprobar
que p(1)0= basta realizar
polyval(p, 1)

obteniendo
ans =

polyval( ) realiza la evaluacin siguiendo el algoritmo de Horner o de


multiplicacin anidada.
Si x es un vector o una matriz, MATLAB devuelve la matriz con el polinomio
evaluado en cada elemento.
Recordemos que dados unos nodos de interpolacin x=[x0, x1, ..., xn], los
polinomios bsicos de Lagrange se definen por la frmula
(t-x0)... (t-xi-1)(t-xi+1)... (t-xn)
li(t)=

i=0, 1, ..., n .

(xi-x0)...(xi-xi-1)(xi-xi+1)... (xi-xn)

Entonces el polinomio pn de menor grado que interpola la nube de puntos


(x0, f0), ..., (xn,fn) est dado por
pn(t)=f0 l0(t) + ... + fn ln(t) .
Problema 1 Vamos a construir los polinomios bsicos de Lagrange para los
nodos x=[ -3, -1, 1], usando los comandos vistos hasta ahora. Un
procedimiento, aunque poco eficiente, podra ser:
1. construir el polinomio nodal (el polinomio mnico que se anula en
todos los nodos de interpolacin) por medio de la funcin poly;
2. para cada uno de los nodos eliminar el factor que contiene ese nodo,
dividiendo con deconv el polinomio nodal entre el factor lineal que se
anula en dicho nodo;
3. normalizar cada polinomio, dividindolo entre su valor en el nodo
omitido; utilizar polyval.
Dibuje las grficas de cada uno de los polinomios obtenidos en el intervalo [4, 2] y compruebe visualmente que en efecto los polinomios obtenidos
satisfacen la propiedad li(xj)=ij. Para ello tabule los valores de cada
polinomio en 200 puntos equiespaciados del intervalo, creados con
linspace(-4, 2, 200);

Problema 2 Usando los resultados del problema anterior construya el


polinomio de menor grado que interpole la funcin f(t)=exp (t) en los nodos 3, -1, 1. Dibuje su grfica junto con la de la funcin f en el intervalo [-4,2] y

compruebe visualmente que el polinomio obtenido interpola a f en los nodos


indicados.
Para diferenciar las dos curvas puede despus de plot usar el comando
legend('Funcion', 'Polinomio');

Problema 3 [Opcional] Escribir una funcin lagrange con el formato


function [c]=lagrange(x, f)

que dados los nodos (vector x) y los valores correspondientes de ordenada


(vector f) devuelva los coeficientes del polinomio interpolador de Lagrange.