Buscar

Artigo Científico Software - Matéria Álgebra Linear

Prévia do material em texto

ELABORAÇÃO DE UM SOFTWARE NA ÁREA DA GEOMETRIA ANALÍTICA
Fernando Gabriel
fernandog_briel@hotmail.com
Professora Jahina Fagundes de Assis Hattori
Universidade Tecnológica Federal do Paraná – UTFPR
Geometria Analítica (CP41C) – Atividade Prática Supervisionada
28/06/17
RESUMO
O artigo tem o objetivo demonstrar a importância do uso de softwares no contexto acadêmico, principalmente nas engenharias. Um software auxilia a resolução de problemas práticos em várias áreas e também serve como ferramenta de aprendizado. Neste artigo destacaremos um único software que foi desenvolvido com uma linguagem de promação chamada C. O intuito deste é provar e demonstrar a eficiência e rapidez que um software escrito a partir de uma linguagem de programação pode auxiliar em seus cálculos, especificamente neste caso, em cálculos vetoriais. Neste estudo fica nítido a praticidade da linguagem de programação C, onde o mesmo possibilita desenvolver outros softwares relacionados a qualquer área da geometria analítica.
Palavras-chave: Software; Vetores; Geometria Analítica.
ABSTRACT
The article aims to demonstrate the importance of the use of software in the academic context, especially in engineering. Software helps to solve practical problems in various areas and also serves as a learning tool. In this article we will highlight a single software that was developed with a programation language called C. The purpose of this article is to prove and demonstrate the efficiency and speed that software written from a programming language can help in its calculations, specifically in this case, in Vector calculations. In this study the practicality of the programming language C is clear, where it allows to develop other software related to any area of ​​analytical geometry.
Keywords: Software; Vectors; Analytical Geometry.
Introdução
	Este artigo foi escrito com o objetivo de fornecer informações suficientes para provar a eficácia de um software em solucionar de forma rapida problemas em enézimas áreas.
Este estudo foi focado em um único software, onde um usuário pode realizar cálculos matemáticos, mais especificamente na área da geometria analítica, de forma rápida e precisa. O programa possui 125 linhas, e foi escrito em uma linguagem de programação denominada “C”. O usuário alvo possui um perfil estudantil, já que vários conceitos de geometria analítica são importantes para o entendimento, e evidentemente esse assunto é presente em cotidiano acadêmico. 
 FUNCIONAMENTO DO SOFTWARE
 Conceitos e definições básicas de vetores
	O código presente no software, realiza 5 tarefas distintas relacionadas a vetores:
Determinação de um vetor v; 
Distancia entre dois pontos;
Produto escalar; 
Produto vetorial;
Vetor unitário;
É necessário compreender-se os conceitos envolvidos e o princípio de cada tarefa do software, antes de entende-se o código-fonte do mesmo.
	
Determinação de um vetor de segmento AB 
Considere o segmento orientado AB na figura abaixo:
Observe que o segmento orientado AB é caracterizado por três aspectos bastante definidos:
• Comprimento (denominado módulo);
• Direção;
• Sentido (de A para B);
Chama-se vetor ao conjunto infinito de todos os segmentos orientados equipolentes a AB, ou seja, o conjunto infinito de todos os segmentos orientados que possuem o mesmo comprimento, a mesma direção e o mesmo sentido de AB.
Assim, a idéia de vetor nos levaria a uma representação do tipo:
Na prática, para representar um vetor, tomamos apenas um dos infinitos segmentos orientados que o compõe. 
Sendo u um vetor genérico, o representamos pelo símbolo:
 2.12 Distância entre dois pontos
Dizemos que a distância entre os pontos A e B é a medida do segmento de reta que liga o ponto A ao ponto B. Dessa forma, a distância entre dois pontos é um comprimento.
Para calcular a distância entre os pontos A e B, devemos escolher pontos que possuem coordenadas quaisquer A (x1, y1) e B (x2, y2). Essas coordenadas representam a localização dos pontos A e B em um plano. A distância entre esses dois pontos é igual ao comprimento do segmento de reta na cor lilás na imagem a seguir:
Figura 1 - Exemplo de pontos A e B, com suas localizações e coordenadas no plano
O cálculo dessa distância é feito por meio da seguinte fórmula:
Figura 2 - Fórmula utilizada para calcular a distância entre dois pontos
 2.13 Produto escalar
Dados os vetores u=(a,b) e v=(c,d) definimos o produto escalar entre os vetores u e v, como o número real obtido por: 
u.v = a.c + b.d 
 
Exemplos: 
O produto escalar entre u=(3,4) e v=(-2,5) é: 
u.v = 3.(-2) + 4.(5) = -6+20 = 14 
O produto escalar entre u=(1,7) e v=(2,-3) é: 
u.v = 1.(2) + 7.(-3) = 2-21 = -19 
 2.14 Produto vetorial
	Dados dois vetores u e v no espaço, podemos definir um terceiro vetor, chamado de produto vetorial de u por v. Ao contrário do produto escalar, que resulta num escalar, e pode ser definido em vetores do espaço e em vetores do plano, o produto vetorial só pode ser definido em vetores do espaço pois está ligado essencialmente ao conceito de orientação no espaço.
