La multiplicación de matrices por bloques es una técnica que te permite multiplicar dos matrices que han sido particionadas en submatrices, o bloques, como si estos bloques fueran los elementos individuales de una matriz. El proceso sigue la misma lógica que la multiplicación de matrices estándar.
Consideremos dos matrices, \(A\) y \(B\). Para poder multiplicarlas por bloques, las particiones de las columnas de \(A\) deben coincidir con las particiones de las filas de \(B\). Si \(A\) es una matriz de \(m \times n\) y \(B\) es una matriz de \(n \times p\), la partición de \(A\) debe ser de la forma \(A = [A_{ij}]\), donde cada \(A_{ij}\) es un bloque, y la partición de \(B\) debe ser de la forma \(B = [B_{ij}]\).
Si la matriz \(A\) tiene una partición de tamaño \(r \times s\) (es decir, \(r\) particiones horizontales y \(s\) particiones verticales) y la matriz \(B\) tiene una partición de tamaño \(s \times t\), la matriz producto \(C = AB\) tendrá una partición de tamaño \(r \times t\), donde cada bloque \(C_{ij}\) se calcula como la suma de los productos de los bloques correspondientes.
Formalmente, si
\[
A =
\begin{bmatrix}
A_{11} & A_{12} & \dots & A_{1s} \\
A_{21} & A_{22} & \dots & A_{2s} \\
\vdots & \vdots & \ddots & \vdots \\
A_{r1} & A_{r2} & \dots & A_{rs}
\end{bmatrix}
\quad
\text{y}
\quad
B =
\begin{bmatrix}
B_{11} & B_{12} & \dots & B_{1t} \\
B_{21} & B_{22} & \dots & B_{2t} \\
\vdots & \vdots & \ddots & \vdots \\
B_{s1} & B_{s2} & \dots & B_{st}
\end{bmatrix}
\]
entonces el bloque \(C_{ij}\) del producto \(C = AB\) se calcula como:
\[
C_{ij} = \sum_{k=1}^{s} A_{ik} B_{kj}
\]
Cada multiplicación y suma dentro de la fórmula es una operación de matrices.
Veámoslo en un ejemplo práctico
Consideremos dos matrices \(A\) y \(B\).
\[
A =
\begin{bmatrix}
{1} & {2} & {3} & {4} \\
{5} & {6} & {7} & {8} \\
0 & 1 & -1 & 2 \\
-1 & 1 & -3 & 6
\end{bmatrix}
\quad
\text{y}
\quad
B =
\begin{bmatrix}
{1} & {0} & 1 & 0 \\
{0} & {1} & 0 & 1 \\
3 & 4 & -1 & 0 \\
7 & 8 & 2 & 1
\end{bmatrix}
\]
Vamos a particionarlas en bloques de \(2 \times 2\).
\[
A =
\begin{bmatrix}
A_{11} & A_{12} \\
A_{21} & A_{22}
\end{bmatrix}
\quad
\text{y}
\quad
B =
\begin{bmatrix}
B_{11} & B_{12} \\
B_{21} & B_{22}
\end{bmatrix}
\]
Donde:
\[
A_{11} =
\begin{bmatrix}
1 & 2 \\
5 & 6
\end{bmatrix}
, \quad
A_{12} =
\begin{bmatrix}
3 & 4 \\
7 & 8
\end{bmatrix}
, \quad
A_{21} =
\begin{bmatrix}
0 & 1 \\
-1 & 1
\end{bmatrix}
, \quad
A_{22} =
\begin{bmatrix}
-1 & 2 \\
-3 & 6
\end{bmatrix}
\]
\[
B_{11} =
\begin{bmatrix}
1 & 0 \\
0 & 1
\end{bmatrix}
, \quad
B_{12} =
\begin{bmatrix}
1 & 0 \\
0 & 1
\end{bmatrix}
, \quad
B_{21} =
\begin{bmatrix}
3 & 4 \\
7 & 8
\end{bmatrix}
, \quad
B_{22} =
\begin{bmatrix}
-1 & 0 \\
2 & 1
\end{bmatrix}
\]
El producto \(C = AB\) será una matriz particionada de la misma manera:
\[
C =
\begin{bmatrix}
C_{11} & C_{12} \\
C_{21} & C_{22}
\end{bmatrix}
\]
Donde cada bloque se calcula de la siguiente manera:
\[\begin{align*}C_{11} &= A_{11}B_{11} + A_{12}B_{21}\\
C_{12} &= A_{11}B_{12} + A_{12}B_{22}\\
C_{21} &= A_{21}B_{11} + A_{22}B_{21}\\
C_{22} &= A_{21}B_{12} + A_{22}B_{22}
\end{align*}
\]
Calculemos el primer bloque, \(C_{11}\):
\[\begin{align*}
C_{11} &=
\begin{bmatrix}
1 & 2 \\
5 & 6
\end{bmatrix}
\begin{bmatrix}
1 & 0 \\
0 & 1
\end{bmatrix}
+
\begin{bmatrix}
3 & 4 \\
7 & 8
\end{bmatrix}
\begin{bmatrix}
3 & 4 \\
7 & 8
\end{bmatrix}
\\
&=
\begin{bmatrix}
1 & 2 \\
5 & 6
\end{bmatrix}
+
\begin{bmatrix}
3(3)+4(7) & 3(4)+4(8) \\
7(3)+8(7) & 7(4)+8(8)
\end{bmatrix}\\
&=
\begin{bmatrix}
1 & 2 \\
5 & 6
\end{bmatrix}
+
\begin{bmatrix}
9+28 & 12+32 \\
21+56 & 28+64
\end{bmatrix}
\\
&=
\begin{bmatrix}
1 & 2 \\
5 & 6
\end{bmatrix}
+
\begin{bmatrix}
37 & 44 \\
77 & 92
\end{bmatrix} \\
&=
\begin{bmatrix}
1+37 & 2+44 \\
5+77 & 6+92
\end{bmatrix}\\
&=
\begin{bmatrix}
38 & 46 \\
82 & 98
\end{bmatrix}\end{align*}
\]
Una vez que calcules los cuatro bloques, simplemente los unes para obtener la matriz final \(C\).
Ejercicio: Sean \[
A = \begin{bmatrix}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8 \\
9 & 10 & 11 & 12 \\
13 & 14 & 15 & 16
\end{bmatrix}, \quad
B = \begin{bmatrix}
1 & 0 & 0 & 1 \\
0 & 1 & 1 & 0 \\
1 & 1 & 0 & 0 \\
0 & 0 & 1 & 1
\end{bmatrix}
\] Divide las siguientes matrices en bloques de 2×2, para calcular \(A.B\)
En el ejemplo anterior hemos considerado matrices cuadradas que resulta más fácil. Pero, la multiplicación de matrices por bloques no se limita a matrices cuadradas. Funciona exactamente igual para matrices no cuadradas, siempre y cuando sus dimensiones sean compatibles para la multiplicación estándar.
El principio es el mismo: las particiones de las matrices deben ser compatibles. Si tienes una matriz \(A\) de tamaño \(m \times n\) y una matriz \(B\) de tamaño \(n \times p\), el producto \(C = AB\) será una matriz de tamaño \(m \times p\). Para que la multiplicación por bloques funcione, la forma en que divides las columnas de \(A\) debe coincidir con la forma en que divides las filas de \(B\).
Vamos a considerar una matriz \(A\) de \(m \times n\) y una matriz \(B\) de \(n \times p\).
Si particionamos \(A\) en \(r\) filas de bloques y \(s\) columnas de bloques, y particionamos \(B\) en \(s\) filas de bloques y \(t\) columnas de bloques, el producto \(C = AB\) será una matriz de \(r \times t\) bloques.
\[
A =
\begin{bmatrix}
A_{11} & \dots & A_{1s} \\
\vdots & \ddots & \vdots \\
A_{r1} & \dots & A_{rs}
\end{bmatrix}
\quad
\text{y}
\quad
B =
\begin{bmatrix}
B_{11} & \dots & B_{1t} \\
\vdots & \ddots & \vdots \\
B_{s1} & \dots & B_{st}
\end{bmatrix}
\]
El bloque \(C_{ij}\) del producto se calcula como la suma de los productos de los bloques correspondientes, exactamente como en el caso de las matrices cuadradas:
\[
C_{ij} = \sum_{k=1}^{s} A_{ik} B_{kj}
\]
La única condición es que las dimensiones de los bloques deben ser compatibles para la multiplicación. Esto significa que el número de columnas de cada bloque \(A_{ik}\) debe ser igual al número de filas del bloque \(B_{kj}\) con el que se multiplica.
Ejercicio: Sean la matriz \(A\) de \(2 \times 3\) y la matriz \(B\) de \(3 \times 2\).
\[
A = \begin{bmatrix}
1 & 2 & 3 \\
4 & 5 & 6
\end{bmatrix}
\quad
\text{y}
\quad
B = \begin{bmatrix}
7 & 8 \\
9 & 10 \\
11 & 12
\end{bmatrix}
\]
Calcular \(A.B\)
Ejercicio: Dadas las matrices \(A=\begin{bmatrix}1 & 5 & -3 & 1 & 4 & 3 \\
2 & 0 & -4 & 3 & 0 & -4 \\
3 & -1 & -5 & 5 & -1 & 5 \\
4 & -2 & 0 & 2 & -2 & 0\end{bmatrix}\) y \(B=\begin{bmatrix}1 & 0 & 1 & 0 \\
0 & 1 & 0 & 1 \\
1 & 0 & 1 & 0 \\
0 & 1 & 0 & 1 \\
1 & 0 & 1 & 0 \\
0 & 1 & 0 & 1\end{bmatrix}\), calcular \(A.B\) mediante una multiplicación por bloques.
Ejercicio: Sean \[
A =\begin{bmatrix}\mathop{-}3 & 2 & 0 & 1\\
1 & 3 & 1 & \mathop{-}1\\
4 & 1 & 2 & \mathop{-}4\\
1 & 2 & 0 & 3\\
2 & 0 & 3 & 0 \end{bmatrix}, \quad
B =\begin{bmatrix}\mathop{-}3 & 1 & 0\\
\mathop{-}4 & \mathop{-}3 & \mathop{-}3\\
\mathop{-}1 & 0 & 0\\
3 & 0 & 1\end{bmatrix}\] Divide las siguientes matrices en bloques para calcular \(A.B\)
Ejercicio: Sea \[\begin{bmatrix}2 & 0 & 2 & 0 & 1\\
0 & 1 & \mathop{-}1 & 0 & 1\\
\mathop{-}2 & 0 & 2 & 2 & \mathop{-}1\\
1 & \mathop{-}1 & 2 & 0 & 2\\
\mathop{-}1 & \mathop{-}1 & \mathop{-}1 & 0 & 0\\
1 & \mathop{-}1 & 0 & \mathop{-}1 & 0\\
0 & 1 & 0 & 0 & 0\end{bmatrix}\] Utilizando la multiplicación por bloques, calcular \(\mathbf{tr}(A.A^t)\).Se define por traza de una matriz cuadrada \(A=[a_{ij}]\) como \(\mathbf{tr}(A)=\sum a_{ii}\).
Bibliografía
- Capítulo 2 de Álgebra lineal y sus aplicaciones. David C. Lay. Pearson. 2016.
| Ejercicio: Sea \(A=\begin{bmatrix}1 & 2 & 3\\ 4 & 5 & 6\end{bmatrix}\). ¿Cuánto es \(tr(A.A^t)\) |