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

UNIVERSIDADE FEDERAL DE UBERLNDIA

Faculdade de Engenharia Eltrica

IDENTIFICAO DE SISTEMAS NO LINEARES

Prof. Marcio Jos Cunha

Identificao de um forno eltrico utilizando modelos


NARMAX

Frederico Duarte Fagundes


Luis Paulo Fagundes

Uberlndia
2014

Resumo

A identificao de sistemas tem sido usado como uma importante ferramenta para
simulao, predio e controle de sistemas dinmicos. As dificuldades inerentes ao
modelamento faz com que este tipo de tcnica seja ideal para modelamento de
sistemas complexos. Neste contexto, o presente trabalho tem por objetivo realizar a
identificao de um forno eltrico utilizando modelos NARMAX, bem como
apresentar uma descrio detalhada dos passos tomados para a identificao do
sistema.
Palavras-chave: Identificao de sistemas, modelos NARMAX, modelos caixa preta, forno eltrico.

Abstract
The system identification have been used as an important tool for simulation,
prediction and control of dynamical systems. The intrinsics difficulties in
modeling,causes this kind of technique be ideal for modeling complex systems. In
this context, this work aims to make the identification of an electric oven using
NARMAX models and presents a detailed description of the steps taken for system
identification.
Keywords: System identification, NARMAX models, black box models, electric oven.

Sumrio

Introduo.....................................................................................................Pg 04
Desenvolvimento..........................................................................................Pg 07
Concluso.....................................................................................................Pg 24
Referncias Bibliogrficas............................................................................Pg 25
Apndice A (Cdigo fonte do programa).....................................................Pg 26
Apndice B (Tabela com regressores candidatos)........................................Pg 27
Apndice C (Funes usadas estimao do modelo)...................................Pg 28

1 - Identificao de sistemas
Qualquer sistema, considerado como uma relao de causas e efeitos pode ser
representado matematicamente. Os modelos matemticos possibilitam, por exemplo, a
simulao do comportamento do sistema sem a necessidade da construo fsica do mesmo.
Para que isso seja possvel, necessrio que o modelo seja fiel ao sistema (BILLINGS, 2013;
LJUNG, 1999; NELLES, 2001).
Uma abordagem, para obteno do modelo matemtico, o modelamento analtico
(BILLINGS, 2013), ou modelagem caixa branca (AGUIRRE, 2007; NELLES, 2001), onde
um conhecimento profundo do sistema a ser modelado necessrio. O modelo obtido com
base na diviso do sistema em subsistemas (LJUNG, 1999), onde feita uma anlise dos
fenmenos fsico-qumicos envolvidos e em relaes matemticas conhecidas.
A identificao de sistemas estuda tcnicas alternativas de modelagem matemtica.
O modelo obtido com a medio das entradas e sadas do processo, por isso pouco ou
nenhum conhecimento prvio do sistema necessrio. So tcnicas aplicveis a qualquer
sistema e so relativamente rpidas (AGUIRRE, 2007; BILLINGS, 2013; LJUNG, 1999).
Um modelo apenas uma representao aproximada do sistema. Por isso, no h um
modelo que represente todas as caractersticas de um sistema real, compreendendo, sim,
algumas caractersticas. Um modelo com muitas caractersticas algo intangvel.
Desenvolvendo modelos de forma aproximado, so feitas simplificaes. O modelo ento
testado e, se for considerado inadequado, reavaliado (AGUIRRE, 2007). Ljung explica bem
esse conceito:
Um sistema real um objeto de um tipo diferente dos nossos modelos matemticos.
De certa maneira, h uma impenetrvel, porm transparente tela entre nosso mundo
de descries matemticas e o mundo real. Ns podemos olhar atravs dessa janela e
comparar certos aspectos do sistema fsico com sua descrio matemtica, mas ns
nunca podemos estabelecer uma conexo exata entre eles. A questo de
susceptibilidade natural para descrio matemtica possui aspectos filosficos
profundos, e em termos prticos ns temos que ter uma viso mais pragmtica dos
modelos. Nossa aceitao dos modelos deve ser mais guiada pela utilidade do que
pela verdade. Entretanto, ns podemos ocasionalmente usar um conceito de
sistema verdadeiro, definido em termos de um modelo matemtico. Essa fico
til para comparar mtodos de identificao e entender suas propriedades. Em certos
contextos ns assumimos que os dados observados foram gerados de acordo com

regras matemticas bem-definidas, o que com certeza uma idealizao (LJUNG


1999, p. 6, traduo nossa).

Para as tcnicas de identificao de sistemas, as etapas, de um modo geral, so


(LJUNG, 1999):
1. Testes dinmicos e coleta de dados: dados so necessrios para gerar o
modelo e muitas vezes no esto disponveis, sendo necessrio testes para
extrair informao dinmica do sistema. Problemas comuns nesta etapa
ocorrem na escolha dos sinais de excitao, na execuo do teste e na escolha
do tempo de amostragem.
2. Representao matemtica: escolha do tipo de modelo a ser utilizado, sua
estrutura, estimao dos parmetros, etc. Essas escolhas so feitas com base
nas caractersticas do sistema e no conhecimento e experincia de quem
projeta o modelo.
3. Validao do modelo: com o modelo obtido, ou o conjunto deles, verifica-se
o seu desempenho. feita uma validao para atestar que o(s) modelo(s)
incorporam as caractersticas desejadas. A obteno de modelos diferentes
til para comparao, visto que algum pode ter desempenho melhor, em
alguns aspectos, que outros.
Os possveis motivos que podem levar um modelo a ser considerado inadequado, na
terceira etapa, so (LJUNG, 1999):

O procedimento numrico falho em achar o melhor modelo para o critrio


estabelecido;

O critrio no foi bem estabelecido;

Escolha inapropriada de modelos, pois nenhum foi considerado satisfatrio;

Os dados no foram informativos o suficiente para a seleo dos modelos.

A maior parte da aplicao da identificao consiste, de fato, em encontrar esses


problemas. Isso feito de forma iterativa, guiada pela informao prvia e os problemas
encontrados (LJUNG, 1999). A FIGURA 1.1 resume o processo de identificao.

Figura 1.1 O ciclo de identificao de sistemas


Fonte: adaptado de Ljung 1999

