Le produit matriciel désigne la multiplication de matrices, initialement appelé la « composition des tableaux »[1].

Produit matriciel ordinaire

modifier

Il s'agit de la façon la plus fréquente de multiplier des matrices entre elles, en référence à la méthode de calcul il est souvent surnommé produit lico ("li" pour lignes et "co" pour colonnes).

En algèbre linéaire, une matrice A de dimensions m lignes et n colonnes (matrice m×n) représente une application linéaire ƒ d'un espace de dimension n vers un espace de dimension m. Une matrice colonne V de n lignes est une matrice n×1, et représente un vecteur v d'un espace vectoriel de dimension n. Le produit A×V représente ƒ(v).

Si A et B représentent respectivement les applications linéaires f et g, alors A×B représente la composition des applications  .

Cette opération est utilisée notamment en mécanique lors des calculs de torseur statique, ou en informatique pour la matrice d'adjacence d'un graphe.

Le produit de deux matrices ne peut se définir que si le nombre de colonnes de la première matrice est le même que le nombre de lignes de la deuxième matrice, c'est-à-dire lorsqu'elles sont de type compatible.

Si   est une matrice de type   et   est une matrice de type  , alors leur produit, noté   est une matrice de type   donnée par :

 

La figure suivante montre comment calculer les coefficients   et   de la matrice produit   si   est une matrice de type  , et   est une matrice de type  .

 

 

 

Exemples

modifier
 
 

En général, la multiplication des matrices n'est pas commutative, c'est-à-dire que   n'est pas égal à  , comme le montre l'exemple suivant.

            tandis que            

Multiplication de matrices par bloc

modifier

Si l'on considère les matrices   et  , où   et   sont des matrices vérifiant :

  • Le nombre de colonnes de   et   est égal au nombre de lignes de   et  
  • Le nombre de colonnes de   et   est égal au nombre de lignes de   et  

on a alors l'égalité

 

On remarquera l'analogie entre le produit de matrice par blocs et le produit de deux matrices carrées d'ordre 2.

N.B. : on ne définit pas ainsi une nouvelle forme de multiplication de matrices. Cela correspond simplement à une méthode de calcul du produit matriciel ordinaire pouvant simplifier les calculs.

Produit d'Hadamard

modifier

Pour deux matrices de même type, nous avons le produit d'Hadamard ou produit composante par composante. Le produit d'Hadamard de deux matrices   et   de type  , noté A · B = (cij), est une matrice de type   donnée par

 

Par exemple :

 

Ce produit est une sous-matrice du produit de Kronecker (voir ci-dessous).

Produit de Kronecker

modifier

Pour deux matrices arbitraires   et  , nous avons le produit tensoriel ou produit de Kronecker AB qui est défini par

 

Si   est une matrice de type   et   est une matrice de type   alors AB est une matrice de type  . À nouveau cette multiplication n'est pas commutative.

Par exemple

 

Si   et   sont les matrices d'applications linéaires V1W1 et V2W2, respectivement, alors AB représente le produit tensoriel des deux applications, V1V2W1W2.

Propriétés communes

modifier

Les trois multiplications matricielles précédentes sont associatives

 ,

distributives par rapport à l'addition :

 
 

et compatibles avec la multiplication par un scalaire :

 

Multiplication par un scalaire

modifier

La multiplication par un scalaire   d'une matrice   donne le produit

 .

Si nous travaillons avec des matrices sur un anneau, alors la multiplication par un scalaire est parfois appelée la multiplication à gauche tandis que la multiplication à droite est définie par :

 .

Quand l'anneau fondamental est un anneau commutatif, par exemple, le corps des réels ou des complexes, les deux multiplications sont identiques.

Cependant, si l'anneau n'est pas commutatif, tel que celui des quaternions, alors ils peuvent être différents. Par exemple

 

Aspects informatiques

modifier

L'intérêt pratique du calcul matriciel fait qu'il est très largement effectué par ordinateur. L'informatique s'intéresse donc aussi au produit matriciel, tant du point de vue algorithmique que du point de vue du hardware.

Algorithmique

modifier

Multiplication efficace de deux matrices

modifier

Le problème qui consiste, étant donné deux matrices carrées, à les multiplier rapidement, est un problème important en algorithmique. L'algorithme qui découle de la définition a une complexité en temps en  , où   est le nombre de lignes des matrices. Une borne inférieure est   (car chacun des   coefficients de la matrices doit être écrit). L'exposant optimal pour la complexité est donc compris entre 2 et 3 mais sa valeur exacte est un problème ouvert[2]. De nombreux algorithmes ont été inventés pour ce problème, citons par exemple l'algorithme de Strassen en  , le premier à avoir été découvert[2], et l'algorithme de Coppersmith-Winograd en  [3]. En 1993, Bahar et al. ont donné un algorithme de multiplications de matrices pour des matrices représentées symboliquement à l'aide d'une structure de données appelée Algebraic Decision Diagrams (ADD), qui est une généralisation des diagrammes de décision binaire[4].

Multiplications matricielles enchaînées

modifier

On se donne une suite de matrices rectangulaires   et on souhaite en calculer le produit   (on suppose que toutes les matrices ont une taille compatible, c'est-à-dire que le produit est bien défini). Le produit matriciel étant associatif, n'importe quel parenthésage du produit donnera le même résultat. Cependant le nombre de multiplications scalaires à effectuer dépend du parenthésage retenu si les matrices sont de tailles différentes.

Ainsi si l'on prend  ,   et   on a bien   =   mais le calcul de   nécessite 6 multiplications scalaires tandis que celui de   en nécessite 18.

Il peut donc être utile d'exécuter un algorithme d'optimisation de produit matriciel enchaîné afin d'identifier le parenthésage le plus efficace avant d'effectuer les produits proprement dits.

Vérification d'un produit matriciel

modifier

Pour vérifier un produit matriciel, il existe des algorithmes plus efficaces que de simplement le recalculer.

Par exemple l'algorithme de Freivalds est un algorithme probabiliste qui permet de vérifier le résultat d'un produit matriciel en   avec une probabilité d'erreur aussi faible que voulue.

Matériel

modifier

Processeurs graphiques

modifier

Les processeurs graphiques (GPU) conçus à l'origine pour accélérer les opérations de rendu de scènes en 3D, et sont notamment optimisé pour permettre aux jeux vidéos d'utiliser de la 3D temps réel[5]. Comme les produits matriciels sont nombreux dans ce type d'application, il s'ensuit que les GPU sont conçus pour être efficaces en calcul matriciel[5].

Notes et références

modifier
  1. Alain Connes, Triangle de pensées, Édition Odile Jacob, p. 72.
  2. a et b Thomas H. Cormen, Charles E. Leiserson et Ronald L. Rivest, Introduction à l'algorithmique, Paris, Dunod, 2002, xxix+1146 (ISBN 978-2-10-003922-7, SUDOC 068254024), chap. 28 (« Calcul matriciel »).
  3. (en) Markus Bläser, « Fast Matrix Multiplication », Theory of Computing, Graduate Surveys, vol. 5,‎ 2013, p. 1-60 (lire en ligne).
  4. (en) R. Iris Bahar, Erica A. Frohm, Charles M. Gaona et Gary D. Hachtel, « Algebraic decision diagrams and their applications », ICCAD '93 Proceedings of the 1993 IEEE/ACM international conference on Computer-aided design, IEEE Computer Society Press,‎ 7 novembre 1993, p. 188–191 (ISBN 0818644907, lire en ligne, consulté le 9 février 2018)
  5. a et b David Louapre, Le Labo du jeu vidéo, Paris, Albin Michel, coll. « Sciences », 2026, 432 p. (ISBN 978-2-226-49023-0), 1 – Du pixel au photon, chap. 6 (« Les processeurs graphiques à la manœuvre »), p. 88-89.

Voir aussi

modifier

Article connexe

modifier

Liens externes

modifier

📚 Artikel Terkait di Wikipedia

Algorithme de multiplication d'entiers

Les algorithmes de multiplication d'entiers permettent de calculer le résultat d'une multiplication. Graphiquement, il s'agit de transformer un rectangle

Complexité de la multiplication de matrices

de la multiplication de matrices est le nombre d'opérations requises pour l'opération de produit matriciel. Les algorithmes de multiplication de matrices

Multiplication

arithmétique. Pour les autres significations, voir Multiplication (homonymie). La multiplication est l'une des quatre opérations de l'arithmétique élémentaire

Algorithme de multiplication de Booth

l’améliorant (comment ?) selon les recommandations des projets correspondants. L'algorithme de Booth a pour but de multiplier deux nombres binaires signés représentés

Algorithme de Strassen

de l'algorithme est en O ( n 2 , 807 ) {\displaystyle O(n^{2,807})} , avec pour la première fois un exposant inférieur à celui de la multiplication naïve

Algorithme galactique

en pratique. multiplication matricielle. La première amélioration par rapport à la multiplication par force brute, O(N3), est l'algorithme de Strassen

Table de multiplication

Table (homonymie). Une table de multiplication affiche dans les lignes et colonnes le résultat de la multiplication des petits nombres entiers naturels

Algorithme de Karatsuba

b, c et d en deux et ainsi de suite. C'est un algorithme de type diviser pour régner. La multiplication par la base de numération (10 dans l'exemple précédent