Sei sulla pagina 1di 45

Capítulo 1: La Transformada Z

Capítulo 1.
LA TRANSFORMADA Z.

-1-
Sistemas de Control en Tiempo Discreto

1.1 INTRODUCCIÓN.

La transformada Zeta es una herramienta útil en teoría de control en tiempo


discreto y su papel es análogo al que juega la transformada de Laplace en tiempo
continuo.

Una señal en tiempo continuo es aquella que se define sobre un intervalo


continuo de tiempo. Una señal analógica es una señal definida en un intervalo continuo
de tiempo, cuya amplitud puede adoptar un intervalo continuo de valores. En cambio,
una señal en tiempo discreto es una señal definida sólo en valores discretos de tiempo.
En una señal en tiempo discreto, si la amplitud puede adoptar valores en un intervalo
continuo, entonces la señal se denomina señal de datos muestreados. Una señal de
datos muestreados se puede generar muestreando una señal analógica en valores
discretos de tiempo. Para más información, [REF. 5], [REF. 6].

Se denominan variables de entrada, a todas las que es posible manipular a la


entrada del sistema, y que influyen sobre su comportamiento. Las variables de salida
son las respuestas medibles del sistema. Las variables de estado de un sistema son el
conjunto más pequeño de variables que sirven para describir en su totalidad el
comportamiento de un sistema. Una perturbación o ruido es una señal que afecta
adversamente al valor de salida de un sistema. Si una perturbación se genera dentro del
sistema, se la denomina interna, dando lugar a las variables internas del sistema. Si la
perturbación se genera fuera del sistema se considera externa, y constituye una entrada.

Los sistemas de control en tiempo discreto son aquellos sistemas en los cuales
una o más de las variables pueden cambiar sólo en valores discretos de tiempo. Estos
instantes, los que se denotarán mediante k T (k = 0, 1, 2, ..., T = periodo de muestreo),
pueden especificar los tiempos en los que se lleva a cabo alguna medición de tipo físico,
o los tiempos en los que se extraen los datos de la memoria de una computadora digital.
El intervalo de tiempo entre dos instantes discretos consecutivos se supone lo

-2-
Capítulo 1: La Transformada Z

suficientemente corto, como para aproximar el dato de dichos instantes discretos


consecutivos con una interpolación sencilla.

Se dice que un sistema es causal si su salida en cualquier instante de tiempo


depende sólo de los valores de la entrada en el tiempo presente y en el pasado. A estos
sistemas también se les llama sistemas no anticipativos, ya que la salida del sistema no
anticipa valores futuros de la entrada. Un sistema es estrictamente causal si la salida
sólo depende de los valores de la entrada en los instantes de tiempo pasado.

A modo de ejemplo, el sistema definido por la ecuación

x(t) = 2u(t) + u(t-1)

es causal. Y el sistema definido por la ecuación

x(t) = u(t-1)

es estrictamente causal. Sin embargo, el sistema definido por la ecuación

x( t ) = u ( t ) - u ( t + 1 )

no es causal.

-3-
Sistemas de Control en Tiempo Discreto

Se dice que un sistema es subamortiguado cuando su salida en el dominio del


tiempo se estabiliza alcanzando el valor uno, tras una serie de oscilaciones. Si alcanza
dicho valor sin oscilaciones, el sistema tiene amortiguamiento crítico. Se dice que un
sistema es sobreamortiguado cuando su salida acaba alcanzando el valor uno sin
oscilaciones. Para comprender mejor estos conceptos, dibujamos dichas funciones en el
dominio del tiempo.

Si la función que define cada elemento de la secuencia de salida es lineal, el


sistema se denomina así mismo lineal. Si los coeficientes que definen el sistema son
constantes, el sistema lineal es invariante en el tiempo. Dichos sistemas se pueden
representar mediante ecuaciones en diferencias lineales con coeficientes constantes.
[REF. 6].

En un sistema de control en tiempo discreto, una ecuación en diferencias lineal


con coeficientes constantes caracteriza la dinámica del sistema, relacionando la entrada
con la salida. Si se quiere determinar la respuesta del sistema a una entrada dada, hay
que resolver dicha ecuación en diferencias. Para ello utilizamos el método de la

-4-
Capítulo 1: La Transformada Z

transformada Z, transformando las ecuaciones en diferencias lineales e invariantes en el


tiempo en ecuaciones algebraicas en el plano z (la variable compleja). De igual manera,
para sistemas continuos la transformada de Laplace transforma las ecuaciones
diferenciales en ecuaciones algebraicas en s (variable compleja). [REF. 1].

Polos y ceros en el plano z. Dado un sistema discreto lineal e invariante en el


tiempo, y causal, el método de la transformada z da lugar a una función X( z ) que puede
tener la siguiente forma:

m (m − 1)
b0 z + b1 z + .. + bm
X( z ) = ( m ≤ n)
n (n − 1)
z + a1 z + .. + an

Los puntos en los que la función X ( z ) es igual a cero son las raíces del numerador (los
ceros de X ( z ) ). Así mismo, los puntos en los que la función tiende a infinito son las
raíces del denominador (los polos de X ( z ) ). [REF. 5]. Estabilidad.

El principal objetivo de este capítulo es presentar las definiciones de la


transformada z, los teoremas básicos asociados con ella, y los métodos para encontrar la
transformada z inversa.

-5-
Sistemas de Control en Tiempo Discreto

1.2 LA TRANSFORMADA Z.

Al considerar la transformada z de una función del tiempo x ( t ) , sólo se tienen


en cuenta los valores muestreados de dicha función: x ( 0 ) , x ( T ) , x ( 2 T ) , ... siendo
T el período de muestreo.

La transformada z de una función del tiempo x ( t ) , donde t es positivo, o de la


secuencia de valores x ( k T ) , donde k adopta valores mayores o iguales que cero
y T es el período de muestreo, se define mediante la siguiente expresión [REF. 5]:


( −k )
X( z ) = Ζ( x( t ) ) = Ζ( x( k T ) ) = ∑ x( k T ) z
k=0

Para una secuencia de números x ( k ) , la transformada z se define como:


( −k )
X( z ) = Ζ( x( k ) ) = ∑ x( k ) z
k=0

La transformada z definida mediante estas ecuaciones se conoce como


