线性代数03-矩阵乘法和逆矩阵
线性代数03:矩阵乘法和逆矩阵
上一篇文章我们学习了矩阵消元法,掌握了如何通过行变换求解线性方程组。今天我们来深入讨论矩阵乘法和逆矩阵这两个线性代数中最基础也最重要的操作。
相信大家在大学线性代数课程中都已经学过矩阵乘法的计算方法,但这篇文章会带你从多个角度重新认识矩阵乘法,这对以后理解更深入的线性代数概念非常有帮助。
知识概要
本文会涵盖以下内容:
- 矩阵乘法的四种不同理解视角(标准方法、列组合、行组合、列乘行、分块乘法)
- 逆矩阵的定义和存在性判断
- 高斯-若尔当(Gauss-Jordan)方法求解逆矩阵
矩阵乘法
矩阵乘法最常见求解方式
首先我们从最基础的定义开始。当我们计算两个矩阵的乘积 $C = A \times B$ 时,矩阵 $C$ 中第 $i$ 行第 $j$ 列的元素 $c_{ij}$ 等于什么呢?
答案是: $c_{ij}$ 等于矩阵 $A$ 的第 $i$ 行元素与矩阵 $B$ 的第 $j$ 列对应元素乘积之和。
举个例子,设矩阵 $A$ 是一个 $3 \times 4$ 的矩阵,矩阵 $B$ 是一个 $4 \times 4$ 的矩阵,它们的乘积 $C = AB$ 是一个 $3 \times 4$ 的矩阵。其计算公式为:
推广到一般情况:
需要特别注意的是矩阵相乘的条件:从向量点乘的角度看,A 的列数必须要与 B 的行数相同。也就是说,如果 $A$ 是 $m \times n$,$B$ 必须是 $n \times p$,相乘结果 $C$ 才是 $m \times p$。
列组合与行组合方式
这是我认为理解矩阵乘法最有价值的两个视角,比单纯记住”行乘列”的计算规则更能帮助你理解线性代数的本质。
列组合
上一节我们学习到,矩阵与列向量的乘积,结果是一个列向量,该列向量可视为矩阵各列的线性组合。
这个思想可以直接推广到矩阵乘法。当我们计算 $A \times B$ 时,B 矩阵中的各列其实就是用来组合 A 矩阵的各列向量。
设 $b_0, b_1, b_2, b_3$ 分别是 B 矩阵的列向量,那么:
这个方法的关键在于将右侧矩阵 B 看做列向量的集合,将矩阵乘法问题转化为矩阵与向量的乘法问题。结论是:矩阵 C 的每一列都是矩阵 A 各列的线性组合,组合系数就是 B 对应列中的元素。
换句话说,B 其实就是在告诉我们,要以什么样的线性组合方式把 A 中的列向量组合起来得到 C。
行组合
同理,我们也知道行向量与矩阵的乘法,得到一个行向量。例如:
因此,我们也可以把矩阵 $A$ 看做行向量的组合。设 $a_0^T, a_1^T, a_2^T$ 分别是 $A$ 的行向量,那么:
结论正好对称:矩阵 C 的每一行都是矩阵 B 各行的线性组合,组合系数就是 A 对应行中的元素。
💡 核心观点总结:
- 左乘行变换,右乘列变换
- 右乘(A × 列向量/B的列)→ 对A进行列组合
- 左乘(行向量/A的行 × B)→ 对B进行行组合
列乘以行
常规方法中,计算 $A \times B = C$ 的矩阵乘法时,使用 A 的行向量乘上 B 的列向量得到 C 中各个位置的元素。
现在我们换个角度:用 A 的列向量乘以 B 的行向量,得到一个个矩阵,再将矩阵相加,最终得到 C。
我们通过一个具体例子来说明:
【例】 求解
使用列乘行方法:
计算每一项:
相加得到最终结果:
这种方法有一个很重要的几何理解:注意这里每一次都是用列向量与行向量相乘得到一个矩阵,而每次得到的矩阵都是有特点的。比如上面第一个乘积:
它的每一列都与 $\begin{bmatrix}2\3\4\end{bmatrix}$ 同向,每一行都与 $\begin{bmatrix}1 & 6\end{bmatrix}$ 同向。因此,该矩阵的列空间(矩阵列所有可能的线性组合)和行空间(矩阵行所有可能的线性组合)都是一条直线,它的秩为 1。
这个视角在后面我们讲矩阵的秩和分解的时候会非常有用。
分块乘法
分块乘法可以理解为宏观层次上的矩阵乘法。当我们处理大型矩阵时,如果矩阵具有特殊的分块结构(比如某个分块全是 0),我们可以将矩阵分块,然后把每个分块当作元素来看待,直接按照普通矩阵乘法规则计算。
例如:
其中 $A_i, B_i$ 都是划分后的一块块小矩阵。下图展示了分块的概念:

计算规则和普通矩阵乘法完全一样:
只要 A 和 B 的分块方式相互匹配(A 的列分块方式与 B 的行分块方式相同),就可以用分块乘法。这种方法在大规模矩阵计算和理论推导中非常方便。
逆矩阵
逆矩阵介绍
之前我们已经接触过逆矩阵的定义。对于一个方阵 $A$,如果 $A$ 可逆,就存在 $A^{-1}$,使得:
这里要注意:只有方阵才可能有逆矩阵。如果 $A$ 是非方阵,那么左侧逆和右侧逆的形状一定不相同,不可能同时满足上面的等式。
接下来我们来看一个没有逆矩阵的例子:
这个矩阵的两个列向量互为倍数关系 $\begin{bmatrix}2\6\end{bmatrix} = 2\begin{bmatrix}1\3\end{bmatrix}$,也就是说其中一个向量对它们的线性组合没有贡献,它是线性相关的。那么这个 $A$ 不可能有逆。
这里我们得到一个非常重要的结论:
核心结论:若存在非零向量 $x$,使得 $Ax=0$,那么 $A$ 就不可能有逆矩阵。
为什么呢?我们用反证法很容易证明:
假设 $A$ 有逆,且 $x$ 是非零向量满足 $Ax=0$。在等式两边同时乘上 $A^{-1}$:
我们得到 $x = 0$,这与 $x$ 是非零向量矛盾。因此原命题成立。
回到我们的例子,矩阵 $\begin{bmatrix}
1 & 2\
3 & 6
\end{bmatrix}$ 由于两个列向量线性相关,一定存在非零 $x$ 使得 $Ax = 0$,比如 $x = \begin{bmatrix}2\-1\end{bmatrix}$,因此该矩阵不可逆。
🔍 换句话说:可逆矩阵 ⇨ 所有列线性无关 ⇨ 不存在非零x使得Ax=0。这个等价关系非常重要,请记住它。
逆矩阵求解
其实求逆矩阵本质上就是解方程组的过程,我们通过一个例子来说明。
【例】 求解 $\begin{bmatrix}
1 & 3\
2 & 7
\end{bmatrix}$ 的逆矩阵。
设逆矩阵为 $\begin{bmatrix}
a & b\
c & d
\end{bmatrix}$,根据定义:
从列向量的角度看,这实际上就是两个方程组:
分别解这两个方程组就能得到逆矩阵的元素。但是这种方法需要解两次方程组,对于高阶矩阵来说计算量太大了。所以我们介绍一种更优雅的方法:高斯-若尔当(Gauss-Jordan)方法。
高斯-若尔当方法
还是上面的例子,我们刚才说了,高斯-若尔当方法可以同时处理两个方程组。它的技巧就是使用增广矩阵把两个方程联系起来。
我们构造这样的增广矩阵:
增广矩阵的左边是原矩阵 $A$,右边是单位矩阵 $I$。接下来我们进行行变换,目标是把左侧的 $A$ 消为单位矩阵 $I$。此时右侧的矩阵就是我们要求的逆矩阵 $A^{-1}$。
我们来一步步消元:
第一步:消去第二行第一列的元素 $2$,第二行减去 $2 \times$ 第一行:
第二步:消去第一行第二列的元素 $3$,第一行减去 $3 \times$ 第二行:
现在左边已经变成单位矩阵了,所以右边就是逆矩阵:
我们可以验证一下:$AA^{-1} = \begin{bmatrix}1 & 3\2 & 7\end{bmatrix}\begin{bmatrix}7 & -3\-2 & 1\end{bmatrix} = \begin{bmatrix}1 & 0\0 & 1\end{bmatrix} = I$,正确。
接下来我们从矩阵乘法的角度论证一下为什么这个方法是对的。
上面这个过程,我们对 $A$ 进行一系列行变换使它变成单位矩阵 $I$,行变换等价于左乘一系列消元矩阵,设总的消元矩阵为 $E$,那么:
根据逆矩阵的定义,这个等式说明 $E$ 本身就是 $A^{-1}$!
那增广矩阵 $[A \mid I]$ 右乘 $E$ 会发生什么:
看到了吗?$E$ 作用在 $A$ 上得到 $I$,作用在右侧原来的 $I$ 上就得到 $EA^{-1} = A^{-1}A^{-1} = A^{-1}$。所以虚线右侧最终得到的结果就是 $A^{-1}$。
这就是高斯-若尔当方法的原理,非常简洁优美。
下面我用流程图总结一下这个过程:
flowchart LR
A[要求解A⁻¹] --> B[构造增广矩阵<br>[A | I]]
B --> C[通过行变换<br>将左侧A化为单位矩阵I]
C --> D{左侧能化为<br>单位矩阵吗?}
D -- 是 --> E[右侧矩阵就是A⁻¹]
D -- 否 --> F[A不可逆<br>不存在逆矩阵]
笔者感悟
作为一个IC设计工程师,我在学习线性代数的时候经常会思考这些数学知识在实际工程中的应用。矩阵乘法和逆矩阵在IC设计中真的无处不在:
- 数字信号处理:FIR滤波器的卷积运算本质上就是矩阵向量乘法,在DSP模块设计中经常需要优化矩阵乘法的运算速度。
- 控制系统分析:状态空间法中,状态转移矩阵的逆矩阵用于系统的可控制性和可观测性判断。
- 芯片布线:在全局布线中,多网表的布线问题可以转化为线性方程组求解,而求解过程中大量使用矩阵求逆。
- 机器学习加速器:现在AI芯片的核心计算就是大量的矩阵乘法,硬件架构设计需要深入理解矩阵乘法的并行性特点。
有意思的是,硬件设计中我们通常不会直接对大矩阵求逆,因为计算量太大。很多时候我们会利用矩阵的特殊结构(比如稀疏矩阵、Toeplitz矩阵)来找更快的近似解法,这就是工程和纯数学的区别——数学追求精确解,工程追求在资源限制下足够好的解。
MIT 的Gilbert Strang教授这门课的好处就是,它不强调繁琐的证明,而是引导你从不同角度去理解矩阵运算的几何意义。我建议学习线性代数的时候,不要满足于只会计算”行乘列”,多想想列组合、行组合这些视角,这会让你在遇到复杂问题时更容易抓住本质。
总结
本文要点回顾:
| 概念 | 核心结论 | |
|---|---|---|
| 矩阵乘法(标准) | $c{ij} = \sum_k a{ik}b_{kj}$,A列数必须等于B行数 | |
| 矩阵乘法(列观点) | C的每一列是A各列的线性组合,系数在B的对应列 | |
| 矩阵乘法(行观点) | C的每一行是B各行的线性组合,系数在A的对应行 | |
| 列×行 | $AB = \sum (\text{col}_i \times \text{row}_i)$,每个外积是秩1矩阵 | |
| 分块乘法 | 分块匹配后,按普通矩阵乘法规则计算 | |
| 逆矩阵存在性 | 方阵A可逆 ⇨ 不存在非零x使Ax=0 ⇨ 所有列线性无关 | |
| 高斯-若尔当方法 | 构造增广矩阵[A | I],行变换将A化为I,右侧即为A⁻¹ |
最后放一张学习笔记留作纪念:




