Comment écrire un programme C pour multiplier deux matrices

Comment écrire un programme C pour multiplier deux matrices

Les matrices jouent un rôle vital dans de nombreux domaines divers, notamment l’infographie, la cryptographie et la communication sans fil. Une matrice est un tableau rectangulaire de nombres disposés en lignes et en colonnes, utilisé pour représenter un objet mathématique ou sa propriété.

L’une des opérations que vous devrez peut-être effectuer sur eux est la multiplication matricielle. Cela trouve des utilisations dans de nombreux domaines tels que les calculs aérodynamiques, le traitement du signal, le traitement d’images et l’analyse sismique. Mais comment multiplie-t-on exactement les matrices ?

Comment multiplier deux matrices

Vous représentez l’ordre d’une matrice comme le produit du nombre de lignes (m) et du nombre de colonnes (n). Pour multiplier deux matrices, le nombre de colonnes de la première matrice doit être égal au nombre de lignes de la seconde matrice.

Si vous avez deux matrices, la matrice A d’ordre m × n et B d’ordre n × p, l’ordre de la matrice produit sera m × p. Par exemple, supposons que vous ayez une matrice A contenant deux lignes (m) et trois colonnes (n) et une matrice B contenant trois lignes (n) et deux colonnes (p). La matrice résultante sera composée de deux lignes et de deux colonnes :

Illustration de multiplication matricielle

Vous multipliez deux matrices en utilisant le produit scalaire. Pour obtenir la valeur du premier élément de la matrice résultante, multipliez et additionnez les éléments de la première ligne de la première matrice et de la première ligne de la deuxième matrice élément par élément comme :

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

De même, pour le deuxième élément, multipliez la première ligne de la première matrice et la deuxième colonne de la deuxième matrice par :

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

Pour le troisième élément, multipliez la deuxième ligne de la première matrice et la première colonne de la deuxième matrice comme :

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

Pour le quatrième élément, multipliez la deuxième ligne de la première matrice et la deuxième colonne de la deuxième matrice comme :

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

Ainsi, la matrice résultante est :

Illustration du résultat de la multiplication matricielle

Vous pouvez explorer et créer différents programmes pour différentes opérations sur des matrices telles que :

  • addition et soustraction de deux matrices
  • trouver la transposée d’une matrice
  • vérifier si deux matrices sont identiques

Un algorithme pour multiplier deux matrices

Suivez cet algorithme pour construire le programme de multiplication de deux matrices quelconques :

  1. Commencez le programme.
  2. Entrez les lignes et les colonnes de la première matrice.
  3. Entrez les lignes et les colonnes de la deuxième matrice.
  4. Si les matrices sont incompatibles pour la multiplication, imprimez une erreur et quittez.
  5. Définissez une matrice et entrez les nombres dans la première matrice.
  6. Définissez une autre matrice et entrez le nombre dans la seconde matrice.
  7. Définissez une matrice pour stocker le résultat de la multiplication des deux matrices.
  8. Définissez une boucle pour itérer sur la ligne de la première matrice.
  9. Configurez une boucle interne pour itérer sur la colonne de la deuxième matrice.
  10. Définissez une autre boucle interne pour itérer sur la colonne de la première matrice.
  11. Multipliez et additionnez les éléments en utilisant la formule mul[i][j] += m1[i][k] * m2[k][j] et stockez le résultat de la multiplication dans la matrice résultante.
  12. Affichez la matrice résultante.
  13. Quittez le programme.

Comment effectuer une multiplication matricielle à l’aide de C

Importez la bibliothèque stdio pour saisir des nombres et afficher la sortie en conséquence. Déclarez la fonction principale et demandez à l’utilisateur d’entrer le nombre de colonnes et le nombre de lignes pour les deux matrices à l’aide de la fonction print() .

Utilisez la fonction scanf() pour recevoir les entrées. %d est le spécificateur de format décimal qui garantit que le programme lit l’entrée sous la forme d’un nombre.

#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);

Vérifiez que la multiplication matricielle est possible. Si le nombre de colonnes de la première matrice n’est pas égal au nombre de lignes de la deuxième matrice, affichez une erreur et quittez.

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

Si tout va bien, définissez deux tableaux multidimensionnels, m1 et m2 , avec la taille fournie par l’utilisateur. Demandez à l’utilisateur d’entrer les éléments des deux matrices un par un. Utilisez une boucle for imbriquée pour prendre l’entrée pour la ligne et la colonne de la matrice. La boucle for externe itère sur les lignes de la matrice et la boucle interne sur la colonne de la matrice.

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]);
}
}

Définissez une troisième matrice, mul , d’ordre r1 * c2 pour stocker le résultat. Utilisez une boucle for imbriquée pour effectuer la multiplication. La boucle for la plus externe itère sur les lignes, la boucle interne suivante itère sur les colonnes et la plus interne effectue la multiplication. Utilisez la formule mul[i][j] += m1[i][k] * m2[k][j] pour multiplier les éléments de la matrice.

La formule utilise l’opérateur abrégé += pour ajouter mul[i][j] à l’expression calculée et la stocker. N’oubliez pas d’initialiser le résultat à zéro avant de l’ajouter.

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];
}
}
}

Affichez la matrice multipliée à l’aide d’une boucle for imbriquée qui itère sur les lignes et les colonnes des matrices résultantes. Utilisez le caractère de nouvelle ligne (\n) pour afficher chacune des lignes sur une ligne distincte. Renvoyez 0 pour quitter la fonction principale et le programme.

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;
}

La sortie du programme de multiplication matricielle

Vous devriez voir quelque chose comme la sortie suivante lorsque vous exécutez le programme de multiplication matricielle :

Sortie de la multiplication matricielle

Si vous entrez une entrée non valide, la multiplication de la matrice échoue et vous verrez quelque chose comme ceci :

Sortie de Matrix Multiplication lorsque cela n'est pas possible

Les matrices ont de nombreuses utilisations

Divers domaines utilisent des matrices telles que la science, le commerce, l’économie, la géologie, la robotique et l’animation. Vous utiliserez principalement des matrices en mathématiques pour résoudre des équations linéaires et représenter des transformations telles que la rotation ou la translation. Les matrices peuvent calculer la quantité de réflexion et de réfraction ainsi que résoudre les équations du réseau AC dans les circuits électriques.

Outre les applications éducatives, vous pouvez utiliser des matrices pour l’analyse des données d’enquête, des données de vote, des listes d’éléments de calcul et d’autres ensembles de données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *