Tabla de fichas Indice del Tema 0104
0101 0102 0103 0104 0105 0106 0107 0108 0109

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.