Matrice par blocs

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En théorie des matrices, une matrice par blocs ou matrice partitionnée est une matrice pouvant être divisée en matrices rectangulaires de dimensions inférieures appelées blocs. On peut dire également que la matrice est écrite en termes de matrices mises côte à côte. Une matrice par bloc doit se conformer à une manière cohérente de division des lignes et des colonnes : on groupe les lignes en « groupes » adjacents, et les colonnes de la même manière. La partition se fait dans les rectangles décrits par un groupe de lignes adjacentes croisant un groupe de colonnes adjacentes. En d'autres termes, la matrice est divisée par certaines des lignes horizontales et verticales la traversant.

Exemple[modifier | modifier le code]

La matrice

\mathbf{P} = \begin{bmatrix}
1 & 1 & 2 & 2\\
1 & 1 & 2 & 2\\
3 & 3 & 4 & 4\\
3 & 3 & 4 & 4\end{bmatrix}

peut être partitionnée en quatre blocs 2×2

\mathbf{P}_{11} = \begin{bmatrix}
1 & 1 \\
1 & 1 \end{bmatrix},   \mathbf{P}_{12} = \begin{bmatrix}
2 & 2\\
2 & 2\end{bmatrix},  \mathbf{P}_{21} = \begin{bmatrix}
3 & 3 \\
3 & 3 \end{bmatrix},   \mathbf{P}_{22} = \begin{bmatrix}
4 & 4\\
4 & 4\end{bmatrix}.

On peut alors écrire la matrice par bloc comme :

\mathbf{P}_{\mathrm{partitionnee}} = \begin{bmatrix}
\mathbf{P}_{11} & \mathbf{P}_{12}\\
\mathbf{P}_{21} & \mathbf{P}_{22}\end{bmatrix}.

Multiplication de matrices par blocs[modifier | modifier le code]

Un produit de matrices par blocs peut être effectué en considérant seulement des opérations sur les sous-matrices. Étant données une matrice \mathbf{A} (m\times p) avec q partitions de lignes et s de colonnes :


\mathbf{A} = \begin{bmatrix}
\mathbf{A}_{11} & \mathbf{A}_{12} & \cdots &\mathbf{A}_{1s}\\
\mathbf{A}_{21} & \mathbf{A}_{22} & \cdots &\mathbf{A}_{2s}\\
\vdots          & \vdots          & \ddots &\vdots \\
\mathbf{A}_{q1} & \mathbf{A}_{q2} & \cdots &\mathbf{A}_{qs}\end{bmatrix}

et une matrice \mathbf{B} (p\times n) avec s partitions de lignes et r partitions de colonnes :


\mathbf{B} = \begin{bmatrix}
\mathbf{B}_{11} & \mathbf{B}_{12} & \cdots &\mathbf{B}_{1r}\\
\mathbf{B}_{21} & \mathbf{B}_{22} & \cdots &\mathbf{B}_{2r}\\
\vdots          & \vdots          & \ddots &\vdots \\
\mathbf{B}_{s1} & \mathbf{B}_{s2} & \cdots &\mathbf{B}_{sr}\end{bmatrix},

le produit matriciel :


\mathbf{C}=\mathbf{A}\mathbf{B}

peut être effectué par bloc, donnant \mathbf{C}, matrice (m\times n) avec q partitions de lignes et r partitions de colonnes. Les blocs sous-matrices de \mathbf{C} sont calculés de la manière suivante :


\mathbf{C}_{\alpha \beta} = \sum^s_{\gamma=1}\mathbf{A}_{\alpha \gamma}\mathbf{B}_{\gamma \beta}.

Matrices par blocs diagonales[modifier | modifier le code]

Une matrice bloc-diagonale (ou diagonale par blocs) est une matrice carrée qui possède des blocs matrices carrées sur la diagonale principale, tels que les blocs non-diagonaux soient des matrices nulles. Une matrice bloc-diagonale A est de forme :

 
\mathbf{A} = \begin{bmatrix} 
\mathbf{A}_{1} & 0 & \cdots & 0 \\ 0 & \mathbf{A}_{2} & \cdots &  0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \mathbf{A}_{n} 
\end{bmatrix}

Ak est une matrice carrée ; en d'autres termes, c'est la somme directe de A1, …, An. On peut aussi noter ceci : A1 \oplus A2 \oplus\,\ldots\,\oplus  An  ou  diag(A1, A2,\ldots, An), ce dernier étant une expression dans le même formalisme que celui d'une matrice diagonale. Toute matrice carrée peut être de manière triviale considérée comme une matrice bloc-diagonale avec un seul bloc.

Pour le déterminant et la trace, les expressions sont alors :

 \operatorname{det} (\mathbf{A}) = \operatorname{det} (\mathbf{A}_1) \cdots \operatorname{det} (\mathbf{A}_n),
 \operatorname{trace} (\mathbf{A}) = \operatorname{trace} (\mathbf{A}_1) +\cdots +\operatorname{trace} (\mathbf{A}_n).


Pour tout entier n on a :

\begin{pmatrix}
\mathbf{A}_{1} & 0 & \cdots & 0 \\
0 & \mathbf{A}_{2} & \cdots &  0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \mathbf{A}_{n} 
\end{pmatrix}^{n} = \begin{pmatrix} \mathbf{A}_{1}^{n} & 0 & \cdots & 0 \\
 0 & \mathbf{A}_{2}^{n} & \cdots &  0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \mathbf{A}_{n}^{n} 
\end{pmatrix}

L'inverse d'une matrice diagonale par blocs est donc la matrice, diagonale par blocs, des inverses des blocs :

\begin{pmatrix}
\mathbf{A}_{1} & 0 & \cdots & 0 \\
0 & \mathbf{A}_{2} & \cdots &  0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \mathbf{A}_{n} 
\end{pmatrix}^{-1} = \begin{pmatrix} \mathbf{A}_{1}^{-1} & 0 & \cdots & 0 \\
 0 & \mathbf{A}_{2}^{-1} & \cdots &  0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \mathbf{A}_{n}^{-1} 
\end{pmatrix}

Matrices tridiagonales par blocs[modifier | modifier le code]

Une matrice tridiagonale par bloc est une autre matrice par bloc spéciale, qui est comparable à la matrice diagonale par bloc, c'est-à-dire une matrice carrée ayant des matrices blocs carrées sur les diagonales principales, inférieure et supérieure, les autres blocs étant des matrices nulles. C'est une matrice tridiagonale essentiellement, mais qui possède des sous-matrices à la place des coefficients scalaires. Une matrice tridiagonale par bloc A a la forme :

 
\mathbf{A} = \begin{bmatrix}
\mathbf{B}_{1}  & \mathbf{C}_{1}  &         &         & \cdots  &         & 0 \\
\mathbf{A}_{2}  & \mathbf{B}_{2}  & \mathbf{C}_{2}   &         &         &         & \\
       & \ddots & \ddots  & \ddots  &         &         & \vdots \\
       &        & \mathbf{A}_{k}   & \mathbf{B}_{k}   & \mathbf{C}_{k}   &         & \\
\vdots &        &         & \ddots  & \ddots  & \ddots  & \\
       &        &         &         & \mathbf{A}_{n-1} & \mathbf{B}_{n-1} & \mathbf{C}_{n-1}   \\
0      &        & \cdots  &         &         & \mathbf{A}_{n}   & \mathbf{B}_{n}
\end{bmatrix}

Ak, Bk et Ck sont des sous-matrices carrées sur les diagonales inférieure, principale et supérieure respectivement.

Les matrices tridiagonales par blocs sont parfois rencontrées dans les solutions numériques des problèmes d'ingénierie (comme par exemple en mécanique des fluides numérique). Les méthodes numériques optimisées pour une factorisation LU sont disponibles ainsi que des algorithmes de résolution de systèmes d'équations avec une matrice tridiagonale par bloc pour matrice de coefficients. L'algorithme de Thomas, utilisé pour obtenir une solution efficace des systèmes d'équations impliquant une matrice tridiagonale peut être aussi appliqué en utilisant des opérations matricielles aux matrices tridiagonales par blocs (voir aussi décomposition LU par bloc).

Matrices de Toeplitz par blocs[modifier | modifier le code]

