研一数学基础复习笔记(二):分块矩阵与工程计算思维
1. 为什么面试前要看这个问题?
上一篇主要整理了矩阵为什么是力学计算的基本语言。简单来说,连续力学问题经过离散化之后,往往会形成矩阵方程,例如有限元中的:
$$ \mathbf{K}\mathbf{u}=\mathbf{F} $$但是在真正的工程计算里,我们面对的矩阵通常不是几行几列的小矩阵,而是几千、几万甚至上百万自由度的大矩阵。
这时如果还把矩阵只看成一个完整的“大数表”,就很难理解后续的计算过程。
所以需要引入一种更工程化的理解方式:分块矩阵。
分块矩阵的核心思想是:
不把复杂系统看成一个整体硬算,而是按照自由度、物理区域、边界条件或子结构,把整体问题拆成若干相互耦合的子问题。
这和工程分析的思维非常一致。比如有限元中经常需要区分:
- 已知位移自由度和未知位移自由度;
- 内部自由度和边界自由度;
- 主自由度和从自由度;
- 不同子结构之间的耦合关系;
- 不同物理场之间的耦合关系。
这些问题都可以用分块矩阵来表达。
因此,这一篇的重点不是单纯复习矩阵乘法规则,而是理解:
矩阵乘法和分块矩阵为什么是工程计算中组织复杂系统的重要工具。
2. 核心概念
2.1 矩阵乘法描述的是“耦合关系”
设有两个矩阵:
$$ \mathbf{A}=(a_{ij})_{m \times s} $$ $$ \mathbf{B}=(b_{ij})_{s \times n} $$如果 $\mathbf{A}$ 的列数等于 $\mathbf{B}$ 的行数,则可以定义矩阵乘法:
$$ \mathbf{C}=\mathbf{A}\mathbf{B} $$其中:
$$ c_{ij}=\sum_{k=1}^{s}a_{ik}b_{kj} $$从计算公式看,矩阵乘法是在做“行乘列”的累加。
但从工程角度看,矩阵乘法更重要的意义是:
它描述了一个变量经过线性关系映射到另一个变量的过程。
例如:
$$ \mathbf{K}\mathbf{u}=\mathbf{F} $$这里的 $\mathbf{K}$ 就是把位移向量 $\mathbf{u}$ 映射为力向量 $\mathbf{F}$ 的线性算子。
如果写成分量形式:
$$ F_i=\sum_{j=1}^{n}K_{ij}u_j $$可以看到,第 $i$ 个力分量不仅可能和第 $i$ 个位移有关,也可能和其他位移分量有关。
这说明矩阵乘法天然适合描述多自由度系统中的耦合关系。
2.2 矩阵乘法一般不满足交换律
矩阵乘法一般不满足:
$$ \mathbf{A}\mathbf{B}=\mathbf{B}\mathbf{A} $$也就是说,大多数情况下:
$$ \mathbf{A}\mathbf{B}\ne \mathbf{B}\mathbf{A} $$这个性质在面试中很容易被问到。
可以这样理解:
矩阵乘法往往表示线性变换的复合,而变换的先后顺序通常会影响结果。
比如先旋转再拉伸,和先拉伸再旋转,最终结果一般不同。
在数值计算中,这一点也很重要。例如:
$$ \mathbf{P}^{-1}\mathbf{A}\mathbf{P} $$表示对矩阵 $\mathbf{A}$ 进行相似变换。这里左乘和右乘的矩阵不能随意交换,否则含义就变了。
所以矩阵乘法不满足交换律不是一个“麻烦的性质”,而是在提醒我们:
矩阵操作是有方向、有顺序、有物理含义的。
2.3 矩阵转置改变的是行列关系
矩阵转置记为:
$$ \mathbf{A}^{\mathrm{T}} $$它的作用是把矩阵的行和列互换。
矩阵乘法和转置之间有一个重要性质:
$$ (\mathbf{A}\mathbf{B})^{\mathrm{T}}=\mathbf{B}^{\mathrm{T}}\mathbf{A}^{\mathrm{T}} $$注意,转置之后乘法顺序会反过来。
这一点在推导能量表达式、弱形式、变分公式时经常出现。例如结构力学中常见的二次型:
$$ \mathbf{u}^{\mathrm{T}}\mathbf{K}\mathbf{u} $$如果 $\mathbf{K}$ 是对称矩阵,即:
$$ \mathbf{K}=\mathbf{K}^{\mathrm{T}} $$那么很多推导会变得更简洁。
这也是为什么对称矩阵在力学和数值计算中如此重要。
3. 关键公式
3.1 矩阵乘法公式
矩阵乘法的基本公式是:
$$ \mathbf{C}=\mathbf{A}\mathbf{B} $$其中:
$$ c_{ij}=\sum_{k=1}^{s}a_{ik}b_{kj} $$维度关系为:
$$ (m \times s)(s \times n) = m \times n $$也就是说,两个矩阵能否相乘,首先要看中间维度是否一致。
3.2 矩阵乘法的常见性质
矩阵乘法满足结合律:
$$ (\mathbf{A}\mathbf{B})\mathbf{C}=\mathbf{A}(\mathbf{B}\mathbf{C}) $$满足分配律:
$$ \mathbf{A}(\mathbf{B}+\mathbf{C})=\mathbf{A}\mathbf{B}+\mathbf{A}\mathbf{C} $$ $$ (\mathbf{A}+\mathbf{B})\mathbf{C}=\mathbf{A}\mathbf{C}+\mathbf{B}\mathbf{C} $$转置满足:
$$ (\mathbf{A}\mathbf{B})^{\mathrm{T}}=\mathbf{B}^{\mathrm{T}}\mathbf{A}^{\mathrm{T}} $$单位矩阵满足:
$$ \mathbf{I}\mathbf{A}=\mathbf{A}\mathbf{I}=\mathbf{A} $$但需要特别注意:
$$ \mathbf{A}\mathbf{B}\ne \mathbf{B}\mathbf{A} $$这说明矩阵乘法虽然有很多和普通数乘法相似的地方,但不能完全用标量乘法的直觉来理解。
3.3 分块矩阵的基本形式
一个矩阵可以按行和列划分成若干子块。例如:
$$ \mathbf{A}= \begin{bmatrix} \mathbf{A}_{11} & \mathbf{A}_{12} \\ \mathbf{A}_{21} & \mathbf{A}_{22} \end{bmatrix} $$这里的每个 $\mathbf{A}_{ij}$ 本身也是一个矩阵。
如果另一个矩阵也按相同规则分块:
$$ \mathbf{B}=\begin{bmatrix} \mathbf{B}_{11} & \mathbf{B}_{12} \\ \mathbf{B}_{21} & \mathbf{B}_{22} \end{bmatrix} $$那么在维度匹配的情况下,有:
$$ \mathbf{A}+\mathbf{B}= \begin{bmatrix} \mathbf{A}_{11}+\mathbf{B}_{11} & \mathbf{A}_{12}+\mathbf{B}_{12} \\ \mathbf{A}_{21}+\mathbf{B}_{21} & \mathbf{A}_{22}+\mathbf{B}_{22} \end{bmatrix} $$分块矩阵乘法则类似普通矩阵乘法:
$$ \mathbf{C}=\mathbf{A}\mathbf{B}=\begin{bmatrix} \mathbf{C}_{11} & \mathbf{C}_{12} \\ \mathbf{C}_{21} & \mathbf{C}_{22} \end{bmatrix} $$其中:
$$ \mathbf{C}_{11}=\mathbf{A}_{11}\mathbf{B}_{11} + \mathbf{A}_{12}\mathbf{B}_{21} $$ $$ \mathbf{C}_{12}=\mathbf{A}_{11}\mathbf{B}_{12} + \mathbf{A}_{12}\mathbf{B}_{22} $$ $$ \mathbf{C}_{21}=\mathbf{A}_{21}\mathbf{B}_{11} + \mathbf{A}_{22}\mathbf{B}_{21} $$ $$ \mathbf{C}_{22}=\mathbf{A}_{21}\mathbf{B}_{12} + \mathbf{A}_{22}\mathbf{B}_{22} $$可以看出,分块矩阵乘法本质上还是矩阵乘法,只是把“数”换成了“小矩阵”。
4. 和力学/数值计算的联系
4.1 分块矩阵可以表达自由度划分
有限元计算中,整体方程常写成:
$$ \mathbf{K}\mathbf{u}=\mathbf{F} $$如果将自由度分为两组,例如:
- $\mathbf{u}_1$:未知自由度;
- $\mathbf{u}_2$:已知或约束自由度;
则可以写成分块形式:
$$ \begin{bmatrix} \mathbf{K}_{11} & \mathbf{K}_{12} \\ \mathbf{K}_{21} & \mathbf{K}_{22} \end{bmatrix} \begin{bmatrix} \mathbf{u}_1 \\ \mathbf{u}_2 \end{bmatrix}=\begin{bmatrix} \mathbf{F}_1 \\ \mathbf{F}_2 \end{bmatrix} $$展开后得到:
$$ \mathbf{K}_{11}\mathbf{u}_1+\mathbf{K}_{12}\mathbf{u}_2=\mathbf{F}_1 $$ $$ \mathbf{K}_{21}\mathbf{u}_1+\mathbf{K}_{22}\mathbf{u}_2=\mathbf{F}_2 $$如果 $\mathbf{u}_2$ 是已知边界位移,那么第一行可以用来求解未知位移 $\mathbf{u}_1$。
这说明分块矩阵可以把边界条件自然地纳入方程处理。
4.2 分块矩阵可以表达子结构耦合
在大型结构分析中,一个整体结构可以拆成多个子结构。
例如:
- 桥梁可以拆成桥墩、桥面、支座;
- 飞行器结构可以拆成机翼、机身、连接部位;
- 建筑结构可以拆成不同楼层或不同构件组。
每个子结构都有自己的刚度矩阵,但它们之间还存在连接关系。
这时整体刚度矩阵可以理解成:
$$ \mathbf{K}=\begin{bmatrix} \mathbf{K}_{aa} & \mathbf{K}_{ab} \\ \mathbf{K}_{ba} & \mathbf{K}_{bb} \end{bmatrix} $$其中:
- $\mathbf{K}_{aa}$ 表示子结构 $a$ 内部自由度之间的关系;
- $\mathbf{K}_{bb}$ 表示子结构 $b$ 内部自由度之间的关系;
- $\mathbf{K}{ab}$ 和 $\mathbf{K}{ba}$ 表示两个子结构之间的耦合关系。
所以分块矩阵不仅是数学记号,也是一种结构化建模方式。
4.3 分块矩阵可以用于静力凝聚
在有限元和结构动力学中,有时会把自由度分成主自由度和从自由度。
设:
$$ \mathbf{u}= \begin{bmatrix} \mathbf{u}_m \\ \mathbf{u}_s \end{bmatrix} $$其中:
- $\mathbf{u}_m$ 是主自由度;
- $\mathbf{u}_s$ 是从自由度。
整体方程写成:
$$ \begin{bmatrix} \mathbf{K}_{mm} & \mathbf{K}_{ms} \\ \mathbf{K}_{sm} & \mathbf{K}_{ss} \end{bmatrix} \begin{bmatrix} \mathbf{u}_m \\ \mathbf{u}_s \end{bmatrix} = \begin{bmatrix} \mathbf{F}_m \\ \mathbf{F}_s \end{bmatrix} $$如果第二行可以解出 $\mathbf{u}_s$,就可以把从自由度消去,得到只关于主自由度的等效方程。
这种思想叫静力凝聚,也叫自由度缩减。
它的核心就是分块矩阵和矩阵消元。
这对大规模计算非常重要,因为它可以减少未知量数量,提高计算效率。
4.4 分块矩阵可以帮助理解多场耦合问题
在多物理场问题中,不同变量之间也常常形成分块结构。
例如热-结构耦合问题可能有:
$$ \begin{bmatrix} \mathbf{K}_{uu} & \mathbf{K}_{uT} \\ \mathbf{K}_{Tu} & \mathbf{K}_{TT} \end{bmatrix} \begin{bmatrix} \mathbf{u} \\ \mathbf{T} \end{bmatrix}=\begin{bmatrix} \mathbf{F}_u \\ \mathbf{F}_T \end{bmatrix} $$其中:
- $\mathbf{u}$ 表示位移变量;
- $\mathbf{T}$ 表示温度变量;
- $\mathbf{K}_{uu}$ 表示结构刚度部分;
- $\mathbf{K}_{TT}$ 表示热传导部分;
- $\mathbf{K}{uT}$ 和 $\mathbf{K}{Tu}$ 表示热场和位移场之间的耦合。
这样一看,分块矩阵就是多物理场耦合问题的天然表达方式。
5. 面试中可以怎么回答?
如果面试官问:
你怎么理解分块矩阵?
可以这样回答:
我理解分块矩阵不是简单地把矩阵切成几块,而是一种组织复杂系统的方法。数学上,它把大矩阵拆成若干子矩阵,并且可以按照块来进行加法、乘法和转置。力学上,分块矩阵可以对应不同自由度、不同子结构、不同边界条件或者不同物理场之间的耦合关系。在数值计算中,分块矩阵有助于处理边界条件、自由度消元、静力凝聚和多场耦合问题。
如果面试官问:
为什么矩阵乘法一般不满足交换律?
可以这样回答:
因为矩阵乘法通常表示线性变换的复合,而线性变换的顺序会影响结果。先做一个变换再做另一个变换,和反过来做,通常不是同一个过程。所以一般有 $\mathbf{A}\mathbf{B}\ne\mathbf{B}\mathbf{A}$。在工程计算中,这也提醒我们矩阵操作的先后顺序具有实际意义,不能随意交换。
如果面试官问:
分块矩阵在有限元中有什么用?
可以这样回答:
在有限元中,分块矩阵可以用来表达自由度划分和子结构耦合。例如整体方程 $\mathbf{K}\mathbf{u}=\mathbf{F}$ 可以按已知自由度和未知自由度进行分块,从而方便施加边界条件。也可以按主自由度和从自由度分块,进行静力凝聚,减少系统规模。因此分块矩阵是理解有限元装配、约束处理和自由度缩减的重要工具。
如果面试官问:
分块矩阵和工程思维有什么关系?
可以这样回答:
工程问题通常规模大、耦合多,不能只从整体上硬算。分块矩阵提供了一种分而治之的思路,把整体系统拆成若干子系统,同时保留子系统之间的耦合关系。这和工程分析中按构件、按区域、按自由度、按物理场建模的思路是一致的。
6. 这一篇的核心总结
这一篇主要复习了矩阵乘法和分块矩阵。
可以总结为三句话:
- 矩阵乘法描述的是变量之间的线性映射和耦合关系。
- 分块矩阵把复杂系统拆成若干子系统,并保留块之间的耦合。
- 在有限元和数值计算中,分块矩阵可以用于边界条件处理、自由度划分、静力凝聚和多场耦合建模。
所以,分块矩阵不仅是线性代数中的一种形式化技巧,更是一种非常重要的工程计算思维。
它体现的是:
面对复杂系统时,先拆分,再建立耦合关系,最后整体求解。
7. 下一篇预告
下一篇准备整理:
研一数学基础复习笔记(三):线性空间、基与正交化
下一篇会从线性空间、线性相关、基、坐标和 Gram-Schmidt 正交化讲起,重点理解为什么“基”和“正交化”是模态分析、POD 降阶和振型展开的数学基础。