Anda di halaman 1dari 95

INSTITUTO TECNOLÓGICO DE AERONÁUTICA

Douglas Coimbra de Andrade

Identificação Paramétrica de Sistemas Dinâmicos

Trabalho de Graduação
Ano 2005

Mecânica
CTA/ITA-IEM/TC-022/2005

DOUGLAS COIMBRA DE ANDRADE

IDENTIFICAÇÃO PARAMÉTRICA DE SISTEMAS DINÂMICOS

Orientador
Prof. Dr. Alberto Adade Filho (ITA)

Divisão de Engenharia Mecânica-Aeronáutica

SÃO JOSÉ DOS CAMPOS


CENTRO TÉCNICO AEROESPACIAL
INSTITUTO TECNOLÓGICO DE AERONÁUTICA

2005
Dados Internacionais de Catalogação-na-Publicação (CIP)
Dados Internacionais de Catalogação-na-Publicação (CIP)
Divisão Biblioteca Central do IT A/CT A
Andrade. Douglas Coimbra de
Identificação Paramétrica de Sistemas Dinâmicos / Douglas Coimbra de Andrade.
São José dos Campos, 2005.
059f.

Trabalho de Graduação - Divisão de Engenharia Mecânica-Aeronáutica -


Instituto Tecnológico de Aeronáutica, 2005. Orientador: Prof. Dr. Alberto Adade Filho.

1. Identificação Paramétrica. 2. Modelagem Matemática. 3. Sistemas Dinâmicos. I. Douglas Coimbra


de Andrade. 11.Centro Técnico Aeroespacial. Instituto Tecnológico de Aeronáutica. Divisão de
Engenharia Mecânica-Aeronáutica.

REFERÊNCIA BIBLIOGRÁFICA

ANDRADE, Douglas Coimbra de. Identificação Paramétrica de Sistemas Dinâmicos. 2005. 59. Trabalho de
Conclusão de Curso. (Graduação) - Instituto Tecnológico de Aeronáutica, São José dos Campos.

CESSÃO DE DIREITOS

NOME DO AUTOR: Douglas Coimbra de Andrade


TÍTULO DO TRABALHO: Identificação Paramétrica de Sistemas Dinâmicos
TIPO DO TRABALHO/ANO: Graduação / 2005

É concedida ao Instituto Tecnológico de Aeronáutica permissão para reproduzir cópias deste trabalho
de graduação e para emprestar ou vender cópias somente para propósitos acadêmicos e científicos.
O autor reserva outros direitos de publicação e nenhuma parte desta monografia de graduação pode
ser reproduzidasema autorizaçãodo autor. .

Dougl~~Coimbra de Andrade
Rua O~carReinaldo, 661. B. Progresso
CEP 36.400-000
Cons. Lafaiete - MG
IDENTIFICAÇÃO P ARAMÉTRICA DE SISTEMAS DINÂMICOS

Essa publicação foi aceita como Relatório Final de Trabalho de Graduação

.':)..

Douglas Coimbra de Andrade


Autor

Prof. Dr. Alberto Adade Filho (ITA)


Orientador

's Gonzaga Trabasso


urso1le Engenharia Mecânica-Aeronáutica

São José dos Campos, 21 de novembro de 2005


AGRADECIMENTOS

A Deus, pois sem Ele nada é possível.

Agradeço a todos que, direta ou indiretamente, contribuíram com minha formação pessoal e
profissional.
RESUMO

A determinação de parâmetros de modelos de sinais é uma questão de relevo e etapa


essencial da análise em vários campos do conhecimento, possibilitando que o engenheiro, o
pesquisador ou o profissional em geral concluam investigações e cálculos sobre o objeto de
estudo através de simulações computacionais, por exemplo. Este trabalho focaliza a
identificação paramétrica por mínimos quadrados, de um ponto de vista não amplamente
tratado na vasta literatura técnica disponível sobre o assunto, trazendo contribuição ao tema.
Em especial, considera-se o problema de identificação de parâmetros que se apresentam em
várias equações de um modelo de múltiplas equações. Nessa perspectiva e contexto, é
desenvolvido um software para a identificação de modelos de sinais e sistemas discretos e
contínuos no tempo, utilizando um ambiente computacional de cálculo e visualização de
engenharia denominado McLabEn®, também desenvolvido pelo autor. O trabalho discute
ainda técnicas de discretização e filtragem para a adequação de modelos e dados para a
identificação pelo método implementado. Alguns estudos simulados são realizados,
focalizando aplicações específicas e relevantes de identificação de modelos, como a da
dinâmica lateral de uma aeronave, entre outras, tanto no sentido de validar o software como
para atestar a qualidade dos resultados obtidos e revelar as limitações da abordagem. O
trabalho é concluído com sugestões para trabalhos que aprofundam as investigações e refinam
a abordagem utilizada.
ABSTRACT

Parameter estimation for models and signals is an important issue for analysis in many
subjects, allowing the engineer, researcher or, more generally, the professional to investigate
and get numerical results about what is being studied by means of computational simulation,
for example. This work focus parametric identification by using least squares method, from a
point not extensively treated in the vast technical literature available about the subject,
bringing contribution to the subject. The main problem considered is about parameter
identification for parameters that appear in more than one equation in a model of multiple
equations. In this context, a software is developed for identification of models and signals of
discrete and continuous-time systems, using an environment for numerical simulation and
engineering visualization called McLabEn®, also developed by the author. The work also
discusses techniques for discretization and filtering to set up models an data for being
identified by the implemented method. Some simulated studies are done, focusing on specific
and relevant uses on model identification, such as aircraft behavior, among others, to validate
the software, show the results and reveal the limitations of the method. The conclusion is
about suggestions for future work which will deepen the investigations and improve the
presented method.
I. Lista de Ilustrações
Figura 4-1 - Tela de Identificação de Sistemas Discretos ........................................................ 10
Figura 4-2 - Gráfico comparativo entre dados reais e dados estimados pelo método de
mínimos quadrados........................................................................................................... 13
Figura 4-3 - Identificação de Sistema ARX Gerado pelo MATLAB® ..................................... 15
Figura 5-1 - Identificação Sem Filtragem de Sistema de Segunda Ordem ............................. 19
Figura 5-2 - Resultado da Identificação Sem Filtragem........................................................... 19
Figura 5-3 - Ajuste polinomial por mínimos quadrados para a posição real do sistema.......... 24
Figura 5-4 - Posição, velocidade e aceleração estimados com base em dados de posição com
ruído.................................................................................................................................. 24
Figura 6-1 - Evolução temporal de sistema discreto ................................................................ 26
Figura 6-2 - Modelo para Identificação do Sistema de Crescimento Populacional ................. 28
Figura 6-3 - Simulação de um sistema massa-mola-amortecedor............................................ 31
Figura 6-4 - Resposta ao degrau de um sistema massa-mola, com ruído................................. 32
Figura 6-5 - Simulação de um Sistema Massa-Mola com Dois Graus de Liberdade............... 34
Figura 6-6 - Aplicação do Módulo de Identificação para um Sistema Massa-mola com Dois
Graus de Liberdade........................................................................................................... 35
Figura 6-7 - Modelo Simulink para Simulação da Dinâmica Lateral de um Avião................. 36
Figura 6-8 - Identificação da Dinâmica Lateral do Avião (Matrizes A e B)............................ 38
Figura 6-9 - Resultado da Identificação da Dinâmica Lateral (Matrizes A e B)...................... 39
Figura 6-10 - Identificação da Dinâmica Lateral do Avião (Matriz A).................................... 40
Figura 6-11 - Resultado da Identificação da Dinâmica Lateral (Matriz A).............................. 41
Figura B-1 - Simulação de um Sistema Massa-Mola-Amortecedor no McLabEn................... 46
Figura B-2 - Efeitos não desejados do ajuste polinomial por OLS na velocidade e aceleração
estimadas a partir de dados de posição com ruído............................................................ 50
Figura C-1 - Utilização do identificador de sistemas McLabEn para estimar parâmetros de um
sistema massa-mola-amortecedor usando discretização pelo método Euler-Backwards. 51
Figura C-2 - Utilização do identificador de sistemas McLabEn para estimar parâmetros de um
sistema massa-mola-amortecedor usando aproximação de posição por mínimos
quadrados.......................................................................................................................... 52
II. Lista de Abreviaturas, Siglas e Símbolos
βˆ Estimador de β
ESS Error Sum of Squares
k Número de parâmetros a serem estimados
N Número de amostras das variáveis dependentes e independentes
OLS Ordinary Least Squares
Q Número de equações do modelo
RSS Residual Sum of Squares
TSS Total Sum of Squares
X Vetor de observações de variável independente
Y Vetor de observações de variável dependente
β Vetor de parâmetros desconhecidos
McLabEn Matemática Computacional – Laboratório em Engenharia e Ciências
T Período de amostragem
ε Vetor de erros
III. Sumário
1. Introdução........................................................................................................................... 1
2. Introdução à Modelagem Experimental ............................................................................. 1
2.1 Tipos de Modelos ....................................................................................................... 3
3. Identificação de Sistemas ................................................................................................... 3
3.1 Métodos Determinísticos............................................................................................ 3
3.2 Métodos Não-Paramétricos ........................................................................................ 4
4. Identificação Paramétrica de Sistemas Discretos ............................................................... 4
4.1 O Método dos Mínimos Quadrados ........................................................................... 4
4.1.1 Formulação Clássica........................................................................................... 4
4.1.2 Formulação para Múltiplas Equações................................................................. 5
4.1.3 Formulação para Múltiplas Saídas ..................................................................... 7
4.2 Condições para Aplicação do Método de Mínimos Quadrados ................................. 9
4.3 Descrição do Módulo de Identificação....................................................................... 9
4.3.1 Exemplo de Identificação de Sinais ................................................................. 11
4.3.2 Identificação de Sistema ARX (Comparação com MATLAB®)...................... 13
5. Identificação de Sistemas Dinâmicos Contínuos.............................................................. 16
5.1 Discretização do Modelo .......................................................................................... 16
5.1.1 Métodos de Euler.............................................................................................. 16
5.1.2 Transformação Bilinear .................................................................................... 17
5.1.3 Efeito do Ruído na Identificação de Sistemas .................................................. 18
5.2 Filtragem Digital ...................................................................................................... 20
5.2.1 Filtragem no Domínio da Freqüência............................................................... 20
5.3 Método de Aproximação por Mínimos Quadrados .................................................. 23
6. Aplicações ........................................................................................................................ 25
6.1 Crescimento Populacional ........................................................................................ 25
6.1.1 Funções McLabEn para Simulação do Crescimento Populacional .................. 28
6.2 Identificação de Sistema Massa-Mola...................................................................... 30
6.3 Identificação de Sistema Massa-Mola com Dois Graus de Liberdade..................... 33
6.4 Identificação da Dinâmica Lateral de uma Aeronave .............................................. 36
7. Contribuições Futuras....................................................................................................... 41
8. Conclusão ......................................................................................................................... 42
9. Referências Bibliográficas................................................................................................ 42
Apêndice A Demonstrações do Item Formulação para Múltiplas Equações........................ 44
A.1 Minimização de ESS ................................................................................................ 44
A.2 Não-tendenciosidade do estimador........................................................................... 44
Apêndice B Simulação de um Sistema Massa-Mola-Amortecedor no McLabEn ............... 45
B.1 Simulação do Sistema............................................................................................... 45
B.2 Filtragem e Análise do Resultado Simulado ............................................................ 47
B.3 Aproximação por Mínimos Quadrados .................................................................... 47
Apêndice C Estimação de Parâmetros do Sistema Massa-Mola .......................................... 51
C.1 Método de Euler ....................................................................................................... 51
C.2 Mínimos Quadrados ................................................................................................. 51
Apêndice D Implementação do Algoritmo de Mínimos Quadrados ...................................... 53
Anexo - Guia de Referência do Software McLabEn® v1.33
1

1. Introdução

A identificação de sistemas é fundamental para o desenvolvimento de modelos


computacionais confiáveis. O desenvolvimento de um bom modelo não é uma tarefa
simples, pois os critérios para a escolha do modelo dependem de sua aplicação, i.e., do que
se deseja prever com o modelo. Dessa forma, por exemplo, um modelo completo de
instalações hidráulicas de uma companhia deve utilizar modelos simplificados para
bombas, atuadores e válvulas, enquanto o projeto de uma única válvula deveria considerar
todas as suas nuances, especialmente para verificar quanto seu comportamento se desvia do
previsto para uma válvula ideal.

O escopo de aplicação da identificação de sistemas é muito amplo e abrange desde


aplicações nos mais variados ramos da engenharia (aeronáutica, mecânica etc.) até modelos
microeconômicos e macroeconômicos.

Este trabalho objetiva desenvolver uma ferramenta computacional para automatizar o


processo de identificação de sistemas dinâmicos, utilizando uma adaptação do método dos
mínimos quadrados sem ponderação (OLS), bem como a realização de estudos sobre sua
aplicabilidade, através de modelos simulados.

Os cálculos e gráficos apresentados nesse trabalho foram efetuados e gerados no


ambiente McLabEn® 1.

2. Introdução à Modelagem Experimental

A modelagem experimental constitui ramo do conhecimento dedicado a desenvolver,


implementar e validar modelos matemáticos de sistemas reais.

1
Nota: Software para apoio ao cálculo e visualização de engenharia desenvolvido pelo autor e registrado para
garantia de todos os direitos de uso e comercialização.
2

Um modelo matemático é uma representação de um sistema físico real.


Evidentemente, o modelo não é o sistema. É impossível obter representação perfeita. O que
deve balizar a construção do modelo?

Idealmente, a representação matemática de um sistema deve ser a mais simples que


permita prever seu comportamento com o nível de detalhes desejado.

Considere-se o sistema constituído por um pêndulo suspenso por um fio, o conhecido


pêndulo simples, para considerações qualitativas. O modelo matemático mais utilizado para
representá-lo é a equação de um oscilador harmônico, em que x(t) é a posição horizontal do
pêndulo, L é o comprimento do fio e g é o valor da gravidade local:

d 2 x(t ) g
2
= − x(t )
dt L

Eq. 2.1-1

No entanto, esse modelo traz, entre outras, importantes simplificações, a saber:

1 – O modelo considera pequenos deslocamentos angulares;


2 – Desconsidera a flexibilidade e a massa do fio;
3 – A resistência do ar ao movimento do pêndulo também é desconsiderada;
4 – O pêndulo nem sempre se desloca em um mesmo plano de movimento.

Se o que se deseja saber é apenas o período do pêndulo, sendo válidas as hipóteses


apresentadas, o modelo usual permite aproximação aceitável. Por outro lado, se se deseja
estimar a variação na tensão no fio com o tempo, pode ser necessário considerar a
elasticidade do fio.

Em resumo, o modelo matemático do sistema está intimamente relacionado às


informações que ele deve fornecer sobre o sistema.
3

2.1 Tipos de Modelos

Um importante critério de classificação dos modelos matemáticos é sua relação com


a física ou natureza do processo:

Modelagem caixa-branca: relacionada à física ou natureza do processo; utilizada em


estudos teóricos de sistemas ou em processos cuja física é bem conhecida.

Modelagem caixa-preta: não relacionada à física do processo; nem todos os


processos são conhecidos, e nem sempre é possível associar um modelo físico ao sistema
real.

Modelagem caixa-cinza: o modelo contempla uma parte relacionada à física do


processo e uma parte sem esse vínculo. Trata-se de uma importante modelagem
experimental, pois a maioria dos processos possui comportamentos conhecidos e
desconhecidos.

Grosso modo, quanto mais desconhecido ou imprevisível for o sistema, mais seu
modelo tenderá a ser caixa-preta.

Nesse ponto, é necessário não estigmatizar a modelagem caixa-preta de “ruim” e a


modelagem caixa-branca de “boa”, como pode parecer à primeira vista. É necessário ter em
mente que os requisitos de um bom modelo são a possibilidade de utilizá-lo para prever o
comportamento do sistema e a simplicidade.

3. Identificação de Sistemas

