Anda di halaman 1dari 22

Universidad Nacional de

San Agustín
Facultad de Ingeniería de
Producción y Servicios

Escuela Profesional de Ingeniería Electrónica

SISTEMAS DE CONTROL DIGITAL

Docente:

Ing. Oscar Salazar Alarcón

LABORATORIO N° 3
Uso de la Transformada “Z”. Calculo analítico y con MatLab
Uso comandos: filter, stem, residue
1. a. Para la función salida Y(z), determinar los polos y ceros y ubicarlos dentro del plano z.
Los teoremas del valor inicial y final son aplicables en dicha salida. ¿Por qué? ¿Es estable
dicho sistema y por qué? Hallar sus valores y verificar con MatLab.
b. Hallar la Secuencia de Ponderación h(k) y graficarla.
c. Hallar y graficar la salida y(k) para la entrada rampa unitaria.

X(z) H(z)

𝟎. 𝟕𝟗𝟐𝒛
𝑯(𝒛) =
(𝒛𝟐 − 𝟎. 𝟒𝟏𝟔𝒛 + 𝟎. 𝟐𝟎𝟖)

X(z): entrada escalón unitario


Y(z): salida
H(z): función transferencia

>> z=tf('z');
>>Yz=0.792*z/(z^2-0.416*z+.208)

Yz =

0.792 z
---------------------
z^2 - 0.416 z + 0.208

Sample time: unspecified


Discrete-time transfer function.

>>zero(Yz)

ans =

>>pole(Yz)

ans =

0.2080 + 0.4059i
0.2080 - 0.4059i

>>pzmap(Yz)
>>grid on

Por el teorema del valor inicial:


0.792𝑧
𝑦(𝑡 = 0) = lim 𝑌(𝑧) = lim
𝑧→∞ 𝑧→∞ 1.416𝑧 2 + 0.624𝑧 − 0.208

0.792/𝑧
= lim =0
𝑧→∞ 1.416 + 0.624/𝑧 − 0.208/𝑧^2

Por el teorema del valor final:

0.792𝑧
𝑦(𝑡 → ∞) = lim[1 − 𝑧 −1 𝑌(𝑧)] = lim
𝑧→1 𝑧→1 (𝑧 2 − 0.416𝑧 + 0.208)
0.792𝑧
= lim =1
𝑧→1 𝑧 2 − 0.416𝑧 + 0.208

Estos teoremas son aplicables porque, por definición, existen los límites calculados.

2. Obtenga la transformada z de la siguiente función donde “a” es una constante. Grafique y


compare en MatLab la función en tiempo continuo y la función en tiempo discreto.
𝟏
𝒙(𝒕) = (𝟏 − 𝒆−𝒂𝒕 )
𝒂

1
𝑥(𝑡) = (1 − 𝑒 −𝑎𝑡 )
𝑎

Distribuyendo, tenemos:

1 𝑒 −𝑎𝑡
𝑥(𝑡) = −
𝑎 𝑎

Luego, por la transformada del escalón y la propiedad lineal de la transformada z,

1 1
𝑋(𝑧) = −
𝑎(1 − 𝑧 ) 𝑎(1 − 𝑒 −𝑎𝑘 𝑧 −1 )
−1

1 − 𝑒 −𝑎𝑘 𝑧 −1 − 1 + 𝑧 −1
=
𝑎(1 − 𝑧 −1 )(1 − 𝑒 −𝑎𝑘 𝑧 −1 )

1 𝑧 −1 (1 − 𝑒 −𝑎𝑘 )
= [ ]
𝑎 1 − 𝑧 −1 (1 + 𝑒 −𝑎𝑘 ) + 𝑒 −𝑎𝑘 𝑧 −2

En Matlab comparamos la respuesta del sistema continuo (en rojo) con la del sistema
discreto (azul):

>>num=[0 1-exp(-1) 0];


>>den=[1 -1-exp(-1) exp(-1)];
>> t=0:0.2:10;
>>xt=(1-exp(-t));
>>plot(t,xt,'r')
>> hold;
>>impz(num,den)
>>grid on
Como se puede observar en la grafica, se tiene un periodo de muestreo de 1𝑠, un tiempo
total de muestreo de 10𝑠. Se puede comprar ambas señales y se comprueba que se realizo
de manera correcta la transformada 𝑍 de la función 𝑥(𝑡).

3. Para la función transferencia H(z) , hallar:


a. Estabilidad del sistema.
>> z=tf('z');
Yz=(0.3678*z+0.2644)/(z^2-z+0.6322)

Yz =
0.3678 z + 0.2644
-----------------
z^2 - z + 0.6322
Sample time: unspecified
Discrete-time transfer function.

>>zero(Yz)
ans =
-0.7189
>>pole(Yz)
ans =
0.5000 + 0.6182i
0.5000 - 0.6182i
>>pzmap(Yz)

La transformada inversa z mediante el método Matlab (comando filter) hasta k = 20.


Graficar la secuencia (comando stem).

num=[0.3678 0.2644];
den=[1 -1 0.6322];
D0_k=[1 zeros(1,20)];
x_kc=filter(num,den,D0_k);

k=0:20;
subplot(2,1,1)
stem(k,x_kc)
grid,title('Gráfica obtenida usando comando filter')

La transformada inversa z mediante el comando “residue” de MatLab y comparar con


lo obtenido en a.
num=[0 0.3678 0.2644];
den=[1 -1 0.6322];
[r,p,k]=residue(num,den)
[b,a]=residue(r,p,k)

>> Untitled
r=
0.1839 - 0.3626i
0.1839 + 0.3626i
p=
0.5000 + 0.6182i
0.5000 - 0.6182i
k=
[]
b=
0.3678 0.2644
a=

1.0000 -1.0000 0.6322

La transformada inversa por calculo analítico (manual) y comparar con lo obtenido en


a. y b.
0.3678𝑧 + 0.2644 𝑌(𝑧)
𝐻(𝑧) = =
𝑧 2 − 𝑧 + 0.6322 𝑋(𝑧)

𝐻(𝑧) 0.3678𝑧 + 0.2644


=
𝑧 𝑧 (𝑧 − (0.5 + 0.618𝑗))(𝑧 − (0.5 + 0.618))

0.3678𝑧 + 0.2644
𝐴= lim (𝑧 − (0.5 + 0.618𝑗))
𝑧=(0.5+0.618𝑗) 𝑧 (𝑧 − (0.5 + 0.618𝑗))(𝑧 − (0.5 − 0.618))

𝐴 = −0.21 − 0.467𝑗

0.3678𝑧 + 0.2644
𝐵= lim (𝑧 − (0.5 − 0.618)
𝑧=(0.5−0.618𝑗) 𝑧 (𝑧 − (0.5 + 0.618𝑗))(𝑧 − (0.5 − 0.618))

𝐵 = −0.21 + 0.467𝑗

0.3678𝑧 + 0.2644
𝐶 = lim 𝑧
𝑧=0 𝑧(𝑧2 − 𝑧 + 0.6322)

𝐶 = 0.4182

𝑥(𝑘) = 0.4812𝑥(0) + (−0.2 − 0.467𝑗)(0.5 + 0.6182𝑗)𝑘


+(−0.2 + 0.467𝑗)(0.5 − 0.6182𝑗)𝑘

0; 0.3678; 0.6322; 0.3997; 0; −0.2526;


𝑥(𝑘) = { }
−0.2527; −0.093; … … … … ; −0.0104
La salida Y(z) y la salida temporal y(kT), (graficarla) para una entrada X(z) escalón
unitario, verificando teorema del valor inicial y valor final. Usar comandos “stem” ,
“filter”, “residue”.

𝟎. 𝟑𝟔𝟕𝟖𝒛 + 𝟎. 𝟐𝟔𝟒𝟒 𝒀(𝒛)


𝑯(𝒛) = =
𝒛𝟐 − 𝒛 + 𝟎. 𝟔𝟑𝟐𝟐 𝑿(𝒛)
𝒛
𝒙(𝒛) = ( )
𝒛−𝟏
𝟎. 𝟑𝟔𝟕𝟖𝒛 + 𝟎. 𝟐𝟔𝟒𝟒
𝒀(𝒛) = 𝒙(𝒛)
𝒛𝟐 − 𝒛 + 𝟎. 𝟔𝟑𝟐𝟐

𝟎. 𝟑𝟔𝟕𝟖𝒛𝟐 + 𝟎. 𝟐𝟔𝟒𝟒𝒛
𝒀(𝒛) =
𝒛𝟑 − 𝟐𝒛𝟐 + 𝟏. 𝟔𝟑𝟐𝟐𝒛 − 𝟎. 𝟔𝟑𝟐𝟐

num=[0 0.3678 0.2644 0];


den=[1 -2 1.6322 -0.6322];
D0_k=[1 zeros(1,20)];
x_kc=filter(num,den,D0_k);
k=0:20;
stem(k,x_kc)
grid,title('Gráfica obtenida usando comando filter')
num=[0 0.3678 0.2644 0];
den=[1 -2 1.6322 -0.6322];
[r,p,k]=residue(num,den)
[b,a]=residue(r,p,k)
>> Untitled6

r =
1.0000 + 0.0000i
-0.3161 - 0.2557i
-0.3161 + 0.2557i

p =
1.0000 + 0.0000i
0.5000 + 0.6182i
0.5000 - 0.6182i

k =
[]

b =
0.3678 0.2644 0.0000

a =
1.0000 -2.0000 1.6322 -0.6322

>>

Por el teorema del valor inicial:


0.3678𝑧 + 0.2644
𝑦(𝑡 = 0) = lim 𝑌(𝑧) = lim
𝑧→∞ 𝑧→∞ 𝑧 2 − 𝑧 + 0.6322

0.3678𝑧 2 + 0.2644𝑧
= lim =0
𝑧→∞ 𝑧 3 − 2𝑧 2 + 1.6322𝑧 − 0.6322

Por el teorema del valor final:

(0.3678𝑧 + 0.2644)𝑧
𝑦(𝑡 → ∞) = lim(𝑧 − 1) 𝑌(𝑧) = lim(z − 1)
𝑧→1 𝑧→1 (𝑧 − 1)(𝑧 2 − 𝑧 + 0.6322)

0.6322
= lim =1
𝑧→1 1 − 1 + 0.6322

Estos teoremas son aplicables porque, por definición, existen los límites calculados.
4. Para la ecuación en diferencias encontrar la serie en forma recursiva realizando un
programa en Matlab. Luego, hallar la transformada Z mediante calculo analítico y seguido
por el método de Matlab (comando filter), encontrar la transformada inversa Z hasta k =
30. Verificar ambos métodos y graficar para obtener conclusiones.

𝒙(𝒌 + 𝟐) = 𝒙(𝒌 + 𝟏) + 𝒙(𝒌)


𝒙(𝟎) = 𝟎 ; 𝒙(𝟏) = 𝟏

Lo primero es obtener la transformada 𝑍 de forma analítica. Para eso vamos a usar la


ecuación en diferencia dada. Hay que tener en cuenta que se tiene corrimiento a la
derecha por lo que se tendrá que usar las propiedades respectivas para su resolución.

𝒙(𝒌 + 𝟐) = 𝒙(𝒌 + 𝟏) + 𝒙(𝒌)

𝒙(𝟎) = 𝟎 ; 𝒙(𝟏) = 𝟏
𝒛𝟐 𝑿(𝒛) − 𝒛 = 𝒛𝑿(𝒛) + 𝑿(𝒛)

𝑿(𝒛)(𝒛𝟐 − 𝒛 − 𝟏) = 𝒛

𝒛
𝑿(𝒛) =
𝒛𝟐 −𝒛−𝟏
clc
hold on

x_ks(1)=0;
x_ks(2)=1;
for k=2:30
x_ks(k+1)=x_ks(k)+x_ks(k-1);
end

num=[1 0];
den=[1 -1 -1];
D0_k=[1 zeros(1,30)];
x_kc=filter(num,den,D0_k);

k=0:30;
subplot(2,1,1)
stem(k,x_ks,'r')
grid,title('Gráfica obtenida usando serie en forma
recursiva')
subplot(2,1,2)
stem(k,x_kc)
grid,title('Gráfica obtenida usando comando filter')
Una vez obtenida la transformada 𝑍, procedemos mediante la realización de un programa,
obtener la transformada inversa 𝑍 de esta función mediante el comando 𝑓𝑖𝑙𝑡𝑒𝑟 y además
poder obtener la serie en forma recursiva mediante el algoritmo respectivo. El programa
usado se muestra a continuación:

Figura: Obtención de graficas mediante 2 métodos distintos

Como se puede observar en la figura anterior, se tienen las 2 graficas obtenidas mediante
métodos diferentes, con lo que se concluye que efectivamente mediante la aplicación de
la transformada 𝑍 a la ecuación en diferencia y después de la aplicación de la
transformada inversa 𝑍 a la expresión de 𝑋(𝑧), se obtiene la secuencia de ponderación
respectiva.

5.
x(k) u(k)
SD
Ecuación Diferencia del SD:
𝟑 𝟏
𝒙(𝒌) + 𝒖(𝒌 − 𝟏) − 𝒖(𝒌 − 𝟐) = 𝒖(𝒌)
𝟒 𝟖

Hallar:
a. La SP: h(k) y graficarla, usando calculo analítico y MatLab.
b. Hallar la función transferencia H(z), su transformada inversa z y graficarla, usando el
comando “residue”. Estudiar estabilidad.
c. Hallar la respuesta del sistema para una entrada escalón unitario y rampa unitaria
analíticamente y con MatLab, graficar la respuesta.

Halar la SP:ℎ(𝑘) y graficarla , usando calculo analítico y matlab.

3
ℎ(𝑘) = 𝑢(𝑘) = 𝑥(𝑘) + 𝑢(𝑘 − 1) − 1/8𝑢(𝑘 − 2)
4
3
ℎ(0) = 𝑢(0) = 𝑥(0) + 𝑢(−1) − 1/8𝑢(−2) = 1
4
3
ℎ(1) = 𝑢(1) = 𝑥(1) + 𝑢(0) − 1/8𝑢(−1) = 0.75
4
3
ℎ(2) = 𝑢(2) = 𝑥(2) + 𝑢(1) − 1/8𝑢(0) = 0.2343
4
3
ℎ(3) = 𝑢(3) = 𝑥(3) + 𝑢(2) − 1/8𝑢(1) = 0.121
4
3
ℎ(4) = 𝑢(4) = 𝑥(4) + 𝑢(3) − 1/8𝑢(2) = 0.0615
4
3
ℎ(5) = 𝑢(5) = 𝑥(5) + 𝑢(4) − 1/8𝑢(3) = 0.0615
4
3 1
𝑋(𝑧) = 𝑈(𝑧)[1 − ( ) 𝑍 −1 + ( ) 𝑍 −2 ]
4 8
𝑈(𝑧)
= 𝐻(𝑧)
𝑋(𝑧)

Simulado en matlab:

8𝑍 2
𝐻(𝑧) = 8𝑍2 −6𝑍+1
num=[8 0 0];%numerador de la funcion transferencia
den=[8 -6 1];%denominador de la funcion transferencia
inpulso=[1 0 0 0 0 0 0 0 0];%la entrada impulso unitario
y=filter(num,den,inpulso); %comando para hallar la secuencia
de ponderacion
n=0:1:8;
stem(n,y)
grid
title('grafico de la secuencia de ponderacion')

Hallar la función transferencia H(z) y su transformada inversa z usando el comando


“residue”.

3
𝑢(𝑘) = 𝑥(𝑘) + 𝑢(𝑘 − 1) − 1/8𝑢(𝑘 − 2)
4
3 1
𝑋(𝑧) = 𝑈(𝑧)[1 − ( ) 𝑍 −1 + ( ) 𝑍 −2 ]
4 8

𝑈(𝑧)
= 𝐻(𝑧)
𝑋(𝑧)
8𝑍 2
𝐻(𝑧) = 8𝑍 2 −6𝑍+1

Podemos ayudarnos de 𝑀𝑎𝑡𝑙𝑎𝑏 para poder hallar la transformada inversa de 𝐻(𝑧).

num=[8 0 0];
den=[8 -6 1];
[r,p,k]=residue(num,den)
[b,a]=residue(r,p,k)

>> Untitled

r =
1.0000
-0.2500

p =
0.5000
0.2500

k =
1

b =

1 0 0

a =

1.0 -0.7500 0.1250

Hallar la respuesta del sistema para una entrada escalón unitario analíticamente y con
matlab.

Para una entrada Escalon x>=0, x(k)=1.

condición inicial X(0)=0


Procedemos a hallar la respuesta del sistema a una entrada escalón unitario
analíticamente, de la misma manera como lo hicimos para hallar la secuencia de
ponderación:

𝑦(𝑘) = 𝑥(𝑘) ∗ ℎ(𝑘)


𝑘

𝑦(𝑘) = ∑ 𝑥(𝑗)ℎ(𝑘 − 𝑗)
𝑗=0

𝑢(0) = 𝑥(0)ℎ(0) = 1

𝑢(1) = 𝑥(0)ℎ(1) + 𝑥(1)ℎ(0) = 1.75

𝑢(2) = 𝑥(0)ℎ(2) + 𝑥(1)ℎ(1) + 𝑥(2)ℎ(0) = 2.1875

𝑢(3) = 𝑥(0)ℎ(3) + 𝑥(1)ℎ(2) + 𝑥(2)ℎ(1) + 𝑥(3)ℎ(0) = 2.42

𝑢(4) = 𝑥(0)ℎ(4) + 𝑥(1)ℎ(3) + 𝑥(2)ℎ(2) + 𝑥(3)ℎ(1) + 𝑥(4)ℎ(0) = 2.5428

𝑦(5) = 𝑥(0)ℎ(5) + 𝑥(1)ℎ(4) + 𝑥(2)ℎ(3) + 𝑥(3)ℎ(2) + 𝑥(4)ℎ(1) + 𝑥(5)ℎ(0) = 2.6043

clc
num=[8 0 0];%numerador de la funciontranzferencia
den=[8 -6 1];%denominador de la funciontranzferencia
escalon=ones(1,9);%la entrada escalon unitario
y=filter(num,den,escalon)
n=0:1:8;
stem(n,y)
grid
title('grafico la respuesta al sistema')
6. Un sistema discreto tiene como entrada 𝑢(𝑘) y como salida 𝑥(𝑘). Donde:

𝑢(0) = 1.5 , 𝑢(1) = 0.5 , 𝑢(2) = −0.5,

𝑢(𝑘) = 0, 𝑢(𝑘) = 0 ∶ 𝑘 = 3,4,5, …

Ecuación en diferencia:

𝑦(𝑘 + 2) + 0.5𝑦(𝑘 + 1) + 0.2𝑦(𝑘) = 𝑢(𝑘 + 1) + 0.3𝑢(𝑘)


𝑦(𝑘) = 0 , 𝑝𝑎𝑟𝑎 𝑘 ≤ 0 ; 𝑢(𝑘) = 0 𝑝𝑎𝑟𝑎 𝑘 < 0

𝑥(𝑘 + 2) + 0.5𝑥(𝑘 + 1) + 0.2𝑥(𝑘) = 𝑢(𝑘 + 1) + 0.3𝑢(𝑘)

𝐷𝑜𝑛𝑑𝑒:

𝑥(𝑘) = 0 ∶ 𝑘 ≤ 0

𝑢(𝑘) = 0 ∶ 𝑘 < 0

Hallar:

a). La función de transferencia 𝐻(𝑧)(estudiar estabilidad) y por MatLab.


Procedemos a hallar la función de transferencia analíticamente, para esto aplicamos
𝑋(𝑧)
transformada Z a la ecuación en diferencia y obtenemos la relación, 𝑈(𝑧).

𝑧 2 𝑌(𝑧) − 𝑧 2 𝑦(0) − 𝑧𝑦(1) + 0.5(𝑧𝑌(𝑧) − 𝑧𝑦(0)) + 0.2𝑌(𝑧) = 𝑧𝑈(𝑧) − 𝑧𝑢(0) + 0.3𝑈(𝑧)

Teniendo en cuenta las condiciones iniciales dadas:

𝑋(𝑧)(𝑧 2 + 0.5𝑧 + 0.2) = 𝑈(𝑧)(𝑧 + 0.3)

𝒀(𝒛) 𝒛 + 𝟎. 𝟑
𝑯(𝒛) = = 𝟐
𝑼(𝒛) 𝒛 + 𝟎. 𝟓𝒛 + 𝟎. 𝟐

Se tiene la función transferencia ahora para ver la estabilidad del sistema verificamos los
polos que el sistema es estable.

>>pole(H)

ans =

-0.2500 + 0.3708i

-0.2500 - 0.3708i

-hallar la secuencia de ponderación:

𝒀(𝒛) 𝒛 + 𝟎. 𝟑
𝑯(𝒛) = = 𝟐
𝑼(𝒛) 𝒛 + 𝟎. 𝟓𝒛 + 𝟎. 𝟐

num=[1 0.3];%numerador de la funcion transferencia


den=[1 0.5 0.2];%denominador de la funcion transferencia
inpulso=[1 zeros(1,7)]%la entrada escalon unitario
y=filter(num,den,inpulso)
n=0:1:7;
stem(n,y)
grid
title('grafico de la secuencia de ponderacion')
b). La salida 𝑦(𝑘), para la entrada dada 𝑢(𝑘).

