transform ada z y matlab

45
Capítulo 1: La Transformada Z - 1 - Capítulo 1. LA TRANSFORMADA Z.

Upload: danielsantiago

Post on 21-Jun-2015

2.729 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 1 -

Capítulo 1.

LA TRANSFORMADA Z.

Page 2: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 2 -

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 kT (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

Page 3: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 3 -

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 ) = 2 u ( 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.

Page 4: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 4 -

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

Page 5: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 5 -

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:

+ .. +

= ( )

+ .. +

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.

+ b0 zm b1 z( ) − m 1

( )X z

bm

+ zn a1 z( ) − n 1

an

≤ m n

Page 6: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 6 -

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 ( 2T) , ... 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]:

=

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

=

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á:

X(z) = = 1

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

∞( )x k T z

( )−k

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

∞( )x k z

( )−k

= ∑ = k 0

∞( )x k z

( )−kz0

Page 7: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 7 -

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:

=

=

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.

∞∞

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

∞( )x k T z

( )−k

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

∞( )x k z

( )−k

Page 8: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 8 -

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);

Considerando el periodo de muestreo:

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

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

z ( ) + z 1

( ) − z 1 3

T2 z ( ) + z 1

( ) − z 1 3

− z

− z 1z

e( )−a T

− z

e( )−a T

1

Page 9: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 9 -

> simplify(%);

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

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

z ( )− + 1 e( )a T

( ) − z 1 ( ) − z e( )a T

1

( )Dirac 0

= d⌠⌡

−∞

∞( )Dirac t t 1

Page 10: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 10 -

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)];

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

:= l1 [ ], , , , ,1 t at e( )−a t

( )sin ω t ( )cos ω t

:= l2 [ ], , , , ,1 k T a( )k T

e( )−a k T

( )sin ω k T ( )cos ω k T

Page 11: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 11 -

> 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)

1z

− z 11

z − z 1

tz

( ) − z 1 2k T

T z

( ) − z 1 2

at z − z a

a( )k T

−z

− + z aT

e( )−a t z

− z e( )−a

e( )−a k T z e

( )a T

− z e( )a T

1

( )sin ω tz ( )sin ω

− + z2 2 z ( )cos ω 1( )sin ω k T

z ( )sin ω T

− + z2 2 z ( )cos ω T 1

( )cos ω t( ) − z ( )cos ω z

− + z2 2 z ( )cos ω 1( )cos ω k T

( )− + z ( )cos ω T z

− + − z2 2 z ( )cos ω T 1

Page 12: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 12 -

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

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

tenemos

1.4.2.- Multiplicación por a k T .

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

( ) )()( 1 zaXTkxa Tk ⋅=⋅⋅Ζ −⋅

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

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

Page 13: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 13 -

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

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

)())(( zXzTntx n ⋅=⋅−Ζ −

y

⋅⋅−⋅=⋅+Ζ ∑

=

−1

0)()())((

n

k

kn zTkxzXzTntx

1.4.4.- Teorema de traslación compleja.

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

)(txta ⋅⋅−e

viene dada por

)( TazX ⋅⋅e

1.4.5.- Teorema del valor inicial.

Si x ( t ) tiene por transformada z, X ( z ) , y si el )(zXlimz ∞→

existe, entonces el

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

)()0( zXlimx

z ∞→=

Page 14: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 14 -

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

)()1()( 1

1zXzlimTkxlim

zk⋅−=⋅ −

→∞→

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:

Page 15: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 15 -

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);

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

transformadas anteriores:

= transform11

− z 1

= transform21

z3 ( ) − z 1

Page 16: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 16 -

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

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

Ejemplo 2.

Dada la transformada z de , obtener la transformada z de e - a 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);

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.

= trans11

− z 1

= trans21

z3 ( ) − z 1

( )sin ω t

:= ( )Ζ ( )sin ω k T −z ( )sin ω T

− + − z2 2 z ( )cos ω T 1

:= ( )Ζ e( )−a k T

( )sin ω k T −z e

( )a T( )sin ω T

− + − z2 e( )2 a T

2 z e( )a T

( )cos ω T 1

( )sin ω t

Page 17: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 17 -

> 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);

Ejemplo 3.

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

)1()1(

)1()( 11

1

−−−

−−

⋅−⋅−⋅−

=zz

zzX T

T

ee

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);

−z e

( )a T( )sin ω T

− + − z2 e( )2 a T

2 z e( )a T

( )cos ω T 1

= ( )x 0 0

Page 18: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 18 -

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, %);

Ejemplo 4.

Mediante el teorema del valor final, determinar el valor de

11 11

11)( −⋅−− ⋅−

−−

=zz

zX Tae a> 0

> 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);

− 1

1

eTn

= ( )x 0 0

( )x ∞

= lim → k ∞

( )x k T 1

Page 19: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 19 -

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'):

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;

− 1

1

e( )a T

n

= ( )x ∞ 1

T~a~Ta

Page 20: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 20 -

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 )(txi 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]);

:= ( )x1 k 0

:= ( )x2 k ( )sin k π

Page 21: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 21 -

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

sM ωω <⋅2 , para la señal continua x ( t ) , dondeTs

πω ⋅=

2 es la frecuencia de

muestreo y Mω es la frecuencia más alta presente en la señal. En este caso, con el

periodo de muestreo π=T , 2=sω . [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 , donde

= 1 para k = 0

0 para

( )δ0 k T

≠ k 0

( )δ0 k T

Page 22: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 22 -

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

=

Dicha ecuación se puede escribir como

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

donde u( 0 ) = 1 y u(k ) = 0 para 0≠k , 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),

entonces zzX )( ó X( z ) se expande en la suma de términos sencillos de primer o

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.

− .4673 z .3393

− + z2 1.5327 z .6607 = ( )G z

( )X z( )U z

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

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

Page 23: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 23 -

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

imkkkTkx

121)( L residuo de X(z ) z k - 1 en el polo z=z i de X(z ) z k - 1

( ))(1 zX−Ζ=

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);

T2 z ( ) + z 1

( ) − z 1 3

k2 T2

Page 24: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 24 -

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

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

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

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);

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

T2

+ + 4z

− z 14

z

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

( ) − z 1 3

( ) + 2 k 2 T2

:= sucf 1.0000 ( )sin 1.5708 n

:= suc ∑ = _α ( )RootOf + _Z2 1

12

1_α

n

Page 25: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 25 -

> 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);

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

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

Page 26: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 26 -

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

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);

> suc2f := evalf(suc2);

La secuencia resultante es:

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

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);

:= suc2 − 56

310

n 56

-910

n

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

, , , , , , , , ,1-35

63100

-2750

494110000

-2211350000

3987631000000

-89667250000

32286681100000000

-145280223500000000

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

Page 27: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 27 -

> 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:

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].

= ( )C z( )R z

( )G z + 1 ( )G z

Page 28: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 28 -

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.

Page 29: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 29 -

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:

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.

= ( )G z1z

Page 30: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 30 -

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);

Comportamiento de la transformada z inversa de pz

z−

, que tiene un cero en el

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.

, , , , ,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

Page 31: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 31 -

> 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.

Page 32: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 32 -

> 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:

Page 33: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 33 -

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

Comportamiento de la inversa de , que 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.

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

complejo z1: ( ))()cos(1 bsinjbz a ⋅+⋅= e , donde ae 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 ( ))()cos(2 bsinjbz a ⋅−⋅= e

z

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

Page 34: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 34 -

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);

El módulo del número complejo es :

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 =

En el círculo: a = 0, b = , a = 0, b =

Dentro: a = -1, b = , a = -1, b =

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

e a

π2

π4

π4

π4

π2

π2

Page 35: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 35 -

> 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:

Page 36: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 36 -

> 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

complejos imaginarios puros. Su respuesta en los casos a = 0 y a = 1 son más

oscilatorias.

Comportamiento de la inversa de , que tiene dos

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.

z ( ) − z ea ( )cos b

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

π2

Page 37: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 37 -

> 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:

Page 38: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 38 -

> 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.

Page 39: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 39 -

k T a( )( ) − k 1 T

> restart:

1.6.1.- Obtener la transformada z de y de

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

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

1.6.2.- Obtener la transformada z de

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

T2 z ( ) + z 1

( ) − z 1 3

z ( )− + 1 ea

a ( ) − z 1 ( ) − z ea 1

( )k T 2

= ( )x t − 1 e

( )− a t

a

T z

( )− + z aT2

Page 40: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 40 -

1.6.3.- Obtener la transformada z de

k = 0, 1, 2... siendo el periodo de muestreo 21T =

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

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);

53

( )Heaviside − t 513

t ( )Heaviside − t 223

( )Heaviside − t 2 + −

13

( )Heaviside − t 5 t −

= ( )x k T − + 9 k T 2( )( ) − k 1 T

2( )k T

3

−12

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

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

Page 41: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 41 -

> 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));

1.6.5.- Obtener la transformada z inversa de en los instantes

kT.

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

1.6.6.- Obtener la transformada z inversa de en los instantes

kT.

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

1 + 3 k T

13

+ + z2 z 1

z4 ( ) − z 1

= ( )X zz ( ) + z 2

( ) − z 1 2

= ( )X zz T

( ) − aT z2

T ( )aTk

k a( )−T

Page 42: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 42 -

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

cos ( wt ) , 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)

1z

− z 11

z − z 1

tz

( ) − z 1 2k T

T z

( ) − z 1 2

at −z

− + z aa

( )k T−

z

− + z aT

e( )−a t

−z

− + z e( )−a

e( )−a k T z e

( )a T

− z e( )a T

1

t2 z ( ) + z 1

( ) − z 1 3k2 T2 T2 z ( ) + z 1

( ) − z 1 3

t3 z ( ) + + z2 1 4 z

( ) − z 1 4k3 T3 T3 z ( ) + + z2 1 4 z

( ) − z 1 4

Page 43: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 43 -

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:

Page 44: Transform Ada z y Matlab

Sistemas de Control en Tiempo Discreto

- 44 -

> 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);

> Estab(1/z, 5);

Estab(1/(z^2+1), 20);

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

( )sin 1.570796327 k

e( )−1. k

( )cos .7853981634 k

( )charfcn1 k − ( )charfcn0 k 1. ( )cos 1.570796327 k

Page 45: Transform Ada z y Matlab

Capítulo 1: La Transformada Z

- 45 -

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