3.1 Métodos Determinísticos


4

Os métodos determinísticos não dão tratamento especial aos ruídos presentes nos
dados e, por isso, só fornecem resultados bons se a relação sinal/ruído for muito alta. Pode-
se citar entre esses métodos a identificação de modelos de primeira e segunda-ordem de
sistemas LTI com base na resposta a degrau ou com base na resposta em freqüência [3].

3.2 Métodos Não-Paramétricos

Os métodos não-paramétricos constituem um conjunto de técnicas de identificação


que não resultam em um modelo matemático como uma função de transferência. Seu
resultado é uma representação gráfica que caracteriza a dinâmica do sistema em questão.
Exemplos típicos são a resposta ao impulso e a resposta em freqüência. As técnicas mais
comuns são as funções de correlação [3].

4. Identificação Paramétrica de Sistemas Discretos

4.1 O Método dos Mínimos Quadrados

4.1.1 Formulação Clássica


Considere-se o modelo linear

Y = Xβ + ε
Eq. 4.1-1

em que: N é o número de medições das variáveis;


k é a quantidade de parâmetros a serem estimados;
[Y]Nx1 é o vetor coluna das observações da variável dependente;
[X]Nxk é a matriz de observações da variável independente;
[β]kx1 é o vetor coluna de parâmetros desconhecidos;
[ε]Nx1 é o vetor coluna de erros.
5

Assumindo que:
(i) A variável dependente [Y] é explicada pela equação linear do modelo;
(ii) Os elementos de [X] são fixos, têm variância finita e a matriz [X] tem posto k
menor ou igual ao número de observações N;
(iii) [ε] tem distribuição normal com E(ε) = 0 e E(ε’ε) = σ2[I]NxN, em que [I]NxN é a
matriz identidade NxN;

O estimador βˆ que minimiza a soma dos resíduos quadráticos ESS = ε’ε é:

βˆ = ( X ' X )−1 X ' Y


Eq. 4.1-2

Nessas condições, o estimador βˆ é BLUE (Best Linear Unbiased Estimator –


Melhor Estimador Linear Não-tendencioso). A formulação do problema e a demonstração
dessas e outras propriedades podem ser encontrados em [2].

4.1.2 Formulação para Múltiplas Equações

A Formulação Clássica tem uma importante limitação: identificar modelos em que


um ou mais parâmetros em mais de uma equação. Tome-se um exemplo simples: seja o
sistema

⎧ z k = ax k + by k + ε 1

⎩wk = bxk + cy k + ε 2
Eq. 4.1-3

Na Eq. 4.1-3, xk e yk são variáveis independentes, zk e wk são variáveis dependentes,


[a b c]’ é o vetor de parâmetros desconhecidos e ε1 e ε2 são erros aleatórios. Qual seria o
melhor estimador para a, b e c?
6

Poder-se-ia sugerir: por que não aplicar o método de mínimos quadrados na primeira
equação e, após, na segunda equação? Isso é possível. No entanto, na presença de erros
aleatórios, serão obtidos dois valores distintos para b, e não há garantias sobre a qualidade
desses valores.

Essa limitação é contornável definindo-se a seguinte formulação:

Considere-se o modelo linear

Yi = X i β + ε i , i = 1, 2, ..., Q
Eq. 4.1-4
em que: Q é a quantidade de equações do modelo;
N é o número de medições das variáveis;
k é a quantidade de parâmetros a serem estimados;
[Yi]Nx1 é o vetor coluna das observações da variável dependente na i-
ésima equação;
[Xi]Nxk é a matriz de observações da variável independente na i-ésima
equação;
[β]kx1 é o vetor coluna de parâmetros desconhecidos;
[εi]Nx1 é o vetor coluna de erros na i-ésima equação.

Assumindo que:
(i) As variáveis dependentes [Yi] são explicadas pelas equações lineares do
modelo;
(ii) Os elementos de [Xi] são fixos, têm variância finita e as matrizes [Xi] têm
posto k menor ou igual ao número de observações N;
(iii) Os [εi] têm distribuição normal com E(εi) = 0 e E(εi’εi) = σi2[I]NxN, em que
[I]NxN é a matriz identidade NxN;

O método de mínimos quadrados deve minimizar a soma dos resíduos quadráticos:


7

Q
ESS = ∑ ε i ' ε i
i =1

Eq. 4.1-5

O estimador que minimiza o novo ESS é (v. Apêndice A - Demonstrações do Item


Formulação para Múltiplas Equações):

−1
⎡Q ⎤ ⎡Q ⎤
β̂ = ⎢∑ X i' X i ⎥ ⎢∑ X i'Yi ⎥
⎣ i =1 ⎦ ⎣ i =1 ⎦

Eq. 4.1-6

O estimador assim obtido minimiza o ESS e é não-tendencioso. Esse método foi


implementado para utilização no módulo de Identificação de Sistemas do software
McLabEn®.

4.1.3 Formulação para Múltiplas Saídas

Uma formulação para utilização do método de mínimos quadrados em sistemas com


múltiplas saídas é encontrada em [5]: seja o sistema descrito pelo sistema

y1 = θ 11 x1 + θ 21 x 2 + K + θ n1 x1
M
y p = θ1 p x1 + θ 2 p x 2 + K + θ np x p

Eq. 4.1-7

Considere-se um conjunto de m medidas obtidas do sistema nos instantes t1, t2, ..., tm.
As equações acima podem ser rearranjadas na forma
Y = XΘ

Eq. 4.1-8
8

Em que

r r
⎡ y (1) ⎤ ⎡ x (1) ⎤
⎢ yr (2) ⎥ ⎢ xr (2) ⎥
Y =⎢ ⎥X = ⎢ ⎥
⎢ M ⎥ ⎢ M ⎥
⎢r ⎥ ⎢r ⎥
⎣ y ( m) ⎦ ⎣ x ( m) ⎦

Eq. 4.1-9

Nessas condições, a solução de mínimos quadrados para o sistema é:

ˆ = ( X ' X ) −1 X ' Y
Θ

Eq. 4.1-10

Analisando essa formulação, verifica-se que ela, de fato, permite a identificação de


sistemas com múltiplas entradas e múltiplas saídas. No entanto, suponhamos que fosse
sabido, a priori, com base no conhecimento da física do problema, que dois elementos θij
fossem iguais (por exemplo, uma constante de mola que aparece em duas equações distintas
do modelo). A forma de construção apresentada não contempla essa possibilidade. A
formulação para Múltiplas Equações (Eq. 4.1-2), por outro lado, consegue satisfazer esse
requisito.

Adicionalmente, a formulação para Múltiplas Saídas pode ser obtida a partir do


formato da Eq. 4.1-4, bastando para isso observar que o vetor β, nesse caso, teria dimensão
n vezes p:

β = [θ 11 K θ 1 p K θ n1 K θ np ]

Eq. 4.1-11
9

Dessa forma, conclui-se que a formulação para Múltiplas Saídas é um caso particular
da formulação para Múltiplas Equações, limitada a sistemas em que um mesmo parâmetro
desconhecido não aparece em mais de uma equação.

4.2 Condições para Aplicação do Método de Mínimos Quadrados

O método implementado neste trabalho pode ser aplicado para identificação de


parâmetros em modelos discretos ou contínuos (discretizados), desde que o modelo seja
fornecido no espaço de estados e seja linear nos parâmetros a serem identificados.

Por exemplo, não seria possível identificar os parâmetros a e b no sistema descrito


pela equação:

d 2x dx
2
= b + abx
dt dt

Eq. 4.2-1 Equação diferencial linear, não-linear nos parâmetros a e b

Por outro lado, é possível identificar os parâmetros a e b em uma equação diferencial


não-linear, desde que a equação seja linear em a e b, tal como:
d 2x dx
2
= bx + ax
dt dt

Eq. 4.2-2 Equação diferencial não-linear, linear nos parâmetros a e b

4.3 Descrição do Módulo de Identificação

O módulo de identificação resolve as equações lineares utilizadas para a estimação de


parâmetros utilizando o método de mínimos quadrados, segundo a formulação apresentada
na seção 4.1.2.
10

Figura 4-1 - Tela de Identificação de Sistemas Discretos

Em relação à tela mostrada na figura Figura 4-1:

• Nomes dos parâmetros desconhecidos: vetor de parâmetros desconhecidos a ser


identificado pelo sistema. Esse vetor não é utilizado nos cálculos. Apenas dá
nome aos parâmetros na resposta retornada.

• Parâmetros conhecidos/medidos: São os valores conhecidos que serão


utilizados na identificação. Se não forem valores escalares, devem ter a mesma
dimensão. Neste trabalho, será utilizada a opção Importar..., para importar a
variável da tela principal do software. O módulo de identificação é utilizado
apenas para a realização dos cálculos.

Equações do modelo do sistema: Equações que descrevem o modelo considerado.


Podem ser consideradas várias equações, pois o software está construído para múltiplas
equações.
11

Análises: Apresenta gráficos e os valores estimados para os parâmetros.

4.3.1 Exemplo de Identificação de Sinais

Considere-se a seguinte tabela de dados:

t x y
0 0,96 4,06
1 4,10 2,00
2 13,48 6,10
3 27,28 15,60
4 48,51 32,84
5 73,70 53,91
6 112,34 84,40
7 151,17 120,22
8 197,34 162,51
9 248,70 207,20
10 309,70 247,34

Vai-se utilizar o módulo de identificação para ajustar um modelo polinomial para x e y


em função de t. Suponha-se, também, que é sabido que o coeficiente de t2 é o mesmo para x
e y. Em uma situação real, isso pode representar, por exemplo, a constante elástica de uma
mola que aparece em mais de uma equação diferencial do modelo.

Em primeiro lugar, declaram-se as variáveis no ambiente McLabEn®:

t=[0 1 2 3 4 5 6 7 8 9 10]
x=[0.96 4.10 13.48 27.28 48.51 73.70 112.34 151.17 197.34
248.7 309.7]
y=[4.06 2.00 6.10 16.60 32.84 53.91 84.40 120.22 162.51
207.20 247.34]
12

O próximo passo é abrir o módulo de identificação. Clicando em Importar..., escolhem-


se as variáveis t, x e y (uma a uma). Importadas as variáveis, escreve-se o modelo. Será
feito o seguinte ajuste: x=kt2+c1t+c2, y=kt2+b1t+b2.

Parâmetros desconhecidos: [k c1 c2 b1 b2]

As equações do modelo do sistema são:

x=[t*t t 1 0 0]
y=[t*t 0 0 t 1]

Escritas as equações do modelo, basta clicar no botão Estimar Parâmetros:


[k c1 c2 b1 b2] = [3.00 0.75 -0.90 -4.90 -4.55]

O indicador R2 para este modelo gerou resultado 0,9996, indicando excelente aderência
dos dados ao modelo proposto.

O gráfico a seguir, que pode ser visualizado clicando no botão Gráficos, mostra o
resultado da estimativa:
13

Figura 4-2 - Gráfico comparativo entre dados reais e dados estimados pelo método de mínimos
quadrados

4.3.2 Identificação de Sistema ARX (Comparação com MATLAB®)

Considere-se o problema de identificar o sistema ARX gerado no MATLAB® com os


comandos:

A = [1 -1.5 0.7]; B = [0 1 0.5];


m0 = idpoly(A,B);
u = iddata([],idinput(300,'rbs'));
e = iddata([],randn(300,1));
y = sim(m0, [u e]);
z = [y,u];

Esse sistema é o exemplo do MATLAB® para utilização do comando do ARX, que faz
parte do System Identification Toolbox. Gerados os dados, o problema consiste em
recuperar os coeficientes dos polinômios A(q) e B(q):
14

>> m = arx(z,[2 2 1])


Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t)
A(q) = 1 - 1.481 q^-1 + 0.6831 q^-2

B(q) = 0.9338 q^-1 + 0.4582 q^-2

O resultado mostrado foi obtido no ambiente MATLAB®. A mesma identificação será


feita utilizando-se o Módulo de Identificação.

Em primeiro lugar, os dados são exportados para um arquivo texto com os seguintes
comandos MATLAB®:

>> UU=z.u;
>> YY=z.y;
>> ZZ=[UU YY]
>> save('c:\dados.txt','ZZ','-ASCII')

Após esse procedimento, os dados no formato texto são importados para o ambiente
McLabEn® utilizando-se o comando “Importar Variáveis do Arquivo”. Em seguida, são
importadas para o Módulo de Identificação (v. Guia de Referência McLabEn®). Por fim, os
vetores u e y são atrasados 2 instantes de tempo (gerando os vetores atrasados um1, um2,
ym1 e ym2).

O modelo ARX acima pode ser reescrito na seguinte forma:

y k = b0 u k + b1u k −1 + b2 u k − 2 − a1 y k −1 − a 2 y k − 2

Eq. 4.3-1 Modelo ARX

A entrada exógena é o vetor uk e a saída é o vetor yk. A figura a seguir mostra a


utilização e o resultado gerados pelo módulo para os dados exportados:
15

Figura 4-3 - Identificação de Sistema ARX Gerado pelo MATLAB®

O resultado da identificação mostrou-se tão satisfatória quanto o resultado obtido pelo


comando ARX, conforme resume a tabela a seguir:

Variável Valor Esperado Valor Obtido no Valor Obtido no Diferença (V2-


MATLAB® (V1) Módulo de V1)/V1 (módulo)
Identificação
(V2)
b1 1 0.9338 0.9365 0.2%
b2 2 0.4582 0.4527 1.2%
a1 -1.5 -1.481 -1.481 0.0%
a2 0.7 0.6831 0.6817 0.2%
16

5. Identificação de Sistemas Dinâmicos Contínuos

A identificação de sistemas dinâmicos contínuos no tempo passa pela discretização


do modelo contínuo do sistema, tendo em vista que não é possível armazenar uma
quantidade infinita de pontos. O tratamento computacional de informações requer o
armazenamento e processamento de matrizes e vetores de dimensão finita.

Os processos de discretização de modelos dinâmicos contínuos envolvem o cálculo


numérico das derivadas de um vetor de observações. Os métodos mais aplicados para essa
discretização são os métodos de Euler e a transformação bilinear. A limitação desses
métodos reside em sua enorme sensibilidade a ruídos.

Em vez de aproximar as derivadas dos vetores observados simplesmente por uma


função auto-regressiva, uma proposta seria ajustar um polinômio à curva e calcular a
derivada desse polinômio ajustado. Essa abordagem é utilizada e investigada neste trabalho.

5.1 Discretização do Modelo

5.1.1 Métodos de Euler

Os métodos de Euler consistem em aproximar linearmente a derivada de uma função


amostrada no tempo. Dois tipos principais de aproximação são: “backward” e “forward”:
dx 1
= ( x k − x k −1 ) “backward”
dt T
Eq. 5.1-1
dx 1
= ( x k +1 − x k ) “forward”
dt T
Eq. 5.1-2

Em Eq. 5.1-1 e Eq. 5.1-2, T é o período de amostragem do sinal. Na identificação de


sistemas, os vetores de observação são conhecidos e é necessário estimar suas derivadas
17

para aplicação do método de mínimos quadrados implementado. Considere-se, por


exemplo, um sistema massa-mola-amortecedor, cuja equação diferencial é dada por:

d 2x dx
u (t ) = m 2
(t ) + b (t ) + cx(t )
dt dt

Eq. 5.1-3

em que: m é a massa do corpo;


b é a constante de amortecimento;
c é a constante de mola;
u(t) é a força externa aplicada no corpo;
x(t) é a posição do corpo.

Utilizando o método de Euler com aproximação “backward” para discretizar essa


equação com período de amostragem T, obtém-se que:

m b
uk = 2
( x k − 2 x k −1 + x k − 2 ) + ( x k − x k −1 ) + cx k
T T

Eq. 5.1-4

Para identificar esse sistema, portanto, aproximam-se velocidade e aceleração,


respectivamente, por xk – xk-1 e xk – 2xk-1 + xk-2.

Entretanto, a variável amostrada xk é medida e, inevitavelmente, sua medição é


contaminada por ruído. Para melhorar a qualidade da estimativa paramétrica, é
recomendável minimizar o efeito do ruído sobre xk e suas derivadas. Para isso, torna-se
necessário utilizar um processo de filtragem.

5.1.2 Transformação Bilinear

Uma das abordagens mais utilizadas para a discretização de sistemas dinâmicos


contínuos é a tranformação bilinear ([3]). Considerem-se duas seqüências: xk e sua integral,
18

yk. Utilizando o método dos trapézios para a integração, e sendo T o período de


amostragem dos sinais, tem-se:

T
y k = y k −1 + ( x k + x k −1 ) , k = 2, 3, ..., n
2

Eq. 5.1-5

A função de transferência no domínio-z entre x e y é:

Y 2 ⎛ z −1⎞
( z) = ⎜ ⎟
X T ⎝ z + 1⎠

Eq. 5.1-6

que é a fórmula da transformação bilinear. No domínio-s, o integrador é dado por 1/s.


Dessa forma, uma função de transferência G(s) pode ser levada para o domínio discreto
⎛ 2 ⎛ z −1⎞⎞
calculando-se G⎜⎜ ⎜ ⎟ ⎟⎟ .
⎝ T ⎝ z +1⎠⎠

5.1.3 Efeito do Ruído na Identificação de Sistemas

Quando é necessário calcular derivadas de um sinal, a presença de ruído pode ser


amplificada de forma a não permitir uma correta identificação do sistema. A identificação
sem filtragem dos dados simulados y(t), resposta ao degrau de 100N de um sistema massa-
mola-amortecedor com parâmetros unitários, apresentado a seguir, não gera bons
resultados.
19

Figura 5-1 - Identificação Sem Filtragem de Sistema de Segunda Ordem

O resultado da identificação do modelo é mostrado a seguir:

Figura 5-2 - Resultado da Identificação Sem Filtragem


20

Esse resultado mostra valores aceitáveis para amortecimento e constante de mola,


mas apresenta um resultado fisicamente impossível para a massa.

5.2 Filtragem Digital

O objetivo da filtragem é, fundamentalmente, remover ruídos de sinais. O efeito ideal


desejado de um filtro seria que, dado o espectro de um sinal, a passagem pelo filtro
mantivesse todas as componentes do sinal na faixa de freqüência desejada e igualasse a
zero todas as outras componentes de freqüência do sinal. O filtro G(jω) ideal para uma
faixa de freqüência de interesse no intervalo [a, b] seria:

⎧ 1, a ≤ ω ≤ b
G ( jω ) = ⎨
⎩0, (ω < a )ou (ω > b )

Eq. 5.2-1

Nas aplicações em identificação de sistemas, usualmente a faixa de interesse é


delimitada pelas freqüências relevantes no próprio sistema. Por exemplo, considere-se uma
amostra de dados de entrada medida no comando de um piloto sobre um avião. Se o sinal
medido contiver sinais de freqüência maior do que 0,1 Hz, não é razoável atribuir essas
componentes ao comando do piloto, mas sim a ruídos presentes no sistema, que
evidentemente não foram comandados nem podem ser controlados.

5.2.1 Filtragem no Domínio da Freqüência

Neste tópico, será proposta uma abordagem para filtragem no domínio da freqüência.
A função McLabEn® que utiliza a idéia é denominada passabaixas, e está explicada no
final deste tópico.
21

Um filtro ideal deveria ter o seguinte comportamento: dado um sinal f(t) corrompido
com ruído, seja sua transformada de Fourier a função F(ω). Deseja-se eliminar do espectro
as freqüências acima de um valor ωcorte.

Considerando que F(ω) contém todas as componentes de freqüência de f(t), a função


G(ω) (transformada de Fourier do sinal na saída do filtro) é definida por:

⎧ F (ω ), | ω |≤ ω corte
G (ω ) = ⎨
⎩ 0, | ω |> ω corte

Eq. 5.2-2

Observe-se que G(ω) contém todas as freqüências do sinal em f(t), exceto aquelas
maiores do que ωcorte. A função desejada é, portanto, g(t), ou seja, a transformada de
Fourier inversa de G(ω).

No entanto, esse procedimento deve ser aplicado a dados amostrados. Assim, não é
possível utilizar a transformada de Fourier contínua e é necessário utilizar a DFT
(transformada discreta de Fourier), implementada através do algoritmo de FFT. Utilizando-
se esse raciocínio, foi implementada a função passabaixas:

function passabaixas(x;T;fcorte)
//x: função a ser filtrada
//T: freqüência de amostragem
//fcorte: freqüência de corte, em Hz
Fx=FFT(x)
n=numcolunas(Fx)

//calcula a partir de qual termo vai zerar


temp=1+fcorte*n*T
indcorte=ceil(temp)
22

//copia Fx
Fxfilt=Fx

//zera termos acima de fcorte corte(se possível)


if indcorte<=0.5*n then
for k=indcorte to n+2-indcorte
Fxfilt(1;k)=0
endfor
endif

xfilt=iFFT(Fxfilt)

//plota
nx=numcolunas(x)
for k=1 to nx
resp(k)=Re(xfilt(1;k))
endfor

t=linspace(1;nx;nx)

plot(Dados originais;t;x;Dados filtrados;t;resp)

return resp

end function

Adicionalmente, a função passabaixas faz um gráfico mostrando os dados


originais e os dados filtrados. Isso permite ao usuário ajustar a freqüência de corte do filtro
de modo que esta elimine o mínimo de informação relevante ao filtrar o ruído.
23

O processo de filtragem merece maiores investigações sobre os efeitos de aliasing e


do janelamento utilizados. Esse estudo constitui um tópico fora do escopo deste trabalho.

5.3 Método de Aproximação por Mínimos Quadrados

Para contornar o problema de amplificação de erros introduzido no cálculo das


derivadas pelos efeitos do ruído, propõe-se neste trabalho uma nova forma de cálculo
numérico.

Considere-se uma amostra de 201 pontos da resposta ao degrau unitário de um


sistema massa-mola-amortecedor de massa, constante de amortecimento e constante de
mola unitárias, simulado com condições iniciais nulas até o instante de tempo 10 s e
contaminado por ruído.

Os algoritmos e métodos numéricos desse item podem ser encontrados no Apêndice


B - Simulação de um Sistema Massa-Mola-Amortecedor no McLabEn.

Em vez de tentar aproximar a derivada da posição utilizando fórmulas recursivas,


pode ser interessante utilizar o método de mínimos quadrados (OLS) para ajustar um
polinômio aos dados obtidos para a posição. Após esse ajuste, o cálculo das derivadas
resume-se a derivar polinômios, uma forma muito mais estável de minimizar os efeitos do
ruído.

A ordem do polinômio a ser utilizado deve variar de acordo com a quantidade de


pontos extremos presentes no sinal, sendo maior quando houver mais pontos extremos.
Uma investigação mais aprofundada sobre os melhores métodos de interpolação fica como
sugestão para contribuições futuras.

No caso da resposta simulada, fazendo um ajuste com polinômio de ordem 15,


obtém-se o seguinte ajuste:
24

Figura 5-3 - Ajuste polinomial por mínimos quadrados para a posição real do sistema

Finalmente, derivando o polinômio ajustado para x(t), é possível obter as


estimativas de velocidade e aceleração:

Figura 5-4 - Posição, velocidade e aceleração estimados com base em dados de posição com ruído

Essas estimativas são muito superiores àquelas obtidas pelos métodos de Euler. Os
valores de parâmetros obtidos pelo método de mínimos quadrados para esses valores são:
massa: 1,132, amortecimento: 1,038, constante elástica da mola: 1,006. Essa estimativa está
25

muito próxima dos valores reais dos parâmetros (unitários). A utilização do módulo
McLabEn para estimação está descrita no Apêndice C - Estimação de Parâmetros do
Sistema Massa-Mola.

O exemplo apresentado ilustra a aplicação da técnica de aproximação em caráter


geral: é eficiente aproximar as curvas por mínimos quadrados e derivar o polinômio de
aproximação para fins de identificação do sistema.

Se os sinais representados pelos vetores forem muito oscilatórios, pode não ser
possível aproximar o comportamento do sistema com polinômios e talvez seja necessária
uma técnica mais refinada para estimar as derivadas dos dados. Contudo, se a aproximação
polinomial for possível, o que abrange uma enorme quantidade de casos, ela permite
excelente redução na influência de ruídos sobre o sistema.

6. Aplicações

6.1 Crescimento Populacional


Para este exemplo, far-se-á uma adaptação da fórmula geral apresentada em [4] para
uma aplicação na Biologia, idealizada.

Considere-se um sistema isolado contendo, inicialmente, ovos de um inseto. Sejam:

• O(k) – número de ovos no instante k


• L(k) – número de larvas no instante k
• A(k) – número de insetos adultos no instante k

Supondo que os ovos levem 1 instante de tempo para se tornarem larvas e as larvas
levem 1 instante de tempo para se tornarem insetos adultos, um possível modelo para o
sistema é:
26

O(k ) = fA(k − 1)
L(k ) = sO O(k − 1)
A(k ) = s L L(k − 1) + s A A(k − 1)

Eq. 6.1-1

Onde f é a taxa de fecundidade dos insetos adultos, sO é a taxa de sobrevivência dos


ovos, sL é a taxa de sobrevivência das larvas e sA é a taxa de sobrevivência dos próprios
insetos adultos de um período para o outro.

Simulando o sistema para 200 instantes de tempo, com 200 adultos iniciais, 0 larvas
e 0 ovos, com: f=1.1, sO=0.9, sL=0.6 e sA=0.4, obtém-se a seguinte evolução temporal:

Figura 6-1 - Evolução temporal de sistema discreto

Utilizando as funções descritas no final desta seção, pode-se simular o sistema e obter
os valores das seqüências O, L e A:

A=adultos(200;1.1;0.9;0.6;0.4);
27

O=ovos(200;1.1;0.9;0.6;0.4);
L=larvas(200;1.1;0.9;0.6;0.4);

Para tornar o sistema mais próximo de um experimento real, será adicionado ruído
aos vetores A, O e L:

r1=0.1*(random(1;200)-0.5*uns(1;200))+uns(1;200)
r2=0.1*(random(1;200)-0.5*uns(1;200))+uns(1;200)
r3=0.1*(random(1;200)-0.5*uns(1;200))+uns(1;200)
A1=dot(A;r1)
O1=dot(O;r2)
L1=dot(O;r3)

Utiliza-se, agora, o módulo de identificação para recuperar os valores dos parâmetros


f, sO, sL e sA.

Importam-se do ambiente as variáveis A1, O1 e L1, e utiliza-se o recurso de atraso


para atrasar um instante de tempo. Após isso, utiliza-se o modelo a seguir:
28

Figura 6-2 - Modelo para Identificação do Sistema de Crescimento Populacional

A execução de uma instância forneceu os valores f=1.096, sO=0.968, sL=0.644 e


sA=0.305. Mesmo na presença de ruído, o modelo foi identificado com boa precisão.

6.1.1 Funções McLabEn para Simulação do Crescimento Populacional

A seguir estão descritas as funções para simulação do sistema discreto. A única


diferença entre as funções é o vetor que retornam (as funções só podem retornar um vetor
na versão atual do software – 1.33).

function larvas(adultosinic;f;so;sl;sa)
//Retorna a quantidade de Larvas
//adultosinic é a quantidade inicial de insetos adultos
//larvas e ovos -> qtd inicial nula
n=200
t=linspace(1;n;n)
O(n)=0
L(n)=0
29

A(n)=0
A(1)=adultosinic
for p=2 to n
O(p)=f*A(1;p-1)
L(p)=so*O(1;p-1)
A(p)=sl*L(1;p-1)+sa*A(1;p-1)
endfor
plot(Larvas;t;L;Ovos;t;O;Adultos;t;A)
return L
end function
function ovos(adultosinic;f;so;sl;sa)
//Retorna a quantidade de ovos
//adultosinic é a quantidade inicial de insetos adultos
//larvas e ovos -> qtd inicial nula
n=200
t=linspace(1;n;n)
O(n)=0
L(n)=0
A(n)=0
A(1)=adultosinic
for p=2 to n
O(p)=f*A(1;p-1)
L(p)=so*O(1;p-1)
A(p)=sl*L(1;p-1)+sa*A(1;p-1)
endfor
plot(Larvas;t;L;Ovos;t;O;Adultos;t;A)
return O
end function
function adultos(adultosinic;f;so;sl;sa)
//Retorna a quantidade de ovos
//adultosinic é a quantidade inicial de insetos adultos
//larvas e ovos -> qtd inicial nula
n=200
t=linspace(1;n;n)
O(n)=0
L(n)=0
A(n)=0
A(1)=adultosinic
30

for p=2 to n
O(p)=f*A(1;p-1)
L(p)=so*O(1;p-1)
A(p)=sl*L(1;p-1)+sa*A(1;p-1)
endfor
plot(Larvas;t;L;Ovos;t;O;Adultos;t;A)
return A
end function

6.2 Identificação de Sistema Massa-Mola-Amortecedor

Foi utilizado o módulo de Equações Diferenciais do McLabEn para simular a resposta


ao degrau de um sistema massa-mola-amortecedor simples, com m=3, c=10 e k=100, para
uma entrada u=100 N:
31

Figura 6-3 - Simulação de um sistema massa-mola-amortecedor

Foram exportados os vetores x, u e t (respectivamente: posição da massa, entrada e


tempo), com dimensões 1x2002.

Adiciona-se ruído uniformemente distribuído no intervalo [-0.05, 0.05] ao vetor x com


os comandos:

ruido=0.1*(random(1;2002)-0.5*uns(1;2002));
x=x+ruido;

O vetor x assim obtido está mostrado a seguir:


32

Figura 6-4 - Resposta ao degrau de um sistema massa-mola, com ruído

A tarefa, agora, consiste em recuperar os dados de massa, constante de amortecimento


e de mola, utilizando os vetores x, u e t:

xInt=lininterp(t;x;6000);
tInt=linspace(0;2;6000);
T=tInt(1;2)
xFilt=passabaixas(xInt;T;5);
uFilt=100*uns(1;numcolunas(xFilt));
v=deriv(xFilt;T);
a=deriv(v;T);
aUt=extrair(a;1;1;1;4000);
vUt=extrair(v;1;1;1;4000);
xUt=extrair(xFilt;1;1;1;4000);
uUt=extrair(uFilt;1;1;1;4000);

As últimas quatro linhas são importantes, pois a filtragem introduziu um efeito


oscilatório inexistente nos últimos termos da seqüência, efeito provavelmente ocasionado
33

pelo janelamento utilizado na função passabaixas. Esse fenômeno merece atenção


especial em contribuições futuras.

Importam-se as variáveis xUt, vUt, aUt e uUt para o módulo de identificação e


identifica-se o modelo:

uUt=[aUt vUt xUt]

Na simulação executada, os valores obtidos para as constantes foram: m=2,36;


c=10,25; k=97,28, resultados próximos dos valores simulados. Esses valores,
evidentemente, podem variar em função do ruído adicionado no vetor de posição x.

Um estudo mais detalhado do sistema envolveria a simulação de sua sensibilidade ao


ruído, de forma a avaliar a robustez do método.

6.3 Identificação de Sistema Massa-Mola-Amortecedor com Dois Graus


de Liberdade

Considere-se um sistema massa-mola-amortecedor com dois graus de liberdade,


descrito pelo sistema de equações diferenciais:

d 2 x1 dx
2
= (u - k 1 x 1 - c 1 - k 2 (x 1 - x 2 ))/m
dt dt
2
d x2
= (-k 2 (x 2 - x 1 ))/m
dt 2

Eq. 6.3-1

Simula-se o sistema com condições iniciais nulas, excitação u = 100 N e parâmetros


unitários no módulo de equações diferenciais:
34

Figura 6-5 - Simulação de um Sistema Massa-Mola com Dois Graus de Liberdade

Utilizando o comando exportar dados, é possível manipular as variáveis x1, x2, x1’
e x2’ (1x231) no ambiente de trabalho.

Supondo medidos os valores de posição e velocidade de ambas as massas, os


vetores x1, x2, x1’ e x2’ são contaminados com ruído aleatório, sempre presente em
medições.

r1=(random(1;231)-0.5*uns(1;231))*0.1+uns(1;231);
r2=(random(1;231)-0.5*uns(1;231))*0.1+uns(1;231);
r3=(random(1;231)-0.5*uns(1;231))*0.1+uns(1;231);
r4=(random(1;231)-0.5*uns(1;231))*0.1+uns(1;231);
x1n=dot(x1;r1);
35

x2n=dot(x2;r2);
v1n=dot(x1';r3);
v2n=dot(x2';r3);

Em seguida, calculam-se as acelerações derivando x1’ e x2’:

a1n=deriv(v1n;0.1);
a2n=deriv(v2n;0.1);

Após esses procedimentos, basta importar x1n, x2n, v1n, v2n, a1n, a2n e u para o
módulo de identificação. Se as massas forem conhecidas, os parâmetros a serem
identificados são k1, k2 e c:

Figura 6-6 - Aplicação do Módulo de Identificação para um Sistema Massa-mola com Dois Graus de
Liberdade

Os valores obtidos nesse teste foram k1=0.991, k2=0.925 e c=0.927, divergindo para
menos dos valores utilizados mas permanecendo com boa concordância.
36

A relevância deste exemplo está no fato de a constante k2 ser estimada


simultaneamente nos dois conjuntos de dados, o que não poderia ser feito aplicando duas
vezes o método de mínimos quadrados para uma única equação.

6.4 Identificação da Dinâmica Lateral de uma Aeronave

Considere-se o problema de identificar os parâmetros da dinâmica lateral de uma


aeronave, cujo modelo Simulink é apresentado a seguir ([3]):

Figura 6-7 - Modelo Simulink para Simulação da Dinâmica Lateral de um Avião

No bloco de dinâmica lateral está implementado o seguinte sistema de equações


diferenciais:
37

⎡ dx1 ⎤
⎢ dt ⎥
⎢ dx ⎥ ⎡− 0.0558 − 0.9968 0.0802 0.0415⎤ ⎡ x1 ⎤ ⎡ 0.00729 0 ⎤
⎢ 2 ⎥ ⎢ 0.5980 − 0.1150 − 0.0318 ⎢ ⎥
0 ⎥ ⎢ x 2 ⎥ ⎢− 0.4750 0.00775⎥⎥ ⎡ u1 ⎤
⎥ ⎢
⎢ dt ⎥ = ⎢ +
⎢ dx3 ⎥ ⎢ − 3.05 0.3880 − 0.4650 0 ⎥ ⎢ x3 ⎥ ⎢ 0.1530 0.1430 ⎥ ⎢⎣u 2 ⎥⎦
⎢ dt ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥
⎢ dx ⎥ ⎣ 0 0.0805 1 0 ⎦ ⎣ x4 ⎦ ⎣ 0 0 ⎦
⎢ 4⎥
⎣ dt ⎦

Eq. 6.4-1

Simulado o sistema de 0 s a 50 s e obtidos os vetores x1, x2, x3, x4, u1 e u2, com
intervalo de amostragem de 0.01 s, deve-se estimar as matrizes A e B a partir desses dados.

Os dados foram exportados para um arquivo texto utilizando-se os seguintes comandos


MATLAB®:

>> z=[x1 x2 x3 x4 u1 u2];


>> save('C:\lateral.txt','z','-ascii');

Após isso, os dados foram importados pelo Módulo de Identificação desenvolvido.


Atrasando um instante de tempo os vetores x1, x2, x3 e x4 e utilizando o método
“backwards” para a discretização do sistema contínuo, obtém-se o sistema a ser
implementado no Módulo de Identificação, mostrado a seguir:
38

Figura 6-8 - Identificação da Dinâmica Lateral do Avião (Matrizes A e B)

Os resultados obtidos nessa identificação estão mostrados a seguir:


39

Figura 6-9 - Resultado da Identificação da Dinâmica Lateral (Matrizes A e B)

Conforme pode-se verificar comparando o resultado apresentado com os valores


utilizados na Eq. 6.4-1, a identificação das matrizes A e B não gerou resultados corretos. O
excesso de parâmetros a serem identificados pode ser uma explicação do processo. Essa
investigação fica pendente.

Por outro lado, suponha-se conhecida a matriz B. Dessa forma, as derivadas de


estabilidade contidas na matriz A podem ser estimadas utilizando o seguinte esquema no
módulo de identificação:
40

Figura 6-10 - Identificação da Dinâmica Lateral do Avião (Matriz A)

Nesse esquema de simulação, o resultado está mostrado na figura a seguir:


41

Figura 6-11 - Resultado da Identificação da Dinâmica Lateral (Matriz A)

Esse resultado possui boa concordância com os valores utilizados para a simulação
(Eq. 6.4-1).

O exemplo mostrado permite concluir que, preliminarmente, é necessário saber se a


quantidade de parâmetros a serem estimados não é excessiva para o método de mínimos
quadrados implementado identificar o sistema. Não foi possível, no escopo desse trabalho,
estabelecer os melhores contornos sobre essa questão.

7. Contribuições Futuras

Este trabalho deve servir de base para a implementação de um identificador automático


de sistemas dinâmicos, que será capaz de propor modelos para ajuste de curvas e modelos
matemáticos.
42

A implementação desse sistema irá exigir a utilização de mecanismos de inteligência


artificial que busquem minimizar a quantidade de variáveis no vetor de parâmetros
desconhecidos e maximizar os indicadores de qualidade da estimativa.

Também, há várias questões teóricas e práticas pendentes quanto à abordagem


implementada neste trabalho, conforme apontado ao longo do texto, que carecem de
estudos mais detalhados. Algumas respostas apresentam limitações que indicam que
precisam ser melhor trabalhadas.

8. Conclusão

Os processos de identificação são utilizados em vários ramos do conhecimento para o


desenvolvimento de modelos computacionais que permitam realizar previsões confiáveis
dentro de certos limites definidos pelo usuário.

Facilitar a proposição de modelos matemáticos e, futuramente, automatizar essa tarefa


é fundamental para reduzir o tempo gasto nessa importante tarefa.

O módulo de identificação apresentado pode ser utilizado para várias tarefas:


identificação de sistemas discretos e contínuos (discretizados), identificação de séries auto-
regressivas e mesmo modelos econométricos.

Os estudos apresentados mostram como uma ferramenta de mínimos quadrados sem


ponderação (OLS) pode ser aplicada na identificação de sistemas com modelos simulados,
apresentando um recurso útil no desenvolvimento de modelos, com aplicações promissoras
nos mais variados campos de engenharia.

9. Referências Bibliográficas
[1] Aguirre, Luis Antonio. 2000. Introdução à Identificação de Sistemas. Editora UFMG.
43

[2] Pindyck, Robert S. e Rubinfeld, Daniel L. 1981. Econometric Models & Economic
Forecasts. McGraw-Hill Book Company.
[3] Adade, A. F., 1989, Análise de Sistemas Dinâmicos¸ Instituto Tecnológico de
Aeronáutica - Divisão de Engenharia Mecânica-Aeronáutica. (Ed. 3, 2003).
[4] Cadzow, James A., 1973, Discrete-Time Systems. Prentice-Hall, Inc.
[5] T. C. Hsia, 1997, System Identification: Least Squares Methods, Lexington Books
44

Apêndice A Demonstrações do Item Formulação para


Múltiplas Equações

A.1 Minimização de ESS

Provar que o estimador apresentado na Eq. 4.1-6 minimiza o ESS. Considere-se o modelo
da Eq. 4.1-4. Então, de Eq. 4.1-5,

( )( )
Q Q Q
ESS = ∑ ε i'ε i = ∑ Yi ' − βˆ ' X i' Yi − X i βˆ = ∑ Yi 'Yi − Yi ' X i βˆ − βˆ ' X i'Yi + βˆ ' X i' X i βˆ
i =1 i =1 i =1

Os pontos extremos de ESS podem ser encontrados derivando-se ESS com respeito ao
estimador e igualando a derivada a zero:

−1
dESS Q
⎡Q ⎤ ⎡Q ⎤
= ∑ − 2 X i'Yi + 2 X i' X i βˆ ⇒ βˆ = ⎢∑ X i' X i ⎥ ⎢∑ X i'Yi ⎥
dβˆ i =1 ⎣ i =1 ⎦ ⎣ i =1 ⎦

Resta provar que o ponto extremo é, de fato, um mínimo. Com efeito:

d 2 ESS Q

dβˆ 2
= ∑
i =1
2 X i' X i

Ou seja, a segunda derivada de ESS é um somatório de matrizes positivas definidas, o


que conclui a demonstração de que o estimador assim obtido, de fato, minimiza ESS.

A.2 Não-tendenciosidade do estimador

O estimador é, claramente, linear. Vai-se provar sua não-tendenciosidade.


45

Deve-se mostrar que E ( βˆ ) = β .

Reescrevendo o estimador:

−1 −1
⎡Q ⎤ ⎡Q ⎤ ⎡Q ⎤ ⎡Q ⎤
βˆ = ⎢∑ X i' X i ⎥ ⎢∑ X i'Yi ⎥ = ⎢∑ X i' X i ⎥ ⎢∑ X i' X i β + X i'ε i ⎥
⎣ i =1 ⎦ ⎣ i =1 ⎦ ⎣ i =1 ⎦ ⎣ i =1 ⎦
−1
⎡Q ⎤ ⎡Q ⎤ ⎡Q ⎤ ⎡Q ⎤
βˆ = ⎢∑ X i' X i ⎥ ⎢∑ X i' X i ⎥ β + ⎢∑ X i' ε i ⎥ = β + ⎢∑ X i' ε i ⎥
⎣ i =1 ⎦ ⎣ i =1 ⎦ ⎣ i =1 ⎦ ⎣ i =1 ⎦

Calcula-se agora seu valor esperado: (lembrando que E(εi) = 0 e o erro é não-
correlacionado com X)

⎛⎡ Q ⎤⎞ Q
E ( βˆ ) = β + E ⎜⎜ ⎢∑ X i' ε i ⎥ ⎟⎟ = β + ∑ X i' E (ε i ) =β
⎝ ⎣ i =1 ⎦⎠ i =1

C.q.m.

Apêndice B Simulação de um Sistema Massa-Mola-


Amortecedor no McLabEn

B.1 Simulação do Sistema

Para simular um sistema massa-mola-amortecedor no McLabEn, basta abrir o


programa, abrir o módulo “Soluções de SEDOs” e preencher o módulo com a informação
mostrada na figura:
46

Figura B-1 - Simulação de um Sistema Massa-Mola-Amortecedor no McLabEn

Após inserir os dados, basta clicar em Resolver. Os gráficos de evolução no tempo das
variáveis dinâmicas do sistema podem ser visualizados diretamente selecionando-se “Gráficos
de evolução no tempo”. Para exportar as variáveis obtidas para o ambiente numérico, basta
clicar em “Exportar dados...”.

Após simular o sistema, é necessário simular o efeito de ruído sobre a saída x. No


McLabEn, pode-se gerar um ruído uniformemente distribuído no intervalo [-0,5, 0,5] com o
comando:
erro=random(1;201)-0.5*uns(1;201)

A variável de saída simulada é:

xerr=x+0.05*erro
47

Nesse caso, xerr tem uma flutuação percentual de 5% sobre seu valor final, que é
unitário. Essa simulação é compatível com resultados reais; na verdade, existem instrumentos
que permitem precisão bem maior do que a simulada.

B.2 Filtragem e Análise do Resultado Simulado

Para o cálculo da derivada, foi criada a função deriv para o ambiente McLabEn:

function deriv(vetor;T)
//Deriva o vetor. Usa o método euler-Backward
temp=1/T
deriv(numcolunas(vetor))=1E-5
for p=2 to numcolunas(vetor)
deriv(1;p)=temp*(vetor(1;p)-vetor(1;p-1))
endfor
deriv(1;1)=deriv(1;2)
return deriv
end function

O cálculo das derivadas de xerr pode ser feito por (lembrando que o intervalo de
amostragem foi especificado como 0.05):

dxerr=deriv(xerr;0.05)
d2xerr=deriv(dxerr;0.05)

B.3 Aproximação por Mínimos Quadrados

Para aproximar a resposta com ruído pelo método dos mínimos quadrados, foi criada
uma função McLabEn:

function minQuad(dadosX;dadosY;grauPoly;querPlotar)
//Ajusta um modelo polinomial para f(x)=y por OLS

//querPlotar=1: Faz grafico comparando ajuste e original


//querPlotar diferente de 1: nao faz
48

//Resolve o sistema dadosY=M*[agrauPoly;(agrauPoly-1);...;a1;a0]


//matriz de coeficientes a=[agrauPoly;(agrauPoly-1);...;a1;a0]
//A matriz M tem a forma:
//[x1^graupoly x1^(grauPoly-1) ... x1³ x1² x1 1]
//[x2^graupoly x1^(grauPoly-1) ... x2³ x2² x2 1]
//[x3^graupoly x1^(grauPoly-1) ... x3³ x3² x3 1]

//Inicio
colunasX=numcolunas(dadosX)

//dimensiona a matriz M
M(colunasX;grauPoly+1)=0

//constroi a matriz M
for p=1 to colunasX
temp=1
for q=0 to grauPoly
M(p;grauPoly+1-q)=temp
temp=temp*extrair(dadosX;1;1;p;p)
endfor
endfor

//construida a matriz M. o vetor a é a pseudoinversa de M vezes dadosY:


transpM=transposta(M)
a=linsolve(transpM*M;transposta(transpM*transposta(dadosY)))

if querPlotar=1 then
//faz dois graficos.
//Um é o do polinômio ajustado, grafico com 1000 pontos
//outro é o grafico dos dados originais
tmin=extrair(dadosX;1;1;1;1)
tmax=extrair(dadosX;1;1;colunasX;colunasX)

t=linspace(tmin;tmax;1000)
ft=polyval(t;a)

plot(Dados originais;dadosX;dadosY;Polinomio ajustado;t;ft)


endif
49

return a
end function

O ajuste de mínimos quadrados dos valores na variável xerr é feito com o comando:

p=minQuad(t;xerr;15;1)

Após esse ajuste, calculam-se os coeficientes dos polinômios derivados com a função
polyder:

function polyder(poly)
//deriva o polinomio
p=numcolunas(poly)
deriv(p-1)=0
for k=1 to p-1
deriv(k)=poly(1;k)*(p-k)
endfor
return deriv
end function

Comandos:

dp=polyder(p)
d2p=polyder(dp)

O cálculo dos pontos de aceleração, velocidade e posição é feito com os comandos:

t=linspace(0;10;201)
xAv=polyval(t;d2p)
vAv=polyval(t;d2p)
aAv=polyval(t;d2p)

O comando polyval também é uma função externa ao McLabEn:

function polyval(x;poly)
//avalia o valor do polinômio nos pontos do vetor x
50

p=numcols(poly)
valor=uns(1;numcols(x))
r=0*uns(1;numcols(x))
do while p>0
r=r+valor*extrair(poly;1;1;p;p)
valor=dot(valor;x)
p=p-1
enddo
return r
end function

Ajustes polinomiais podem apresentar comportamento não desejado quando a função


aproximada é aproximadamente constante, especialmente quando se utiliza uma aproximação
de alta ordem.

No caso em questão, é fácil perceber que o ajuste perde muito de sua qualidade a partir
do instante 9 s, em que velocidade e aceleração aumentam subitamente.

Figura B-2 - Efeitos não desejados do ajuste polinomial por OLS na velocidade e aceleração estimadas a
partir de dados de posição com ruído

Para contornar esse problema, basta considerar o ajuste até o instante 9 s:

t=linspace(0;9;201)
xAv=polyval(t;d2p)
51

vAv=polyval(t;d2p)
aAv=polyval(t;d2p)

Apêndice C Estimação de Parâmetros do Sistema Massa-Mola-


Amortecedor

C.1 Método de Euler

A aproximação pelo método de Euler dos parâmetros do sistema massa-mola-


amortecedor com o módulo de Identificação de Sistemas McLabEn pode ser feita da seguinte
forma:

Figura C-1 - Utilização do identificador de sistemas McLabEn para estimar parâmetros de um sistema
massa-mola-amortecedor usando discretização pelo método Euler-Backwards

C.2 Mínimos Quadrados


52

A aproximação ajuste mínimos quadrados dos parâmetros do sistema massa-mola-


amortecedor com o módulo de Identificação de Sistemas McLabEn pode ser feita da seguinte
forma:

Figura C-2 - Utilização do identificador de sistemas McLabEn para estimar parâmetros de um sistema
massa-mola-amortecedor usando aproximação de posição por mínimos quadrados

(i) Os vetores xAv, vAv e aAv devem estar criados (Apêndice B).
(ii) Clique em Importar..., escolha xAv e clique Ok.
(iii) Clique em Importar..., escolha vAv e clique Ok.
(iv) Clique em Importar..., escolha aAv e clique Ok.
(v) Digite o modelo dinâmico mostrado em Equações do Modelo do Sistema: 1=[aAv
vAv xAv]
(vi) Clique em Estimar Parâmetros.

O resultado da estimação, nesse caso, é m = 1,132, b = 1,038 e c = 1,006. Os valores


obtidos podem variar pois xerr é o valor de x contaminado com erro aleatório.
53

Apêndice D Implementação do Algoritmo de Mínimos


Quadrados
A classe que implementa a identificação de parâmetros está transcrita abaixo. Trata-se do
código em VB.NET implementado para a regressão por mínimos quadrados.

Public Class SysDiscretIdent


'Classe para identificação de parâmetros de sistemas dinâmicos
#Region "Estruturas de dados e variáveis"
Structure varConhecida
Dim expressao As String
Dim nomevar As String
Dim valores() As Double
End Structure
Structure equacoesRegressao
Dim LHS As String
Dim funcLHS As funcReal
Dim RHS() As String
Dim funcRHS() As funcReal
End Structure
Public varCon() As varConhecida
Public qtdVarCon As Integer
Public eqsReg() As equacoesRegressao
Public qtdEqsReg As Integer

'dimensões de matrizes
Public N As Integer
Private Q As Integer, k As Integer

'para armazenar a solução e seus indicadores R² de qualidade


Public beta() As Double 'vai de 1 até k+1, primeiro até k+1 parâmetro

'para armazenar os desvios padrão


Public sigbeta() As Double '1..k+1

Dim YtY As Double 'esse serve para o cálculo dos R


Dim YtYminusc As Double 'idem

Public RQuad As Double


Public RQuadCorrig As Double

#End Region

#Region "Mensagens"
Private Const constTITULO = "Identificação de Sistemas Discretos McLaben"
Private Const constNAOHAIGUALDADE = "A equação não tem sinal de igualdade.
Digite uma equação do tipo x=[n1 n2 ... nk]"
Private Const constINVALIDO = "Equação inválida. Digite uma equação do tipo
x=[n1 n2 ... nk]"
Private Const constEQMODINVAL = "Equação inválida no modelo. Digite uma equação
na forma f(vars)=[f1 f2 ... fk], onde os f são os coeficientes de beta. Equação
inválida: "
Private Const constERRODIMENS = "Dimensões incompatíveis. Deve haver a mesma
quantidade de coeficientes e parâmetros desconhecidos."
Private Const constERRODIMENSVALS = "Variáveis medidas devem ter as mesmas
dimensões. "
Private Const constPOUCASEQS = "Os dados são insuficientes para estimar os
parâmetros."
#End Region
Function eqsModelo(ByVal equacoes As String) As Boolean
'recebe um texto de textbox e identifica, nele, as equações
Dim texto() As String, i As Integer, j As Integer
54

Dim temp() As String


texto = Split(equacoes, Chr(13) + Chr(10))

'texto contém n linhas, as equações


Dim qtdEqs As Integer = UBound(texto)
'evita pegar ultima linha em branco
If Trim(texto(qtdEqs)) = "" Then
qtdEqs -= 1
ReDim Preserve texto(qtdEqs)
End If

'para conferir dimensões


Dim qtddados As Integer

ReDim eqsReg(qtdEqs)
For i = 0 To UBound(texto)
'fk=[xk yk xk*xk]*transposta([a b c])
temp = Split(texto(i), "=")
If Not UBound(temp) = 1 Then
MsgBox(constEQMODINVAL, MsgBoxStyle.Critical, constTITULO + Chr(13)
+ Chr(10) + texto(i))
Return False
End If
eqsReg(i).LHS = Trim(Replace(temp(0), " ", ""))
eqsReg(i).funcLHS = New funcReal()
eqsReg(i).funcLHS.expressao = eqsReg(i).LHS

If Not Mid(temp(1), 1, 1) = "[" Or Not Right(temp(1), 1) = "]" Then


MsgBox(constEQMODINVAL, MsgBoxStyle.Critical, constTITULO + Chr(13)
+ Chr(10) + texto(i))
Return False
End If
temp(1) = Mid(temp(1), 2, Len(temp(1)) - 2)

temp = Split(temp(1)) 'agora temp contém as equações dos coeficientes


ReDim eqsReg(i).RHS(UBound(temp))
ReDim eqsReg(i).funcRHS(UBound(temp))

If qtddados = 0 Then
qtddados = UBound(temp)
Else
If Not UBound(temp) = qtddados Then
MsgBox(constERRODIMENS + Chr(13) + Chr(10) + texto(i),
MsgBoxStyle.Critical, constTITULO)
Return False
End If
End If

For j = 0 To UBound(temp)
eqsReg(i).RHS(j) = temp(j)
eqsReg(i).funcRHS(j) = New funcReal()
eqsReg(i).funcRHS(j).expressao = eqsReg(i).RHS(j)
Next
Next
qtdEqsReg = qtdEqs + 1
Return True
End Function
Function addEqVarCon(ByVal equacao As String) As Boolean
Dim texto() As String, nomevar As String, numeros() As Double
'separa a igualdade
texto = Split(equacao, "=")

If UBound(texto) = 0 Then
MsgBox(constNAOHAIGUALDADE, MsgBoxStyle.Critical, constTITULO)
Return False
End If
If Not UBound(texto) = 1 Then
MsgBox(constINVALIDO, MsgBoxStyle.Critical, constTITULO)
55

Return False
End If

'texto(0) contém o nome da variável


'texto(1) contém seus valores: [1 2 3 4], por exemplo
nomevar = Trim(Replace(texto(0), " ", ""))

'identifica os números
texto(1) = Trim(texto(1))

'e se for uma constante?


Dim temp() As String
temp = Split(texto(1))
If UBound(temp) = 0 Then 'é mesmo um escalar
texto(1) = "[" + texto(1) + "]"
End If

If Not Right(texto(1), 1) = "]" Or Not Mid(texto(1), 1, 1) = "[" Then


MsgBox(constINVALIDO, MsgBoxStyle.Critical, constTITULO)
Return False
End If
texto(1) = Mid(texto(1), 2, Len(texto(1)) - 2) 'retira o "[" e o "]"

texto = Split(texto(1))
ReDim numeros(UBound(texto))
Dim i As Integer
For i = 0 To UBound(texto)
If IsNumeric(texto(0)) Then
numeros(i) = CDbl(texto(i))
Else
MsgBox(constINVALIDO, MsgBoxStyle.Critical, constTITULO)
Return False
End If
Next
addVarConhecida(nomevar, numeros, equacao)
Return True
End Function
Sub addVarConhecida(ByVal nome As String, ByVal valores() As Double, ByVal
expressao As String)
'adiciona uma variável na lista de variáveis obtidas experimentalmente

Dim pos As Integer, i As Integer


pos = localizaVarConhecida(nome)
If pos = -1 Then 'não achou. adiciona
qtdVarCon += 1
ReDim Preserve varCon(qtdVarCon - 1)
pos = qtdVarCon - 1
varCon(pos).nomevar = nome
End If
varCon(pos).expressao = expressao
ReDim varCon(pos).valores(UBound(valores))
For i = 0 To UBound(valores)
varCon(pos).valores(i) = valores(i)
Next
End Sub
Function localizaVarConhecida(ByVal nome As String) As Integer
'localiza a variável conhecida. Se achar retorna a posição. Se não, retorna
-1
If qtdVarCon = 0 Then Return -1
Dim i As Integer
For i = 0 To qtdVarCon - 1
If varCon(i).nomevar = nome Then Return i
Next
Return -1
End Function
Function calcParams(Optional ByVal calcIncerts As Boolean = False) As Double()
'zera os indicadores de qualidade
RQuad = 0
56

RQuadCorrig = 0
YtY = 0
YtYminusc = 0

If qtdEqsReg > 0 Then


'faz o cálculo da estimativa utilizando o método de mínimos quadrados
'dim resp() As Double

'cálculo das dimensões N, k e Q. beta[0..k], X[0..N,0..k], Y[0..N],


A[0..k,0..k]
N = 0
k = 0
Q = qtdEqsReg - 1
Dim i As Integer, j As Integer, p As Integer, pp As Integer
For i = 0 To qtdVarCon - 1
If N > 0 Then
If N <> UBound(varCon(i).valores) And UBound(varCon(i).valores)
> 0 Then
Throw New Exception(constERRODIMENSVALS + CStr(N) + "<>" +
CStr(UBound(varCon(i).valores)))
End If
Else
N = UBound(varCon(i).valores)
End If
Next

'já verifiquei a compatibilidade de dimensões em eqsReg no momento


'da leitura
k = UBound(eqsReg(0).RHS)

If N < k Then
Throw New Exception(constPOUCASEQS)
End If

'lembrete: quantidade de amostras: N+1


'quantidade de variáveis estimadas: k+1
'é necessário calcular a matriz A[k x k]=sum(Xi'*Xi), b=sum(Xi'Yi)

'A está com índices k+1 por causa do linsolve


Dim A(k + 1, k + 1) As Double
Dim b(k + 1) As Double

'X vai armazenar os valores das matrizes Xi


'Y vai armazenar os valores dos vetores Yi
Dim X(N, k) As Double
Dim Y(N) As Double

'para o cálculo de YtY que é y'y dos modelos de RSS


Dim somaQuad As Double
Dim somaY As Double
Dim invN As Double = 1 / N

Dim vars As New Variaveis()


Dim posicoes(qtdVarCon - 1) As Integer
'adiciona todas as variáveis conhecidas.
'Adicionando varcon(i).valores(0), não preciso modificar
'os escalares mais tarde, os valores já ficam armazenados.
For j = 0 To qtdVarCon - 1
vars.addVar(varCon(j).nomevar, varCon(j).valores(0))
posicoes(j) = vars.localizaVar(varCon(j).nomevar)
Next

'calcula as matrizes A e b
For p = 0 To Q
somaQuad = 0
somaY = 0
For i = 0 To N
'joga os valores das variáveis em var
57

For j = 0 To qtdVarCon - 1
If UBound(varCon(j).valores) > 0 Then
vars.valores(posicoes(j)) = varCon(j).valores(i)
End If
Next

'calcula os Y
Y(i) = eqsReg(p).funcLHS.avaliar(vars)
somaQuad += Y(i) * Y(i)
somaY += Y(i)

'calcula os X
For j = 0 To k
X(i, j) = eqsReg(p).funcRHS(j).avaliar(vars)
Next
Next

YtY += somaQuad
YtYminusc += somaQuad - invN * somaY

'adiciona os valores na matriz A e vetor b


'matriz A

For i = 0 To k 'X'[0..k,0..N], X[0..N,0..k] - X[i,j] - X'=X[j,i]


For j = 0 To k
For pp = 0 To N
A(i + 1, j + 1) += X(pp, i) * X(pp, j)
Next
Next
Next

'vetor b
For i = 0 To k
For pp = 0 To N
b(i + 1) += X(pp, i) * Y(pp)
Next
Next
Next
'acabei de calcular a matriz A e o vetor b. Basta resolver o sistema
linear
linsolve(A, b, False) 'lembrando q A não se altera nessa função

ReDim beta(UBound(b))
For i = 0 To UBound(b)
beta(i) = b(i)
Next

'calcula os indicadores de qualidade


'calcula beta'*A'*A*beta
Dim btAtAb As Double = 0
Dim numTemp As Double = 0
For j = 1 To k + 1
numTemp = 0
For p = 1 To k + 1
numTemp += beta(p) * A(p, j)
Next
btAtAb += numTemp * beta(j)
Next
'RQuad = (btAtAb + YtYminusc - YtY) / YtYminusc
RQuad = btAtAb / YtY
RQuadCorrig = 1 - (N - 1) / (N - k) * (YtY - btAtAb) / YtYminusc

'*************
'para o cálculo dos intervalos de confiança, é preciso inverter A
'*************
If calcIncerts Then
'cria uma variável para o cálculo do desvio padrão do erro, e uma
matriz para conter a inversa de A
58

Dim sigma As Double, Yestim(N) As Double


Dim invA(,) As Double

For j = 0 To N
For p = 0 To k
Yestim(j) += X(j, p) * beta(p + 1)
Next
Next

'calcula as somas dos quadrados dos resíduos e estima o desvio


padrão
sigma = 0
For j = 0 To N
sigma += (Y(j) - Yestim(j)) * (Y(j) - Yestim(j))
Next
sigma = Math.Sqrt(sigma / (N - k))

'inverte a matriz A
inversaprox(A, invA)

'calcula as incertezas
ReDim sigbeta(UBound(beta))
For j = 0 To k
sigbeta(j + 1) = sigma * Math.Sqrt(invA(j + 1, j + 1))
Next
End If

Return b 'parâmetros: de b(1) até b(k+1)


End If
End Function

End Class
MCLABEN
Guia de Referência
v1.33 (Beta)

Matemática Computacional: Laboratório em


Engenharia e Ciências

Versão 1.33 (Beta)


Douglas Coimbra de Andrade
07/05/2005
Guia de Referência McLabEn

1. Índice

1. ÍNDICE.................................................................................................................. 2

2. INTRODUÇÃO .................................................................................................... 4

3. COMANDOS DA LINHA DE COMANDO ...................................................... 4

3.1 CRIANDO MATRIZES E VETORES.......................................................................................................................4


3.2 FUNÇÕES MATEMÁTICAS RECONHECIDAS ........................................................................................................5
3.2.1 Funções que admitem argumentos matriciais complexos ...........................................................................5
3.2.2 Funções que admitem argumentos matriciais reais ....................................................................................5
3.2.3 Funções geradoras de matrizes e vetores ...................................................................................................6
3.2.4 Funções que operam vetores.......................................................................................................................6

4. ÁLGEBRA LINEAR............................................................................................ 6

4.1 EDITOR DE MATRIZES .......................................................................................................................................7


4.2 TRANSPOSTA, INVERSA E DETERMINANTE........................................................................................................7
4.3 RESOLVER SISTEMA LINEAR .............................................................................................................................7

5. PROGRAMAÇÃO MCLABEN.......................................................................... 8

5.1 DIRETÓRIO DE TRABALHO ................................................................................................................................8


5.2 CONDIÇÕES NOS COMANDOS ............................................................................................................................8
5.3 COMANDOS .......................................................................................................................................................8
5.3.1 Comandos de Atribuição.............................................................................................................................8
5.3.2 If – Then – Else – EndIf...............................................................................................................................8
5.3.3 Do While – EndDo ......................................................................................................................................8
5.3.4 For a=b To c EndFor..................................................................................................................................8
5.3.5 Gráficos: Plot..............................................................................................................................................8
5.3.6 Caixa de Mensagem: CaixaMsg..................................................................................................................8
5.3.7 Recomendações para Programação Eficiente ............................................................................................8

6. GRÁFICOS ........................................................................................................... 8

6.1 GRÁFICOS YXX ................................................................................................................................................8


6.2 CURVAS E SUPERFÍCIES NO ESPAÇO..................................................................................................................8
6.3 INTERFACE PARA GRÁFICOS .............................................................................................................................9
6.3.1 Manipulação de Curvas (Ambiente 2D)......................................................................................................9
6.3.2 Manipulação de Curvas e Superfícies (Ambiente 3D) ..............................................................................11
6.4 AQUISIÇÃO DE DADOS ....................................................................................................................................11
6.4.1 Caso Especial: Autoadquirir.....................................................................................................................12
6.5 PROPAGAÇÃO DE INCERTEZAS ........................................................................................................................14
6.5.1 Propagação de Incertezas.........................................................................................................................14
6.5.2 Fórmulas ...................................................................................................................................................16

7. SEDOS E SISTEMAS DINÂMICOS ............................................................... 17

7.1 SOLUÇÕES DE SEDOS.....................................................................................................................................17


7.1.1 Inserção das Equações no Solucionador ..................................................................................................17

2
Guia de Referência McLabEn

7.1.1.1 Comentários.....................................................................................................................................17
7.1.1.2 Relações Diferenciais ......................................................................................................................17
7.1.1.3 Igualdades........................................................................................................................................18
7.1.1.4 Restrições e Vantagens ....................................................................................................................18
7.1.2 Inserção das Condições Iniciais................................................................................................................19
7.1.3 Ajuste dos Parâmetros da Solução Numérica ...........................................................................................19
7.1.4 Respostas, Gráficos e Estatística do Solver ..............................................................................................20
7.1.5 Exportação de Dados/Salvar SEDOs/Ler SEDOs a partir de Arquivos ...................................................20
7.2 GRAFOS DE FLUXO DE SINAIS .........................................................................................................................20
7.2.1 Criação do Grafo ......................................................................................................................................21
7.2.2 Análises do Grafo......................................................................................................................................22
7.2.3 Salvar/abrir Grafo ....................................................................................................................................22

8. IDENTIFICADOR DE PADRÕES .................................................................. 22

9. CRIPTOGRAFIA CAÓTICA........................................................................... 22

10. BIBLIOGRAFIA............................................................................................. 22

APÊNDICE A – CONSTANTES PRÉ-DEFINIDAS ............................................ 22

APÊNDICE B – COMANDOS DE SISTEMA....................................................... 23

APÊNDICE C – ALGORITMOS A SEREM IMPLEMENTADOS ................... 23

APÊNDICE D – ORDEM DAS COMPONENTES DE FREQÜÊNCIA DA FFT


..................................................................................................................................... 23

APÊNDICE E – BUGS CONSERTADOS.............................................................. 24

3
Guia de Referência McLabEn

2. Introdução
McLabEn é um sistema concebido para permitir manipulação numérica rápida e eficiente de dados e
matrizes. Seu interpretador é capaz de realizar com celeridade grande parte das operações corriqueiras,
como solução de sistemas lineares, inversão de matrizes e avaliação numérica de expressões (que podem
incluir números complexos).

As caixas de ferramentas auxiliares fornecem recursos muito úteis e fáceis de utilizar para a solução
de diversos problemas (solução de equações diferenciais, construção de gráficos, simulação de grafos de
sistemas, etc.). A missão do programa é oferecer soluções em cálculo numérico e algoritmos
computacionais inteligentes que sejam muito fáceis de utilizar, sem comprometimento da qualidade das
soluções.

3. Comandos da Linha de Comando

Para executar um comando basta digitá-lo na caixa Comando e pressionar Enter (ou clicar
Executar).

Os comandos executados na linha de comando têm uma sintaxe padrão:

<variável> = <valor>.

Quando a variável não é especificada, o programa atribui seu valor à variável de sistema ans.
Podem ser utilizados argumentos complexos nas funções matemáticas que admitem tais argumentos. Nota:
o ambiente é case sensitive, ou seja, existe diferença entre maiúsculas e minúsculas (por exemplo, abs
funciona; Abs não). A unidade imaginária é ‘i’ (minúsculo) ou ‘j’ (minúsculo).

Nas funções com mais de um argumento, o caractere separador é o ; (ponto e vírgula).

Para executar o comando desejado, digite-o na linha de comando e pressione Enter.

3.1 Criando Matrizes e Vetores


A sintaxe utilizada para criar matrizes e vetores é a seguinte:

4
Guia de Referência McLabEn

• Os elementos do vetor/matriz ficam entre chaves []


• Os elementos de uma mesma linha são separados por espaço
• A separação de linha é feita através do ponto-e-vírgula (;)

Exemplos:
Comando Resposta
M=[1 2 3;-2 1 2;3 5 6] M =
[1 2 3
-2 1 2
3 5 6 ]
b=[1 2 3+i] b =
[1 2 3+i ]

Para acessar elementos ou submatrizes de uma matriz utilize o comando extrair (descrito em
Funções Matemáticas Reconhecidas).

3.2 Funções Matemáticas Reconhecidas


3.2.1 Funções que admitem argumentos matriciais complexos
Descrição Funções (argumentos: z, x, y Exemplos
etc.)
Argumento de número complexo arg(z), Arg(z) arg(cos(Pi/6)+sin(Pi/6)*i)/Pi*180=30
Determinante det(z) det([1 i;2 3])=3-2*i
Dimensões de matriz numlinhas(z), numcols(z) =
numcolunas(z)
Exponencial exp(z) exp(1)=2,718281828459
Extrair submatriz de matriz extrair(z;L0;Lf;C0;Cf)
começando na linha L0 e terminando
em Lf e começando na coluna C0 e
terminando em Cf
Funções trigonométricas sen(z) = sin(z), cos(z), tan(z) = sin(i)=1,175201193644*i
tg(z), sec(z), cossec(z) =
csc(z), cotan(z) = cotg(z)
Funções trigonométricas senh(z) = sinh(z), cosh(z),
hiperbólicas tanh(z)
Inversa de matriz invmat(z) = inversa(z) =
inverse(z)
Inverso dos termos de uma matriz invtermos(z) invtermos([0.5 2])=[2 0.5]
Logaritmo ln(z) ln(exp(1))=1
Norma (v0.5) norma(A) = norm(A) norma([1 1;1 1])=2 (=sqrt(4))
Parte imaginária de número Im(z) Im([i 1])=[1 0], Im(3+4*i)=4
complexo
Parte real de número complexo Re(z) Re([i 1])=[0 1], Re(3+4*i)=3
Potenciação pow(x;y) = x^y pow(4;i)= 0,18345697+0,983027*i
Produto entre matrizes x*y [1 2;1 2]*[2 3;1 2]=[4 7;4 7]
Produto escalar dot(x;y) = prodescalar(x;y) =
prodesc(x;y)
Raiz quadrada sqrt(z) sqrt(-1)=i
Solução de sistemas lineares – linsolve(A;b) = sistlinear(A;b)
resolve o sistema Ax=b
Solução de sistemas lineares reais: linsolvereal(A;b)
resolve Re(A)x=Re(b)
Transposta de matriz transpose(z) = transposta(z)
Valor absoluto abs(z) abs(-1)=1, abs(3+4*i)=5

3.2.2 Funções que admitem argumentos matriciais reais


Descrição Funções (argumentos: z, x, y etc.) Exemplos
Funções trigonométricas inversas arctan(z) = arctg(z), arcsin(z) = arcsen(z),

5
Guia de Referência McLabEn

arccos(z)
Função Degrau Unitário Heaviside(z), Hs(z) Hs([-1 1 2])=[0 1 1]
Função fatorial (v0.41) gama(z) = gamma(z) = fatorial(z) = factorial(z) gama(4)=6,
gama(4,5)
Piso piso(z), floor(z) floor([1,2 2,3])=[1 2]
Teto teto(z), ceil(z) ceil([1,2 2,3])=[2 3]

3.2.3 Funções geradoras de matrizes e vetores


Descrição Funções (argumentos: z, x, y etc.) Exemplos
Identidade nxn identity(n) = identidade(n)
Matriz de Vandermonde nxn Vander(n) = vander(n) = Vandermonde(n)
= vandemonde(n)
Matriz pxq de números reais random(p;q)=aleat(p;q)
aleatórios uniformemente distribuídos
no intervalo [0,1].
Matriz nxm de linhas iguais e colunas linspaceY(x0;xf;n;m) linspaceY(0;5;2;6)=
igualmente espaçadas (v0.5) [0 1 2 3 4 5;
0 1 2 3 4 5]T
Matriz nxm de colunas iguais e linhas linspaceX(x0;xf;n;m) linspaceX(0;5;6;2)=
igualmente espaçadas (v0.5) [0 1 2 3 4 5;
0 1 2 3 4 5]
Matriz de uns (v0.42) uns(2;2), ones(3;1) uns(1;4)=[1 1 1 1]
uns(2;2)=[1 1;1 1]
Vetor com seqüência linear linspace(x0;xf;n) linspace(0;5;6)=[0 1 2 3
começando em x0, terminando em xf 4 5]
com n pontos igualmente espaçados
no intervalo.

3.2.4 Funções que operam vetores


Descrição Funções (argumentos: z, Exemplos
x, y etc.)
Transformada rápida de Fourier FFT FFT(v) FFT([1 2 3 4])
(v0.42)
Raízes de equações polinomiais raízes(v), roots(v), raizes(v) roots([1 -3 2])
complexas (v0.5) ans =
Trata-se de uma implementação do [1 2 ]
método de Laguerre que, nos testes roots([1 -i 2+i])
realizados, mostrou eficiência para ans =
polinômios de grau até 50, podendo [0.32574-1.035*i -0.32574+2.035*i ]
ocorrer perda de raízes para
polinômios de graus maiores.
Transformada rápida inversa de iFFT(v) iFFT([1 2 3 4])
Fourier iFFT (v0.42)

4. Álgebra Linear

6
Guia de Referência McLabEn

4.1 Editor de Matrizes


O editor de matrizes é um recurso construído para facilitar a edição de matrizes existentes, embora
também sirva para criar novas matrizes. O procedimento para criar/editar matrizes é o seguinte:

1. Se a intenção é criar uma nova matriz, pule para o passo 2. Para abrir uma matriz existente na
memória do ambiente de trabalho, clique na lista “Importar Variável” e escolha a variável a ser
importada para o ambiente de edição. Os elementos do vetor ou matriz aparecem na tela, dentro do
frame Matriz.
2. Escolha o número de linhas e colunas da matriz, editando as caixas de texto “Linhas” e “Colunas”.
3. Altere os valores dos elementos desejados. O elemento a(i,j) é o elemento da i-ésima linha e j-
ésima coluna. Digite o valor a ser atribuído e pressione Enter (ou clique no botão Alterar).
4. Repita o passo 3 até editar todos os valores desejados.
5. Exporte a matriz criada para o ambiente McLabEn digitando o nome da variável no campo “Atribuir
Variável” e clicando no botão “Atribuir”.

4.2 Transposta, Inversa e Determinante


Ao clicar em qualquer uma das opções acima, o McLabEn abre uma janela perguntando qual matriz,
dentre as que estão na memória, deve ser tomada como argumento. No caso de inversa e determinante,
somente as matrizes quadradas são exibidas.

Se a matriz não for inversível, a resposta é uma matriz identicamente nula de mesma dimensão do
argumento.

4.3 Resolver Sistema Linear


Resolve o sistema linear Ax=b pelo método da fatoração LU. Ao clicar nessa opção, o McLabEn
exibe todas as matrizes quadradas nxn na memória (que será a matriz A da fórmula). A seguir, o sistema
mostra todos os vetores 1xn compatíveis com a matriz A (ou seja, se A é 3x3, exibe todos os vetores 1x3).
Após selecionados os dois argumentos, o programa exibe a resposta.

7
Guia de Referência McLabEn

5. Programação McLabEn
O usuário McLabEn pode criar suas próprias funções (v1.2). Essas funções são interpretadas e
armazenadas internamente quando invocadas na linha de comando. De dentro das funções é possível
invocar todos os comandos da linha de comando e também todas as demais funções criadas pelo usuário.
Cada função criada pelo usuário deve ficar em um arquivo diferente. Um cuidado essencial é dar ao
arquivo contendo a função <função> o nome <função>.mcf. Por exemplo, a função minQuad deve estar
implementada no arquivo minQuad.mcf. Atenção: o McLabEn diferencia maiúsculas e minúsculas em
funções. Dessa forma, minquad não é o mesmo que minQuad.

5.1 Diretório de Trabalho


As funções do usuário ficam armazenadas em um diretório.

5.2 Condições nos Comandos


5.3 Comandos
5.3.1 Comandos de Atribuição

5.3.2 If – Then – Else – EndIf

5.3.3 Do While – EndDo

5.3.4 For a=b To c EndFor

5.3.5 Gráficos: Plot

5.3.6 Caixa de Mensagem: CaixaMsg

5.3.7 Recomendações para Programação Eficiente

6. Gráficos

6.1 Gráficos YxX


Inicialmente, o programa pede para o usuário escolher o vetor que contém as coordenadas X dos
pontos e, após isso, o vetor que contém as coordenadas Y, para construir o gráfico YxX. Em seguida, pede-
se o título que será exibido na tela. Para não adicionar novos dados ao ambiente de gráficos 2D, basta
clicar Cancelar em alguma das etapas.

6.2 Curvas e Superfícies no Espaço


v0.5 – Utilização do pacote gráfico OpenGL para renderização dos gráficos.

Com a implementação de OpenGL , tornou-se possível confeccionar gráficos de curvas e


superfícies tridimensionais.

8
Guia de Referência McLabEn

Para confeccionar curvas tridimensionais, basta selecionar “Curvas no Espaço” no menu gráficos e
escolher os vetores que contêm as coordenadas X, Y e Z dos pontos. Pode-se, também, definir cores nos
vértices. As cores são interpoladas linearmente pela placa de vídeo.
Para plotar superfícies, é necessário criar as matrizes de suas coordenadas X, Y e Z. Para essa
finalidade, foram implementadas as funções linspaceX e linspaceY. Exemplo: gráfico de uma gaussiana:

matrx=linspaceX(-3;3;10;10)
matry=linspaceY(-3;3;10;10)
fxy=exp(-dot(matrx;matrx)-dot(matry;matry))

matrx =
[-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3
-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3
-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3
-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3
-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3
-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3
-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3
-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3
-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3
-3 -2.333 -1.667 -1 -0.3333 0.3333 1 1.667 2.333 3 ]

matry =
[-3 -3 -3 -3 -3 -3 -3 -3 -3 -3
-2.333 -2.333 -2.333 -2.333 -2.333 -2.333 -2.333 -2.333 -2.333 -2.333
-1.667 -1.667 -1.667 -1.667 -1.667 -1.667 -1.667 -1.667 -1.667 -1.667
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-0.3333 -0.3333 -0.3333 -0.3333 -0.3333 -0.3333 -0.3333 -0.3333 -0.3333 -0.3333
0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333
1 1 1 1 1 1 1 1 1 1
1.667 1.667 1.667 1.667 1.667 1.667 1.667 1.667 1.667 1.667
2.333 2.333 2.333 2.333 2.333 2.333 2.333 2.333 2.333 2.333
3 3 3 3 3 3 3 3 3 3 ]

fxy =
[1.523E-08 5.332E-07 7.673E-06 4.54E-05 0.0001104 0.0001104 4.54E-05 7.673E-06 5.332E-07 1.523E-08
5.332E-07 1.866E-05 0.0002686 0.001589 0.003866 0.003866 0.001589 0.0002686 1.866E-05 5.332E-07
7.673E-06 0.0002686 0.003866 0.02287 0.05564 0.05564 0.02287 0.003866 0.0002686 7.673E-06
4.54E-05 0.001589 0.02287 0.1353 0.3292 0.3292 0.1353 0.02287 0.001589 4.54E-05
0.0001104 0.003866 0.05564 0.3292 0.8007 0.8007 0.3292 0.05564 0.003866 0.0001104
0.0001104 0.003866 0.05564 0.3292 0.8007 0.8007 0.3292 0.05564 0.003866 0.0001104
4.54E-05 0.001589 0.02287 0.1353 0.3292 0.3292 0.1353 0.02287 0.001589 4.54E-05
7.673E-06 0.0002686 0.003866 0.02287 0.05564 0.05564 0.02287 0.003866 0.0002686 7.673E-06
5.332E-07 1.866E-05 0.0002686 0.001589 0.003866 0.003866 0.001589 0.0002686 1.866E-05 5.332E-07
1.523E-08 5.332E-07 7.673E-06 4.54E-05 0.0001104 0.0001104 4.54E-05 7.673E-06 5.332E-07 1.52E-08]

Os dados referentes à função são fxy. Naturalmente, é possível parametrizar superfícies utilizando
esse método.

6.3 Interface para Gráficos

O ambiente gráfico McLabEn inclui curvas e superfícies e será explicado no presente tópico. A
interface suporta tridimensionalidade, que pode ser ativada com a opção “Exibir gráfico em contexto
tridimensional”, e permite interatividade com o mouse.

6.3.1 Manipulação de Curvas (Ambiente 2D)

O primeiro passo para começar a manipulação é escolher um conjunto de dados clicando na


lista de nome “Curvas:”. Após isso, os recursos disponíveis são:

9
Guia de Referência McLabEn

Recurso Procedimento
Apagar o conjunto de dados Clique no botão Apagar
Editar ponto do conjunto de dados Escolha o ponto na lista “Pontos do gráfico” e clique no botão Editar.
Em seguida, digite as novas coordenadas do ponto no formato [x y].
Eliminar ponto do conjunto de dados Escolha o ponto na lista “Pontos do gráfico” e clique no botão
Eliminar.
Escala automática de todos os Clique no menu Gráfico –> Escala Automática ou clique com o botão
conjuntos de pontos que estão direito do mouse na área de desenho
sendo exibidos
Esconder o conjunto de dados Clique no botão Esconder
Exibir conjunto de dados Basta escolher o conjunto de dados
Exibir marca nos pontos do conjunto Clique no menu Tipo de Ponto. Escolha um tipo de gráfico dentre as
de dados opções definidas OU determine um caracter que irá marcar os pontos
(Tipo de Ponto -> Letra) OU escolha numerar os pontos na ordem em
que foram armazenados (Numerar Pontos).
Exportar para um arquivo Clique no menu Exportar/Importar Dados -> Exportar para Arquivo e
crie o arquivo .txt que irá conter o conjunto de dados.
Exportar para uma variável no Clique no menu Exportar/Importar Dados -> Exportar variável.
ambiente de comando McLabEn Escolha os nomes das variáveis que irão receber os dados do eixo X
e Y. Nota: se as variáveis já existirem, elas serão sobrescritas.
Importar de arquivo Clique no menu Exportar/Importar Dados -> Importar do Arquivo e
selecione o arquivo de dados .txt no formato reconhecido pelo
McLabEn.
Mudar a cor do conjunto de dados Clique no botão Cor... e selecione da lista
Não exibir marca nos pontos do Clique no menu Tipo de Ponto -> Não exibir pontos
gráfico
Quantidade de divisões nos eixos Clique no menu Gráfico -> Divisões no eixo X (ou Y) e escolha a
densidade de divisões (Nenhuma, Poucas, Médias, Muitas)

10
Guia de Referência McLabEn

Zoom em parte do gráfico Clique e arraste o mouse sobre a região a ser magnificada

6.3.2 Manipulação de Curvas e Superfícies (Ambiente 3D)

O ambiente 3D permite apenas rotação dos eixos e escala automática.

6.4 Aquisição de Dados


O objetivo do sistema de aquisição de dados é ler uma figura (.bmp, .jpg, etc.) que contenha um
gráfico de função (que pode, inclusive, ter sido escaneado) e extrair desse gráfico as coordenadas dos
pontos da função. Para que o sistema funcione perfeitamente, as recomendações são as seguintes:

• A cor da função a ser adquirida deve ser diferente de todas as demais cores da figura. Isso é
essencial para que o software não confunda quais pontos pertencem à função e quais pontos
devem ser ignorados.
• O gráfico deve representar uma função. Se isso não acontecer, somente os pontos do extremo
superior serão adquiridos.

Para efetuar a leitura, siga os seguintes passos:

11
Guia de Referência McLabEn

1. Clique no menu Figura -> Importar... e carregue a figura contendo o gráfico da função;
2. Garanta que a cor da função é diferente das demais cores da figura;
3. Se a imagem não estiver com um desnível angular, pule para o passo 4. Se não, determine um
ângulo de correção e clique no botão Rotacionar até que a angulação do gráfico esteja da forma
desejada;
4. Clique no botão Coordenadas Iniciais..., especifique o valor da coordenada e clique em um
ponto da imagem que corresponda a essas coordenadas *;
5. Similarmente, Clique no botão Coordenadas Finais..., especifique o valor da coordenada e
clique em um ponto da imagem que corresponda a essas coordenadas *. Importante: o sistema
adquire pontos em toda a extensão vertical do gráfico, mas na direção horizontal, apenas entre
as coordenadas iniciais e finais;
6. Determine a cor do gráfico. Faça isso clicando no botão Cor do Gráfico e, em seguida, clicando
em um ponto dentro da figura que seja da mesma cor do gráfico (isto é, clique em um ponto
do gráfico para que o programa identifique sua cor). Verifique se a cor selecionada a partir
do gráfico é a desejada na cor que aparece ao lado do botão Cor do Gráfico;
7. Clique no botão Adquirir e especifique a quantidade de pontos igualmente espaçados que serão
adquiridos a partir da figura;
8. Clique no botão Plotar Dados... para manipular os dados adquiridos na interface para gráficos
2D.

(v1.33) * Se a figura for maior do que o espaço disponível na tela, basta utilizar as barras de
rolagem para acessar a região do gráfico que corresponde à coordenada desejada.

6.4.1 Caso Especial: Autoadquirir

12
Guia de Referência McLabEn

Existem casos em que os gráficos estão muito bem definidos, suas cores são bem diferentes das
cores das linhas do grid (ou não há grid), mas eles possuem, todos, a mesma cor, como no exemplo
mostrado neste tópico.

Nesses casos, como o algoritmo de aquisição faz a leitura de cima para baixo, é necessário editar
manualmente a figura para apagar os gráficos superiores, o que pode ser um incômodo. Para isso, foi
criado um algoritmo específico, que tenta reconhecer pontos de funções que não apresentem
descontinuidades. Em resumo, se:

• A imagem contém várias curvas que não se tocam (essencial);


• Essas curvas não contêm descontinuidades e estão bem definidas na imagem (essencial);
• Não há grid ou o grid tem cor diferente da dos gráficos (essencial);
• As curvas têm cores parecidas (este requisito não é essencial para o funcionamento do
Autoadquirir).

Então, o procedimento que utiliza o comando Autoadquirir é o mais adequado:

1. Clique no menu Figura -> Importar... e carregue a figura contendo o gráfico da função;
2. Marque o botão Autoadquirir;
3. Clique no botão Coordenadas Iniciais..., especifique o valor da coordenada e clique em um ponto da
imagem que corresponda a essas coordenadas;
4. Similarmente, Clique no botão Coordenadas Finais..., especifique o valor da coordenada e clique
em um ponto da imagem que corresponda a essas coordenadas. Importante: o sistema adquire

13
Guia de Referência McLabEn

pontos em toda a extensão vertical do gráfico, mas na direção horizontal, apenas entre as
coordenadas iniciais e finais;
5. Clique no botão Cor do Gráfico. Clique sobre a curva cujos dados deseja adquirir. O programa
adquire automaticamente os dados, mostrando os gráficos correspondentes.
6. Se for necessário adquirir os dados de mais curvas, basta clicar nos demais gráficos.

6.5 Propagação de Incertezas


O sistema de Propagação de Incertezas é um meio prático para propagar incertezas em medições
de laboratório, utilizando os métodos clássicos de propagação de incerteza (absoluta e estatística) para
obter as incertezas de dados calculados a partir de resultados experimentais.

É possível entrar no módulo de propagação de incertezas da seguinte forma:

Clique no botão dropdown de gráficos e plots e, em seguida, na opção “Propagação de


Incertezas...”

6.5.1 Assistente de Propagação

O Assistende de Propagação é uma ferramenta prática para propagar incertezas de dados obtidos
em laboratório. É aberto automaticamente quando se clica em Propagação de Incertezas, mas pode ser
acessado pelo módulo principal no menu Assistente. Basta seguir os passos apresentados para inserir
dados e equações. Após finalizar o assistente, siga as seguintes etapas:

1. Após clicar em Concluir, clique no botão Propagar do módulo principal para que seja feita a
propagação.
2. O McLabEn mostra as variáveis propagadas e possíveis motivos pelos quais não tenha sido capaz
de propagar incerteza em alguns casos. Após a propagação, ficam habilitados os botões de
Gráficos e Exportar Variáveis.

3. Para visualizar os gráficos das variáveis do problema, clique em Gráficos Individuais.


4. Todas as variáveis calculadas e suas respectivas incertezas podem ser visualizadas em Variáveis
Calculadas.
5. Para fazer gráficos de uma variável em função de outra, basta clicar em Exportar Variáveis. O
propagador exporta as variáveis para o ambiente McLabEn. A partir daí, basta usar os
procedimentos descritos em Gráficos YxX para plotar a informação desejada. São exportados,
também, os erros das variáveis, com nome err + <nome da variável>.

6.5.2 Módulo Principal

14
Guia de Referência McLabEn

Quando as incertezas primárias das variáveis medidas já são conhecidas, pode ser mais prático
utilizar diretamente o módulo principal para propagar incertezas, seguindo os seguintes passos:

1. A caixa Variáveis conhecidas / medidas contém os dados medidos em laboratório. Utilize a


caixa ao lado do botão Adicionar / Alterar para dar um nome para o conjunto de dados. Digite os
dados medidos e suas respectivas incertezas separadas por ; (ponto-e-vírgula) e espaços.
Clique no botão Adicionar/Alterar para incluir o novo conjunto de dados.

2. Se desejar inserir um escalar com sua respectiva incerteza para efetuar cálculos, basta dar um
nome para a variável, colocar APENAS UM valor e UMA incerteza.

3. Insira todos os dados conhecidos repetindo as operações 2 e 3.


4. Para adicionar uma nova variável a ser calculada com base nos dados experimentais, digite sua
relação com as variáveis conhecidas na caixa “Variáveis desconhecidas”. Adicione a nova
variável desconhecida com o botão Adicionar / Alterar. As fórmulas desse campo são operadas
termo a termo entre as variáveis que forem vetores. Se alguma variável for escalar, então o
valor e a incerteza do escalar são usadas em todas as operações.

15
Guia de Referência McLabEn

5. As variáveis desconhecidas subseqüentes podem estar em função de variáveis desconhecidas


já adicionadas. Clique em Adicionar/Alterar para adicionar novas variáveis desconhecidas.

6. Para alterar uma relação adicionada incorretamente, basta digitar a relação correta na caixa ao
lado do botão Adicionar / Alterar e clicar no botão. A nova relação substitui a anterior.
7. Repita os passos 6 e 7 até adicionar todas as variáveis desconhecidas.
8. O próximo passo é propagar as incertezas. Escolha o tipo de incerteza a propagar (estatística
ou global) e clique no botão Propagar.

9. O McLabEn mostra as variáveis propagadas e possíveis motivos pelos quais não tenha sido
capaz de propagar incerteza em alguns casos. Após a propagação, ficam habilitados os botões
de Gráficos e Exportar Variáveis.

10. Para visualizar os gráficos das variáveis do problema, clique em Gráficos Individuais.
11. Todas as variáveis calculadas e suas respectivas incertezas podem ser visualizadas em
Variáveis Calculadas.
12. Para fazer gráficos de uma variável em função de outra, basta clicar em Exportar Variáveis. O
propagador exporta as variáveis para o ambiente McLabEn. A partir daí, basta usar os
procedimentos descritos em Gráficos YxX para plotar a informação desejada. São exportados,
também, os erros das variáveis, com nome err + <nome da variável>.

6.5.3 Fórmulas

A propagação de incertezas tem uma teoria à parte, que pode ser encontrada em [3]. As fórmulas
para a propagação do erro de uma função f dependente de x1, x2, ..., xn são:

f = f(x1, x2, ...,xn)

Incerteza global:

16
Guia de Referência McLabEn

∂ ⎞
n
δf= ∑ δx ⎛⎜ f⎟
i ⎜ ∂x i ⎟
i=1 ⎝ ⎠
Incerteza estatística:
2

n
δf= ∑ ⎛⎜⎜ δxi ⎛⎜⎜ ∂x f ⎞⎟⎟ ⎟⎟⎞
i=1 ⎝ ⎝ i ⎠⎠

7. SEDOs e Sistemas Dinâmicos

7.1 Soluções de SEDOs


O algoritmo para solução de sistemas de equações diferenciais ordinárias (SEDOs) no McLabEn é
um Runge-Kutta de quarta ordem com correção de sexta ordem (detalhado em [1] e [2]).

Um excelente recurso do McLabEn é que, ao contrário de diversos outros programas que resolvem
SEDOs, o McLabEn efetua automaticamente a transformação das equações diferenciais de ordem maior do
que 1 em sistemas de equações diferenciais de ordem 1.

Os detalhes do programa de implementação da solução podem ser encontrados nas referências [1]
e [2].

7.1.1 Inserção das Equações no Solucionador

O espaço para inserção de equações no solucionador admite três tipos de linhas:

• Comentários (em verde) (v1.0)


• Relações diferenciais (em preto) (v1.0)
• Relações não-diferenciais (igualdades) (em azul) (v1.0)

7.1.1.1 Comentários

Qualquer linha que não contenha o sinal de igualdade “=” é entendida como um comentário e é
completamente ignorada pelo solver de equações diferenciais. Adicionalmente, comentários podem ser
colocados em qualquer linha: basta precedê-los por “//” (duas barras).

7.1.1.2 Relações Diferenciais

17
Guia de Referência McLabEn

Para fornecer as equações diferenciais, utiliza-se uma “’” (aspa simples) para cada derivada da
função (com relação à variável independente especificada na caixa de texto Variável Independente – o
padrão é t). Assim, x’’ = -x-x’ diz que a segunda derivada de x(t) é igual a x(t) menos sua derivada x’(t).
Observe que não se coloca o (t) do x(t) na definição. É necessário explicitar a derivada de maior ordem da
equação do lado esquerdo da igualdade para que o solucionador funcione. Uma vez definida a equação
diferencial, a maior derivada da função e todas as outras tornam-se disponíveis para uso em igualdades e
relações diferenciais, em linhas acima ou abaixo da linha onde a relação foi definida.

Exemplo de equação diferencial Variáveis que se tornam disponíveis após a definição


x’’’=x’’-x x’’’, x’’, x’ e x
f’’=f-f’ f’’, f’ e f
y’’’’=sqrt(y)*t y’’’’, y’’’, y’’, y’ e y

Exemplos de entradas válidas Descrição


x’’=x’-y’ Sistema de equações diferenciais acopladas
y’=x-y
f’’=f’*g+h Sistema de equações diferenciais acopladas (não-linear)
g’’=f*g-f-g
h’’’=h’’-h+f

Exemplos de entradas Motivo da falha


inválidas
x’’=x’’’-x’ A maior derivada precisa ser explicitada do lado esquerdo da equação
x’’=y’-x’ O programa não conhece o valor de x’’’ (pois a maior derivada de x que
y’=x-x’’’ aparece – do lado esquerdo da equação – é 2).

7.1.1.3 Igualdades

As igualdades são muito úteis para definir constantes do sistema ou saídas desejadas. Em linhas
que definem igualdade não aparece a aspa simples (’), mas apenas a relação de igualdade. Uma vez
definida a igualdade, a variável à esquerda na equação torna-se disponível para uso em todas as relações
diferenciais (em linhas acima ou abaixo da definição), mas torna-se disponível para uso em igualdades
somente em linhas abaixo de sua definição.

Exemplos de entradas válidas Descrição


A=1 Utilização de uma constante em uma EDO. Pode-se utilizar a constante
y’=A*y+sqrt(B)*y B na EDO pois as variáveis definidas nas igualdades ficam disponíveis
B=2+A para todas as relações diferenciais do campo de equações.
A=abs(y’-x’) As constantes A, B e C podem ser saídas desejadas. Essa configuração
x’’=-x’-x-y*C da entrada é válida porque as relações diferenciais tornam as variáveis x,
B=abs(x-y) x’, x’’, y, y’ e y’’ disponíveis em TODAS as linhas da entrada, e as
y’’=-y’-y-x variáveis do lado esquerdo de igualdades ficam disponíveis para todas
C=abs(x-x’) as relações diferenciais (acima ou abaixo).

Exemplos de entradas inválidas Descrição


A=B Não se pode utilizar B do lado direito de uma igualdade pois B só fica
B=1+A disponível para esse fim nas linhas ABAIXO de sua definição.
y’=A*y+sqrt(A)*y
A=B+C Idem, B e C só ficam disponíveis para utilização em igualdades nas
x’’=-x’-B*x-y linhas abaixo de sua definição.
B=abs(x-y)
y’’=-y’-y-x
C=abs(x-x’)

7.1.1.4 Restrições e Vantagens

As principais restrições na entrada das equações são:

18
Guia de Referência McLabEn

• Necessidade de isolar a maior derivada da equação diferencial


• Não se pode utilizar variáveis definidas do lado esquerdo de uma igualdade em linhas acima da
linha de definição
• As derivadas de ordem superior à da maior não ficam disponíveis.

Por outro lado, as vantagens são compensadoras:

• Praticamente todos os softwares para solução numérica de equações diferenciais têm as restrições
acima (ou restrições ainda piores, como a IMPOSSIBILIDADE de utilizar igualdades)
• O software determina automaticamente as condições iniciais que devem ser estipuladas para o
sistema (conforme será visto a seguir), bem como transforma sozinho sistemas de ordens
superiores em sistemas de primeira ordem.
• O software calcula de forma muito fácil praticamente todas as saídas que podem ser de interesse
do usuário (conforme será visto a seguir).

7.1.2 Inserção das Condições Iniciais

Uma vez definidas as equações diferenciais e as igualdades do sistema, basta clicar no campo de
condições iniciais e definir seus valores. O programa determina automaticamente quais condições iniciais
devem ser especificadas.

7.1.3 Ajuste dos Parâmetros da Solução Numérica

Os parâmetros a seres ajustados são:

• Intervalo de Amostragem – Intervalo em que os valores da função serão armazenados na memória.


Por exemplo, um intervalo de amostragem de 0,001 armazena 100 vezes mais pontos do que um
intervalo de amostragem de 0,1.
• Precisão – Calcula a precisão relativa admissível para o problema. Isso não garante que a resposta
atende essa precisão, mas fornece para o solver um modo de controle para o passo variável. Para
aplicações lineares ou não-caóticas, o solver fornece respostas que são, em geral, mais precisas do
que a precisão especificada.
• Variável independente – Nome da variável independente que será reconhecida no conjunto de
equações.
• Valor inicial – Valor inicial da variável independente. Note que todas as condições iniciais são
assumidas como valores da função no valor inicial da variável independente.
• Integrar até – Valor final da variável independente.

19
Guia de Referência McLabEn

7.1.4 Respostas, Gráficos e Estatística do Solver

Para resolver o SEDO, clique em Resolver e aguarde até que a solução esteja completa.

• Os valores das funções definidas por relações diferenciais e igualdades (todas as funções) podem
ser visualizados clicando no botão “Respostas”. Esse botão exibe os valores no ponto final da
integração.
• Os gráficos de todas as funções no tempo podem ser visualizados clicando em “Gráficos de
evolução no tempo”. Devido ao grande número de funções geralmente definidas em um SEDO,
nenhuma delas fica visível inicialmente no ambiente de gráficos 2D. Para visualizar os conjuntos de
dados basta selecioná-los. Para maiores informações sobre a interface 2D consulte Interface para
Gráficos 2D.
• Gráficos de trajetórias são os gráficos em que os valores de uma função dão as coordenadas x dos
pontos e os valores de outra função dão as coordenadas y dos pontos. Os gráficos de trajetórias
também podem ser visualizados clicando no botão “Gráficos de Trajetórias”.
• Informações técnicas sobre a execução do solver e estimativa do erro da solução podem ser
visualizados clicando no botão “Estatística”.

7.1.5 Exportação de Dados/Salvar SEDOs/Ler SEDOs a partir de Arquivos

O funcionamento dos botões de importação/exportação é o seguinte:

• Exportar dados – exporta as variáveis armazenadas na solução do SEDO para o ambiente de


comando do McLabEn. Nota: se as variáveis já existirem elas serão sobrescritas.
• Salvar arquivo – salva um arquivo contendo todas as equações, condições iniciais e parâmetros
definidos no ambiente. Ideal para salvar um modelo de análise de equações diferenciais.
• Ler do arquivo – lê equações, condições iniciais e parâmetros a partir de um arquivo.

7.2 Grafos de Fluxo de Sinais

20
Guia de Referência McLabEn

O recurso de grafos de fluxos de sinais implementa alguns recursos para grafos orientados, como:

• Detecção de todas as malhas fechadas


• Reconhecimento das malhas fechadas que não se tocam (2 a 2, 3 a 3, etc.)
• Detecção de todos os caminhos partindo de um nó de origem e chegando a um nó de destino
• Implementação da fórmula de Mason para o cálculo da função de transferência de um sistema
dinâmico representado por seu grafo de fluxo de sinais (para maiores informações consulte a
referência [3])

7.2.1 Criação do Grafo

Para a criação do grafo, são utilizados os seguintes comandos:

Descrição Comando a ser utilizado


Alterar nome de um nó Dê um clique duplo sobre o nó e digite o novo nome do nó
Criar um novo nó Clique no botão Adicionar Nó
De-selecionar nó Clique sobre o nó selecionado
Ligar o nó de origem A ao nó de Selecione o nó A e clique sobre o nó B. A função de transferência
destino B que será associada à ligação é aquela dada pela caixa de textos
Função de Transferência
Modificar função de transferência Altere a função na caixa de textos Função de Transferência
Mover nó Selecione o nó a ser movido e clique na posição de destino do nó
Remover ligação entre o nó de Selecione o nó A e clique sobre o nó B
origem A e o nó de destino B
Remover nó Selecione o nó a ser removido e clique no botão Remover Nó
Selecionar nó Clique sobre o nó. O nó selecionado fica com cor de fundo azul

21
Guia de Referência McLabEn

7.2.2 Análises do Grafo

As análises possíveis estão descritas abaixo:

Análise Comando
Determinante do sistema dinâmico (ref Clique no menu Análise -> Determinante do Sistema
[3])
Encontrar função de transferência entre Clique no menu Análise -> Calcular Função de Transferência.
uma entrada e uma saída (ref [3]) Selecione o nome do nó que corresponde à entrada e, a
seguir, o nome do nó que corresponde à saída
Encontrar todas as malhas fechadas do Clique no menu Análise -> Malhas Fechadas
sistema e verificar quais não se tocam 2
a 2, 3 a 3, etc.
Encontrar todos os caminhos ligando um Clique no menu Análise -> Caminhos entre Nós. Selecione o
nó de origem a um nó de destino nome do nó de origem e o nome do nó de destino.

Após a análise ser executada, os resultados da análise são escritos na caixa de texto Resultados de
Análise. No caso de cálculo de determinantes de sistema e funções de transferência, é conveniente utilizar
um software de manipulação simbólica para simplificar os resultados obtidos. O formato em que o McLabEn
gera as respostas é compatível com vários softwares de manipulação simbólica (Maple®, Mathematica®).

7.2.3 Salvar/abrir Grafo

Para salvar o grafo construído, clique no menu Arquivo -> Salvar Grafo e defina o nome do arquivo.
Para carregar um arquivo de grafo salvo, clique no menu Arquivo -> Abrir e escolha o arquivo que contém o
grafo.

8. Identificador de Padrões
9. Criptografia Caótica
10. Bibliografia
[1] STOER, J., e BULIRSCH, R., 1980, Introduction to Numerical Analysis
[2] GEAR, C. WILLIAM., 1971, Numerical Initial Value Problems in Ordinary Differential Equations
[3] ADADE, A. F., Análise de Sistemas Dinâmicos

Apêndice A – Constantes Pré-Definidas


As constantes relacionadas abaixo são palavras reservadas e são automaticamente convertidas
para o valor tabelado no McLabEn. Nota: os comandos diferenciam maiúsculas de minúsculas (case-
sensitive). Os

Constante Física Comando(s) McLabEn para acessar Valor (em unidades SI)*
π Pi 3,14159265358979
Carga do elétron cte_e 1,6021765314E-19
Comprimento de onda Compton cte_lambdaC 2,42631021518E-12
Constante de Boltzmann cte_k, cte_Boltzmann 1,380650324E-23
Constante de Faraday cte_F, cte_Faraday 9,64853415E4
Constante de Planck cte_h, cte_Planck 6,626069311E-34
Constante de Rydberg cte_Rydberg 1,097373156854983E7
Constante de Stefan-Boltzmann cte_sigma, cte_StefanBoltzmann 5,6704004E-8
Constante gravitacional cte_G 6,6731E-11
Constante universal dos gases cte_R 8,31447215
Massa do elétron em repouso cte_me, cte_massaeletron 9,1093818872E-31
Massa do nêutron em repouso cte_mp, cte_massaproton 1,6726215813E-27

22
Guia de Referência McLabEn

Massa do próton em repouso cte_mn, cte_massaneutron 1,6749271613E-27


Número de Avogadro cte_N0, cte_Avogadro 6,0221419947E+23
Permissividade elétrica (vácuo) cte_eps0, cte_epsilon0 8,854187817E-12
Permissividade magnética (vácuo) cte_mu0, cte_mi0 1,2566370614E-6
Raio de Bohr cte_a0, cte_raioBohr 5,29177208319E-12
Unidade de massa atômica cte_uma 1,66053873E-27
Velocidade da luz no vácuo cte_c, cte_c0 2,99792458E8
* Valores obtidos no site http://physics.nist.gov/cuu/Constants (National Institute of Standards and
Technology).

Apêndice B – Comandos de sistema


Comando Ação executada pelo McLabEn
listarvariaveis Conta o número de variáveis na memória
precisao(n) Ajusta o valor da precisão a ser exibida na tela para o valor inteiro n entre 0 e 15 (inclusive).

Apêndice C – Algoritmos a Serem Implementados


• Analisador de funções reais, com cálculo numérico de derivadas e zeros das funções e suas
derivadas.
• Métodos de interpolação no ambiente de gráficos 2D (e 3D)
• Métodos de interpolação por meio de funções tipo: Spline(2.5;[1 2 3];[1 4 7]) (interpola uma Spline
com valores de x = [1 2 3] e y = [1 4 7] para x=2.5).
• Criptografia de textos e documentos utilizando mapas unidimensionais em regime caótico.
• Gráficos 3D – implementado, mas recursos podem ser adicionados.
• Analisador espectral de massas de dados: série de Fourier, FFT, IFFT (implementado, mas também
pode ser melhorado)
• Outros algoritmos numéricos de solução de EDOs (de passo fixo, por exemplo)
• Adicionar pacotes estatísticos que permitam fazer testes de hipótese e calcular valores para as
principais distribuições aleatórias.
• Fazer o sistema NÃO ESCREVER na tela variáveis muito grandes.
• Implementar o algoritmo para Remover na Propagação de Incertezas

Apêndice D – Ordem das Componentes de Freqüência da FFT


Considere-se um vetor complexo f(1..n) de n amostras de uma função f(t) com intervalo de
amostragem ∆ (com n uma potência de 2). A tabela abaixo mostra os valores da função e seu
correspondente valor de tempo:

Índice 1 2 3 ... n-2 n-1 n


t(i) 0 ∆ 2∆ (n-i)∆ (n-3)∆ (n-2)∆ (n-1)∆
f(i) f(0) f(∆) f(2∆) f((n-i)∆) f((n-3)∆) f((n-2)∆) f((n-1)∆)

Consideremos agora a transformada discreta de Fourier, F(1..n). As freqüências associadas a cada


termo são (em Hertz):

Índice 1 2 3 4 ... n/2 n/2+1 n/2+2 ... n-2 n-1 n


f(i) * 0 1/n∆ 2/n∆ 3/n∆ (n/2-1)/n∆ 1/2∆ -(n/2-1)/n∆ -3/n∆ -2/n∆ -1/n∆
F(i) F(f(1)) F(f(2)) F(f(3)) F(f(4)) F(f(n/2)) F(f(n/2+1)) F(f(n/2+2)) F(f(n-2)) F(f(n-1)) F(f(n))
* - Freqüência associada.

O comprimento de amostragem T = (n-1)∆.

23
Guia de Referência McLabEn

Apêndice E – Bugs Consertados


v0.41 – Bug que fazia com que, ao abrir um grafo, o outro que estava na tela continuasse sendo exibido
embora não estivesse mais na memória.

24
FOLHA DE REGISTRO DO DOCUMENTO
1. 2. 3. 4.
CLASSIFICAÇÃO/TIPO DATA DOCUMENTO N° N° DE PÁGINAS

TC 16 de novembro de 2005 CTA/ITA-IEM/TC-022/2005 59


5.
TÍTULO E SUBTÍTULO:

Identificação Paramétrica de Sistemas Dinâmicos


6.
AUTOR(ES):

Douglas Coimbra de Andrade


7. INSTITUIÇÃO(ÕES)/ÓRGÃO(S) INTERNO(S)/DIVISÃO(ÕES):

Instituto Tecnológico de Aeronáutica. Divisão de Engenharia Mecânica-Aeronáutica – ITA/IEM


8.
PALAVRAS-CHAVE SUGERIDAS PELO AUTOR:

Sistemas Dinâmicos; Identificação de Sistemas; Método de Mínimos Quadrados


9.PALAVRAS-CHAVE RESULTANTES DE INDEXAÇÃO:

Sistemas dinâmicos; Identificação de sistemas; Método dos mínimos quadrados; Desenvolvimento de


software; Modelos matemáticos; Inteligência artificial; Engenharia de sistemas
10.
APRESENTAÇÃO: X Nacional Internacional
Trabalho de Graduação, ITA, São José dos Campos, 2005. 58 páginas.
11.
RESUMO:

A determinação de parâmetros de modelos de sinais é uma questão de relevo e etapa essencial


da análise em vários campos do conhecimento, possibilitando que o engenheiro, o pesquisador ou o
profissional em geral concluam investigações e cálculos sobre o objeto de estudo através de simulações
computacionais, por exemplo. Este trabalho focaliza a identificação paramétrica por mínimos quadrados,
de um ponto de vista não amplamente tratado na vasta literatura técnica disponível sobre o assunto,
trazendo contribuição ao tema. Em especial, considera-se o problema de identificação de parâmetros que
se apresentam em várias equações de um modelo de múltiplas equações. Nessa perspectiva e contexto, é
desenvolvido um software para a identificação de modelos de sinais e sistemas discretos e contínuos no
tempo, utilizando um ambiente computacional de cálculo e visualização de engenharia denominado
McLabEn®, também desenvolvido pelo autor. O trabalho discute ainda técnicas de discretização e
filtragem para a adequação de modelos e dados para a identificação pelo método implementado. Alguns
estudos simulados são realizados, focalizando aplicações específicas e relevantes de identificação de
modelos, como a da dinâmica lateral de uma aeronave, entre outras, tanto no sentido de validar o
software como para atestar a qualidade dos resultados obtidos e revelar as limitações da abordagem. O
trabalho é concluído com sugestões para trabalhos que aprofundam as investigações e refinam a
abordagem utilizada.

12.
GRAU DE SIGILO:

(X ) OSTENSIVO ( ) RESERVADO ( ) CONFIDENCIAL ( ) SECRETO