Matlab Polos y Ceros
Short Description
Descripción: polos y ceros en matlab...
Description
1. MATLAB Y LOS SISTEMAS DE CONTROL Manejo y programación de Matlab como paquete informático aplicado a SERVOSISTEMAS. En esta práctica destacaremos: - Definición de funciones de transferencia. - Otros formatos y sus conversiones. - Obtención de los residuos de una f.d.t.
Explicación La toolbox de control contiene funciones útiles de ingenería de control. Los sistemas de control son modelados mediante funciones de transferencia o en formatos de variables de estado. Las características a destacar son: - Permite el manejo de sistemas continuos en el tiempo o sistemas discretos. - También posee funciones de cambio de un formato o modelo a otro. - Respuesta en el tiempo. - Respuesta en frecuencia. - Lugar de la raíces. - etc... En la presente práctica nos didicaremos: a definir f.d.t., a obtener otras formas de representación 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:
- Contínuos 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 representación equivalente de sistemas de variables de estado empleando la transofrmada de Laplace.
3. Ganancia-Polos-Zeros Una función 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 también 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. Conversión de modelos [num, den]=ss2tf(a,b,c,d,iu)
De variables de estado a función 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)
Función de transferencia a variables de estado.
[z,p,k]=tf2zp(num,den)
Función 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 función de transferencia.
[r,p,k]=residue(num,den)
Función de trasferencia a residuos.
[num,den]=residue(r,p,k)
Residuos a función de transferencia.
Para cualquier duda sobre las fucniones de Matlab, se puede pedir información 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 Definición 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]; Multiplicación de polinomios Dados dos polinomios p1=[1 2] y p2=[3 5] los podemos multiplicar mediante la función conv como en el ejemplo: >> p1=[1 2]; p2=[3 5]; >> p=conv(p1,p2); p = 3
11
10
Multiplicación 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
4
0
>> gd=conv(g1d, g2d) gd = 1
6
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 más 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
8
17
8
>> gd=conv(gd1,gd2) gd = 1
6
13
10
Funciones de reducción 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 realimentación unitaria [NUM,DEN] = cloop (NUM1,DEN1,SIGNO) - Otras funciones
Las raíces de un polinomio p=[1 3 5], se obtienen mediante la función 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 función, 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 función que permite el cálculo de residuos; es decir, nos permiten expandir una función 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 función empleada y describe los elementos que los definen: a) De variables de estado b) Polos-ceros c) Residuos
3. Comentar las siguientes líneas 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 acción 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 término independiente. Por ejemplo, el polinomio p(x)=3x2-2x-1 se representa con p = [3
-2
-1];
MATLAB contempla las siguientes operaciones básicas con polinomios: Cálculo de las raíces 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. Cálculo 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 mónico. Multiplicación 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 =
1
-4
-5
La división 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])
Evaluación 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 =
0
polyval( ) realiza la evaluación siguiendo el algoritmo de Horner o de multiplicación 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 interpolación x=[x0, x1, ..., xn], los polinomios básicos de Lagrange se definen por la fórmula (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 básicos de Lagrange para los nodos x=[ -3, -1, 1], usando los comandos vistos hasta ahora. Un procedimiento, aunque poco eficiente, podría ser: 1. construir el polinomio nodal (el polinomio mónico que se anula en todos los nodos de interpolación) por medio de la función 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, dividiéndolo entre su valor en el nodo omitido; utilizar polyval. Dibuje las gráficas 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 función f(t)=exp (t) en los nodos 3, -1, 1. Dibuje su gráfica junto con la de la función 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 después de plot usar el comando legend('Funcion', 'Polinomio');
Problema 3 [Opcional] Escribir una función 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.
View more...
Comments