- Simulado en matlab:

𝑿(𝒛) 𝒛 + 𝟎. 𝟑
𝑯(𝒛) = = 𝟐
𝑼(𝒛) 𝒛 + 𝟎. 𝟓𝒛 + 𝟎. 𝟐

num=[1 0.3];%numerador de la funciontransferencia


den=[1 0.5 0.2];%denominador de la funciontransferencia
u=[1.5 0.5 -0.5 0 0 0 0 0 0 0];%la entrada
y=filter(num,den,u)
n=0:1:9;
stem(n,y)
grid
title('grafico de la secuencia de ponderacion')
7. Usar el método de la división directa para obtener la transformada z inversa. ¿El sistema
es estable? ¿Por qué? Mostrar el diagrama de polos y ceros en el plano z. Si el sistema es
inestable, implementar la modificación necesaria para que deje de serlo y graficar la salida
para la entrada escalón unitario.

𝒛−𝟏 (𝟏 − 𝒛−𝟐 )
𝑯(𝒛) =
(𝟏 + 𝒛−𝟐 )𝟐

Primero, expresamos X(z) en polinomios de z−1:

𝑧 −1 − 𝑧 −3
𝑋(𝑧) =
1 + 2𝑧 −2 + 𝑧 −4

Luego, efectuando la división:


Comparando directamente 𝑋(𝑧) = ∑∞ −𝑘
0 𝑥(𝑘)𝑧 , tenemos:

x(0) = 0
x(1) = 1
x(2) = 0
x(3) = −3
x(4) = 0
x(5) = 5
x(6) = 0
x(7) = −7
x(8) = 0
x(9) = 9

Como vemos, la secuencia x(n) es alternadamente creciente; por lo tanto, el sistema es


inestable, graficamos los polos y ceros de X(z) mediante la siguiente secuencia de
comandos:

>>num=[0 1 0 -1 0];
>>den=[1 0 2 0 1];
>>zplane(num,den);

Confirmamos con el diagrama de polos y ceros que el sistema es inestable, ya que posee
polos múltiples sobre el círculo unitario.
CONCLUSIONES

 Se vio la estabilidad en los gráficos.


 Se utilizó los comandos residuefilter y stem.
 Comparamos el método manual y el método por Matlab.