Une matrice de Toeplitz par bloc est une autre matrice par bloc spéciale, contenant des blocs répétés le long des diagonales de la matrice, comme pour les coefficients d'une matrice de Toeplitz. Une matrice de Toeplitz par bloc A est de la forme :

 
\mathbf{A} = \begin{bmatrix}
\mathbf{A}_{(1,1)}  & \mathbf{A}_{(1,2)}  &         &         & \cdots  &     \mathbf{A}_{(1,n-1)}    & \mathbf{A}_{(1,n)} \\
\mathbf{A}_{(2,1)}  & \mathbf{A}_{(1,1)}  & \mathbf{A}_{(1,2)}   &         &         &         & \mathbf{A}_{(1,n-1)} \\
       & \ddots & \ddots  & \ddots  &         &         & \vdots \\
       &        & \mathbf{A}_{(2,1)}   & \mathbf{A}_{(1,1)}   & \mathbf{A}_{(1,2)}   &         & \\
\vdots &        &         & \ddots  & \ddots  & \ddots  & \\
\mathbf{A}_{(n-1,1)}       &        &         &         & \mathbf{A}_{(2,1)} & \mathbf{A}_{(1,1)} & \mathbf{A}_{(1,2)}   \\
\mathbf{A}_{(n,1)}      & \mathbf{A}_{(n-1,1)}       & \cdots  &         &         & \mathbf{A}_{(2,1)}   & \mathbf{A}_{(1,1)}
\end{bmatrix}

Somme directe[modifier | modifier le code]

Pour toutes matrices arbitraires A (de taille m × n) et B (de taille p × q), il existe une somme directe de A et B', notée A \oplus B définie par :


  \mathbf{A} \oplus \mathbf{B} =
  \begin{bmatrix}
     a_{11} & \cdots & a_{1n} &      0 & \cdots &      0 \\
     \vdots & \cdots & \vdots & \vdots & \cdots & \vdots \\
    a_{m 1} & \cdots & a_{mn} &      0 & \cdots &      0 \\
          0 & \cdots &      0 & b_{11} & \cdots &  b_{1q} \\
     \vdots & \cdots & \vdots & \vdots & \cdots & \vdots \\
          0 & \cdots &      0 & b_{p1} & \cdots &  b_{pq} 
  \end{bmatrix}.

Par exemple,


  \begin{bmatrix}
    1 & 3 & 2 \\
    2 & 3 & 1
  \end{bmatrix}
\oplus
  \begin{bmatrix}
    1 & 6 \\
    0 & 1
  \end{bmatrix}
=
  \begin{bmatrix}
    1 & 3 & 2 & 0 & 0 \\
    2 & 3 & 1 & 0 & 0 \\
    0 & 0 & 0 & 1 & 6 \\
    0 & 0 & 0 & 0 & 1
  \end{bmatrix}.

Cette opération est généralisable naturellement à tous tableaux de dimensions arbitraires (pourvu que A et B aient le même nombre de dimensions).

Notons que tout élément dans la somme directe de deux espaces vectoriels matriciels peut être représentée comme une somme directe de matrices.

Produit direct[modifier | modifier le code]

Article principal : Produit de Kronecker.

De manière similaire à la somme directe, il existe une opération appelée produit direct portant sur les matrices par blocs.

Application[modifier | modifier le code]

En algèbre linéaire, l'utilisation d'une matrice par bloc correspond à avoir une application linéaire pensée en termes de groupes correspondants à des vecteurs de base. Cela rejoint l'idée d'avoir des décompositions en sommes directes distinctes des ensembles de définitions de départ et d'arrivée. Cela est particulièrement significatif si un bloc est une matrice nulle ; ceci indique qu'un sous-ensemble est linéaire à une sous-somme. Étant donné cette interprétation par des applications linéaires et des sommes directes, il existe un genre spécial de matrice par bloc pour les matrices carrées (où m=n). Dans ce cas, on peut postuler une interprétation de ce type de matrice comme un endomorphisme d'un espace de dimension n V ; la structure par bloc dans lesquels les blocs sont disposés en lignes et colonnes est importante car elle correspond à obtenir une décomposition en somme directe simple (au lieu de deux) sur V. Dans ce cas, par exemple, les blocs diagonaux les plus évidents sont tous carrés. Ce type de structure est nécessaire pour la description de la réduction de Jordan.

Cette technique est utilisée pour alléger les calculs sur les matrices, les développements en colonnes et lignes, et autres applications en informatique, y compris la conception de puce d'intégration à très grande échelle. L'algorithme de Strassen pour des produits matriciels rapides, comme le code de Hamming (7,4) pour la détection d'erreur et la récupération de données dans les transmissions de données.


Articles connexes[modifier | modifier le code]

Déterminant par blocs