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 :
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 :
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 :
- Commencez le programme.
- Entrez les lignes et les colonnes de la première matrice.
- Entrez les lignes et les colonnes de la deuxième matrice.
- Si les matrices sont incompatibles pour la multiplication, imprimez une erreur et quittez.
- Définissez une matrice et entrez les nombres dans la première matrice.
- Définissez une autre matrice et entrez le nombre dans la deuxième matrice.
- Définissez une matrice pour stocker le résultat de la multiplication des deux matrices.
- Définissez une boucle pour itérer sur la ligne de la première matrice.
- Configurez une boucle interne pour itérer sur la colonne de la deuxième matrice.
- Définissez une autre boucle interne pour itérer sur la colonne de la première matrice.
- Multipliez et additionnez les éléments à l'aide de la formule mul[i][j] += m1[i][k] * m2[k][j] et stocker le résultat de la multiplication dans la matrice résultante.
- Affichez la matrice résultante.
- Quittez le programme.
Comment effectuer une multiplication matricielle à l'aide de C
Le code source complet pour la multiplication matricielle en C est présent dans ce Référentiel GitHub et est libre d'utilisation.
Importez la bibliothèque stdio pour saisir des nombres et afficher la sortie en conséquence. Déclarez le principal fonction et demander à l'utilisateur d'entrer le nombre de colonnes et le nombre de lignes pour les deux matrices à l'aide de la imprimer() fonction.
Utilisez le scanf() fonction pour recevoir une entrée. %d est le spécificateur de format décimal qui garantit que le programme lit l'entrée sous la forme d'un nombre.
#inclure
#inclureentierprincipal()
{
entier r1, r2, c1, c2 ;
printf("Entrez le nombre de lignes pour la première matrice :\n" );
scanf("%d", &r1);
printf("Entrez le nombre de colonnes pour la première matrice :\n" );
scanf("%d", &c1);
printf("Entrez le nombre de lignes pour la deuxième matrice :\n" );
scanf("%d", &r2);
printf("Entrez le nombre de colonnes pour la deuxième matrice :\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.
si (c1 != r2) {
printf("Les matrices ne peuvent pas être multipliées ensemble");
sortie(-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 un imbriqué pour boucle 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.
entierm1[r1][c1], m2[r2][c2];
printf("Entrez les éléments de la première matrice\n");pour (entier je = 0; je < r1; je++) {
pour (entier j = 0; j < c1; j++) {
scanf("%d", &m1[i][j]);
}
}
printf("Entrez les éléments de la seconde matrice\n");
pour (entier je = 0; je < r2; je++) {
pour (entier j = 0; j < c2; j++) {
scanf("%d",&m2[i][j]);
}
}
Définir une troisième matrice, mul, d'ordre r1 * c2 pour stocker le résultat. Utilisez un imbriqué pour boucle 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] multiplier les éléments de la matrice.
La formule utilise l'opérateur abrégé += ajouter mul[i][j] à l'expression calculée et stockez-la. N'oubliez pas d'initialiser le résultat à zéro avant de l'ajouter.
entiermul[r1][c2];pour (entier je = 0; je < r1; je++) {
pour (entier j = 0; j < c2; j++) {
mul[i][j] = 0 ;
pour (entier 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("La matrice multipliée est: \n"); pour (entier je = 0; je < r1; je++) {
pour (entier j = 0; j < c2; j++) {
printf("%d\t", mul[i][j]);
}
printf("\n");
}
retour0;
}
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 :
Si vous entrez une entrée invalide, la multiplication de la matrice échoue et vous verrez quelque chose comme ceci :
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.