Com base no exposto, o presente trabalho tem por objetivo realizar a identificao do
modelo de um forno eltrico que foi apresentado em (AGUIRRE, 2007).
O forno eltrico utilizado para a identificao consiste em uma caixa metlica com
dimenses de 15x10x31 cm de alumnio com espessura de 2 mm. Uma lmpada eltrica de
200W como elemento de aquecimento.
O fato do forno no ser isolado termicamente faz com que variaes na temperatura
ambiente afetem seu comportamento dinmico.
Como sensor de temperatura foi utilizado um resistor de coeficiente de temperatura
negativo (NTC) ligado em um conversor A/D de 12 bits (RODRIGUES, 1996) ligado a um
computador, a figura 1.2 mostra um esquema do sistema utilizado para realizar a
identificao.

Figura 1.2 Diagrama em blocos do sistema utilizado para identificao


Fonte: RODRIGUES, 1996.

Neste trabalho ser utilizado um modelo NARMAX e o algoritmo de GolubHouseholder para determinao da estrutura e dos parmetros simultaneamente. A seguir ser
descrito os procedimentos realizados para identificao do sistema, bem como os resultados.

2 - Desenvolvimento
Passo 1 Coleta dos Dados
O primeiro passo para a identificao de um sistema a coleta dos dados que possam
fornecer informaes para a identificao. No presente caso a coleta no foi realizada, pois se
partiu de duas massas de dados fornecidas juntamente com o livro Introduo Identificao
de Sismteas Tcnicas Lineares e No-lineares aplicadas a Sistemas Reais, de Luis Antnio
Aguirre. Contudo ainda assim algum tratamento sobre os dados coletados foi necessrio.
Para coletar os dados do sistema deve-se utilizar um sinal de entrada suficientemente
amplo em frequncia e amplitude para que possa assim, excitar as dinmicas de interesse
(RODRIGUES, 1996). No sistema em estudo a entrada era o sinal de tenso aplicado ao
TRIAC e a sada a temperatura medida pelo sensor NTC.
No caso do forno, foi utilizado um rudo quantizado como sinal de excitao, isto ,
um algoritmo sorteia uma amplitude e mantm esta constante durante um tempo prestabelecido, e ento sorteia um novo valor e o mantm pelo mesmo perodo de tempo, a
figura 2.1 e 2.2 mostra o sinal de entrada e o respectivo sinal de temperatura para as duas
massas utilizadas na identificao F0407 e F0307.

Figura 2.1 Massa de dados F0407, sinal de entrada em azul e sinal de sada em vermelho.
Fonte: Adaptado de (RODRIGUES, 1996).

Figura 2.2 Massa de dados F0307, sinal de entrada em azul e sinal de sada em vermelho.
Fonte: Adaptado de (RODRIGUES, 1996).

O sinal foi amostrado com perodo de amostragem de 70 segundos, contudo o que se


observa na figura 2.1 no eixo das abscissas a quantidade de amostras e no o tempo.
A maior parte das variveis de interesse em sistemas reais contnua no tempo,
contudo os computadores digitais apresentam ciclos de trabalho de forma que o sinal deve ser
8

amostrado em tempos discretos. Assim o perodo entre duas amostras consecutivas


denominado tempo de amostragem Ts.
O tempo de amostragem deve ser suficientemente curto para manter as caractersticas
do sinal original, na prtica a frequncia de amostragem normalmente escolhida entre 5 e 10
vezes maior do que a maior frequncia de interesse (AGUIRRE, 2007).
Outro problema relacionado a tempos de amostragem muito pequenos em relao
matriz de regressores. Os elementos dessa matriz incluem termos do tipo
)
) ) ... e
)
) ), observe que se Ts se aproxima de zero,
(
(
) se torna muito prximo de (
) ), de forma que as colunas da matriz de
regressores tendem a se tornar linearmente dependentes.
Como nem sempre se tem o conhecimento de qual a maior frequncia de interesse,
(AGUIRRE, 2007) prope um critrio simples que tem dado uma boa indicao da frequncia
de amostragem a ser usada em diversas situaes reais.
)
Este critrio consiste em determinar uma taxa com
de forma que
). Para isso faz-se uso de um intervalo de amostragem bem pequeno para que y*(k) se
torne um sinal superamostrado. Em seguida determina-se a funo de autocovarincia linear e
no-linear. Tal procedimento feito para determinar o grau de correlao (redundncia) entre
observaes adjacentes do sinal y*(k) (AGUIRRE, 2007).
As funes de autocovarincia linear e no-linear so determinadas respectivamente
da seguinte maneira:
)

))

))

(2.1)

Com estas funes determinadas encontra-se o mnimo das duas


desses mnimos passar a ser o valor de trabalho,
.

(2.2)
e

, o menor

Este valor de trabalho avaliado de forma a satisfazer o seguinte critrio,


(2.3)
Caso seja satisfeita a condio (2.3), o sinal est adequadamente amostrado, caso
contrrio selecionada uma taxa pela qual o sinal original decimado e novamente
calculada as funes de autocovarincia, e o novo valor de
avaliado de acordo com (2.3).

Na prtica, a autocovarincia pode ser determinada da seguinte maneira,


)

))

(2.4)
))

Um programa em matlab para determinar a autocovarincia linear e no linear pode


ser encontrado no apndice A.
Para o caso do forno, utilizando a massa de dados F0407, obteve-se os seguintes
grficos de autocovarincia linear e no linear.

Figura 2.3 Autocovarincia linear do sinal de sada do forno utilizando a massa de dados
F0407. Fonte: Elaborao prpria.

Figura 2.4 Autocovarincia No-Linear do sinal de sada do forno utilizando a massa de


dados F0407. Fonte: Elaborao prpria.
10

O primeiro mnimo desses dois grficos ocorre em aproximadamente = 28, o que no


satisfaz a condio 2.3. Assim o sinal deve ser decimado novamente, at que 2.3 seja
satisfeita.
O sinal foi decimado utilizando
e no linear foram obtidas.

= 3, e as seguintes funes de autocovarincia linear

Figura 2.5 Autocovarincia Linear do sinal de sada do forno decimado pelo fator de

=3

utilizando a massa de dados F0407. Fonte: Elaborao prpria.

