b
i
= sumatorio en j de a
ij
x
j
.#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { /* Declaración (pedestre) de la matriz */ float a11, a12, a13, a21, a22, a23, a31, a32, a33; /* Declaración de vectores */ float x1, x2, x3, b1, b2, b3; /* Fase de lectura de datos */ puts("Multiplicación de matrices por vectores."); printf("\nEscriba la primera fila de la matriz: "); scanf("%f %f %f", &a11, &a12, &a13); printf("\nEscriba la segunda fila de la matriz: "); scanf("%f %f %f", &a21, &a22, &a23); printf("\nEscriba la tercera fila de la matriz: "); scanf("%f %f %f", &a31, &a32, &a33); printf("\n\n La matriz A es como sigue:\n\n"); printf("|%4.2f %4.2f %4.2f|\n", a11, a12, a13); printf("|%4.2f %4.2f %4.2f|\n", a21, a22, a33); printf("|%4.2f %4.2f %4.2f|\n", a31, a22, a33); printf("\n\nPor favor, ahora escriba el vector (en fila aunque es columna: "); scanf("%f %f %f",&x1, &x2, &x3); printf("\n\nVector introducido :\n\n"); printf("|%4.2f|\n",x1); printf("|%4.2f|\n",x2); printf("|%4.2f|\n",x3); /* Fase de cálculo */ b1 = a11*x1 + a12*x2 + a13*x3; b2 = a21*x1 + a22*x2 + a23*x3; b3 = a31*x1 + a32*x2 + a33*x3; /* En general, bj = sumatorio en j de aijxj */ /* Fase de impresión de resultados */ printf("\n\nEl producto del vector por la matriz es como sigue:\n\n"); printf("|%4.2f|\n",b1); printf("|%4.2f|\n",b2); printf("|%4.2f|\n",b3); printf("\n\nTerminación normal del programa.\n"); return 0; }
I
y el vector columna x = (1, 2, 3). Esto no significa que el programa sea correcto; se puede demostrar que un programa es incorrecto mediante un juego de datos de prueba que produczcan resultados incorrectos, pero no es viable utilizar todos los posibles juegos de datos para verificar que, en todos los casos, el resultado es correcto.
/* Resultados: Multiplicación de matrices por vectores. Escriba la primera fila de la matriz: 2 0 0 Escriba la segunda fila de la matriz: 0 2 0 Escriba la tercera fila de la matriz: 0 0 2 La matriz A es como sigue: |2.00 0.00 0.00| |0.00 2.00 2.00| |0.00 2.00 2.00| Por favor, ahora escriba el vector (en fila aunque es columna: 1 2 3 Vector introducido : |1.00| |2.00| |3.00| El producto del vector por la matriz es como sigue: |2.00| |4.00| |6.00| Terminación normal del programa. */Comentarios .- Este ejemplo produce resultados correctos. ¿Basta esto para garantizar que siempre lo serán (para todo vector x)? Ejercicio algo más difícil: introducir deliberadamente un error de programa que produzca resultados correctos para un determinado valor del vector x. Ejercicio más abstracto: razonar por qué bastaría estudiar la corrección del producto para vectores de la base de x para demostrar la corrección (o incorrección) del programa.