Вы находитесь на странице: 1из 21

01.

Considere o problema da estimacao de um sinal constante a partir das


medidas ruidosas, isto e, y(t) = s(t) + e(t) , sendo e(t) o rudo do sistema. A
Figura (1) ilustra a caracterstica temporal da sada do sistema. A estimativa
natural do sinal pode ser calculada por:
t
1X
sb(t) = y(k) (1)
t k=1

Figura 1: Evolucao da Sada do sistema

Item a): Reescrever a estimativa de modo que s(t) seja atualizado com s(t 1)
quando uma nova medita y(t) esteja disponvel. Esta equacao captura a essencia
de algoritmos de estimacao recursivos?

Item b): Implementar o resultado do item (a) em Matlab e verificar a con-


vergencia da estimativa. Admitir 100 amostras e utilizar o comando randn na
geracao de e(t).

Solucao:

Item a):
A partir da Equacao (1), podemos rescreve-la da seguinte maneira:
t t1
1X 1X
sb(t) = y(k) = [ y(k) + y(t)] (2)
t k=1 t k=1

1
Aplicando a formula para t = t - 1, encontramos a seguinte equacao:
t1
1 X
sb(t 1) = y(k)
t 1 k=1
Pt1
Isolando o termo k=1 y(k) nos temos a seguinte equacao:
t1
X
y(k) = sb(t 1)(t 1) (3)
k=1
Portanto, substituindo a equacao (3) na equacao (2) nos encontramos a solucao:
1
sb(t) = [b s(t 1)(t 1) + y(t)]
t
t1 1
sb(t) = sb(t 1) + y(t) (4)
t t
Item b):

Assumindo que s(t) e um sinal constante caracterizado por s(t) = 8 e que o e(t)
e gerado aleatoriamente, foi desenvolvido um codigo em Matlab para ilustrar os
sinais s(t), y(t) e sb(t). Segue a seguir o codigo em Matlab.

1
2 % Questao 1 - Lista 01
3

4 N = 100;
5
6 s = 8*ones(1,N); % Obter funcao constante s(t)
7 e = randn(1,N); % Obter rudo e(t)
8

9 y = s + e; % Obter sada y(t)


10 s est(1) = 0;
11
12 for k=2:N
13 s est(k) = ((k - 1)/k) * s est(k - 1) + (1/k)*y(k); % ...
Calculo do s(t) estimado
14 end
15
16 plot(1:N,s,'g'); ylabel('f(t)'); xlabel('amostras');
17 hold on
18 plot(1:N,y,'b');
19 hold on
20 plot(1:N,s est,'r');
21 legend('s(t)','y(t)','s(t)');

2
O plot realizado das funcoes s(t), y(t) e sb(t) e ilustrado na Figura 2 a seguir.

Figura 2: Sinais s(t), y(t) e sb(t)

E possvel observar que o sinal sb(t) converge para o sinal s(t) com o tempo,
reduzindo portanto o erro.

02. Considere a base de dados Daisy e identifique os processos SISO de acordo


como combinado em sala.

Base de dados: [96-008] Wing flutter data (data - description)

Os testes a serem realizados sao para modelos matematicos de ordem re-


duzida.

Deve-se determinar o modelo matematico para o processo baseado na funcao


custo, J, que e o erro medio quadratico entre a sada real e a sada estimada
do processo.

3
O modelo obtido com o algoritmo dos mnimos quadrados que apresenta o
menor valor de J e considerado o modelo mais preciso.

1. Qual o melhor modelo matematico obtido para o processo (valor de as e


bs)?

2. Comparando-se graficamente a resposta real com a resposta estimada do


processo pode-se dizer que o sistema aproxima um modelo linear? (Teste
degrau e indices)

3. Analisando-se o numero de parametros estimados (numero de as e bs) do


melhor modelo pode-se dizer que e o modelo mais simples entre os avaliados?
(Teste degrau e indices)

Solucao:

Cada um dos modelos avaliados utilizam quantidades e parametros diferentes,


o que determina a complexidade do modelo utilizado. Quanto menor o numero de
parametros obtido pelo modelo, mas simples ele e.

A Tabela 1 descreve os modelos, especificando os parametros utilizados para repre-


sentar o sistema bem como o custo J que indica a qualidade da estimacao realizada
pelo modelo.

Tabela 1: Modelos estimados e seus respectivos custos


Polinomio de u Polinomio de y
Modelo Funcao custo ( J )
b0 b1 b2 a1 a2 a3
1 X X 17.1271
2 X X X 1.0161
3 X X X X 0.1095
4 X X X 10.2159
5 X X X X 0.9117
6 X X X X X 0.1059
7 X X X X 7.1726
8 X X X X X 38.1584
9 X X X X X X 0.0822

Dentre os modelos estimados apresentados na Tabela 1, o modelo 9 (destacado


em verde) foi o que representou melhor a dinamica do sistema, ou seja, foi o mod-
elo que apresentou o menor erro (Funcao custo J).

4
O custo J foi calculado utilizando a seguinte equacao:

e(t) = y(t) yb(t)


t
X
J(t) = e2 (t) (5)
k=1

Os parametros de cada modelo foram encontrados utilizando o metodo dos mnimos


quadrados, a partir da ferramenta Matlab. A seguir e apresentado o codigos ref-
erente a estimacao do modelo 9. Os codigos em Matlab para os demais modelos
encontram-se em anexo no final deste trabalho.

1 % Questao 02 - Modelo 9 - Dados daisy - Wing Flutter


2 load flutter.dat % Carrega os dados
3 u = flutter(:,1);
4 y = flutter(:,2);
5 N = length(u);
6 Y=[]; fi =[];
7
8 for i=1:N
9 if i <= 1
10 y1=0;y2=0;y3=0;
11 u1=u(i);u2=0;u3=0;
12 elseif i == 2
13 y1=y(i - 1);y2=0;y3=0;
14 u1=u(i);u2=u(i-1);u3=0;
15 elseif i == 3
16 y1=y(i - 1);y2=y(i - 2);y3=0;
17 u1=u(i);u2=u(i-1);u3=u(i-2);
18 else
19 y1 = y(i-1); y2 = y(i-2); y3 = y(i-3);
20 u1 = u(i-1); u2 = u(i-2); u3 = u(i-3);
21 end
22 Y = [Y; y(i)]; fi = [fi;-y1 -y2 -y3 u1 u2 u3];
23 end
24
25 teta = inv(fi'*fi)*fi'*Y; % Mnimos quadrados para calcular a ...
matriz teta
26
27 a1 = teta(1); a2 = teta(2); a3 = teta(3);
28 b0 = teta(4); b1 = teta(5); b2 = teta(6);
29 J = 0;
30 for t = 1:3
31 yest(t) = 0;
32 end
33

5
34 %yest2 = fi*teta; % Outra forma de encontrar o y estimado
35

36 for t=4:N
37 yest(t) = -a1*y(t-1) -a2*y(t-2) -a3*y(t-3) + b0*u(t-1) + ...
b1*u(t-2) + b2*u(t-3);
38 end
39
40 for i=1:N
41 e(i) = y(i) - yest(i); % Calculo do custo J
42 J = J + e(i)2;
43 end
44
45 J = J/2;
46 plot(y,'g');
47 hold on
48 plot(yest,'r');
49 h legend = legend('y(t)','y e(t)');
50 set(h legend,'FontSize',10);

O grafico que representa os sinais de y(t) e yb(t) esta ilustrado na Figura 3.

Figura 3: Plot dos dados de y(t) e yb(t)

6
E importante perceber que os dados de sada y(t) e muito proximo dos dados
yb(t) estimados pelo modelo 9. Atraves da Figura 3 nao e possvel ver os dois
graficos pois eles estao se sobrepondo.

Ao dar um zoom no grafico da pra ver que existe um pequeno erro, que em
muitas aplicacoes pode ser desprezado.A Figura 4 ilustra o erro apresentado na
estimacao do sistema.

Figura 4: Plot dos dados de y(t) e yb(t)

O modelo 9 e o melhor modelo, que melhor representa o sistema, porem nao


e o mais simples, pois dentre os modelos estimados, este e o que apresenta maior
quantidades de parametros (b0, b1, b2, a1, a2, a3).

Utilizando os parametros estimados podemos definir a funcao transferencia do


sistema estimado como:

7
0.2738 + 0.4689z 1 0.2469z 2
Gp(z 1 ) =
1 2.782z 1 + 2.752z 2 0.9731z 3
A resposta ao degrau do modelo estimado e mosrado na Figura 5.

Figura 5: Resposta ao degrau do modelo estimado y(t) e yb(t)

A Tabela 2 apresenta os ndices da resposta ao degrau do sistema.

Tabela 2: Informacoes da resposta ao degrau


RiseTime: 59.0612
SettlingTime: 1.5300e+03
SettlingMin: -7.8763e+25
SettlingMax: -7.1768e+25
Overshoot: 0
Undershoot: 0
Peak: 7.8763e+25
PeakTime: 1.5305e+03

O seguinte codigo em Matlab foi escrito para verificar a resposta ao degrau do


modelo estimado.

8
1 b0 = -0.2738; b1 = 0.4689; b2 = -0.2469; % Parametros do modelo
2 a1 = -2.7822; a2 = 2.7517; a3 = -0.9731;
3
4 numz = [b0 b1 b2];
5 denz = [1 a1 a2 a3];
6 Ts = 0.5;
7
8 gpz = tf(numz,denz,Ts,'variable','z-1'); % Funcao transferencia
9 gpz
10
11 [y,t] = step(gpz); % Resposta ...
ao degrau
12 stepResults = stepinfo(y,t);

03. Em um teste experimental de identificacao de sistemas as medidas podem


ser insuficientes se a planta nao e suficientemente excitada para uma sequencia
de entrada. Como um exemplo, se a entrada permanece constante, entao nao se
obtem qualquer informacao dinamica e a matriz de covariancia e singular se nen-
hum rudo esta presente na experimentacao. Na existencia de rudo a matriz de
covariancia torna-se nao-singular mas com um condicionamento inadequado.

Considere o seguinte conjutos de medidas:

Tabela 3: Sistema 1
Amostras Entrada Sada
0 0 0
1 1 0.18
2 1 0.33
3 1 0.45
4 1 0.55
5 1 0.67

9
Tabela 4: Sistema 2
Amostras Entrada Sada
0 0 -0.1274
1 0.01 0.5560
2 0.01 -1.0940
3 0.01 -0.7268
4 0.01 1.4100
5 0.01 -0.6139
6 0.01 0.2441
7 0.01 -1.5790
8 0.01 -0.3935
9 0.01 -0.7623
10 0.01 -0.5417

b0 z 1
Obter um modelo de primeira ordem discreto da forma G
cp (z 1 ) =
1 + a1 z 1
aplicando o estimador dos mnimos quadrados nao-recursivo

Avaliar os modelos estimados com o ndice de condicionabilidade,


P IC1 =
(yb
y) 2
kP k2 kP 1 k2 e o coeficiente da correlacao multipla IC2 = 1 P
(yy)2

Solucao: Para obter um modelo de primeira ordem dos sistemas apresentados,


foi utilizado a estimacao atraves do metodo dos mnimos quadrados nao-recursivo
utilizando a ferramenta Matlab. A seguir sao apresentados o codigos referente a
estimacao do Sistema 1 e do Sistema 2, a funcao transferencia Gp (z 1 ), o grafico
de y(t) e yb(t) e os calculos de IC1 e IC2 baseado nas formulas apresentadas .

1 % Questao 03 - Lista 01 - Sistema 1


2 u = [ 0 1 1 1 1 1]';
3 y = [ 0 0.18 0.33 0.45 0.55 0.67]';
4

5 N = length(u); Y=[]; fi =[];


6
7 for i=1:N
8 if i <= 1
9 y1=0; u1=u(1);
10 else
11 y1 = y(i-1);
12 u1 = u(i-1);
13 end
14 Y = [Y; y(i)]; fi = [fi;-y1 u1];
15 end

10
16
17 teta = inv(fi'*fi)*fi'*Y;
18 a1 = teta(1); b0 = teta(2);
19 yest(1) = b0*u(1);
20
21 for t=2:N
22 yest(t) = -a1*y(t-1) + b0*u(t-1);
23 end
24
25 yest = fi*teta;
26
27 J = 0; S = 0;
28 y mean = mean(y);
29

30 for i=1:N
31 e(i) = y(i) - yest(i);
32 J = J + e(i)2;
33 S = S + (y(i) - y mean)2;
34 end
35 P = inv(fi'*fi);
36 IC1 = norm(P)*norm(inv(P));
37 IC2 = 1 - (J/S);
38
39 plot(y,'g');
40 hold on
41 plot(yest,'r');
42 legend('y(t)','y e(t)');

cp (z 1 ), IC1 e IC2 do Sistema 1 sao:


OG

cp (z 1 ) = 0.1032z 1
G
1 1.0337z 1
IC1 = 25.6090
IC2 = 0.9738
A Figura 6 ilustra os sinais y(t) e yb(t) referente ao Sistema 1.

11
Figura 6: Sinais y(t) e yb(t) do Sistema 1

1 % Questao 03 - Lista 01 - Sistema 2


2 u = [ 0 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01]';
3 y = [ -0.1274 0.5560 -1.0940 -0.7268 1.4100 -0.6139 0.2441 ...
-1.5790 -0.3935 -0.7623 -0.5417]';
4

5 N = length(u); Y=[]; fi =[];


6
7 for i=1:N
8 if i <= 1
9 y1=0;u1=u(i);
10 else
11 y1 = y(i-1);
12 u1 = u(i);
13 end
14 Y = [Y; y(i)]; fi = [fi;-y1 u1];
15 end

12
16
17 teta = inv(fi'*fi)*fi'*Y;
18 a1 = teta(1);bb0 = teta(2);
19 yest(1) = b0*u(1);
20
21 for t=2:N
22 yest(t) = -a1*y(t-1) + b0*u(t);
23 end
24
25 yest = fi*teta;
26 J = 0; S = 0; y mean = mean(y);
27
28 for i=1:N
29 e(i) = y(i) - yest(i);
30 J = J + e(i)2;
31 S = S + (y(i) - y mean)2;
32 end
33 P = inv(fi'*fi);
34 IC1 = norm(P)*norm(inv(P));
35 IC2 = 1 - (J/S);
36
37 plot(y,'g');
38 hold on
39 plot(yest,'r');
40 legend('y(t)','y e(t)');

cp (z 1 ), IC1 e IC2 do Sistema 1 sao:


OG
1
cp (z 1 ) = 44.4119z
G
1 + 0.3046z 1
IC1 = 8791.8
IC2 = 0.0963
E importante notar que o valor de IC2 e bastante proximo de 1 no Sistema 1.
Esse coeficiente indica o quanto proximo esta a estimacao do modelo. Portanto a
sada estimada no Sistema 1 esta muito proximo da real devido ao seu

IC2 = 0.9738

enquanto que a aproximacao do Sistema 2 apresenta um modelagem pobre e im-


precisa com
IC2 = 0.0963
.
A Figura 7 ilustra os sinais y(t) e yb(t) referente ao Sistema 2.

13
Figura 7: Sinais y(t) e yb(t) do Sistema 2

04. O sistema de controle da Figura (2) esta sujeito a uma perturbacao a partir
de uma fonte e(t). Admitindo um perodo de amostragem e 0.5 segundos, deter-
minar a funcao de transferencia discreta do sistema na forma CAR (Controlled
Auto-Regressive) de acordo com a seguinte representacao:
A(z 1 )y(t) = B(z 1 )u(t d) + e(t)

Figura 8: Sistema de controle

14
Estruturar os vetores de medidas e parametros para aplicacao do estimador
dos mnimos quadrados nao-recursivo.

Solucao: A representacao na forma CAR (Controlled Automatic Regressive)


precisa da funcao transferencia discreta em z 1 . A funcao transferencia do sistema
em s e dada por:
0.5
Gp (s) =
(s + 0.5)(s + 1)
Transformando a funcao transferencia para a forma discreta, considerando o
tempo de amostragem Ts = 0.5 segundos obtem-se a seguinte funcao transferencia:
0.04893z + 0.03811
Gp (z) =
z 2 1.385z + 0.4724
Transformando a funcao transferencia discreta em funcao de z para em funcao de
z 1 obtem-se:
1 0.04893 + 0.03811z 1
Gp (z ) =
1 1.385z 1 + 0.4724z 2
Desta forma, considerando d = 0, a funcao transferencia na forma de CAR (Con-
trolled Automatic Regressive sera:

(1 1.385z 1 + 0.4724z 2 )y(t) = (0.04893 + 0.03811z 1 )u(t) + e(t)

Para a realizacao desta transformacao foi utilizado o seguinte codigo no Matlab:

1 G = zpk([], [-0.5 -1], 0.5)


2 Ts = 0.5;
3 G d = c2d(G,Ts,'zoh');
4 G d = tf(G d);
5
6 G d % Funcao transferencia em z
7 Gpz = tf([0.04893 0.03811], [1 -1.385 ...
0.4724],Ts,'variable','z-1');
8 Gpz % Funcao transferencia em z-1

05. Um engenheiro de controle realiza um ensaio em um sistema de controle


de temperatura com perodo de amostragem de 0.5 segundos. A experimentacao
conduz as seguintes medidas da planta:

15
Tabela 5: Sistema de controle de temperatura
Amostras Entrada Sada
0 1.0838 0
1 1.0020 0.4225
2 1.0681 0.6559
3 1.0379 0.8137
4 1.0832 0.9039
5 1.0503 0.9715
6 1.0709 1.0046

Aplicar o estimador dos mnimos quadrados nao-recursivo no conjunto de


medidas e obter um modelo linear discreto de primeira ordem da forma:

b0
Gp (z) =
z + a1
Discutir a precisao do modelo matematico discreto estimado em funcao da
localizacao dos polos de malha aberta. Para auxiliar na analise do mod-
elo estimado admitir que a planta tem a seguinte funcao de transferencia
contnua:

10
Gp (s) =
(s + 1)(s + 10)

Solucao:

A funcao de transferencia Gp(z)


c estimada e dada por:
0.3914
Gp (z) =
z 0.6093

A funcao de transferencia contnua Gp(s)


c equivalente seria:
0.9928
Gp (s) =
s + 0.9909
As Figuras 9, 10 e 11 mostram respectivamente a comparacao dos sinais real e
estimado de sada ( y(t) e yb(t) ), a comparacao da resposta ao degrau do sistema
original e estimado e o diagrama de polos e zeros do sistema original e o estimado.

16
Figura 9: Comparacao dos sinais y(t) e yb(t)

Figura 10: Comparacao das respostas ao degrau dos sistemas Gp(s) e Gp(s)
c

17
E possvel ver nas Figuras 9 como a sada estimada se aproxima da sada original
do sistema. As curvas praticamente se sobrepoe. A resposta ao degrau apresentada
na Figura 10 tambem apresenta um resultado satisfatorio, validando a qualidade
do modelo estimado.

Figura 11: Diagrama de polos e zeros dos sistemas Gp(s) e Gp(s)


c

O sistema original possui dois polos, um em s = -1 e outro em s = -10.

O sistema estimado possui apenas um polo localizado em s = -0.9909.

O codigo Matlab utilizado foi:

1 % Questao 05 da Lista 01 (Aplicar o estimador dos MQ nao ...


recursivo)
2 % Gp(z) = b0/z+a1
3
4 Ts = 0.5;
5 u = [1.0838 1.0020 1.0681 1.0379 1.0832 1.0503 1.0709];
6 y = [0 0.4225 0.6559 0.8137 0.9039 0.9715 1.0046];
7 N = length(u);
8 Y=[]; fi =[];
9
10 for i=1:N

18
11 if i <= 1
12 y1=0;u1=0;
13 else
14 y1 = y(i - 1); u1 = u(i - 1);
15 end
16 Y = [Y; y(i)]; fi = [fi;-y1 u1];
17 end
18

19 teta = inv(fi'*fi)*fi'*Y;
20
21 a1 = teta(1); b0 = teta(2);
22 yest(1) = 0;
23 for t=2:N
24 yest(t) = -a1*y(t-1) + b0*u(t);
25 end
26
27 a1
28 b0
29
30 plot(y,'g');
31 hold on
32 plot(yest,'r');
33 legend('y(t)','y e(t)');
34
35 numz est = [b0];
36 denz est = [1 a1];
37 gpz est = tf(numz est,denz est,Ts);
38 gpz est
39
40 gp = zpk([], [-1,-10],10);
41 gp est = d2c(gpz est,'zoh');
42 figure, step(gp,gp est);
43 figure, pzmap(gp,gp est);
44 h legend = legend('G(s)','G e(s)');
45 gp
46 gp est

06. Refazer o Ex.5.2 do Coelho calculando a funcao custo.


Utilizando a equacao 6:
e(t) = y(t) yb(t)
t
X
J(t) = e2 (t) (6)
k=1

o custo J foi calculado para o numero de amostras variando de 7 a 14.

A Tabela 6 apresenta os custos com os respectivos parametros do modelo e a


quantidade de amostras utilizada.

19
Solucao:

Tabela 6: Tabela de custos J


N b0 b1 J
7 0,3214 2,4464 0,3536
8 0,6071 2,2559 0,3481
9 0,6611 2,2222 0,3542
10 0,5727 2,2727 0,3437
11 0,6621 2,1162 0,3357
12 0,6063 2,1990 0,3344
13 0,6814 2,1043 0,3358
14 0,6107 2,1813 0,3339

O codigo Matlab utilizado foi:

1 % Questao 06 da Lista 01
2 clear all
3 x = [1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 0.8 0.6 0.4 0.2];
4 y = [0.9 2.5 2.4 1.3 1.2 0.8 0 0.9 1.4 1.9 2.3 2.4 2.3 1.3 1.2]';
5 N = 14;
6
7 for k = 7:N
8
9 fi = [x(2:k + 1) ; x(1:k)]';
10 y N = y(2:k + 1);
11

12 teta est = inv(fi'*fi)*fi'* y N;


13
14 y len = length(y);
15 y est(1) = 0;
16 J(k) = 0;
17

18 for i = 2:y len


19 y est(i) = teta est(1)*x(i) + teta est(2)*x(i - 1);
20 err(i) = (y(i) - y est(i));
21 J(k) = J(k) + err(i)2;
22 end
23 b0(k) = teta est(1);
24 b1(k) = teta est(2);
25 J(k) = J(k)/2;
26 end
27 J = J';
28 b0 = b0';
29 b1 = b1';

20
Anexo

Anexo com os codigos em Matlab para estimacao dos modelos da questao 2.

Modelo 01
0.3647
Gp1 (z 1 ) =
1 1.0204z 1

1 % Questao 02 - Dados daisy - Wing Flutter


2 close all; clear all; clc;
3 load flutter.dat
4 u = flutter(:,1); y = flutter(:,2); N = length(u);
5 Y=[]; fi =[];J=0;
6
7 for i=1:N
8 if i <= 1
9 y1=0; u1=u(i);
10 else
11 y1 = y(i-1); u1 = u(i);
12 end
13 Y = [Y; y(i)]; fi = [fi;-y1 u1];
14 end
15

16 teta = inv(fi'*fi)*fi'*Y;
17
18 a1 = teta(1); b0 = teta(2);
19 yest = fi*teta;
20
21 e = (y - yest).2;
22 J = sum(e)/2;
23 J
24
25 plot(y,'g');
26 hold on
27 plot(yest,'r');
28 legend('y(t)','y e(t)');

21

Вам также может понравиться