Cómo escribir un programa en C para multiplicar dos matrices

Cómo escribir un programa en C para multiplicar dos matrices

Las matrices juegan un papel vital en muchos campos diversos, incluidos los gráficos por computadora, la criptografía y la comunicación inalámbrica. Una matriz es una matriz rectangular de números dispuestos en filas y columnas, que se utiliza para representar un objeto matemático o su propiedad.

Una de las operaciones que podría necesitar realizar con ellos es la multiplicación de matrices. Esto encuentra usos en muchas áreas, como cálculos aerodinámicos, procesamiento de señales, procesamiento de imágenes y análisis sísmico. Pero, ¿exactamente cómo se multiplican las matrices?

Cómo multiplicar dos matrices

El orden de una matriz se representa como el producto del número de filas (m) y el número de columnas (n). Para multiplicar dos matrices, el número de columnas de la primera matriz debe ser igual al número de filas de la segunda matriz.

Si tienes dos matrices, matriz A de orden m × n y B de orden n × p, el orden de la matriz producto será m × p. Por ejemplo, suponga que tiene una matriz A que contiene dos filas (m) y tres columnas (n) y una matriz B que contiene tres filas (n) y dos columnas (p). La matriz resultante constará de dos filas y dos columnas:

Ilustración de multiplicación de matrices

Multiplicas dos matrices usando el producto escalar. Para obtener el valor del primer elemento de la matriz resultante, multiplique y sume los elementos de la primera fila de la primera matriz y la primera fila de la segunda matriz elemento por elemento como:

(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58

De manera similar, para el segundo elemento, multiplique la primera fila de la primera matriz y la segunda columna de la segunda matriz como:

(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64

Para el tercer elemento, multiplique la segunda fila de la primera matriz y la primera columna de la segunda matriz como:

(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139

Para el cuarto elemento, multiplique la segunda fila de la primera matriz y la segunda columna de la segunda matriz como:

(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154

Por lo tanto, la matriz resultante es:

Ilustración de resultado de multiplicación de matriz

Puede explorar y construir diferentes programas para diferentes operaciones en matrices como:

  • suma y resta de dos matrices
  • encontrar la transpuesta de una matriz
  • comprobar si dos matrices son idénticas

Un algoritmo para multiplicar dos matrices

Siga este algoritmo para construir el programa para la multiplicación de dos matrices cualesquiera:

  1. Comience el programa.
  2. Ingrese las filas y columnas de la primera matriz.
  3. Ingrese las filas y columnas de la segunda matriz.
  4. Si las matrices son incompatibles para la multiplicación, imprime un error y sale.
  5. Defina una matriz e ingrese los números en la primera matriz.
  6. Defina otra matriz e ingrese el número en la segunda matriz.
  7. Defina una matriz para almacenar el resultado de la multiplicación de las dos matrices.
  8. Establezca un ciclo para iterar sobre la fila de la primera matriz.
  9. Configure un ciclo interno para iterar sobre la columna de la segunda matriz.
  10. Establezca otro ciclo interno para iterar sobre la columna de la primera matriz.
  11. Multiplica y suma los elementos usando la fórmula mul[i][j] += m1[i][k] * m2[k][j] y almacena el resultado de la multiplicación en la matriz resultante.
  12. Muestre la matriz resultante.
  13. Salga del programa.

Cómo realizar la multiplicación de matrices usando C

Importe la biblioteca stdio para ingresar números y muestre la salida en consecuencia. Declare la función principal y solicite al usuario que ingrese el número de columnas y el número de filas para ambas matrices usando la función print() .

Utilice la función scanf() para recibir información. %d es el especificador de formato decimal que asegura que el programa lea la entrada como un número.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int r1, r2, c1, c2;

printf("Enter the number of rows for the first matrix:\n");
scanf("%d", &r1);

printf("Enter the number of columns for the first matrix:\n");
scanf("%d", &c1);

printf("Enter the number of rows for the second matrix:\n");
scanf("%d", &r2);

printf("Enter the number of columns for the second matrix:\n");
scanf("%d", &c2);

Comprueba que la multiplicación de matrices es posible. Si el número de columnas de la primera matriz no es igual al número de filas de la segunda matriz, muestra un error y sale.

if (c1! = r2) {
printf("The matrices cannot be multiplied together");
exit(-1);
}

Si todo está bien, defina dos matrices multidimensionales, m1 y m2 , con el tamaño que proporcionó el usuario. Pida al usuario que ingrese los elementos de ambas matrices uno por uno. Use un bucle for anidado para tomar la entrada tanto para la fila como para la columna de la matriz. El ciclo for externo itera sobre las filas de la matriz y el ciclo interno sobre la columna de la matriz.

int m1[r1][c1], m2[r2][c2];
printf("Enter the elements of the first matrix\n");

for (int i = 0; i < r1; i++) {
for (int j = 0; j < c1; j++) {
scanf("%d", &m1[i][j]);
}
}

printf("Enter the elements of the second matrix\n");

for (int i = 0; i < r2; i++) {
for (int j = 0; j < c2; j++) {
scanf("%d",&m2[i][j]);
}
}

Defina una tercera matriz, mul , de orden r1 * c2 para almacenar el resultado. Use un bucle for anidado para realizar la multiplicación. El bucle for más externo itera sobre las filas, el siguiente bucle interno itera sobre las columnas y el más interno realiza la multiplicación. Usa la fórmula mul[i][j] += m1[i][k] * m2[k][j] para multiplicar los elementos de la matriz.

La fórmula usa el operador abreviado += para agregar mul[i][j] a la expresión calculada y almacenarla. Recuerde inicializar el resultado a cero antes de agregarlo.

int mul[r1][c2];

for (int i = 0; i < r1; i++) {
for (int j = 0; j < c2; j++) {
mul[i][j] = 0;


for (int k = 0; k < c1; k++) {
mul[i][j] += m1[i][k] * m2[k][j];
}
}
}

Muestra la matriz multiplicada usando un bucle for anidado que itera sobre las filas y columnas de las matrices resultantes. Utilice el carácter de nueva línea (\n) para mostrar cada una de las filas en una línea separada. Retorna 0 para salir de la función principal y del programa.

printf("The multiplied matrix is: \n");

for (int i = 0; i < r1; i++) {
for (int j = 0; j < c2; j++) {
printf("%d\t", mul[i][j]);
}

printf("\n");
}

return 0;
}

El resultado del programa de multiplicación de matrices

Debería ver algo como el siguiente resultado cuando ejecute el programa de multiplicación de matrices:

Salida de la multiplicación de matrices

Si ingresa una entrada no válida, la multiplicación de matrices falla y verá algo como esto:

Salida de la multiplicación de matrices cuando no es posible

Las matrices tienen muchos usos

Varios campos usan matrices como ciencia, comercio, economía, geología, robótica y animación. Principalmente usarás matrices en matemáticas para resolver ecuaciones lineales y representar transformaciones como rotación o traslación. Las matrices pueden calcular la cantidad de reflexión y refracción, así como resolver ecuaciones de red de CA en circuitos eléctricos.

Además de las aplicaciones educativas, puede usar matrices para el análisis de datos de encuestas, datos de votaciones, listas de elementos de cálculo y otros conjuntos de datos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *