Productos Escalares y Vectoriales en C.
Análisis del problema
Para calcular un producto escalar o vectorial basta con disponer de dos vectores, que se solicitarán del usuario. Una vez realizados los cálculos oportunos, hay que mostrar los resultados. El algoritmo o procedimiento empleado es sobradamente conocido: el producto escalar es la suma de productos de componentes homólogos y el producto vectorial es el "determinante" de la matriz formada por los vectores básicos y los dos vectores cuyo producto se calcula.
Diseño del programa
Serán tres fases: lectura de datos, realización de cálculos e impresión de resultados. El algoritmo fundamental exige conocer el producto escalar y vectorial de todos los vectores básicos; se ha expuesto en las correspondientes tablas.
Implementación
Una posible versiÛn del programa serÌa la siguiente:
#include<stdio.h>
/* Este programa calcula el producto escalar y vectorial de dos vectores */
float a1, b1, c1, a2, b2, c2; /* Componentes de los vectores */
float producto_escalar; /* Resultado del producto escalar */
float a3, b3, c3; /* Componentes del producto vectorial */
void main(void)
{
/* Lectura de datos */
printf("Componentes del primer vector (separadas por espacios): ");
scanf("%f %f %f", &a1, &b1, &c1);
printf("\n\nComponentes del segundo vector (separadas por espacios): ");
scanf("%f %f %f", &a2, &b2, &c2);
/* Procesamiento de información */
producto_escalar = a1*a2 + b1*b2 + c1*c2;
a3 = b1*c2 - c1*b2;
b3 = c1*a2 - a1*c2;
c3 = a1*b2 - b1*a2;
/* Impresión de resultados */
printf("\n\nEl producto escalar es como sigue: ");
printf("(%f,%f,%f) · (%f,%f,%f) = %f", a1, b1, c1, a2, b2, c2, producto_escalar);
printf("\n\nEl producto vectorial es como sigue: ");
printf("(%f,%f,%f) X (%f,%f,%f) = (%f,%f,%f)", a1, b1, c1, a2, b2, c2, a3, b3, c3);
printf("\n\nTerminación normal del programa.\n");
}
Comprobación y Depuración
La mejor comprobación son los vectores básicos (i, j, k)
. Las tablas de multiplicar escalar y vectorialmente los vectores básicos sirven muy bien como demostración de que todo va bien, puesto que todos los vectores van a ser una combinaciÛn lineal de los anteriores, y todo producto escalar o vectorial se reduce a sumas de productos de vectores de la base.
Producto Escalar |
i |
j |
k |
i |
1 |
0 |
0 |
j |
0 |
1 |
0 |
k |
0 |
0 |
1 |
Producto Vectorial |
i |
j |
k |
i |
0 |
k |
-j |
j |
-k |
0 |
i |
k |
j |
-i |
0 |
Documentación
Este programa admite dos vectores tridimensionales de coordenadas reales. Produce como resultado su producto escalar y vectorial. No se ha contemplado la posibilidad de que el usuario cometa algún error en la introducción de datos y no se ofrece la posibilidad de corregir estos errores. En un programa profesional se tendría en cuenta esta circunstancia; de hecho, es bastante frecuente que la cantidad de código necesaria para la verificación de datos y corrección de errores sea mayor que la asociada a la tarea principal del programa.