Concepção e Fabrico Assistido por Computador
João Pedro Amorim Lobato: [email protected]
Turma: LGEI
Trabalho sobre Regressões em Visual Basic
Licenciatura em Gestão e Engenharia Industrial
<2004-02-18>
Agradecimentos
Ao professor João Manuel Ribeiro da Silva Tavares pela ajuda dada durante a
elaboração do trabalho.
Ao meu colega Ricardo Velhuco pela ajuda dada com os seus conhecimentos
em programação de computadores.
ii
Índice de Conteúdos
1 Objectivo do Trabalho .........................................................................................................................2
2 Apresentação do Trabalho..................................................................................................................3
3 Conclusões e Trabalhos Futuros ......................................................................................................10
Referências e Bibliografia ......................................................................................................................11
iii
<Regressões>
1
<Regressões>
1 Objectivo do Trabalho
Este trabalho teve como objectivo a obtenção de um programa de computador,
programado na linguagem Microsoft Visual Basic 6.0, que através da introdução de
um certo número de pontos calculasse as regressões associadas.
A introdução dos pontos poderia ser feita de duas formas distintas: ou através
do clic directo do botão esquerdo do rato dentro dos limites definidos pelo programa,
ou através da importação dos dados a partir de um ficheiro no formato Microsoft
Excel.
Já quanto às regressões estas poderiam ser a mais simples de todas, a
regressão linear, ou a regressão quadrática.
Tanto no caso de como os dados são inseridos, bem como quanto à regressão
a utilizar será o utilizador final a decidir de acordo com a sua preferência.
2
<Regressões>
2 Apresentação do trabalho
Ao programa foi dado o nome de Regressões. Neste ponto far-se-à a
apresentação do trabalho, começando por apresentar as opções disponíveis aos
utilizadores.
Opções do Programa:
Figura 1: Menu opções
Como se pode ver pela figura 1 são duas as opções do programa que se
podem alterar. A representada nesta figura é a escala que os eixos dos xx e dos yy
terão. As opções à disposição do utilizador serão ter pontos entre 0 e 20, entre 0 e
100 e entre 0 e 1000. É muito importante ter em atenção a escala que está a ser
utilizada pois poderá não ser possível importar dados de um ficheiro, se por exemplo
a escala estiver definida para de 0 a 20 e no ficheiro um dos pontos tiver de
coordenadas (21,10).
Figura 2: Raios disponíveis
Pela observação da figura 2 percebemos que a outra opção à disposição do
utilizador para alteração para o valor que lhe for mais conveniente é o raio. Este raio
representa o raio dos pontos e pode ser de 10, 20 ou 30.
3
<Regressões>
Introdução dos dados
Figura 3: Menu regressões
Como se pode ver a partir da figura 3, existem duas possibilidades para a
introdução dos pontos no programa. Uma das hipóteses é seleccionar no menu
Regressões a opção Seleccionar Pontos o que vai permitir que se o utilizador clicar
dentro dos limites definidos pelos eixos dos xx e dos yy os pontos sejam registados
e contabilizados para uma posterior utilização aquando da execução da regressão.
Ao escolher um ponto é apresentado do lado direito as coordenadas desse
ponto, bem como aparecerão os botões para efectuar os dois tipos de regressões
disponíveis, regressão linear e regressão quadrática. Aparecerá também um botão
apagar.
Na sub mousedown convém explicar que os comandos:
x1 = (X - 500) * esc / 8000
Y1 = (8500 - Y) * esc / 8000
representam a transformação das coordenadas utilizadas pelo programa para
as coordenadas utilizadas pelo utilizador. Também é importante referir que sempre
que se selecciona um ponto são efectuados certos cálculos que serão
posteriormente utilizados no cálculo das regressões, como o preenchimento das
t
matrizes x, x e y (o seu funcionamento será explicado posteriormente).
A outra possibilidade que se apresenta ao utilizador é a de importar os dados
de um ficheiro da aplicação Microsoft Excel. Neste caso será necessário indicar
correctamente a localização do ficheiro (por exemplo “c:\1.xls”) e indicar o número de
pontos que será necessário ler do ficheiro.
4
<Regressões>
Figura 4: Exemplo de ficheiro em Microsoft Excel
Convém referir que o ficheiro do Microsoft Excel deve estar de acordo com a
figura 4, ou seja, na coluna A do ficheiro devem estar as coordenadas x dos pontos,
enquanto que na coluna B do ficheiro devem estar as coordenadas y dos pontos.
Os comandos:
Dim excel_app As Object
Dim excel_sheet As Object
Set excel_app = CreateObject("Excel.application")
excel_app.Workbooks.Open (pla)
servem para abrir o ficheiro de Microsoft Excel escolhido, sendo que pla é uma
variável do tipo string que representa a localização do ficheiro (sendo pedida ao
utilizador através de uma InputBox), assim como os comandos:
excel_app.ActiveWorkbook.Close
excel_app.Quit
Set excel_sheet = Nothing
Set excel_app = Nothing
servem para fechar o ficheiro de Microsoft Excel depois de importados todos os
pontos desejados e feitos os cálculos necessários sempre que um ponto é
seleccionado.
No caso da importação dos dados pelo ficheiro de Microsoft Excel os pontos
serão todos desenhados nos limites do gráfico, se possível (se os pontos do ficheiro
de Excel estiverem fora dos limites da escala aparecerá uma mensagem de erro),
sendo as contas necessárias para os dois tipos de regressão efectuadas (não a
totalidade mas as necessárias), bem como se tornam também visíveis os botões das
5
<Regressões>
regressões, bem como o botão apagar. Uma grande diferença em relação à
introdução dos pontos por clic é que não aparecem as coordenadas dos pontos,
visto que estes aparecem todos ao mesmo tempo.
Regressão Linear
Para que ao pressionar o botão “Regressão Linear” se possa fazer a regressão
é necessário que já tenham sido seleccionado pelo menos dois pontos. Caso
contrário aparecerá uma mensagem de erro.
Sabendo que:
2
2
m = (∑xy – (∑x * ∑y) / n ) / (∑x – (∑x) / n)
b = (∑y / n) – m * ∑x / n
e que os somatórios foram todos calculados durante a selecção dos pontos e
que n representa o número de pontos, basta fazer o cálculo de m e b para obter a
expressão y = m * x + b. Calculando o valor para x = 0 e para o valor máximo da
escala (20, 100 ou 1000) e traçando uma recta entre estes dois pontos (comando
Line) obtém-se a recta da regressão linear. De referir que a recta é desenhada a
uma cor diferente, azul.
6
<Regressões>
Figura 5: Exemplo de uma recta calculada pela Regressão Linear
Regressão Quadrática
Sendo:
temos que:
7
<Regressões>
ou seja a multiplicação da inversa da matriz x transposta multiplicada pela
matriz x, pela matriz x transporta e por sua vez pela matriz y vai dar origem ao vector
de resultados que queremos obter. Neste caso foram dados também valores para
servirem de exemplo.
No código mx representa a matriz x, my a matriz y e mzf o vector com os
parâmetros. As outras matrizes utilizadas são apenas resultantes de cálculos
intermédios.
Assim sendo no código deste botão temos apenas os cálculos de matrizes
necessários para chegar ao valor dos parâmetros, como pretendido, bem como o
desenho da parábola, a azul, que é feito pelo seguinte código:
For i = 0 To esc - 1
x1 = i
x2 = i + 1
Y1 = mzf(1) + mzf(2) * x1 + mzf(3) * x1 ^ 2
Y2 = mzf(1) + mzf(2) * x2 + mzf(3) * x2 ^ 2
Y1 = 8500 - (8000 * Y1 / esc)
Y2 = 8500 - (8000 * Y2 / esc)
x1 = x1 * 8000 / esc + 500
x2 = x2 * 8000 / esc + 500
Line (x1, Y1)-(x2, Y2)
Next i
Ou seja a parábola não é mais do que um conjunto de vários pequenos
segmentos de recta.
8
<Regressões>
Figura 6: Exemplo de uma Regressão Quadrática
Botão Apagar
Finalmente falta falar do botão apagar, que através do comando
cls
limpa tudo
o que tinha sido antes desenhado e depois reinicia o valor de todas as variáveis, ou
seja, corresponde a sair do programa e voltar a entrar.
9
<Regressões>
3 Conclusões e Trabalhos Futuros
Pode concluir-se que este trabalho corresponde àquilo a que se propôs como
objectivo.
Como proposta de trabalhos futuros dentro das regressões uma possibilidade
será acrescentar a este trabalho outros tipos de regressões, como a cúbica ou a
exponencial, bem como alguns melhoramentos a nível gráfico. Poderá também ser
acrescentada uma opção no trabalho para que, através do cálculo de erros, este
escolha automaticamente qual o tipo de regressão que se ajusta melhor aos dados
fornecidos pelo utilizador.
10
<Regressões>
Referências e Bibliografia
Apontamentos para as aulas da disciplina Programação do 1º ano das Licenciaturas
em Engenharia da Qualidade, Engenharia Civil, Engenharia do Ambiente,
Engenharia Informática, da Universidade Fernando Pessoa, em 1999/2000 –
Tavares, João Manuel R. S.
http://msdn.microsoft.com/
http://people.hofstra.edu/faculty/Stefan_Waner/calctopic1/regression.html
http://www.cocemsuacasa.com.br/ebook/pages/1804.htm
http://statmaster.sdu.dk/
11
Download

Relatório