研一数学基础复习笔记(一):矩阵为什么是力学计算的语言
1. 为什么面试前要重新看矩阵?
研一阶段学过很多数学工具,刚学的时候可能会觉得它们只是公式和定义。但真正做力学计算、有限元、结构动力学、数值模拟时会发现:矩阵不是抽象符号,而是工程计算的基本语言。
比如一个三元一次线性方程组:
$$ \begin{cases} 2x_1 - x_2 = 1 \\ -x_1 + 2x_2 - x_3 = 2 \\ -x_2 + 2x_3 = 0 \end{cases} $$可以把未知量前面的系数写成矩阵:
$$ \mathbf{A}=\begin{bmatrix} 2 & -1 & 0 \\ -1 & 2 & -1 \\ 0 & -1 & 2 \end{bmatrix} $$于是原来的方程组就可以写成更紧凑的形式:
$$ \mathbf{A}\mathbf{x}=\mathbf{b} $$这就是矩阵在工程问题中的第一层意义:
把多个相互耦合的方程组织成一个整体。
在力学中,这种形式非常常见。例如有限元静力问题中常见的整体平衡方程:
$$ \mathbf{K}\mathbf{u}=\mathbf{F} $$其中:
- $\mathbf{K}$ 是整体刚度矩阵;
- $\mathbf{u}$ 是节点位移向量;
- $\mathbf{F}$ 是外力向量。
所以,矩阵不仅是线性代数里的概念,也是结构计算、动力学分析、有限元方法的基础表达方式。
2. 矩阵的基本定义
一般来说,由 $m \times n$ 个数 $a_{ij}$ 排成 $m$ 行、$n$ 列的数表,称为一个 $m \times n$ 矩阵:
$$ \mathbf{A}=\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} $$其中,$a_{ij}$ 表示矩阵第 $i$ 行、第 $j$ 列的元素。
从工程角度理解,矩阵可以用来描述:
- 方程组中未知量之间的线性关系;
- 不同自由度之间的耦合关系;
- 离散系统中节点、单元、边界条件之间的关系;
- 数据在不同基、不同坐标系下的表示。
也就是说,矩阵的本质是:
用一个结构化的数表描述变量之间的关系。
3. 矩阵运算:重点不是会算,而是知道它表达什么
3.1 矩阵转置
矩阵转置就是把行和列互换:
$$ \mathbf{B}=\mathbf{A}^{\mathrm{T}} $$如果
$$ \mathbf{A}=\begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} $$那么
$$ \mathbf{A}^{\mathrm{T}}=\begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix} $$在力学和数值计算中,转置经常和内积、能量表达式联系在一起。比如:
$$ \mathbf{x}^{\mathrm{T}}\mathbf{A}\mathbf{x} $$这种形式常常出现在势能、二次型、正定性判断中。
3.2 矩阵加减法
两个同型矩阵可以相加或相减:
$$ \mathbf{A} \pm \mathbf{B}=(a_{ij} \pm b_{ij}) $$从工程上看,矩阵加法可以理解为”贡献叠加”。
例如有限元整体刚度矩阵的形成,本质上就是不同单元刚度矩阵对整体刚度矩阵的累加:
$$ \mathbf{K} = \sum_e \mathbf{K}^{(e)} $$其中 $\mathbf{K}^{(e)}$ 表示第 $e$ 个单元的刚度矩阵。
所以矩阵加法对应的不是简单的数学操作,而是工程系统中不同部分贡献的叠加。
3.3 矩阵乘法
设
$$ \mathbf{A}=(a_{ij})_{m \times s}, \quad \mathbf{B}=(b_{ij})_{s \times n} $$则
$$ \mathbf{C}=\mathbf{A}\mathbf{B} $$其中
$$ c_{ij}=\sum_{k=1}^{s} a_{ik}b_{kj} $$矩阵乘法需要满足维度匹配:
前一个矩阵的列数必须等于后一个矩阵的行数。
矩阵乘法一般不满足交换律:
$$ \mathbf{A}\mathbf{B} \ne \mathbf{B}\mathbf{A} $$这一点在面试中很容易被问到。可以这样理解:
矩阵乘法描述的是一种线性变换的复合。先做变换 $\mathbf{B}$,再做变换 $\mathbf{A}$,和先做 $\mathbf{A}$ 再做 $\mathbf{B}$,一般不是同一件事。
比如在坐标变换、旋转变换、状态转移中,操作顺序通常会影响最终结果。
4. 为什么分块矩阵很重要?
当矩阵规模比较大时,直接操作整个矩阵并不方便。于是可以把矩阵划分成若干小块,形成分块矩阵。
例如:
$$ \mathbf{A}=\begin{bmatrix} \mathbf{A}_{11} & \mathbf{A}_{12} \\ \mathbf{A}_{21} & \mathbf{A}_{22} \end{bmatrix} $$分块矩阵的意义不是单纯“把矩阵切开”,而是为了反映系统结构。
在力学和有限元中,分块思想非常常见。例如可以把自由度分成:
- 已知位移自由度;
- 未知位移自由度;
- 内部自由度;
- 边界自由度;
- 主自由度;
- 从自由度。
整体方程
$$ \mathbf{K}\mathbf{u}=\mathbf{F} $$可以按自由度划分写成:
$$ \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} $$这样做的好处是可以更清楚地处理边界条件、约束条件和自由度消元。
所以,分块矩阵体现的是一种工程计算思维:
把复杂整体拆成若干子问题,再通过块之间的耦合关系描述整体。
5. 常见矩阵类型及其力学意义
5.1 行向量与列向量
只有一行的矩阵称为行矩阵,也可以叫行向量:
$$ \begin{bmatrix} a_1 & a_2 & \cdots & a_n \end{bmatrix} $$只有一列的矩阵称为列矩阵,也可以叫列向量:
$$ \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix} $$在力学中,位移、速度、加速度、载荷都经常写成列向量。例如:
$$ \mathbf{u}=\begin{bmatrix} u_1 \\ u_2 \\ \vdots \\ u_n \end{bmatrix} $$其中每一个分量可以表示一个节点自由度上的位移。
5.2 方阵
行数和列数相同的矩阵称为方阵。
在力学问题中,很多重要矩阵都是方阵,例如:
- 刚度矩阵 $\mathbf{K}$;
- 质量矩阵 $\mathbf{M}$;
- 阻尼矩阵 $\mathbf{C}$;
- 柔度矩阵;
- Hamilton 矩阵;
- 辛矩阵。
方阵的重要性在于,它通常描述的是同一组变量之间的映射关系。
例如:
$$ \mathbf{K}\mathbf{u}=\mathbf{F} $$这里 $\mathbf{K}$ 把位移向量 $\mathbf{u}$ 映射成力向量 $\mathbf{F}$。
5.3 对称矩阵
如果一个方阵满足:
$$ \mathbf{A}=\mathbf{A}^{\mathrm{T}} $$则称它为对称矩阵。
对称矩阵的元素满足:
$$ a_{ij}=a_{ji} $$很多力学矩阵都是对称矩阵。比如在线弹性、小变形、保守系统中,刚度矩阵通常是对称的。
这背后反映的是一种互等关系。简单来说,第 $i$ 个自由度对第 $j$ 个自由度的影响,和第 $j$ 个自由度对第 $i$ 个自由度的影响具有某种对称性。
5.4 正定矩阵
若对任意非零向量 $\mathbf{x}$,都有:
$$ \mathbf{x}^{\mathrm{T}}\mathbf{A}\mathbf{x}>0 $$则称 $\mathbf{A}$ 为正定矩阵。
如果矩阵既对称又正定,则称为对称正定矩阵。
对称正定矩阵在力学中非常重要。例如很多情况下:
- 刚度矩阵是对称正定矩阵;
- 质量矩阵是对称正定矩阵;
- 热容矩阵也可能是对称正定矩阵。
从能量角度看,正定性意味着系统的能量是正的。比如弹性系统的应变能可以写成:
$$ U=\frac{1}{2}\mathbf{u}^{\mathrm{T}}\mathbf{K}\mathbf{u} $$如果 $\mathbf{K}$ 是正定的,则对于非零位移 $\mathbf{u}$,应变能 $U$ 大于零。这符合物理直觉:结构发生非零变形时,需要储存正的弹性势能。
5.5 稀疏矩阵
实际工程计算中的矩阵往往非常大,但大多数元素是零。这样的矩阵称为稀疏矩阵。
例如有限元整体刚度矩阵就是典型的稀疏矩阵。
原因是:
一个节点通常只和它附近的单元、节点发生直接关系,不会和所有节点都直接耦合。
因此整体刚度矩阵中,非零元素只集中在局部区域,大量位置都是零。
稀疏矩阵的意义非常重要:
- 可以节省存储空间;
- 可以减少计算量;
- 可以使用专门的稀疏求解器;
- 是大规模有限元计算能够实现的基础。
如果一个百万自由度的问题使用满矩阵存储,计算机几乎无法承受;但如果利用稀疏性,就可以大幅降低存储和求解成本。
6. 面试中可以怎么表达?
如果面试官问:
你怎么理解矩阵在力学计算中的作用?
可以这样回答:
我理解矩阵是力学离散计算中的基本表达语言。连续力学问题经过离散化后,会形成大量代数方程,这些方程可以统一写成矩阵形式。比如有限元静力问题中的 $\mathbf{K}\mathbf{u}=\mathbf{F}$,其中刚度矩阵描述自由度之间的耦合关系,位移向量描述未知自由度,载荷向量描述外部作用。矩阵的对称性、正定性和稀疏性都对应着具体的物理和数值意义,例如对称正定通常和能量正性有关,稀疏性则来自有限元局部连接特征。
如果面试官继续问:
为什么刚度矩阵通常是稀疏的?
可以回答:
因为有限元离散后,一个节点只和相邻单元或相邻节点发生直接耦合,而不是和所有节点都有直接关系。因此整体刚度矩阵中只有局部位置存在非零项,大量元素为零,这就形成了稀疏矩阵结构。
如果面试官问:
对称正定矩阵为什么重要?
可以回答:
从物理上看,对称正定矩阵通常对应稳定系统的正能量形式,例如应变能 $\frac{1}{2}\mathbf{u}^{\mathrm{T}}\mathbf{K}\mathbf{u}$。从数值计算上看,对称正定矩阵也有利于使用 Cholesky 分解、共轭梯度法等高效求解方法。
7. 这一篇的核心总结
这一篇主要复习了矩阵的基本概念和力学意义。
可以总结为三句话:
- 矩阵是描述多变量耦合关系的工具。
- 力学离散问题通常可以写成矩阵方程,例如 $\mathbf{K}\mathbf{u}=\mathbf{F}$。
- 对称性、正定性和稀疏性不是单纯的数学性质,而是对应着能量、稳定性和计算效率。
因此,学习矩阵时不能只停留在公式层面,而要把它和力学中的自由度、刚度、质量、能量和数值求解联系起来。
下一篇准备继续整理:
研一数学基础复习笔记(二):分块矩阵与工程计算思维
这部分会重点讨论矩阵乘法、分块矩阵、自由度划分和有限元装配之间的关系。