跳至主要內容

Cyletix大约 1 分钟

分块矩阵乘法

分块矩阵乘法是一种矩阵计算的等价表示形式,其本质是基于矩阵的分块表示后,仍遵循矩阵乘法规则(即考虑到交叉项的贡献)。假设矩阵 AABB 分块为:

A=[A11A12A21A22],B=[B11B12B21B22], A = \begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix}, \quad B = \begin{bmatrix} B_{11} & B_{12} \\ B_{21} & B_{22} \end{bmatrix},

其中每个 AijA_{ij}BijB_{ij}4×44 \times 4 的子矩阵。

按照矩阵乘法的定义,矩阵 C=A×BC = A \times B 的分块表示为:

C=[C11C12C21C22], C = \begin{bmatrix} C_{11} & C_{12} \\ C_{21} & C_{22} \end{bmatrix},

其中:

C11=A11B11+A12B21,C12=A11B12+A12B22, C_{11} = A_{11} B_{11} + A_{12} B_{21}, \quad C_{12} = A_{11} B_{12} + A_{12} B_{22},

C21=A21B11+A22B21,C22=A21B12+A22B22. C_{21} = A_{21} B_{11} + A_{22} B_{21}, \quad C_{22} = A_{21} B_{12} + A_{22} B_{22}.

这与直接计算矩阵 A×BA \times B 的结果完全一致。

分块矩阵乘法并没有改变矩阵的本质,只是通过分块的方式将大矩阵的乘法分解为若干小矩阵的运算。这些分块的加权求和方式,正是大矩阵逐元素计算的核心操作,分块的计算只是运算顺序上的调整,不影响结果。

示例

AABB8×88 \times 8 矩阵,可以分块为:

A=[A11A12A21A22],B=[B11B12B21B22]. A = \begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix}, \quad B = \begin{bmatrix} B_{11} & B_{12} \\ B_{21} & B_{22} \end{bmatrix}.

无论是直接计算 A×BA \times B,还是用分块形式按照规则计算,每个元素的结果会完全一致。