transformada z unilateral. La transformada z viene representada por el símbolo
Z. En la transformada z unilateral, se supone que x ( t ) = 0, x ( k ) = 0, para valores
negativos de t y k. Así mismo, z es una variable compleja.

Por ejemplo, la transformada z de la secuencia impulso que viene definida


por x ( 0 ) = 1, x ( 1 ) = 0, x ( 2 ) = 0, ... será:


( −k )
X(z) = ∑x( k ) z =z
0
=1
k=0

-6-
Capítulo 1: La Transformada Z

Es importante resaltar que, cuando se trata con una secuencia de tiempo


x ( k T ) obtenida mediante muestreo, la transformada z, X ( z ) , involucra al periodo
de muestreo T. Por otro lado, para una secuencia de tiempo x ( k ) , la transformada no
incluye explícitamente a T.

La transformada z de x ( t ) , para -∞ < t < ∞ , o de x ( k ) , donde k adopta


cualquier valor entero o cero, se define mediante las siguientes ecuaciones:


( −k )
X( z ) = Ζ( x( t ) ) = Ζ( x( k T ) ) = ∑ x( k T ) z
k = −∞


( −k )
X( z ) = Ζ( x( k ) ) = ∑ x( k ) z
k = −∞

La transformada z definida mediante estas ecuaciones se conoce como


transformada z bilateral, en la que se supone que x ( t ) es distinta de cero y que la
secuencia x ( k ) tiene valores distintos de cero, para valores negativos de t y k.

A partir de ahora, cuando hablemos de la transformada z, nos referiremos a la


transformada z unilateral, ya que al referirnos a secuencias en el tiempo, t no tiene
valores negativos.

-7-
Sistemas de Control en Tiempo Discreto

Ejemplos:

Trabajamos ahora con las funciones de Maple disponibles. 'restart'


inicializa el sistema. 'ztrans' es la función que realiza la transformada z, y
mostramos ahora algunos ejemplos de su funcionamiento:

> restart:

Sin tener en cuenta el periodo de muestreo:

> ztrans(t^2, t, z);


z (z + 1)
3
(z − 1)

Considerando el periodo de muestreo:

> ztrans((k*T)^2, k, z);


2
T z (z + 1)
3
(z − 1)

> ztrans(1-exp(-a*k*T), k, z);


z z

z−1 ( −a T )  z 
e  − 1 
 ( −a T ) 
 
e 

-8-
Capítulo 1: La Transformada Z

> simplify(%);
(a T )
z ( −1 + e )
(a T)
(z − 1) (z e − 1)

> ztrans(Dirac(k*T), k, z);


Dirac( 0 )

La función delta de Dirac( t ) toma el valor cero en todos sus puntos excepto para
t = 0, donde hay una singularidad. Podría considerarse como la versión discreta de la
función impulso. Tiene la propiedad de que



 Dirac( t ) dt = 1

−∞

-9-
Sistemas de Control en Tiempo Discreto

1.3 TRANSFORMADA Z DE FUNCIONES ELEMENTALES.

El objetivo de esta sección es el manejo de la función 'ztrans' para aprender a


obtener la transformada z de una función, y ver las diferencias entre la transformada z
de una señal x ( t ) y otra x ( k T ) . A continuación se presentará la transformada z de
varias funciones elementales. Hemos escogido las que consideramos más básicas
(función escalón unitario, rampa unitaria, exponencial, seno y coseno), pues el resto se
pueden representar como combinaciones de éstas.

l1 es una lista de funciones elementales sin tener en cuenta el período de


muestreo. Considerando dicho período T, creamos la lista de funciones l2. Se presenta
ahora un array en el que se pueden apreciar dichas funciones y sus correspondientes
transformadas, observando la diferencia entre Z ( x ( t ) ) y Z ( x ( k T ) ) . Para ver alguna
función más, sólo hay que añadirla en la lista, y ejecutar nuevamente las instrucciones
Maple.

> restart:

> l1 := [1, t, a^t, exp(-a*t), sin(omega*t), cos(omega*t)];

t ( −a t )
l1 := [ 1, t , a , e , sin( ω t ), cos( ω t ) ]

> l2 := [1, k*T, a^(k*T), exp(-a*k*T), sin(omega*k*T), cos(omega*k*T)];


( k T ) ( −a k T )
l2 := [ 1, k T, a ,e , sin( ω k T ), cos( ω k T ) ]

- 10 -
Capítulo 1: La Transformada Z

> array(1..nops(l1)+1, 1..4, [ [`x(t)`, `X(z)`, `x(kT)`, `X(z)`],


seq( [l1[j], simplify(ztrans(l1[j], t, z), radical),
l2[j], simplify(ztrans(l2[j], k, z))], j=1..nops(l1) )]);

 x(t) X(z) x(kT) X(z) 


 
 
 z z 
 1 1 
 z−1 z−1 
 
 
 z Tz 
 t kT 
 
 2 2 
 (z − 1) (z − 1) 
 
 
 z (k T ) z 
 at a − 
 z−a T 
 −z + a 
 
 
 (a T) 
 ( −a t ) z ( −a k T ) ze 
 
e e 
 ( −a ) (a T) 
 z−e ze −1 
 
 
 z sin( ω ) z sin( ω T ) 
 sin( ω t ) sin( ω k T ) 
 
 2
z − 2 z cos( ω ) + 1 z − 2 z cos( ω T ) + 1 
2

 
 ( z − cos( ω ) ) z ( −z + cos( ω T ) ) z 

cos( ω t ) cos( ω k T ) 
 2 2 
 z − 2 z cos( ω ) + 1 −z + 2 z cos( ω T ) − 1 

- 11 -
Sistemas de Control en Tiempo Discreto

1.4 PROPIEDADES DE LA TRANSFORMADA Z.

En esta sección se presentan las herramientas básicas de Maple necesarias para


estudiar las propiedades más importantes y los teoremas útiles de la transformada z, tal
y como vienen descritas en [REF. 5]. Se supone que la función del tiempo x ( t ) tiene
transformada z, y que x ( t ) = 0 para valores negativos de t. Así mismo, se considera
X ( z ) como la transformada z de x ( t ) .

1.4.1.- Linealidad de la transformada z.

Si f ( k T ) y g ( k T ) tienen transformada z, y α y β son escalares, siendo T el


periodo de muestreo, entonces

Ζ( α f( k T ) + β g( k T ) ) = α Ζ( f( k T ) ) + β Ζ( g( k T ) )

Considerando F(z) y G(z) las respectivas transformadas z de f ( k T ) y g ( k T ) ,


tenemos

Ζ( α f( k T ) + β g( k T ) ) = α F( z ) + β G( z )

1.4.2.- Multiplicación por a k T .

Si X(z) es la transformada z de x ( k T ) entonces

( )
Ζ a k ⋅T ⋅ x(k ⋅ T ) = X (a −1 ⋅ z )

- 12 -
Capítulo 1: La Transformada Z

1.4.3.- Desplazamiento: Teorema de traslación real.

Siendo n un entero no negativo (positivo o cero), entonces

Ζ( x(t − n ⋅ T )) = z − n ⋅ X ( z )

y
  n−1 
Ζ( x(t + n ⋅ T )) = z n ⋅  X ( z ) −  ∑ x(k ⋅ T ) ⋅ z −k 
  k =0 

1.4.4.- Teorema de traslación compleja.

Si x ( t ) tiene la transformada z, X ( z ) , entonces la transformada z de

e − a⋅t ⋅ x(t )

viene dada por

X ( z ⋅ e a⋅T )

1.4.5.- Teorema del valor inicial.

Si x ( t ) tiene por transformada z, X ( z ) , y si el lim X (z ) existe, entonces el


z →∞

valor inicial x ( 0 ) de x ( t ) ó x ( k ) está dado por

x(0) = lim X ( z )
z →∞

- 13 -
Sistemas de Control en Tiempo Discreto

El teorema del valor inicial es conveniente para verificar la incidencia de posibles


errores en el cálculo de la transformada z. Debido a que x ( 0 ) se suele conocer,
comprobar su valor mediante el límite ayuda a descubrir errores en la transformada z, si
éstos se producen.

1.4.6.- Teorema del valor final.

Suponemos que x ( k T ) , siendo T el periodo de muestreo, tiene la transformada


z, X ( z ) , con x ( k T ) = 0 para valores negativos de k, y que todos los polos de
X ( z ) están dentro del círculo unitario, con la posible excepción de un sólo polo en
z = 1. Esta es la condición para la estabilidad de X ( z ) , es decir, la condición para que
x ( k T ) (k = 0, 1, 2...) permanezca finita. Entonces el valor final de x ( k T ) , que es su
valor conforme el tiempo tiende a infinito, puede obtenerse mediante

lim x(k ⋅ T ) = lim(1 − z −1 ) ⋅ X ( z )


k →∞ z →1

El teorema del valor final es muy útil para determinar el comportamiento de


x ( k ) a medida que k tiende a infinito, a partir de su transformada z, X ( z ) .

Ejemplos.

> restart:

- 14 -
Capítulo 1: La Transformada Z

Ejemplo 1.

Encontrar las transformadas z de una función escalón unitario que está retrasada
un período de muestreo y cuatro períodos de muestreo, respectivamente, mediante el
teorema de traslación real. A continuación se muestran dichas funciones, y sus
respectivas transformadas inversas. En el 'plot' se utiliza la opción 'axes=frame', para
que sea más fácil apreciar en el gráfico los valores de la función que son cero (están en
el eje).

> f1 := k -> piecewise(k<1 ,0 , 1):


f2 := k -> piecewise(k<4, 0, 1):
transform1 = ztrans(f1(k), k, z);
plot({f1(k), f2(k)}, k=0.1..7, axes=frame);
transform2 = ztrans(f2(k), k, z);

1
transform1 =
z−1

1
transform2 =
3
z (z − 1)

Ahora aplicamos el teorema de traslación, comprobando que se obtienen las


transformadas anteriores:

- 15 -
Sistemas de Control en Tiempo Discreto

> trans1 = z^(-1)*ztrans(1, t, z);


trans2 = z^(-4)*ztrans(1, t, z);
1
trans1 =
z−1

1
trans2 =
3
z (z − 1)

Ejemplo 2.

Dada la transformada z de sin( ω t ) , obtener la transformada z de e - a t sin( ω t )


mediante el uso del teorema de traslación compleja.

> ZETA(sin(omega*k*T)) := ztrans(sin(omega*k*T), k, z);


ZETA(exp(-a*k*T)*sin(omega*k*T)) :=
simplify(subs(z=z*exp(a*T), %), radical, exp);

z sin( ω T )
Ζ( sin( ω k T ) ) := −
2
−z + 2 z cos( ω T ) − 1

(a T)
( −a k T ) ze sin( ω T )
Ζ( e sin( ω k T ) ) := −
2 (2 a T) (a T)
−z e +2ze cos( ω T ) − 1

Ahora aplicamos directamente la transformada z, para comprobar el resultado.


Las operaciones matemáticas que se realizan, son para dejar la ecuación exactamente
igual. Lo único que se hace es calcular la transformada, y multiplicar numerador y
denominador por e 2 a T , para que quede como la anterior.

- 16 -
Capítulo 1: La Transformada Z

> trans := simplify(ztrans(exp(-a*k*T)*sin(omega*k*T), k, z),


radical, exp):
numerador := simplify(numer(trans)*exp(2*a*T)):
denominador := expand(denom(trans)*exp(2*a*T)):
simplify(numerador/denominador, radical, exp);

(a T )
ze sin( ω T )

2 (2 a T) (a T)
−z e +2ze cos( ω T ) − 1

Ejemplo 3.

Determinar el valor inicial x ( 0 ) si la transformada z de x ( t ) es

(1 − e −T ) ⋅ z −1
X ( z) =
(1 − z −1 ) ⋅ (1 − e −T ⋅ z −1 )

mediante el teorema del valor inicial.

> X(z) := (1-exp(-T))*z^(-1) / ((1-z^(-1))*(1-exp(-T)*z^(-1))):


x(0) = limit(X(z), z=infinity);

x( 0 ) = 0

- 17 -
Sistemas de Control en Tiempo Discreto

Ahora comprobamos que el valor es correcto, hallando la transformada z inversa de


X(z). Para ello se utiliza la función 'invztrans', que se encuentra en la librería estándar
de Maple.

> invztrans(X(z), z, n);


x(0) = subs(n=0, %);
 1 n
1 −  
 T 
e 
x( 0 ) = 0

Ejemplo 4.

Mediante el teorema del valor final, determinar el valor x( ∞ ) de

1 1
X ( z) = − a>0
1 − z −1 1 − e −a⋅T ⋅ z −1

> X(z) := (1/(1-z^(-1))-1/(1-exp(-a*T)*z^(-1))):


limit(x(k*T), k = infinity) = limit((1-z^(-1))*X(z), z=1);

lim x( k T ) = 1
k→∞

- 18 -
Capítulo 1: La Transformada Z

Ahora comprobamos que el valor es correcto, hallando la transformada z inversa de


X(z).

> assume(T>0): assume(a>0):


invztrans(X(z), z, n);
x(infinity) = limit(%, n=infinity);
unassign('T'): unassign('a'):

 1 n
1 −  

 ( a T ) 
e 

x( ∞ ) = 1

NOTA del autor: "assume" sirve para especificar que ’T’ y ’a’ son mayores que cero,
lo cual es imprescindible para poder calcular el límite. Al hacer esto, ambos aparecerían
de aquí en adelante con el siguiente símbolo: ’T~’, ’a~’. Para evitar esto (por
comodidad), utilizamos la sentencia ’unassign’, dejando ’T’ y ’a’ como estaban. Lo
vemos ahora como ejemplo.

> assume(T>0): assume(a>0): T; a;


unassign('T'): unassign('a'): T; a;
T~
a~
T
a

- 19 -
Sistemas de Control en Tiempo Discreto

1.5 LA TRANSFORMADA Z INVERSA.

Utilizamos Maple para el cálculo y estudio de la transformada z inversa. La


transformada z inversa de X ( z ) da como resultado la correspondiente secuencia de
tiempo x ( k T ) .

Se debe observar que a partir de la transformada inversa sólo se obtiene la


secuencia de tiempo en los instantes de muestreo. Por lo tanto, la transformada z inversa
de X ( z ) da como resultado una única x ( k T ) , pero no una única x ( t ) , ya que no dice
nada de los valores de x ( t ) en los instantes de tiempo no muestreados. Esto significa
que puede haber distintas funciones de tiempo xi (t ) con la misma x ( k T ) . A

continuación se muestra un ejemplo, con el período de muestreo T = π

> restart: Digits := 5:

> x[1](k) := 0;
x[2](k) := sin(k*Pi);
plot({x[1](k), x[2](k)}, k = 0..4, axes=frame, color=[green, red]);

x 1( k ) := 0

x 2( k ) := sin( k π )

- 20 -
Capítulo 1: La Transformada Z

NOTA: En el ejemplo anterior no se cumple el teorema de muestreo, el cual exige que


2 ⋅π
2 ⋅ ω M < ω s , para la señal continua x ( t ) , d o n d e ω s = es la frecuencia de
T
muestreo y ω M es la frecuencia más alta presente en la señal. En este caso, con el
periodo de muestreo T = π , ω s = 2 . [REF. 6], [REF. 7]. Con esta frecuencia de
muestreo, dos señales distintas son muestreadas de igual modo. En este caso, las
oscilaciones de x2( k ) que no se ven en x1( k ) por estar entre instantes de muestreo se

denominan oscilaciones ocultas.

Existen diferentes métodos para calcular la transformada z inversa. Un método


obvio es referirse a una tabla de transformadas z, pero es laborioso (si se utiliza una
tabla de transformadas z no muy extensa, es necesario expresar una transformada z
complicada como una suma de transformadas z más sencillas). Éste es el método que
usa Maple (expansión en fracciones parciales). Existen cuatro métodos para obtener la
transformada z inversa [REF. 5]:

1.- Método de la división directa. En este método la transformada z inversa se


obtiene mediante la expansión de X ( z ) en una serie infinita de potencias de z - 1 . Este
método es útil cuando es difícil obtener una expresión en forma cerrada para la
transformada z inversa, o se desea encontrar sólo algunos de los primeros términos de
x(k).

2.- Método computacional. En este método, la transformada z inversa se obtiene


utilizando la función delta de Kronecker δ 0( k T ), donde

δ 0( k T ) = 1 para k = 0
0 para k ≠ 0

- 21 -
Sistemas de Control en Tiempo Discreto

Suponiendo que u ( k ) , la entrada al sistema G ( z ) es la entrada Delta de Kronecker, la


transformada z de la entrada delta de Kronecker es U ( z ) = 1. Lo vemos con un
ejemplo, con el enfoque de la ecuación en diferencias, para la ecuación

X( z ) .4673 z − .3393
G( z ) = =
U( z ) 2
z − 1.5327 z + .6607

Dicha ecuación se puede escribir como

2
( z − 1.5327 z + .6607 ) X( z ) = ( .4673 z − .3393 ) U( z )

Esta ecuación se puede convertir en una ecuación en diferencias como sigue:

x( k + 2 ) − 1.5327 x( k + 1 ) + .6607 x( k ) = .4673 u( k + 1 ) − .3393 u( k )

donde u( 0 ) = 1 y u( k ) = 0 para k ≠ 0 , x( k ) = 0 para k < 0. [u( k ) es la entrada


Delta de Kronecker]. Encontrar la transformada z inversa se convierte ahora en el
problema de resolver la ecuación en diferencias para u( k ) .

3.- Método de expansión en fracciones parciales. Es el método que utiliza


Maple. Es idéntico al que se utiliza en la transformada de Laplace, y requiere que todos
los términos de la expansión en fracciones parciales se puedan reconocer fácilmente en
la tabla de pares de transformadas z. Si X( z ) tiene uno o más ceros en el origen (z = 0),
X ( z)
entonces ó X( z ) se expande en la suma de términos sencillos de primer o
z
segundo orden mediante la expansión en fracciones parciales, y se emplea una tabla de
transformadas z para encontrar la función del tiempo correspondiente para cada uno de
los términos expandidos.

- 22 -
Capítulo 1: La Transformada Z

4.- Método de la integral de inversión. El método de la integral de inversión,


basado en la integral de inversión, está basado en la teoría de variable compleja, siendo
necesario también revisar el teorema de los residuos [REF. 5]. La ecuación que da la
transformada z inversa en términos de los residuos se puede obtener como sigue:

m
x(k ⋅ T ) = k1 + k 2 + L + k m = ∑ residuo de X ( z ) z k - 1 en el polo z = z i de X ( z ) z k - 1
i =1

= Ζ −1 ( X ( z ) )

Para calcular la transformada z inversa, se puede usar la función 'invztrans' de


Maple que opera calculando la descomposición en fracciones simples de la función
racional F(z) y después obtiene directamente de las tablas la transformada inversa de
cada fracción simple.

Ejemplos:

> ztrans((k*T)^2, k, z);


invztrans(%, z, k);
2
T z (z + 1)
3
(z − 1)

2 2
k T

- 23 -
Sistemas de Control en Tiempo Discreto

> ztrans(((k+2)*T)^2, k, z);


factor(invztrans(%, z, k));

2 z z z (z + 1) 
T  4 +4 + 
 z−1 2 3 
 (z − 1) (z − 1) 

2 2
(2 + k ) T

> suc := invztrans(z/(z^2+1), z, n);


 n
  1  
   
 1 
  _α  
suc := ∑ −
 2

_α 
2
_α = RootOf( _Z + 1 )

Esta es la expresión de la transformada z inversa en su forma más general. Puede


apreciarse que no hay una expresión cerrada para la transformada z inversa. Para
obtenerla, hay que aproximarla utilizando la función Maple 'evalf'. Lo hacemos a
continuación.

> sucf := evalf(suc);


sucf := 1.0000 sin( 1.5708 n )

Si la dibujamos, vemos la función continua correspondiente.

- 24 -
Capítulo 1: La Transformada Z

> plot(sucf, n=0..30);

Si intentamos dibujar la secuencia correspondiente, el resultado es el que se muestra a


continuación.

> plot(sucf,n=0..30,style=point);

Y si lo que queremos son los valores de la señal muestreada en los instantes de


muestreo, la forma de hacerlo es a través de la secuencia de puntos obtenida al aplicar la
transformada z inversa sin aproximarla con ‘evalf’:

> seq(suc, n=0..10);


0, 1, 0, -1 , 0, 1, 0, -1 , 0, 1, 0

> plot([seq([n,suc], n=0..30)], style=point);

- 25 -
Sistemas de Control en Tiempo Discreto

Otro ejemplo. En esta ocasión, la transformada z inversa sí que nos da una expresión
cerrada, por lo que no es necesario hacer lo anterior.

> suc2 := invztrans(z/((z-3/10)*(z+9/10)), z, n);


5  3  n 5  -9  n
suc2 :=   −  
6  10  6  10 

> suc2f := evalf(suc2);


n n
suc2f := .83333 .30000 − .83333 ( -.90000 )

La secuencia resultante es:

> seq(suc2, n=1..10);

-3 63 -27 4941 -22113 398763 -89667 32286681 -145280223


1, , , , , , , , ,
5 100 50 10000 50000 1000000 250000 100000000 500000000

Si se quieren los valores aproximados, para ver mejor lo que representan, basta con
utilizar la función evalf. Se muestran las dos formas de hacerlo, para comprobar que dan
idéntico resultado.

> seq(evalf(suc2), n=1..10);


seq(suc2f, n=1..10);

1., -.60000 , .63000, -.54000 , .49410, -.44226 , .39876, -.35867 , .32287, -.29056

1.0000, -.60000 , .63000, -.54000 , .49410, -.44225 , .39876, -.35867 , .32287,


-.29057

- 26 -
Capítulo 1: La Transformada Z

> plot([seq([n,suc2], n=1..50)], style=point);

1.5.1 Ceros y Polos. Estabilidad.

Para un sistema de control en tiempo discreto lineal e invariante en el tiempo,


como el que se muestra a continuación,

consideramos la siguiente función de transferencia en lazo cerrado:

C( z ) G( z )
=
R( z ) 1 + G( z )

Una función de transferencia se define para un sistema lineal y estacionario (no


varía con el tiempo). La función de transferencia es la relación entre las transformadas z
de la entrada y la salida, considerando cero todas las condiciones iniciales. De forma
análoga se podría definir para sistemas continuos [REF. 2].

- 27 -
Sistemas de Control en Tiempo Discreto

Dada dicha función, se denominan ceros del sistema de control a las raíces de la
ecuación G(z) = 0 (raíz del numerador). Así mismo, se denominan polos del sistema a
las raíces de la ecuación característica 1 + G(z) = 0 (raíz del denominador). Recordar
que para un sistema dado hay una sola ecuación característica. Esto significa que la
ecuación característica de una función de transferencia dada, es la misma
independientemente de cuál sea la señal de entrada. [REF. 4].

Sistema de control en lazo cerrado y en lazo abierto:

Un sistema de control de lazo cerrado es aquel en el que la señal de salida tiene


efecto directo sobre la acción de control. La figura anterior es un claro ejemplo de dicho
sistema. En otras palabras, los sistemas de control de lazo cerrado son sistemas de
control con realimentación.

Por contra, un sistema de control de lazo abierto es aquel en el que la salida no


tiene efecto sobre la acción de control, lo que significa que no tiene realimentación.
[REF. 4].

1. Para que el sistema de control en lazo cerrado sea estable, todos los polos en
lazo cerrado deben presentarse en el plano z dentro del círculo unidad (el módulo del
polo debe ser menor que uno). Si alguno está fuera de dicho círculo, el sistema es
inestable. [REF. 5].

2. Si un polo simple (multiplicidad 1) se presenta en el círculo unidad (en


z = 1 ó z = -1), entonces el sistema se convierte en críticamente estable. También es
críticamente estable si un solo par de polos complejos conjugados se presentan sobre el
círculo unidad en el plano z. Cualquier polo múltiple en lazo cerrado sobre el círculo
unidad hace al sistema inestable.

- 28 -
Capítulo 1: La Transformada Z

3. Los ceros en lazo cerrado no afectan a la estabilidad absoluta, y por lo tanto


pueden quedar localizados en cualquier parte del plano z.

Ejemplo.

Considere la siguiente función de transferencia del sistema:

1
G( z ) =
z

El sistema tiene un solo polo en z = 0, por lo que el sistema es estable.

Si un sistema es estable, su transformada z inversa tiende a cero en el infinito. Y


la salida del sistema siempre sigue a la entrada.

Si un sistema es inestable, su transformada z inversa tiende a infinito en el


límite. Y la salida del sistema siempre va a infinito.

Y si un sistema es críticamente estable, no ocurre ninguna de estas dos cosas. O


el límite es una constante distinta de cero, o no existe (como ejemplo, los senos,
cosenos, y la función ( - 1 ) k ) . En estos sistemas, hay algunas entradas que no son
seguidas por la salida (ver ejercicio 2.5.6 del capítulo 2).

Sistemas de fase mínima y sistemas de fase no mínima. [REF. 4]. Las funciones
de transferencia continua que no tienen ceros en el semiplano derecho s (todos sus ceros
son estables), son funciones de transferencia de fase mínima. Las funciones de
transferencia continua que tienen ceros en el semiplano derecho (ceros inestables), son
funciones de transferencia de fase no mínima. De forma análoga, las funciones de
transferencia discreta cuyos ceros son estables en el plano z (dentro del círculo unidad)
son de fase mínima. Y las funciones de transferencia discreta con ceros inestables (fuera
del círculo unidad en el plano z) son de fase no mínima.

- 29 -
Sistemas de Control en Tiempo Discreto

Pasamos ahora a utilizar las herramientas de Maple para estudiar y comprender


mejor el comportamiento de distintas funciones, en función de la localización de sus
ceros y polos [REF. 3].

La función de Maple 'with(plots)' sirve para trabajar con una serie de utilidades,
entre las que se encuentra la opción 'display'. Le ponemos un punto y coma para que se
aprecien dichas opciones. Otra forma de utilizarlas sin tener que cargar la librería,
escribiendo 'plots[display]'.

> restart: with(plots);


animate, animate3d, animatecurve, arrow, changecoords, complexplot
complexplot3d, conformal, conformal3d, contourplot , contourplot3d, coordplot
coordplot3d, cylinderplot , densityplot , display, display3d, fieldplot , fieldplot3d
gradplot , gradplot3d, implicitplot , implicitplot3d, inequal, listcontplot
listcontplot3d, listdensityplot , listplot , listplot3d, loglogplot , logplot , matrixplot
odeplot , pareto, pointplot , pointplot3d, polarplot , polygonplot , polygonplot3d
polyhedra_supported , polyhedraplot , replot , rootlocus, semilogplot , setoptions
setoptions3d, spacecurve, sparsematrixplot , sphereplot , surfdata, textplot
textplot3d, tubeplot

z
Comportamiento de la transformada z inversa de , que tiene un cero en el
z− p
origen y un polo real simple, al que damos valores dentro, fuera, y en el círculo
unidad.

Representamos la transformada z inversa como una función continua, uniendo


los puntos de la secuencia, para que se aprecie mejor. Implementamos el procedimiento
'Dibf', que calcula la transformada z inversa de una función en z dada, y la secuencia
correspondiente, para el nº de puntos indicado.

- 30 -
Capítulo 1: La Transformada Z

> Dibf := proc(f, m)


local inv, i, k;

global secu;
inv := simplify(evalf(invztrans(convert(f, parfrac, z), z, k))):
secu := [];
for i from 0 to m do
secu := [op(secu), [i, subs(k=i, inv)]];
od;
end:

Implementamos ahora el procedimiento 'Estab1', a la que se le pasa la función


antes mencionada, con un cero en el origen y un polo real y el número de puntos que se
quieren pintar. Este procedimiento calcula la inversa de dicha función, considerando los
casos en los que la raíz está fuera, en el círculo unidad, o dentro del círculo unidad. En
concreto, los valores del polo son:

Fuera: pto = 1.5, pto = -1.5


En el círculo: pto = 1, pto = -1
Dentro: pto =0.5, pto = -0.5

Se dibujan las respectivas inversas para el número de puntos 'm' indicado.

- 31 -
Sistemas de Control en Tiempo Discreto

> Estab1 := proc(fun, m) local p, f;

# polo fuera del circulo unidad (p=1.5), (p=-1.5)


p := array(1..3, 1..2):
f := subs(pto=1.5, fun):
Dibf(f, m):
p[1,1] := plot(secu, title = `z/(z-1.5), inestable`):
f := subs(pto=(-1.5), fun):
Dibf(f, m):
p[1,2] := plot(secu, title = `z/(z+1.5), inestable`):

# polo en el circulo unidad (p=1), (p=-1)


f := subs(pto=1, fun):
Dibf(f, m):
p[2,1] := plot(secu, title = `z/(z-1), críticamente estable`):
f := subs(pto=(-1), fun):
Dibf(f, m):
p[2,2] := plot(secu, title = `z/(z+1), críticamente estable`):

# polo dentro del circulo unidad (p=0.5), (p=-0.5)


f := subs(pto=0.5, fun):
Dibf(f, m):
p[3,1] := plot(secu, title = `z/(z-0.5), estable`):
f := subs(pto=(-0.5), fun):
Dibf(f, m):
p[3,2] := plot(secu, title = `z/(z+0.5), estable`):

display(p);
end:

- 32 -
Capítulo 1: La Transformada Z

> Estab1(z/(z-pto), 10);

z
Comportamiento de la inversa de , que tiene un
2 a (2 a)
z − 2 z cos( b ) e + e
cero en el origen y dos polos complejos conjugados entre sí, a los que damos valores
dentro, fuera, y en el círculo unidad.

NOTA del autor: Utilizamos la representación trigonométrica de un número

complejo z1: z1 = e a ⋅ (cos(b) + j ⋅ sin(b) ) , donde e a es el módulo, y b es el argumento


del número complejo. En realidad sería cos( b T ) y sin( b T ) , pero consideramos como
incluido el período T.

El conjugado de dicho complejo es z 2 = e a ⋅ (cos(b) − j ⋅ sin(b) )

- 33 -
Sistemas de Control en Tiempo Discreto

Si tenemos dos polos complejos conjugados ( z - z 1 ) ( z - z 2 ) y operamos en su forma


exponencial, obtenemos el denominador que vamos a utilizar. Nótese que en Maple se
utiliza ' I ' para el número complejo − 1 que nosotros en este texto llamamos ' j '.
También se denomina como ' i '.

> den := (z-exp(a)*(cos(b)+I*sin(b))) * (z-exp(a)*(cos(b)-I*sin(b))):


simplify(den);

2 a (2 a)
z − 2 z e cos( b ) + e

a
El módulo del número complejo es e :

a > 0 implica que el complejo está fuera del círculo unidad.


a = 0 implica que el complejo está en el círculo unidad.
a < 0 implica que el complejo está dentro del círculo unidad .

Representamos la inversa como una función continua, uniendo los puntos de la


secuencia, para que se aprecie mejor. Implementamos ahora el procedimiento 'Estab2',
parecido al anterior. En este caso, la función antes mencionada tiene un cero en el
origen y dos polos complejos conjugados entre sí, a los que damos valores dentro, fuera
y en el círculo unidad. En concreto, los valores son:

π π
Fuera: a = 1, b = , a = 1, b =
2 4
π π
En el círculo: a = 0, b = , a = 0, b =
2 4

π π
Dentro: a = -1, b = , a = -1, b =
2 4

- 34 -
Capítulo 1: La Transformada Z

> Estab2 := proc(fun, m) local p, f;

# polos fuera del circulo unidad (a=1, b=Pi/2), (a=1, b=Pi/4)


p := array(1..3, 1..2):
f := subs(a=1, b=Pi/2, fun):
Dibf(f, m):
p[1,1] := plot(secu, title = `b=Pi/2, a=1, fuera círculo`):
f := subs(a=1, b=Pi/4, fun):
Dibf(f, m):
p[1,2] := plot(secu, title = `b=Pi/4, a=1, fuera círculo`):

# polos en el circulo unidad (a=0, b=Pi/2), (a=0, b=Pi/4)


f := subs(a=0, b=Pi/2, fun):
Dibf(f, m):
p[2,1] := plot(secu, title = `b=Pi/2, a=0, en círculo unidad`):
f := subs(a=0, b=Pi/4, fun):
Dibf(f, m):
p[2,2] := plot(secu, title = `b=Pi/4, a=0, en círculo unidad`):

# polos dentro del circulo unidad (a=-1, b=Pi/2), (a=-1, b=Pi/4)


f := subs(a=-1, b=Pi/2, fun):
Dibf(f, m):
p[3,1] := plot(secu, title = `b=Pi/2, a=-1, dentro círculo`):
f := subs(a=-1, b=Pi/4, fun):
Dibf(f, m):
p[3,2] := plot(secu, title = `b=Pi/4, a=-1, dentro círculo`):

display(p);
end:

- 35 -
Sistemas de Control en Tiempo Discreto

> Estab2(z/(z^2-2*z*cos(b)*exp(a)+exp(2*a)), 10);

π
Para el caso b = , los polos tienen parte real cero, es decir, son números
2
complejos imaginarios puros. Su respuesta en los casos a = 0 y a = 1 son más
oscilatorias.

a
z ( z − e cos( b ) )
Comportamiento de la inversa de (2 a) , que tiene dos
2 a
z − 2 z cos( b ) e + e
ceros y dos polos complejos conjugados entre sí, a los que damos valores dentro, fuera,
y en el círculo unitario. Esta es la función que se le pasa al procedimiento 'Estab3'. Los
valores de a y b que se usan dentro del procedimiento son los mismos que en el caso
anterior.

Representamos la inversa como una función continua, uniendo los puntos de la


secuencia, para que se aprecie mejor.

- 36 -
Capítulo 1: La Transformada Z

> Estab3 := proc(fun, m) local p, f;

# polos fuera del circulo unidad (a=1, b=Pi/2), (a=1, b=Pi/4)


p := array(1..3, 1..2):
f := subs(a=1, b=Pi/2, fun):
Dibf(f, m):
p[1,1] := plot(secu, title = `b=Pi/2, a=1, fuera círculo`):
f := subs(a=1, b=Pi/4, fun):
Dibf(f, m):
p[1,2] := plot(secu, title = `b=Pi/4, a=1, fuera círculo`):

# polos en el circulo unidad (a=0, b=Pi/2), (a=0, b=Pi/4)


f := subs(a=0, b=Pi/2, fun):
Dibf(f, m):
p[2,1] := plot(secu, title = `b=Pi/2, a=0, en círculo unidad`):
f := subs(a=0, b=Pi/4, fun):
Dibf(f, m):
p[2,2] := plot(secu, title = `b=Pi/4, a=0, en círculo unidad`):

# polos dentro del circulo unitario (a=-1, b=Pi/2), (a=-1, b=Pi/4)


f := subs(a=-1, b=Pi/2, fun):
Dibf(f, m):
p[3,1] := plot(secu, title = `b=Pi/2, a=-1, dentro círculo`):
f := subs(a=-1, b=Pi/4, fun):
Dibf(f, m):
p[3,2] := plot(secu, title = `b=Pi/4, a=-1, dentro círculo`):

display(p);
end:

- 37 -
Sistemas de Control en Tiempo Discreto

> Estab3( z*(z-exp(a)*cos(b)) / (z^2-2*z*cos(b)*exp(a)+exp(2*a)) , 20);

En los 3 procedimientos que hemos visto, puede apreciarse que la transformada


z inversa tiende a cero cuando el sistema es estable (polos dentro del círculo unidad). La
transformada z inversa es inestable cuando los polos están fuera del círculo unidad, y
críticamente estable cuando están sobre dicho círculo unidad.

1.6 EJERCICIOS.

Tal y como se explica en la introducción de la memoria, en el tutorial de Maple


se incluyen una serie de ejercicios que se han elaborado con la finalidad de que el
alumno compruebe su grado de comprensión sobre el tema tratado. En todos ellos hay
un espacio reservado para que el alumno intente resolverlos por sí mismo. Y todos ellos
están convenientemente resueltos para que se puedan mirar y comparar los resultados.
Para ello, sólo hay que abrir el grupo de ejecución del ejercicio correspondiente.

- 38 -
Capítulo 1: La Transformada Z

> restart:

2 ((k − 1) T )
1.6.1.- Obtener la transformada z de ( k T ) y de k T a

> ztrans((k*T)^2, k, z);


2
T z (z + 1)
3
(z − 1)

> simplify(ztrans(k*T*a^((k-1)*T), k, z));


Tz
2
T
( −z + a )

(− a t )
1− e
1.6.2.- Obtener la transformada z de x( t ) =
a

> simplify(ztrans((1/a)*(1-exp(-a*t)), t, z));


a
z ( −1 + e )
a
a (z − 1) (z e − 1)

- 39 -
Sistemas de Control en Tiempo Discreto

((k − 1) T ) (k T )
1.6.3.- Obtener la transformada z de x( k T ) = 9 k T 2 − 2 + 3
1
k = 0, 1, 2... siendo el periodo de muestreo T =
2

> factor(ztrans(9*k/2*2^((k-1)/2)-2^(k/2)+3, k, z));


2
1 z ( −11 z − 3 − 4 z + 10 z 2 + 2 2)

2 2
( z − 1 ) ( −z + 2)

1.6.4.- Obtener la transformada z de la siguiente función:

Se crea como combinación de la función de Heaviside, y después se realiza el


cálculo de su transformada. 'piecewise' crea la función dibujada a partir de sus valores,
y 'convert' la transforma en función de Heaviside.

NOTA del autor: A la función de Heaviside se la suele llamar escalón unitario, y se


suele notar 1(t).

> convert(piecewise(t<2, 0, t>5, 1, (t-2)/3 ), Heaviside);

5 1 2
Heaviside( t − 5 ) + t Heaviside( t − 2 ) − Heaviside( t − 2 )
3 3 3
1
− Heaviside( t − 5 ) t
3

- 40 -
Capítulo 1: La Transformada Z

> x := t-> 5/3*Heaviside(t-5) + 1/3*t*Heaviside(t-2) - 2/3*Heaviside(t-2)


- 1/3*Heaviside(t-5)*t:
simplify(ztrans(x(t), t, z));
2
1 z +z+1
3 4
z (z − 1)

zT
1.6.5.- Obtener la transformada z inversa de X( z ) = en los instantes
2
T
kT. (a − z)

> combine(invztrans(z/((-z+a)^2), z, k), power);


k
T ( −T )
T (a ) k a

z (z + 2)
1.6.6.- Obtener la transformada z inversa de X( z ) = en los instantes
2
(z − 1)
kT.

> subs(k=k*T, invztrans(z*(z+2)/(z-1)^2, z, k));


1+3kT

- 41 -
Sistemas de Control en Tiempo Discreto

1.6.7.- Suprimir de las listas l1 y l2 del apartado 1.3 las funciones s i n ( w t ) y


c o s ( w t ) , y añadir las funciones t 2 y t 3 , comprobando sus transformadas.

> l1:=[1, t, a^t, exp(-a*t), t^2, t^3]:


l2:=[1, k*T, a^(k*T), exp(-a*k*T), (k*T)^2, (k*T)^3]:
array(1..nops(l1)+1, 1..4, [ [`x(t)`, `X(z)`,
`x(kT)`, `X(z)`], seq( [l1[j],
simplify(ztrans(l1[j], t, z), radical),l2[j],
simplify(ztrans(l2[j], k, z))],
j=1..nops(l1) )]);

 x(t) X(z) x(kT) X(z) 


 
 
 z z 
 1 1 
 z−1 z−1 
 
 
 z Tz 
 t kT 
 
 2 2 
 (z − 1) (z − 1) 
 
 
 z (k T) z 
 at − a − 
 −z + a T 
 −z + a 
 
 
 (a T) 
 ( −a t ) z ( −a k T ) ze 
 
e − e 
 ( −a ) (a T) 
 −z + e ze − 1 

 
 2 
 2 z (z + 1) 2 2 T z ( z + 1 ) 
 t k T
 3 3 
 (z − 1) (z − 1) 
 
 
 2 3 2 
 z (z + 1 + 4 z) T z ( z + 1 + 4 z ) 
 3 3 3
 t k T 
 4 4 
 (z − 1) (z − 1) 

- 42 -
Capítulo 1: La Transformada Z

1.6.8.- Realizar un procedimiento que calcule y pinte la inversa de una función


determinada para poder estudiar su estabilidad. Decir el número de puntos
que se quiere ver.

Semejante a los procedimientos del apartado 1.5.1 (estabilidad), pero este debe valer
para cualquier función. Aprovechamos el procedimiento Dibf, ya realizado, haciéndole
una pequeña modificación: la variable 'inversa' la definimos como variable global, para
que se pueda utilizar dentro del procedimiento 'Estab'.

> Dibf := proc(f, m)


local i, k;
global secu, inversa;
inversa := simplify(evalf(invztrans(convert(f, parfrac, z), z, k))):
secu := [];
for i from 0 to m do
secu := [op(secu), [i, subs(k=i, inversa)]];
od;
end:

> Estab := proc(f, m)


local p;
p := plot(Dibf(f, m));
print(inversa);
print(p);
end:

- 43 -
Sistemas de Control en Tiempo Discreto

> Estab(z/(z+1.5), 10);


Estab(z/(z^2-2*z*cos(Pi/2)*exp(0)+exp(0)), 15);
Estab(z*(z-exp(-1)*cos(Pi/4)) / (z^2-2*z*cos(Pi/4)*exp(-1)+exp(-2)) ,9);

k ( .4054651081 k )
( -1. ) e

sin( 1.570796327 k )

( −1. k )
e cos( .7853981634 k )

> Estab(1/z, 5);


Estab(1/(z^2+1), 20);
charfcn1( k ) charfcn0( k ) − 1. cos( 1.570796327 k )

- 44 -
Capítulo 1: La Transformada Z

1.7 REFERENCIAS.

[REF. 1] R. Aracil Santonja, A. Jiménez Avello,


Sistemas Discretos de Control,
Cátedra de Automática, 1987

[REF. 2] R.C. Dorf,


Sistemas Modernos de Control. Teoría y Práctica,
Addison-Wesley Iberoamericana, 2ª edición, 1989

[REF. 3] K. Ogata,
Discrete-Time Control Systems,
Prentice-Hall, 1987

[REF. 4] K. Ogata,
Ingeniería de Control Moderna,
Prentice-Hall, 1980

[REF. 5] K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2ª edición, 1996

[REF. 6] A.V. Openheim, A.S. Willsky, con la colaboración de I.T. Young,


Señales y sistemas,
Prentice-Hall, 1994

[REF. 7] C. Torres Blanc,


Aproximación a la Unificación de Sistemas Lineales Continuos y Discretos,
Tésis Doctoral, capítulo 1: Formas de Discretización,
U.P.M., Facultad de Informática, 2000

- 45 -

Potrebbero piacerti anche