O vetor unitário i, j e k para uma dado sistema ortogonal de coordenadas satisfaz as seguintes igualdades:
i × j = k j × k = i k × i = j
Com estas regras, as coordenadas do resultado do produto vetorial de dois vetores pode ser calculado facilmente, sem a necessidade de determinar-se qualquer ângulo. Seja:
a = a1i + a2j + a3k = [a1, a2, a3]
e
b = b1i + b2j + b3k = [b1, b2, b3].
Então,
a × b = [a2b3 − a3b2, a3b1 − a1b3, a1b2 − a2b1].
A notação acima também pode ser escrita formalmente como o determinante de uma matriz:
 ��
O determinante de três vetores pode ser recuperado como det (a, b, c) = a • (b × c).
Intuitivamente, o produto vetorial pode ser descrito pelo método de Sarrus, onde:
 ��
Para os primeiros três vetores unitários, multiplique os elementos na diagonal da direita (ex. a primeira diagonal conteria i, a2, e b3). Para os três últimos vetores unitários, multiplique os elementos na diagonal da esquerda e então os multiplique por -1 (ex. a última diagonal conteria k, a2, e b1). O produto vetorial seria definido pela soma destes produtos:
 ��
O produto vetorial também pode ser descrito em termos de quaternions. Note por exemplo que as relações entre produtos vetoriais acima i, j, e k concordam com a relação multiplicativa entre os quaternions i, j, e k. Em geral, se representamos um vetor [a1, a2, a3] como o quaternion a1i + a2j + a3k, obtemos o produto vetorial tomando seus produtos e descartando a parte real do resultado (a parte real será o negativo do produto escalar de dois vetores).
 2.15 Vetor unitário
Vetor unitário é o que tem o módulo igual a 1.
Existem dois vetores unitários que formam a base canônica para o espaço R², que são dados por:
i = (1,0) j = (0,1)
Para construir um vetor unitário u que tenha a mesma direção e sentido que um outro vetor v, basta dividir o vetor v pelo seu módulo, isto é:
 2.2. O código-fonte
	Abaixo tem-se o código-fonte do software devidamente comentado. Deve-se ter em vista a suma importância do conhecimento básico de linguagem de programação C e dos conceitos sobre vetores apresentados acima. 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int vetor[2], opcao, m=0, n=0;
float x1, x2, y1, y2, z1, z2, dist, vetorunit1, vetorunit2, modulo, j, x, k, i, u, prodvet; /*declaracao de variaveis*/
while (m==0) /*Esse while serve como controle de fluxo para poder reutilizar o programa ao inves de ter de reinicia-lo*/
{
printf("\nSelecione a opcao desejada:\n\n"); /*Nesse bloco de instrucao o usuario ira optar qualtarefa utilizar do programa */
printf("1)Vetor de segmento AB\n");
printf("2)Distancia entre dois pontos\n");
printf("3)Produto escalar\n");
printf("4)Produto vetorial\n");
printf("5)Vetor unitario\n");
scanf("%d", &opcao); /* opcao de tarefa salva em &opcao */
switch(opcao) /*esse switch case, e para cada caso um tarefa, caso a opcao for 1, executar case 1... e assim por diante */
{
case 1: /*caso opcao seja 1*/
printf("\nInforme a abcissa do ponto A:\n"); /*peco ao usuario as coordenadas de cada ponto*/
scanf("%f", &x1);
printf("\nInforme a ordenada do ponto A:\n");
scanf("%f", &y1);
printf("\nInforme a abcissa do ponto B:\n");
scanf("%f", &x2);
printf("\nInforme a ordenada do ponto B:\n");
scanf("%f", &y2);
vetor[0]=x2 - x1; /* realiza-se o calculo de subtracao do elemento 2 do ponto A pelo elemento 1 do ponto B, e salva-se na posicao 1 de um vetor */
vetor[1]=y2 - y1; /* analogamente ao passo acima */
printf("\nO vetor de segmento AB eh: (%d , %d)\n", vetor[0], vetor[1]); /*printa-se o vetor resultante definido por vetor[0] e vetor [1]; */
break;
case 2: /*caso opcao seja 2*/
printf("\nInforme a abcissa do ponto A:\n"); /*peco ao usuario as coordenadas de cada ponto*/
scanf("%f", &x1);
printf("\nInforme a ordenada do ponto A:\n");
scanf("%f", &y1);
printf("\nInforme a abcissa do ponto B:\n");
scanf("%f", &x2);
printf("\nInforme a ordenada do ponto B:\n");
scanf("%f", &y2);
dist = sqrt( pow (x2 - x1, 2) + pow (y2 - y1, 2)); /* faz o calculo de acordo com a formula e salva esse valor em dist. A formula diz: ( (x2 -x1)^2 + (y2 - y1)^2 )^1/2 */
printf("\n\nA distancia entre os pontos eh igual a %f!\n\n", dist); /*printa o valor de dist */
break;
case 3: /*caso opcao seja 3*/
printf("\nInforme a abcissa do vetor 1:\n"); /*peco ao usuario as coordenadas dos elementos de cada vetor*/
scanf("%f", &x1);
printf("\nInforme a ordenada do vetor 1:\n");
scanf("%f", &y1);
printf("\nInforme a abcissa do vetor 2:\n");
scanf("%f", &x2);
printf("\nInforme a ordenada do vetor 2:\n");
scanf("%f", &y2);
x = (x1*x2) + (y1*y2); /* faz o calculo de forma simples e salva o valor em x */
printf("\nO produto escalar eh: %f\n", x); /* printa-se x */
break;
case 4: /*caso opcao seja 4*/
printf("\nInforme a abcissa do vetor 1:\n"); /*peco ao usuario as coordenadas dos elementos de cada vetor*/
scanf("%f", &x1);
printf("\nInforme a ordenada do vetor 1:\n");
scanf("%f", &y1);
printf("\nInforme a cota do vetor 1:\n");
scanf("%f", &z1);
printf("\nInforme a abcissa do vetor 2:\n");
scanf("%f", &x2);
printf("\nInforme a ordenada do vetor 2:\n");
scanf("%f", &y2);
printf("\nInforme a cota do vetor 2:\n");
scanf("%f", &z2);
i = y1*z2 -(y2*z1); /*como a resolucao do produto vetorial foi feita de forma matricial, separei as formulas de acordo ao lado. */
j = z1*x2 -(z2*x1);
k = x1*y2 -(x2*y1);
printf("\nO produto vetorial eh o vetor: %.2fi %.2fj %.2fk\n", i, j, k);
break;
case 5: /*caso opcao seja 5*/
printf("\nInforme a abcissa do vetor:\n"); /*peco ao usuario as coordenadas dos elementos do vetor*/
scanf("%f", &x1);
printf("\nInforme a ordenada do vetor:\n");
scanf("%f", &y1);
j = pow(x1,2) + pow(y1,2); /*Primeiro calculo qual a soma dos quadrados de cada elemento*/
modulo = sqrt(j); /*Depois coloco-os na raiz quadrada e salvo esse valor em modulo*/
vetorunit1 = x1/modulo; /* como o resultado do primeiro elemento do vetor unitario e x1/modulo, salvo esse valor em vetorunit1*/
vetorunit2 = y1/modulo; /*analogamente a linha acima*/
printf("O vetor unitario eh: (%f , %f)\n", vetorunit1, vetorunit2); /*printo cada valor do vetor unitario */
break;
}
printf("\n\nDeseja reutilizar o programa? \nSe sim digite 1.\nSe nao digite 2.\n"); /*realiza-se uma pergunta para verificar se o usuario deseja reutilizar o programa */
scanf("%d", &n); /*salva-se esse valor em n*/
if(n==1)
{
m=0; /*se n for 1, m continua sendo igual a 0, entao o while do comeco do programa ira continua rodando */
}else{
m++; /*se nao, m vai ser incrementado, nao sendo mais 0, saindo do while, e finalizando o programa */
}
}
return 0;
}
3.Conclusão 
	No atual contexto educacional e tecnológico, a utilização de novas tecnologias da informação e comunicação aliadas à utilização de softwares tem um papel fundamental. Tais tecnologias facilitam e trazem praticidade ao utilizador que pode poupar tempo e ser mais eficaz em sua ação. Softwares podem adequar-se a qualquer área, como podemos ver neste trabalho realizado, e seu funcionamento é a prova de que a máquina pode memorizar e ser mais rápida em certas ocasiões do que o próprio homem. 
4.Agradecimentos
	Gostaria de agradecer a professora Jahina Fagundes de Assis Hattori por sua boa e nítida didática durante suas aulas e atendimentos ao aluno. 
Agradeço também ao desenvolvedor do software Notepad++, que facilita muito o usuário a ter uma boa e ampla visão da sintáxe de um código-fonte.
Referências 
http://wwwp.fc.unesp.br/~lfcruz/GA_CAP_04.pdf
http://www.ufjf.br/fisica/files/2013/10/FIII-06-02-Revis%C3%A3o-do-produto-vetorial.pdf
http://mundoeducacao.bol.uol.com.br/fisica/vetores-unitarios.htm
http://www.somatematica.com.br/emedio/vetores/vetores4.php
http://www.wolframalpha.com/widgets/view.jsp?id=c5116a9590b9aec6931a593d80a0deea
http://mundoeducacao.bol.uol.com.br/matematica/distancia-entre-dois-pontos.htm
http://www.mat.ufmg.br/~rodney/notas_de_aula/vetores.pdf#page=1&zoom=auto,-265,370
http://www.sofisica.com.br/conteudos/Mecanica/Cinematica/Vetores.php
http://www.im.ufrj.br/dmm/projeto/projetoc/precalculo/sala/conteudo/capitulos/cap91s4.html

Mais conteúdos dessa disciplina