trabalho 1 - ufjf · trabalho 1 deverá ser entregue junto com a prova 1. problema proposto um...

13
Modelagem e Simulação - Trabalho 1 Notas de Aula - Fernando Nogueira 1 Trabalho 1 Trabalho 1 Trabalho 1 Trabalho 1 Implementar um programa para o problema de regressão dado abaixo utilizando a linguagem de programação (textual) de sua escolha. O programa deve ser entregue em disquete e um relatório impresso descrevendo o programa com os resultados obtidos. O Trabalho 1 deverá ser entregue junto com a Prova 1. Problema Proposto Um braço mecânico com um atuador do tipo "pinça" realiza uma tarefa de retirar polias de uma linha de produção. Para tal tarefa, o sistema precisa determinar as coordenadas do centro da polia (Xc,Yc) bem como suas dimensões. No braço mecânico é acoplada uma câmera digital que captura imagens das polias. A imagem de uma polia é dada abaixo: Figura 1 - Imagem exemplo. As coordenadas (x,y) dos limites da polia devem ser medidas pelo aluno em um programa qualquer de processamento de imagens, como por exemplo, Photoshop, CorelDraw, ... De posse destas coordenadas, deve-se criar um arquivo (no formato ASCII) com a seguinte estrutura: x 1 y 1 coordenadas do ponto 1 x 2 y 2 coordenadas do ponto 2 . . x n y n coordenadas do ponto n Exemplo: dados.txt 2.5 4.2 3.4 5.6 1.2 3.1 5.7 8.2 %Código para ler arquivo no formato ASCII em Matlab [name path]=uigetfile('*.txt','selecione o arquivo'); fin=fopen([path name],'rt'); arq=fscanf(fin,'%f %f',[2,inf]); arq=arq'

Upload: others

Post on 05-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 1

Trabalho 1Trabalho 1Trabalho 1Trabalho 1 Implementar um programa para o problema de regressão dado abaixo utilizando a linguagem de programação (textual) de sua escolha. O programa deve ser entregue em disquete e um relatório impresso descrevendo o programa com os resultados obtidos. O Trabalho 1 deverá ser entregue junto com a Prova 1. Problema Proposto Um braço mecânico com um atuador do tipo "pinça" realiza uma tarefa de retirar polias de uma linha de produção. Para tal tarefa, o sistema precisa determinar as coordenadas do centro da polia (Xc,Yc) bem como suas dimensões. No braço mecânico é acoplada uma câmera digital que captura imagens das polias. A imagem de uma polia é dada abaixo:

Figura 1 - Imagem exemplo.

As coordenadas (x,y) dos limites da polia devem ser medidas pelo aluno em um programa qualquer de processamento de imagens, como por exemplo, Photoshop, CorelDraw, ... De posse destas coordenadas, deve-se criar um arquivo (no formato ASCII) com a seguinte estrutura:

x1 y1 coordenadas do ponto 1 x2 y2 coordenadas do ponto 2 . . xn yn coordenadas do ponto n

Exemplo: dados.txt 2.5 4.2 3.4 5.6 1.2 3.1 5.7 8.2

%Código para ler arquivo no formato ASCII em Matlab [name path]=uigetfile('*.txt','selecione o arquivo'); fin=fopen([path name],'rt'); arq=fscanf(fin,'%f %f',[2,inf]); arq=arq'

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 2

A polia é assumida possuir a forma de uma elipse. O modelo matemático utilizado então é:

1b

)cos)yy(sen)xx((a

)sen)yy(cos)xx((2

200

2

200 =

θ−−θ−+

θ−+θ−

(1)

Utilize o Método Combinado de Mínimos Quadrados para estimar: o vetor dos parâmetros ajustados Xa, o vetor dos valores ajustados La, a matriz variância-covariância dos parâmetros ajustados ∑ aX , a matriz variância-covariância dos valores ajustados ∑ aL , a matriz variância-covariância dos resíduos ∑ V , a matriz variância-covariância do erro de fechamento ∑ W e o valor de Qui-Quadrado calculado. Decidir se o ajustamento é aceito como correto através do teste de hipótese para um nível de significância de 5%. O programa deverá ler as observações do arquivo, o qual deverá conter no mínimo 20 observações. Resultado 1 As figuras abaixo mostram os resultados obtidos para a imagem da figura 1. Cabe ressaltar que os resultados abaixo foram obtidos utilizando técnicas de processamento de imagens para identificar os pontos da elipse de maneira automática. No entanto, os alunos não precisam implementar esta tarefa nem fornecer os resultados de modo gráfico.

Identificação dos pontos e ajustamento da elipse.

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 3

Zoom da elipse ajustada.

1 1.5 2 2.5 3 3.5 4 4.5 5-8

-6

-4

-2

0

2

4

6Correçoes aos parametros aproximados

iteraçoes

XcYcabteta

Correções aos parâmetros aproximados.

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 4

100 200 300

-0.5

0

0.5

1residuos em x

observaçao X100 200 300

-0.5

0

0.5

residuos em y

observaçao Y

200 400 600

-0.5

0

0.5

1residuos

impar= residuo em X par=residuo em Y100 200 300

0.2

0.4

0.6

0.8

1

norma dos residuos

observaçao XY

Resíduos

100 200 300

-30

-20

-10

0

10

20

30

Multiplicadores de Lagrange - Correlatos

r equaçoes100 200 300

-0.02

-0.01

0

0.01

0.02

0.03

Erros de Fechamento

r equaçoes

Multiplicadores de Lagrange e Erros de Fechamento.

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 5

Matrizes Variância- Covariâncias.

Qui-Quadrado (bilateral).

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 6

Qui-Quadrado (unilateral).

Resultado 2 O modelo matemático utilizado nestes resultados foi a equação da circunferência: ( ) ( ) 222 rYcyXcx =−+− (2)

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 7

Identificação dos pontos e ajustamento da circunferência.

Zoom da circunferência ajustada.

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 8

Correções aos parâmetros aproximados.

Resíduos

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 9

Multiplicadores de Lagrange e Erros de Fechamento.

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 10

Matrizes Variância- Covariâncias.

Qui-Quadrado (bilateral).

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 11

Qui-Quadrado (unilateral).

Resultado 3 O modelo matemático utilizado para gerar estes resultados foi a equação da elipse (como no Resultado 1), porém para outro conjunto de observações. As figuras abaixo, mostram as elipses geradas para os parâmetros determinados em cada iteração do algoritmo.

1o iteração 2o iteração

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 12

3o iteração 5o iteração

Correções aos parâmetros aproximados.

Modelagem e Simulação - Trabalho 1

Notas de Aula - Fernando Nogueira 13

A rotina (função) em C e em Pascal abaixo pode ser usada para a inversão de matrizes: /*rotina de inverter matriz em C*/ void versol(int i,double **N) { int j,k,l,im; double *B; if ((B=(double *) calloc(i,sizeof(double)))==NULL) { printf("\nN%co h%c mem%cria suficiente.\n",132,160,162); return; } if (i==1) { N[0][0]=1./N[0][0]; } else { im=i-1; for (k=0;k<i;k++) { for(j=0;j<im;j++) B[j]=N[0][j+1]/N[0][0]; B[i-1]=1./N[0][0]; for (l=0;l<im;l++) { for (j=0;j<im;j++) N[l][j]=N[l+1][j+1]-N[l+1][0]*B[j]; N[l][i-1]=-N[l+1][0]*B[i-1]; } for (j=0;j<i;j++) N[i-1][j]=B[j]; } } free(B); }

/*rotina de inverter matriz em Pascal*/ Procedure Versol; (* Matriz 100x100 no máximo *) var B: array[0..100] of double; j,k,l,im: integer; begin if i=1 then begin Ai[0,0] :=1/Ai[0,0]; end else begin im :=i-1; for k := 0 to i-1 do begin if Ai[0,0] = 0 then exit; for j :=0 to im-1 do B[j]:=Ai[0,j+1]/Ai[0,0]; B[i-1]:=1/Ai[0,0]; for l :=0 to im-1 do begin for j:=0 to im-1 do Ai[l,j]:=Ai[l+1,j+1]-Ai[l+1,0]*B[j]; Ai[l,i-1]:=-Ai[l+1,0]*B[i-1]; end; for j:=0 to i-1 do Ai[i-1,j]:=B[j]; end; end; end;