Introduction
Les matrices sont un tableau rectangulaires contenant des éléments généralement sous forme de nombres à laquelle on pourra appliquera appliqué une opération d'un opérateur comme une addition, soustraction, multiplication et division. On utilise les matrices dans les ordinateurs afin d'effectuer des calculs en séries où de façon «industrielles» dans les ordinateurs afin par exemple fournir des réponses dans des feuilles de calculs, dans des bases de données, dans l'affichage de graphiques et dans les jeux vidéos. En général, lorsqu'on effectue une opération sur 2 matrices, on nomme la première matrice A et la deuxième matrice B. Chacune des matrices auront des dimensions, soit de tailles égales ou de tailles différentes. Les 2 dimensions normalement prisent en compte sont l'horizontale et la verticale. On aura donc un schéma théorique comme ceci :
[a11 a12 ... a1n a21 a22 ... a2n ... ... aij ... am1 am2 ... amn] |
Dans de rares cas, si on souhaite utiliser une matrice en 3 dimensions, les 3 dimensions seront nommés : horizontale, verticale et profondeur.
Somme de matrices (Additionner 2 matrices)
La somme de matrice est l'opération d'effectuer une addition de 2 matrices en d'en retourner le résultat. Sachant que la première matrice A = (aij) et que la deuxième matrice B = (bij) sont les 2 matrices à additionner (A + B), on obtiendra donc la formule suivante :
A + B = (aij) + (bij) = (aij + bij) |
A partir de cette formule mathématique, on pourra donc construire l'algorithme suivant :
BOUCLE POUR J ← 1 JUSQU'A nombre de dimensions verticale BOUCLE POUR I ← 1 JUSQU'A nombre de dimensions horizontale Résultat[J,I] ← A[J,I] + B[J,I] FIN BOUCLE POUR I FIN BOUCLE J |
L'exemple suivant, écrit en Free Pascal, permet d'effectuer l'addition d'une matrice de 3x2 :
- Program AddMatrix3x2Samples;
-
- Const
- DimensionY=2;
- DimensionX=3;
-
- Type
- Matrix=Array[1..DimensionY,1..DimensionX]of Integer;
-
- Procedure AddMatrix(Const A,B:Matrix;Var Resultat:Matrix);
- Var
- I,J:Word;
- Begin
- For J:=1 to DimensionY do Begin
- For I:=1 to DimensionX do Begin
- Resultat[J,I] := A[J,I] + B[J,I];
- End;
- End;
- End;
-
- Procedure ShowMatrix(Const C:Matrix);
- Var
- I,J:Word;
- Begin
- For J:=1 to DimensionY do Begin
- For I:=1 to DimensionX do Begin
- Write(C[J,I],' ');
- End;
- WriteLn;
- End;
- End;
-
- Var
- A:Matrix = (
- (3,4,-5),
- (2,-7,3)
- );
- B:Matrix = (
- (4,-2,3),
- (5,3,-2)
- );
- C:Matrix;
-
- BEGIN
- AddMatrix(A,B,C);
- ShowMatrix(C);
- END.
on obtiendra le résultat suivant :
7 2 -27 -4 1
Voici le même exemple en écrit en C, permet d'effectuer l'addition d'une matrice de 3x2 :
- #include <stdio.h>
- #include <stdlib.h>
-
- #define DimensionY 2
- #define DimensionX 3
-
- typedef int Matrix[DimensionY][DimensionX];
-
- void AddMatrix(Matrix A, Matrix B,Matrix *Resultat) {
- int I,J;
- for(J = 0; J < DimensionY; J++) {
- for(I = 0; I < DimensionX; I++) {
- (*Resultat)[J][I] = A[J][I] + B[J][I];
- }
- }
- }
-
- void ShowMatrix(Matrix C) {
- int I,J;
- for(J = 0; J < DimensionY; J++) {
- for(I = 0; I < DimensionX; I++) {
- printf("%i ",C[J][I]);
- }
- printf("\n");
- }
- }
-
- int main() {
- Matrix A = {
- {3,4,-5},
- {2,-7,3}
- };
- Matrix B = {
- {4,-2,3},
- {5,3,-2}
- };
- Matrix C;
- AddMatrix(A,B,&C);
- ShowMatrix(C);
- return 0;
- }
on obtiendra le résultat suivant :
7 2 -27 -4 1
Produit scalaire de matrices (Multiplication 1 matrice par un scalaire)
Le produit scalaire de matrices est l'opération d'effectuer une multiplication de 1 matrices par une valeur scalaire en d'en retourner le résultat. On aura donc A(aij) avec une matrice m x n et un k étant un nombre scalaire. On obtiendra donc la formule mathématique suivante :
kA = k(aij) = (kaij) |
A partir de cette formule mathématique, on pourra donc construire l'algorithme suivant :
BOUCLE POUR J ← 1 JUSQU'A nombre de dimensions verticale BOUCLE POUR I ← 1 JUSQU'A nombre de dimensions horizontale Résultat[J,I] ← A[J,I] x k FIN BOUCLE POUR I FIN BOUCLE J |
L'exemple suivant, écrit en Free Pascal, permet d'effectuer la multiplication d'une matrice de 3x2 par le scalaire 5 :
- Program MulMatrix3x2By5Samples;
-
- Const
- DimensionY=2;
- DimensionX=3;
-
- Type
- Matrix=Array[1..DimensionY,1..DimensionX]of Integer;
-
- Procedure MulMatrixBy(Const A:Matrix;Scalaire:Integer;Var Resultat:Matrix);
- Var
- I,J:Word;
- Begin
- For J:=1 to DimensionY do Begin
- For I:=1 to DimensionX do Begin
- Resultat[J,I] := A[J,I] * Scalaire;
- End;
- End;
- End;
-
- Procedure ShowMatrix(Const C:Matrix);
- Var
- I,J:Word;
- Begin
- For J:=1 to DimensionY do Begin
- For I:=1 to DimensionX do Begin
- Write(C[J,I],' ');
- End;
- WriteLn;
- End;
- End;
-
- Var
- A:Matrix = (
- (-2,3,1),
- (4,-2,5)
- );
- C:Matrix;
-
- BEGIN
- MulMatrixBy(A,5,C);
- ShowMatrix(C);
- END.
on obtiendra le résultat suivant :
-10 15 520 -10 25
Produit de matrices (Multiplication 2 matrices)
Le produit de matrices est l'opération d'effectuer une multiplication de 2 matrices en d'en retourner le résultat. On obtiendra donc la formule mathématique suivante :
|
A partir de cette formule mathématique, on pourra donc construire l'algorithme suivant :
BOUCLE POUR J ← 1 JUSQU'A nombre de dimensions verticale BOUCLE POUR I ← 1 JUSQU'A nombre de dimensions horizontale Résultat[J,I] ← 0 BOUCLE POUR K ← 1 JUSQU'A nombre de dimensions Résultat[J,I] ← Résultat[J,I] + M[K,I] x N[J,K] FIN BOUCLE K FIN BOUCLE POUR I FIN BOUCLE J |
L'exemple suivant, écrit en Free Pascal, permet d'effectuer la multiplication de 2 matrices de 3x3 :
- Program MulMatrix3x3Samples;
-
- Const
- DimensionY=3;
- DimensionX=3;
-
- Type
- Matrix=Array[1..DimensionY,1..DimensionX]of Integer;
-
- Procedure MulMatrix(Const A,B:Matrix;Var Resultat:Matrix);
- Var
- I,J,K:Word;
- Begin
- For J:=1 to DimensionY do Begin
- For I:=1 to DimensionX do Begin
- Resultat[J,I] := 0;
- For K:=1 to DimensionX do Begin
- Resultat[J,I] := Resultat[J,I] + A[J,I] * B[J,I];
- End;
- End;
- End;
- End;
-
- Procedure ShowMatrix(Const C:Matrix);
- Var
- I,J:Word;
- Begin
- For J:=1 to DimensionY do Begin
- For I:=1 to DimensionX do Begin
- Write(C[J,I],' ');
- End;
- WriteLn;
- End;
- End;
-
- Var
- A:Matrix = (
- (3,4,-5),
- (2,-7,3),
- (6,1,8)
- );
- B:Matrix = (
- (4,-2,3),
- (5,3,-2),
- (8,6,1)
- );
- C:Matrix;
-
- BEGIN
- MulMatrix(A,B,C);
- ShowMatrix(C);
- END.
on obtiendra le résultat suivant :
36 -24 -4530 -63 -18
144 18 24
Matrice identité
Les matrices d'identités sont des matrices carrées où la dimension horizontale est égale à la dimension verticale, soit une matrice ayant le même nombre de ligne qu'elle a de nombre de colonne. De plus, le nombre d'éléments de la diagonale sont égaux à 1 et les éléments en dehors de cette diagonale sont de valeurs nulles ou 0. Voici quelques exemples de matrices d'identités :
|
Sachant que la diagonale détermine les valeurs, on aura donc l'algorithme suivant :
BOUCLE POUR J ← 1 JUSQU'A nombre de dimensions verticale BOUCLE POUR I ← 1 JUSQU'A nombre de dimensions horizontale SI I = J ALORS R[J,I] ← 1 SINON R[J,I] ← 0 FIN SI FIN BOUCLE POUR I FIN BOUCLE J |
Matrice inversé
Les matrices inversés sont des matrices carrées avec un ordre précis dans lequel il faut inversé la première matrice (soit la matrice A) avec la formule suivante, où I est une matrice d'identité d'ordre précis :
A • A-1 = A-1 • A = 1 |
Voir également
Langage de programmation - Turbo Pascal - Turbo Pascal et Assembleur - Opération Mathématique