Figura 2.6 Autocovarincia No-Linear do sinal de sada do forno decimado pelo fator de
= 3 utilizando a massa de dados F0407. Fonte: Elaborao prpria.
11

Agora possvel observar que o mnimo das autocovarincia linear e no linear ocorre
prximo de
decimado

= 15, valor este que satisfaz a condio 2.3. Assim o sinal amostrado ser
= 3, o que corresponde a dizer que o sinal foi amostrado a uma taxa de 210 s.

Para se ter uma noo da importncia de adequar o sinal escolhendo uma taxa de
decimao apropriada, o sistema foi identificado sem utilizar uma taxa de decimao,
simulado e comparado com a massa de dados F0307. Observe a figura 2.7.

Figura 2.7 Simulao de um sistema identificado sem utilizar uma taxa de decimao
adequada. Fonte: Elaborao prpria.

A simulao foi inicializada com os 22 primeiros dados de sada da massa de dados


F0307, isto , a simulao foi efetivamente feita a partir do vigsimo terceiro termo, no
grfico pode-se observar a coincidncia das duas curvas at a vigsima terceira amostra,
posteriormente os dados divergem.
Observa-se que o sinal apesar de acompanhar a dinmica apresenta certa discrepncia,
posteriormente ser apresentada a simulao utilizando uma taxa de decimao apropriada e
ento ser possvel comparar os resultados.

Passo 2 Determinao de No-Linearidades


Com o intuito de descobrir qual modelo se adequaria melhor para a identificao, um
modelo linear ou um modelo no linear, foi aplicado um teste de determinao de no
linearidade, apresentado em (BILLINGS, 2013).
12

O teste consiste em calcular a funo de correlao cruzada do sinal de sada e do sinal


de sada ao quadrado. De forma que a seguinte condio seja satisfeita:
)

))

))

(2.5)

sistema linear.
)

(2.6)

sistema no linear.

Figura 2.8 Teste de no linearidade utilizando funo de correlao cruzada.


Fonte: Elaborao prpria.

Como pode ser observado na figura 2.8, a correlao do sistema no permaneceu


dentro do intervalo de confiana, o que indica que a correlao do sinal de entrada e entrada
ao quadrado no igual a zero, assim conclui-se que o sistema apresenta no linearidades, e o
modelo a ser considerado para efeito de identificao deve ser no linear.

Passo 3 Deteco da estrutura


No presente trabalho optou-se por trabalhar com uma estrutura chamada NARMAX
polinomial.
Um modelo polinomial NARMAX pode ser representado por
)

)
)]

Sendo

(2.7)

) os efeitos que no podem ser bem representados por

.
13

Matematicamente essa funo pode ser expandida por:


(2.8)
)

Sendo que
(2.9)

E o limite superior
).
fatores do tipo

se o somatrio se refere a fatores do tipo

) ou

para

Como exemplo, iremos expandir a equao 2.8 utilizando l=3.


A expanso ser feita termo a termo deixando o somatrio

para o fim. Assim tem-se

para m=0 e p=0

Observe que o parntese omitido por ser correspondente a (n1...,n0), e os produtrios


existem por irem de 1 at 0. Assim para m=0 e p=0 s temos

no
.

Para m=1 e p=0, tem-se:


)
O produtrio de
).

) zero por ir de 1 at 0, temos assim o produtrio de

Note que o somatrio ainda no foi apresentado, como se tem apenas um termo
regressor, e esse termo se refere a o limite superior do produtrio ser tambm referente ,
logo se tem:
)

Para m=1 e p=1,


)

Como o somatrio de u seria de 2 at 1, este no existir. Observando que agora o


termo avaliado y, o limite superior ser , logo:

14

Para m=2 e p=0,


)

E como agora existe dois termos de u, ter-se-, dois somatrios referentes a

Para m=2 e p=1,


)

E desta vez como os termos se referem a y e a u, os limites superiores sero referentes


e
.

Para m=2 e p=2,

Para m=3 e p=0,


)
E neste caso trs somatrios referentes

Para m=3 e p=1,

Para m=3 e p=2,

Para m=3 e p=3

15

) seria a soma de todos estes passos.

Assim a funo

A expanso de um modelo NARMAX necessria para descobrir quais termos sero


candidatos a fazer parte da identificao, obviamente alguns critrios devem ser seguidos para
selecionar dentre os termos candidatos, quais faro efetivamente parte do modelo final.
Deve-se atentar durante o processo de expanso, que alguns termos podem vir a
repetir, assim um termo que seja multiplicado por uma constante
, poderia ser agrupado
com um outro termo idntico, que fosse multiplicado por uma outra constante
, gerando
um termo de constante (
)
Para o projeto do forno, foi utilizando um modelo NARMAX com l=3 e
A expanso no ser apresentada neste trabalho, mas foram encontrados 136 termos
regressores, e aps uma racionalizao dos termos repetidos, os termos candidatos foram
reduzidos para 84 termos, e so apresentados no anexo B.
O critrio utilizado para determinar quais termos faria parte do modelo a ser
identificado, foi o critrio ERR, apresentado em (AGUIRRE, 2007).
O critrio da taxa de reduo de erro (ERR) utiliza os algoritmos de mnimos
quadrados ortogonais para determinar a contribuio de cada regressor ao modelo.
Segundo (Aguirre, 2007), a soma dos valores quadrticos de y(k) pode ser definida
como,

(2.10)

Esta equao nos diz que a parcela no explicada pelos regressores igual soma dos valores
quadrticos do vetor de resduos
).
Assim define-se a taxa de reduo de erro (ERR) como,

(2.11)

A equao 2.8 pode ser entendida da seguinte maneira, quanto mais prximo
estiver de
, maior ser o valor de

, atingindo um mximo de 1, o que
significa dizer que o termo i, em questo, explica totalmente os dados de y.
Logo para selecionar os termos que faro parte da estrutura, so utilizados aqueles que
apresentam maior ERR.
Passo 4 Estimao dos parmetros

16

Para realizar a estimao dos parmetros do modelo, foi utilizado o mtodo dos
mnimos quadrados e o algoritmo de Golub-Householder (Aguirre, 2007), para determinao
da taxa de reduo do erro.
Definindo-se a equao matricial,

(2.12)

Onde,
)
)

];

)
)

[ ]

(2.13)
]

)
)

