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