(2.14)
], i=1,2,...,

)
Na equao 2.12,
representa a matriz de regressores, representa os parmetros
estimados e representa o erro de estimao, isto , o quanto o estimado difere do y real.
Assim considerando uma matriz de regressores candidatos
)

a matriz de regressores
como,

)
)
)
)

, como,
)

(2.15)

montada utilizando as sadas medidas do sistema, e seria dada


)
)
)
)

)
)
)
)

)
)
)
)

)
)
)
)

)
)
)
)

)
)
)
)

(2.16)

Onde as sadas ao instante anterior a 0 so consideradas 0.


Considerando a equao
(2.17)
Para se determinar , pode-se fazer.
(2.18)

(2.19)
17

Assim para a estimao dos parmetros do modelo, foi utilizado um algoritmo


presente no anexo C, que faz uso da funo myhouse que tem por objetivo determinar os
termos regressores que sero utilizados para a estimao do modelo. A funo myhouse foi
retirada dos arquivos de (Aguirre, 2007), e apresentada tambm no anexo C.
A estimao dos parmetros juntamente com o critrio de ERR, forneceu o seguinte
modelo para o forno eltrico,
)

))
)

)
)

(2.20)

A simulao deste sistema ser apresentada posteriormente.


Passo 5 Validao do Modelo Identificado
No presente trabalho optou-se por realizar a validao analisando os resduos de
identificao.
Segundo (Aguirre, 2007) a principal condio para que o estimador quadrtico no
seja polarizado que o erro seja um rudo branco, o que consiste em dizer que o erro deve ser
aleatrio.
O erro consiste na parte dos dados de identificao que o modelo no conseguiu
explicar, assim se o erro for completamente aleatrio, isto , se o erro for um rudo branco, o
modelo ter explicado tudo que havia para explicar, e o que no explicado devido a erros
aleatrios. Em contrapartida, caso o erro seja um rudo colorido, isto um indicio de que o
modelo no conseguiu explicar toda dinmica do sistema.
Uma forma de analisar se o erro rudo branco por anlise de correlao cruzada.
Contudo para sistemas no lineares, de se esperar que haja correlaes no lineares, assim
definido um conjunto de testes em (BILLINGS, 2013), que devem ser satisfeitos para validar
o modelo, segue abaixo as condies.

))

))

(2.21)

)]
)]
)
18

Sendo

) a funo impulso unitrio.

Um ponto muito importante para a anlise de resduos, que ela considera o


desempenho do modelo no conjunto de dados de identificao, visto que os resduos so
definidos como o erro do preditor de um passo frente (Aguirre, 2007).
A seguir so apresentados os resultados dos testes 2.21, sobre o modelo identificado
2.20.
O clculo da funo de correlao cruzada foi feita utilizando a funomyccf obtida
no livro (Aguirre, 2007), e apresentada no anexo C.

Figura 2.9 Teste de correlao cruzada

. Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996).


Fonte: Elaborao prpria.

Figura 2.10 Teste de correlao cruzada

. Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996).


Fonte: Elaborao prpria.

19

Figura 2.11 Teste de correlao cruzada

. Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996).


Fonte: Elaborao prpria.

Figura 2.12 Teste de correlao cruzada

. Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996).


Fonte: Elaborao prpria.

Figura 2.13 Teste de correlao cruzada

). Em azul modelo identificado e vermelho o

modelo identificado em (Rodrigues, 1996).


Fonte: Elaborao prpria.

Pela anlise de resduos, observa-se que a figura 2.9 muito semelhante a funo
impulso unitrio, o que satisfaz a condio 2.21, as figuras 2.10, 2.11 e 2.13 apresentam um
pequeno intervalo que est fora do intervalo de confiana, o que poderia levar a afirmao de
20

que a funo de correlao cruzada no zero, contudo tal intervalo muito pequeno para se
fazer tal considerao.
Outro ponto interessante que apesar do modelo obtido neste trabalho ser bastante
diferente do modelo obtido em (Rodrigues, 1996), a anlise de resduos mostrou que ambos
os modelos so vlidos.
A anlise estatstica mostrou que os resduos so aleatrios e, portanto no houve
polarizao do estimador, contudo no comprova se o modelo capaz de reproduzir a
dinmica do forno eltrico, para isso ser necessrio uma simulao dinmica, o que foi feito
no prximo passo.
Passo 6 Simulao Dinmica
Para simulao de um modelo, deve-se utilizar um conjunto de dados diferentes
daqueles utilizados na identificao do modelo (Aguirre, 2007), assim os dados para
simulao foi a massa de dados F0307.
Existem diversas formas utilizadas para simular um sistema. Uma forma comum, mas
que no fornece bons resultados para o processo de identificao a predio um passo a
frente, neste tipo de simulao o valor estimado sempre identificado utilizando os dados
medidos de um passo anterior, fazendo com que os dados estimados sejam muito prximos
dos valores medidos. Esse tipo de simulao pode levar a enganos e fazer com que se pense
que o modelo melhor do que realmente . A figura 2.14 apresenta uma simulao um passo
a frente.

Figura 2.14 Predio de estados um passo a frente. Em azul os dados medidos, em verde a
simulao de um modelo um passo a frente, e em vermelho a simulao infinitos passos a frente.

Fonte: Elaborao prpria.

21

A forma mais adequada de simular um sistema a fim de observar que o mesmo


consegue satisfazer as dinmicas do sistema, simul-lo utilizando predio infinitos passos
a frente. Neste tipo de predio o modelo inicializado com algumas condies iniciais, e
aps algumas estimaes serem feitas, todas as outras estimaes so feitas utilizando dados
de estimao, isto , as estimaes passadas so incorporadas ao processo de estimao dos
passos futuros. Na figura 2.15 foi feito a simulao do sistema identificado e comparado com
o sistema identificado em (Rodrigues, 1996).

Figura 2.15 Simulao Infinitos passos a frente.


Fonte: Elaborao prpria.

Observa-se que o modelo obtido neste trabalho e o modelo obtido em (RODRIGUES,


1996) se aproximam, apesar de serem modelos diferentes.

22

Concluso
As tcnicas de identificao de sistemas utilizadas neste trabalho foram bastante
eficientes para identificao de sistemas no lineares. Foi possvel observar que todas as fases
de identificao de sistemas apresentam uma srie de cuidados que devem ser respeitados
para uma correta identificao.
Algumas etapas comuns da identificao de sistemas como o agrupamento de termos e
a incluso de resduos com o intuito de reduzir a polarizao no foram incorporados ao
presente trabalho, o que sugere que resultados melhores que os apresentados na figura 2.15
podem ainda ser obtidos. Como sugesto para trabalhos futuros sugere-se a utilizao destas
etapas para identificao do modelo, e anlise do quanto estas etapas podem melhorar um
modelo a ser indetificado.

23

Bibliografia
Aguirre, L. A. (2007). Introduo identificao de sistemas: tcnicas lineares e no lineares aplicadas
a sistemas reais (3 ed.). Belo Horizonte: UFMG.
BILLINGS, S. A. (2013). Nonlinear System Identification: NARMAX Methods in the Time, Frequency,
and Spatio-Temporal Domains. Wiley.
LJUNG, L. (1999). System Identification: Theory for the User (2. ed.). Englewood: PTR Prentice Hall.
NELLES, O. (2001). Nonlinear System Identification: From Classical Approaches to Neural Networks
and Fuzzy Models. Berlim, Alemanha: Springer Science & Business Media.
RODRIGUES, G. G. (s. d.). Identificao de Sistemas Dinmicos No-Lineares Utilizando Modelos
NARMAX Polinomiais Aplicao a Sistemas Reais. Dissertao de Mestrado, UFMG, Belo
Horizonte.

24

Apndice A (Funes de autocorrelao)


Autocovarincia Linear

%O valor de 84 corresponde ao atraso, e deve ser sempre menor ou igual ao


%tamanho dos dados.
for k=1:100
y1=y(1:100); %a quantidade de y's utilizado igual ao tamanho do
atraso
ruu(k)=0;
media=sum(y)/250;
%O valor que a soma dos vetores divido, deve ser sempre igual ao
%tamanho total dos dados que esto sendo utilizados, assim se o vetor y
%tivesse tamanho de 250 amostras, a mdia seria sob este valor.
for i=1:100-k
ruu(k)=ruu(k)+(y1(i)-media).*(y1(i+k)-media);
end
end
S=sum(y);
S=sqrt(s);
ruu=ruu/(S*S);
%Normalizao dos valores da autocovarincia
Autocovarincia No-Linear

%O valor de 84 corresponde ao atraso, e deve ser sempre menor ou igual ao


%tamanho dos dados.
for k=1:84
y1=y(1:84); %a quantidade de y's utilizado igual ao tamanho do atraso
ruuNL(k)=0;
%O valor que a soma dos vetores divido, deve ser sempre igual ao
%tamanho total dos dados que esto sendo utilizados, assim se o vetor y
%tivesse tamanho de 250 amostras, a mdia seria sob este valor.
media=sum(y)/84;
for i=1:84-k
ruuNL(k)=ruuNL(k)+((y1(i).^2)-media^2).*((y1(i+k).^2)-media^2);
end
end
S=sum(y.^2);
S=sqrt(S);
ruuNL=ruuNL/(S*S); %Normalizao dos valores da autocovarincia

25

Anexo B (Regressores candidatos a fazer parte do modelo)


Termos de primeiro grau

Termos de Segundo Grau

Termos de terceiro grau

u(k-1)
u(k-2)
u(k-3)
y(k-1)
y(k-2)
y(k-3)

u(k-1).^2
u(k-1)*u(k-2)
u(k-1)*u(k-3)
u(k-2).^2
u(k-2)*u(k-3)
u(k-3).^2

u(k-1).^3
u(k-1).^2*u(k-2)
u(k-1).^2*u(k-3)
u(k-1)*u(k-2).^2
u(k-1)*u(k-2)*u(k-3)
u(k-1)*u(k-3).^2
u(k-2).^3
u(k-2).^2*u(k-3)
u(k-2)*u(k-3).^2
u(k-3).^3

y(k-1)*u(k-1)
y(k-1)*u(k-2)
y(k-1)*u(k-3)
y(k-2)*u(k-1)
y(k-2)*u(k-2)
y(k-2)*u(k-3)
y(k-3)*u(k-1)
y(k-3)*u(k-2)
y(k-3)*u(k-3)
y(k-1).^2
y(k-1)*y(k-2)
y(k-1)*y(k-3)
y(k-2).^2
y(k-2)*y(k-3)
y(k-3).^2

y(k-1)*u(k-1).^2
y(k-1)*u(k-1)*u(k-2)
y(k-1)*u(k-1)*u(k-3)
y(k-1)*u(k-2).^2
y(k-1)*u(k-2)*u(k-3)
y(k-1)*u(k-3).^2
y(k-2)*u(k-1).^2
y(k-2)*u(k-1)*u(k-2)
y(k-2)*u(k-1)*u(k-3)
y(k-2)*u(k-2).^2
y(k-2)*u(k-2)*u(k-3)
y(k-2)*u(k-3).^2
y(k-3)*u(k-1).^2
y(k-3)*u(k-1)*u(k-2)
y(k-3)*u(k-1)*u(k-3)
y(k-3)*u(k-2).^2
y(k-3)*u(k-2)*u(k-3)
y(k-3)*u(k-3).^2
y(k-1).^2*u(k-1)
y(k-1).^2*u(k-2)
y(k-1).^2*u(k-3)
y(k-1)*y(k-2)*u(k-1)
y(k-1)*y(k-2)*u(k-2)
y(k-1)*y(k-2)*u(k-3)
y(k-1)*y(k-3)*u(k-1)
y(k-1)*y(k-3)*u(k-2)
y(k-1)*y(k-3)*u(k-3)
y(k-2).^2*u(k-1)
y(k-2).^2*u(k-2)
26

y(k-2).^2*u(k-3)
y(k-2)*y(k-3)*u(k-1)
y(k-2)*y(k-3)*u(k-2)
y(k-2)*y(k-3)*u(k-3)
y(k-3).^2*u(k-1)
y(k-3).^2*u(k-2)
y(k-3).^2*u(k-3)
y(k-1).^3
y(k-1).^2*y(k-2)
y(k-1).^2*y(k-3)
y(k-1)*y(k-2).^2
y(k-1)*y(k-2)*y(k-3)
y(k-1)*y(k-3).^2
y(k-2).^3
y(k-2).^2*y(k-3)
y(k-2)*y(k-3).^2
y(k-3).^3

Anexo C (Programas e funes para estimao dos parmetros do


modelo)
load F0407.DAT; %carrega dados de entrada e sada no workspace do matlab.
dados= F0407;
%define dados.
u=dados(:,1);
%coluna um os dados de entrada
uident=u(1:3:250); %decimao, para que y(k-1) no seja aproximadamente
igual a y(k-2), faz-se a decimao do sinal.
%que consiste em pegar as medidas a cada 3 amostra.
y=dados(:,2);
%coluna dois os dados de sada.
yident=y(1:3:250);
%Faz-se yest igual a y para poder pegar as 22
primeiras amostras como estados inicial
yest0=y;
%Inicializando os dados que sero utilizados posteriormente
para simulao do modelo.
axes(handles.axes1);
cla(handles.axes1);
axes(handles.axes2);
cla(handles.axes2);

%seta o axes1 como ativo


%limpa o axes1
%seta o axes1 como ativo
%limpa o axes1

% Montar matriz de regressores


reg1=ones(81,1);
% constante
reg2=uident(3:83);
% u(k-1)
reg3=uident(2:82);
% u(k-2)
reg4=uident(1:81);
% u(k-3)
reg5=yident(3:83);
% y(k-1)
reg6=yident(2:82);
% y(k-2)

27

reg7=yident(1:81);
% y(k-3)
reg8=reg2.^2;
% u(k-1).^2
reg9=reg2.*reg3;
% u(k-1)*u(k-2)
reg10=reg2.*reg4;
% u(k-1)*u(k-3)
reg11=reg3.^2;
% u(k-2).^2
reg12=reg3.*reg4;
% u(k-2)*u(k-3)
reg13=reg4.^2;
% u(k-3).^2
reg14=reg5.*reg2;
% y(k-1)*u(k-1)
reg15=reg5.*reg3;
% y(k-1)*u(k-2)
reg16=reg5.*reg4;
% y(k-1)*u(k-3)
reg17=reg6.*reg2;
% y(k-2)*u(k-1)
reg18=reg6.*reg3;
% y(k-2)*u(k-2)
reg19=reg6.*reg4;
% y(k-2)*u(k-3)
reg20=reg7.*reg2;
% y(k-3)*u(k-1)
reg21=reg7.*reg3;
% y(k-3)*u(k-2)
reg22=reg7.*reg4;
% y(k-3)*u(k-3)
reg23=reg5.^2;
% y(k-1).^2
reg24=reg5.*reg6;
% y(k-1)*y(k-2)
reg25=reg5.*reg7;
% y(k-1)*y(k-3)
reg26=reg6.^2;
% y(k-2).^2
reg27=reg6.*reg7;
% y(k-2)*y(k-3)
reg28=reg7.^3;
% y(k-3).^2
reg29=reg2.^2;
% u(k-1).^3
reg30=(reg2.^2).*reg3; % u(k-1).^2*u(k-2)
reg31=(reg2.^2).*reg4; % u(k-1).^2*u(k-3)
reg32=reg2.*reg3.^2;
% u(k-1)*u(k-2).^2
reg33=reg2.*reg3.*reg4; % u(k-1)*u(k-2)*u(k-3)
reg34=reg2.*reg4.^2;
% u(k-1)*u(k-3).^2
reg35=reg3.^3;
% u(k-2).^3
reg36=(reg3.^2).*reg4;
% u(k-2).^2*u(k-3)
reg37=reg3.*reg4.^2;
% u(k-2)*u(k-3).^2
reg38=reg4.^3;
% u(k-3).^3
reg39=reg5.*reg2.^2;
% y(k-1)*u(k-1).^2
reg40=reg5.*reg2.*reg3; % y(k-1)*u(k-1)*u(k-2)
reg41=reg5.*reg2.*reg4; % y(k-1)*u(k-1)*u(k-3)
reg42=reg5.*reg3.^2;
% y(k-1)*u(k-2).^2
reg43=reg5.*reg3.*reg4; % y(k-1)*u(k-2)*u(k-3)
reg44=reg5.*reg4.^2;
% y(k-1)*u(k-3).^2
reg45=reg6.*reg2.^2;
% y(k-2)*u(k-1).^2
reg46=reg6.*reg2.*reg3; % y(k-2)*u(k-1)*u(k-2)
reg47=reg6.*reg2.*reg4; % y(k-2)*u(k-1)*u(k-3)
reg48=reg6.*reg3.^2;
% y(k-2)*u(k-2).^2
reg49=reg6.*reg3.*reg4; % y(k-2)*u(k-2)*u(k-3)
reg50=reg6.*reg4.^2;
% y(k-2)*u(k-3).^2
reg51=reg7.*reg2.^2;
% y(k-3)*u(k-1).^2
reg52=reg7.*reg2.*reg3; % y(k-3)*u(k-1)*u(k-2)
reg53=reg7.*reg2.*reg4; % y(k-3)*u(k-1)*u(k-3)
reg54=reg7.*reg3.^2;
% y(k-3)*u(k-2).^2
reg55=reg7.*reg3.*reg4; % y(k-3)*u(k-2)*u(k-3)
reg56=reg7.*reg4.^2;
% y(k-3)*u(k-3).^2
reg57=(reg5.^2).*reg2; % y(k-1).^2*u(k-1)
reg58=(reg5.^2).*reg3; % y(k-1).^2*u(k-2)
reg59=(reg5.^2).*reg4; % y(k-1).^2*u(k-3)
reg60=reg5.*reg6.*reg2; % y(k-1)*y(k-2)*u(k-1)
reg61=reg5.*reg6.*reg3; % y(k-1)*y(k-2)*u(k-2)
reg62=reg5.*reg6.*reg4; % y(k-1)*y(k-2)*u(k-3)
reg63=reg5.*reg7.*reg2; % y(k-1)*y(k-3)*u(k-1)
reg64=reg5.*reg7.*reg3; % y(k-1)*y(k-3)*u(k-2)
reg65=reg5.*reg7.*reg4; % y(k-1)*y(k-3)*u(k-3)
reg66=(reg6.^2).*reg2; % y(k-2).^2*u(k-1)
reg67=(reg6.^2).*reg3; % y(k-2).^2*u(k-2)

28

reg68=(reg6.^2).*reg4;
reg69=reg6.*reg7.*reg2;
reg70=reg6.*reg7.*reg3;
reg71=reg6.*reg7.*reg4;
reg72=(reg7.^2).*reg2;
reg73=(reg7.^2).*reg3;
reg74=(reg7.^2).*reg4;
reg75=(reg5.^3);
reg76=(reg5.^2).*reg6;
reg77=(reg5.^2).*reg7;
reg78=reg5.*reg6.^2;
reg79=reg5.*reg6.*reg7;
reg80=reg5.*reg7.^2;
reg81=reg6.^3;
reg82=(reg6.^2).*reg7;
reg83=reg6.*reg7.^2;
reg84=reg7.^3;

%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%

y(k-2).^2*u(k-3)
y(k-2)*y(k-3)*u(k-1)
y(k-2)*y(k-3)*u(k-2)
y(k-2)*y(k-3)*u(k-3)
y(k-3).^2*u(k-1)
y(k-3).^2*u(k-2)
y(k-3).^2*u(k-3)
y(k-1).^3
y(k-1).^2*y(k-2)
y(k-1).^2*y(k-3)
y(k-1)*y(k-2).^2
y(k-1)*y(k-2)*y(k-3)
y(k-1)*y(k-3).^2
y(k-2).^3
y(k-2).^2*y(k-3)
y(k-2)*y(k-3).^2
y(k-3).^3

%Declarao da matriz psi.


psi=[reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11 reg12 reg13
reg14 reg15 reg16 reg17 reg18 reg19 reg20 reg21 reg22 reg23 reg24 reg25
reg26 reg27 reg28 reg29 reg30 reg31 reg32 reg33 reg34 reg35 reg36 reg37
reg38 reg39 reg40 reg41 reg42 reg43 reg44 reg45 reg46 reg47 reg48 reg49
reg50 reg51 reg52 reg53 reg54 reg55 reg56 reg57 reg58 reg59 reg60 reg61
reg62 reg63 reg64 reg65 reg66 reg67 reg68 reg69 reg70 reg71 reg72 reg73
reg74 reg75 reg76 reg77 reg78 reg79 reg80 reg81 reg82 reg83 reg84];
vec=yident(4:84);
%define vec como as amostras que se deseja identificar
do vetor de medidas
Psi=[psi vec];
%De acordo com o algoritmo de Golub-Householder
(Aguirre pgina 430), monta-se a matriz PSI como sendo a matriz de
regressores e a ultima coluna com y
[A,err,piv]=myhouse(Psi,84);

%Funo que clcula a taxa de reduao do


%erro, define o vetor piv que contm quais
%colunas dos regressores sero escolhidas
%e faz a transformao de householder sobre
%a matriz A, pode ser observada logo
%abaixo.

np=9;
% numero de parametros no modelo final
Psit=Psi(:,piv(1:np)); %define a matriz Psit com base na matriz Psi, com
todas as linhas e somente as colunas que foram selecionadas pelo vetor piv
teta=inv(Psit'*Psit)*Psit'*vec; %Determina os parmetros teta utilizando
mnimos quadrados.
teta2=[0.44551;0.57773;-0.63628;0.4860;-1.14580e-6;-9.97760e-5;-2.92710e5;7.88310e-3;7.43860e-8] ;%O parmetro teta2 foi retirado de (Aguirre,
2007) e foi utilizado apenas para comparao.
%Simulao 1 passo a frente
yUPAF=Psit*teta;
yUPAFAguirre=Psit*teta;

%Simulao Infinitos passos a frente usando dados de identificao


for k=23:250

29

yest0(k)=0.778979244469561*yest0(k-1)+0.264968587335836*yest0(k-2)0.202230245793142*u(k-2)-0.002505004275601*u(k-1).^2-1.470916581337107e05*yest0(k-3)*u(k-2).^2+0.424915554330944*u(k-1)-0.002167793408121*yest0(k2)*yest0(k-3)-4.409058775720922e-05*u(k-1)*u(k-3).^2+3.854810662214531e05*yest0(k-1).^2*u(k-2);
end
%Plota os grficos
axes(handles.axes1);
plot(yest0(1:250,1),'r','DisplayName','yest(1:250,1)','YDataSource','yest(1
:250,1)');
hold on
plot(y(1:250,1),'black','DisplayName','y(1:250,1)','YDataSource','yest(1:25
0,1)');
plot(u(1:250,1),'g','DisplayName','y(1:250,1)','YDataSource','yest(1:250,1)
');

%dados para validao


load F0307.dat
dados2= F0307;
%define dados
u2=dados2(:,1);
%coluna um os dados de entrada
u2ident=u2(1:3:250); %Decimao das amostras, a identificao no foi feita
usando as 250 amostras, mas sim a cada 3 amostras.
y2=dados2(:,2);
%coluna dois os dados de sada
y2ident=y2(1:3:250);
%Decimao das amostras, a identificao no foi
feita usando as 250 amostras, mas sim a cada 3 amostras.
y2est0=y2;
y2est=y2;

%Inicializar as 22 primeiras condies iniciais.


%Inicializar as 22 primeiras condies iniciais.

%Simulao Infinitos passos a frente usando dados de validao


for k=23:250
y2est0(k)=0.778979244469561*y2est0(k-1)+0.264968587335836*y2est0(k-2)0.202230245793142*u2(k-2)-0.002505004275601*u2(k-1).^2-1.470916581337107e05*y2est0(k-3)*u2(k-2).^2+0.424915554330944*u2(k-1)0.002167793408121*y2est0(k-2)*y2est0(k-3)-4.409058775720922e-05*u2(k1)*u2(k-3).^2+3.854810662214531e-05*y2est0(k-1).^2*u2(k-2);
end
%%Modelo linear nl391 retirado do livro do aguirre
for k=23:250
y2est(k)=0.44551*y2est(k-1)+0.57773*y2est(k-2)-0.63628*u2(k-2)+0.4860*u2(k1)-1.14580e-6*(y2est(k-1).^2).*u2(k-1)-9.97760e-5*(u2(k-1).^2).*u2(k-3)2.92710e-5*y2est(k-3).^3+7.88310e-3*y2est(k-2).*u2(k-2)+7.43860e8*(y2est(k-3).^2).*u2(k-3);
end
axes(handles.axes2);
plot(y2est0(1:250,1),'r','DisplayName','yest(1:250,1)','YDataSource','yest(
1:250,1)');
hold on
plot(y2est(1:250,1),'blue','DisplayName','yest(1:250,1)','YDataSource','yes
t(1:250,1)');
plot(y2(1:250,1),
'black','DisplayName','y(1:250,1)','YDataSource','yest(1:250,1)');
plot(u2(1:250,1),'g','DisplayName','y(1:250,1)','YDataSource','yest(1:250,1
)');

30

Funo MyHouse
function [A,err,Piv]=myhouse(Psi,np);
% [A,err,Piv]=myhouse(Psi,np);
% Do livro Matrix Computations 2a Ed. pg 212
% Dada a matriz Psi (m,n), esta rotina acha Q de forma
% que Q'*Psi=V triangular superior. A parte triangular
% superior de A substituda pela parte triangular
% superior de V.
%
% Assume-se que a ltima coluna de Psi o vetor de
% observacoes a ser explicado, y(k).
% np o nmero de regressores escolhidos para compor o modelo
% err um vetor de np valores que contem as taxas de reduo de erro
%
de cada um dos regressores escolhidos
% Piv um vetor que contem os indices dos regressores escolhidos, ou
%
seja so os indices das colunas usadas para pivotar a matriz
%
Psi np vezes.
[m,n]=size(Psi);
A=Psi;
yy=Psi(:,n)'*Psi(:,n);
piv=1:n-1;
for j=1:np

% Opera por colunas, ate o numero de termos final

% Determina err para demais regressores e volta a escolher


% o de maior valor
for k=j:n-1 % ate completar o numero de termos candidatos
c(k)=((A(j:m,k)'*A(j:m,n))^2)/((A(j:m,k)'*A(j:m,k))*yy); % err do
regressor k
end;
[ans aux]=max(c(j:n-1));
jm=j+aux-1;
err(j)=ans;
aux=A(:,jm); % column of regressor with greatest err
A(:,jm)=A(:,j);
A(:,j)=aux;
aux=piv(jm); % indice do regressor com maior err
piv(jm)=piv(j);
piv(j)=aux;

x=A(j:m,j);
% v=house(x)
% Do livro Matrix Computations 2a Ed. pg 196
% Dado um vetor x, volta-se um vetor v de tal forma
% que (I-2vv'/v'v)x zero excecao do primeiro elemento
nx=length(x);
u=norm(x,2);
v=x;
if u ~= 0
b=x(1) + sign(x(1))*u;
v(2:nx) = v(2:nx)/b;

31

end;
v(1)=1;
% fim house(x)
a=A(j:m,j:n);
%
%
%
%
%

a=rowhouse(a,v)
Do livro Matrix Computations 2a Ed. pg 197
Dada uma matriz A (m,n), e um vetor de comprimento m, v,
cujo primeiro elemento 1, este algoritmo substitui
A por P*A onde P=I-2vv'/v'v

b=-2/(v'*v);
w=b*a'*v;
a=a+v*w';
% fim rowhouse(a,v)
A(j:m,j:n)=a;
end;
% fim myhouse(A)
Piv=piv(1:np);
Funo Myccf Clcula a Funo de correlao cruzada.

function [t,r,l,B]=myccf(c,lag,flag1,flag2,cor);
%
%
%
%
%
%
%
%
%
%
%
%

[t,r,l]=myccf(c,lag,flag1,flag2,cor);
c1=c(:,1); c2=c(:,2);
the ccf are calculated from -lag/2 to lag/2 if flag1 = 1;
the ccf are calculated from 0 to lag if flag1 = 0;
plots the ccf between c1 and c2 if flag2 = 1;
if flag2=0 the ccf is returned in r (with respective
lags in t), but not plotted;
l is a scalar, the 95% confidence interval is +-l;
if cor='w', white lines are used. If cor='k', black.
r*B is the unnormalized value of r.
in case of intending the FI(eu) plot c MUST be =[e u]

% Luis Aguirre - Sheffield - may 91


%
- Belo Horizonte - Jan 99, update
if flag1==1,
lag=floor(lag/2);
end;
c1=c(:,1);
c1=c1-mean(c1);
c2=c(:,2);
c2=c2-mean(c2);
cc1=cov(c1);
cc2=cov(c2);
m=floor(0.1*length(c1));
r12=covf([c1 c2],lag+1);
t=0:1:lag-1;

32

l=ones(lag,1)*1.96/sqrt(length(c1));
% ccf
% Mirror r12(3,:) in raux
raux=r12(3,lag+1:-1:1);
%for i=1:lag+1
% raux(i)=r12(3,lag+2-i);
%end;
B=sqrt(cc1*cc2);
r=[raux(1:length(raux)-1) r12(2,:)]/B;
% if -lag to lag but no plots
if flag1 == 1,
t=-(lag):1:lag;
else
t=0:lag;
r=r12(2,1:lag+1)/B;
end;
% if plot
if flag2 == 1,
% if -lag to lag
if flag1 == 1,
t=-(lag):1:lag;
l=ones(2*lag+1,1)*1.96/sqrt(length(c1));
if cor=='w'
plot(t,r,'w-',t,l,'w:',t,-l,'w:',0,1,'w.',0,-1,'w.');
else
plot(t,r,'k-',t,l,'k:',t,-l,'k:',0,1,'k.',0,-1,'k.');
end;
xlabel('lag');
else
t=0:lag;
l=ones(lag+1,1)*1.96/sqrt(length(c1));
if cor=='w'
plot(t,r12(2,1:lag+1)/B,'w-',t,l,'w:',t,-l,'w:',0,1,'w.',0,-1,'w.');
else
plot(t,r12(2,1:lag+1)/B,'k-',t,l,'k:',t,-l,'k:',0,1,'k.',0,-1,'k.');
end;
xlabel('lag');
end;
else
% if -lag to lag, but no plots
if flag1 == 1,
t=-(lag):1:lag;
else
t=0:lag;
r=r12(2,1:lag+1)/B;
end;
end;
l=l(1);

33

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