线性代数矩阵运算全解析:加法、数乘、乘法与特殊矩阵

发布时间:2026/10/15 1:20:01
线性代数矩阵运算全解析:加法、数乘、乘法与特殊矩阵
1. 为什么矩阵运算值得单独开一章来讲线性代数里向量是“点”矩阵是“变换”。把矩阵的加法、数量乘法、矩阵乘法这三样东西吃透后面无论是解线性方程组、求特征值、做二次型还是跳到机器学习里的神经网络前向传播本质上都是在反复调用这几条规则。很多同学学完第四章之后觉得“好像会了”一到做题就卡壳问题往往不在计算能力而在于没有真正理解矩阵乘法为什么这样定义、特殊矩阵到底特殊在哪里。我当年带过几届学生的习题课也帮不少跨考的朋友补过线性代数。一个很普遍的观察是矩阵加法几乎没人出错数量乘法也问题不大但矩阵乘法一旦涉及维度不匹配、乘法顺序、单位矩阵的位置错误率立刻飙升。更麻烦的是很多教材把“特殊矩阵”放在章节末尾一笔带过导致学生对对角矩阵、数量矩阵、单位矩阵、对称矩阵、反对称矩阵这些概念只有模糊印象后面遇到矩阵分解、相似对角化时完全接不上。这篇文章面向三类人正在学高等代数第四章的在校生、准备考研需要重新梳理线性代数框架的备考者、以及工作中需要用到矩阵运算但基础不牢的开发者。我会把这一章的核心内容拆成可操作的模块每个定义都配上“为什么这样定义”的解释每个运算都给出维度检查的方法特殊矩阵部分会整理成对照表最后附上我实际教学中总结的常见错误和排查思路。你不需要有很强的数学背景只要能看懂基本的求和符号就能跟着走完。2. 矩阵加法与数量乘法看似简单但有两个坑2.1 矩阵加法的前提条件与逐元素规则矩阵加法定义非常直接两个矩阵同型行数和列数分别相等时对应位置的元素相加。设 (A(a_{ij}){m\times n})(B(b{ij}){m\times n})则 (AB(a{ij}b_{ij})_{m\times n})。这里的关键词是“同型”。我见过太多人在考试里把 (2\times 3) 的矩阵和 (3\times 2) 的矩阵往一起加理由是“看起来差不多大”。维度不同就是不能加没有例外也没有“广播”一说。广播是编程库里的便利机制不是数学定义。矩阵加法满足四条基本性质交换律 (ABBA)、结合律 ((AB)CA(BC))、零矩阵存在 (AOA)、负矩阵存在 (A(-A)O)。这四条和实数加法完全平行所以理解起来没有障碍。注意零矩阵 (O) 必须和参与运算的矩阵同型。不同型的零矩阵不能直接说“等于”因为矩阵相等本身就要求同型且对应元素相等。2.2 数量乘法的本质每个元素都乘同一个数数量乘法也叫数乘是数 (k) 与矩阵 (A) 的运算结果是把 (A) 的每个元素都乘以 (k)(kA(ka_{ij})_{m\times n})。这个定义没有任何维度限制任何数都可以乘任何矩阵。数乘满足的运算律包括(k(AB)kAkB)、((kl)AkAlA)、(k(lA)(kl)A)、(1\cdot AA)。这些性质和向量数乘完全一致本质上矩阵就是“一排向量拼起来”数乘作用在每个位置上。我实际批改作业时发现数乘本身出错很少但和矩阵乘法混在一起时容易出问题。比如计算 ((kA)B) 和 (k(AB))有人会犹豫要不要把 (k) 分配到每个元素。答案是((kA)Bk(AB))因为 (kA) 的每个元素都乘了 (k)做矩阵乘法时每一行的线性组合都会带上这个因子。这个性质在后续化简中非常常用值得单独记牢。2.3 两个容易被忽略的细节第一个细节矩阵加法没有“乘法优先级”问题但数乘和矩阵乘法混在一起时数乘的优先级高于矩阵乘法。也就是说 (kAB) 默认理解为 (k(AB))而不是 ((kA)B) 或 (A(kB))——虽然这三者结果相同但书写习惯上先处理数乘。第二个细节矩阵的减法定义为 (A-BA(-1)B)本质上是加法和数乘的复合。考试里如果题目只给了加法你完全可以用 (A(-1)B) 来构造减法不需要额外定义。3. 矩阵乘法这一章真正的分水岭3.1 矩阵乘法的定义与维度匹配规则设 (A(a_{ij}){m\times s})(B(b{ij})_{s\times n})则乘积 (CAB) 是一个 (m\times n) 矩阵其中[ c_{ij}\sum_{k1}^{s}a_{ik}b_{kj} ]这个公式的意思是(C) 的第 (i) 行第 (j) 列元素等于 (A) 的第 (i) 行与 (B) 的第 (j) 列对应元素乘积之和。维度匹配规则必须刻在脑子里左矩阵的列数必须等于右矩阵的行数。也就是 (A_{m\times s}\cdot B_{s\times n}C_{m\times n})中间的 (s) 必须一致结果的维度是“外框”——取左边的行数 (m) 和右边的列数 (n)。我教过一个很实用的记忆方法把维度写成 (m\times s) 和 (s\times n)中间两个 (s) 划掉剩下 (m\times n) 就是结果维度。这个方法在考试时能帮你快速判断一个乘法是否合法也能预判结果形状。3.2 为什么矩阵乘法这样定义这是学生问得最多的问题。为什么不是对应元素相乘为什么要有求和从线性变换的角度看矩阵是线性变换的表示。如果 (A) 表示变换 (T_A)(B) 表示变换 (T_B)那么复合变换 (T_A\circ T_B) 的矩阵表示就应该是 (AB)。复合变换的定义是“先做 (B) 再做 (A)”代入基向量的像自然就得到求和形式的乘法规则。从线性组合的角度看(AB) 的每一列是 (A) 的列向量的线性组合组合系数来自 (B) 的对应列。这个视角在解线性方程组时特别有用(Axb) 可以理解为“用 (A) 的列向量线性组合出 (b)”。从计算的角度看求和形式保证了结合律 ((AB)CA(BC)) 成立这是矩阵乘法最重要的性质之一。如果改成对应元素相乘结合律就不成立了整个线性代数的框架都会崩塌。3.3 矩阵乘法的运算律与反例矩阵乘法满足结合律 ((AB)CA(BC))、左分配律 (A(BC)ABAC)、右分配律 ((AB)CACBC)、与数乘的相容性 (k(AB)(kA)BA(kB))。但矩阵乘法不满足交换律。也就是说一般情况下 (AB\neq BA)。这是矩阵运算和实数运算最大的区别也是考试中设置陷阱的重灾区。我整理过几个经典反例建议你亲手算一遍取 (A\begin{pmatrix}10\00\end{pmatrix})(B\begin{pmatrix}00\10\end{pmatrix})则 (AB\begin{pmatrix}00\00\end{pmatrix})而 (BA\begin{pmatrix}00\10\end{pmatrix})。两者不相等。取 (A\begin{pmatrix}11\00\end{pmatrix})(B\begin{pmatrix}10\10\end{pmatrix})则 (AB\begin{pmatrix}20\00\end{pmatrix})(BA\begin{pmatrix}11\00\end{pmatrix})。另一个重要性质是消去律不成立(ABAC) 且 (A\neq O) 时不能推出 (BC)。反例取 (A\begin{pmatrix}10\00\end{pmatrix})(B\begin{pmatrix}00\10\end{pmatrix})(C\begin{pmatrix}00\20\end{pmatrix})则 (ABACO)但 (B\neq C)。提示遇到 (ABO) 时不要下意识认为 (AO) 或 (BO)。两个非零矩阵相乘完全可能得到零矩阵这是矩阵环和实数域的本质区别。3.4 矩阵乘法的实操计算流程我建议按以下步骤计算 (AB)先写维度确认 (A) 的列数等于 (B) 的行数写出结果维度。画网格在草稿纸上画出结果矩阵的空白网格标注每个位置。逐元素计算对每个 (c_{ij})取 (A) 的第 (i) 行和 (B) 的第 (j) 列做点积。检查结果矩阵的维度是否与预期一致是否有明显的计算错误。举个例子(A\begin{pmatrix}12\34\end{pmatrix})(B\begin{pmatrix}56\78\end{pmatrix})。(c_{11}1\times52\times719)(c_{12}1\times62\times822)(c_{21}3\times54\times743)(c_{22}3\times64\times850)。所以 (AB\begin{pmatrix}1922\4350\end{pmatrix})。而 (BA\begin{pmatrix}5\times16\times35\times26\times4\7\times18\times37\times28\times4\end{pmatrix}\begin{pmatrix}2334\3146\end{pmatrix})。两者不同再次验证交换律不成立。4. 特殊矩阵不是“特殊”而是“常用”4.1 零矩阵、单位矩阵与数量矩阵零矩阵 (O_{m\times n}) 是所有元素为 0 的矩阵。它的核心性质是(AOA)(AOO)(OAO)维度匹配时。注意零矩阵不唯一不同维度对应不同的零矩阵。单位矩阵 (I_n)也记作 (E_n)是主对角线元素为 1、其余为 0 的 (n) 阶方阵。它的核心性质是(AI_nA)(I_mAA)。单位矩阵在矩阵乘法中的地位相当于实数中的 1。数量矩阵是 (kI_n)即主对角线全为 (k)、其余为 0 的方阵。它和任何同阶方阵相乘都可交换((kI)AA(kI)kA)。这个性质在化简矩阵方程时非常有用。我见过一个常见错误把单位矩阵写成所有元素为 1 的矩阵。单位矩阵只有主对角线是 1其余全是 0。所有元素为 1 的矩阵通常记作 (J)性质完全不同。4.2 对角矩阵与对称矩阵对角矩阵是主对角线以外元素全为 0 的方阵记作 (\text{diag}(d_1,d_2,\dots,d_n))。对角矩阵的乘法特别简单两个同阶对角矩阵相乘结果还是对角矩阵对角线元素对应相乘。对角矩阵的幂也容易算(\text{diag}(d_1,\dots,d_n)^k\text{diag}(d_1^k,\dots,d_n^k))。对称矩阵满足 (A^TA)即 (a_{ij}a_{ji})。对称矩阵在二次型和特征值问题中大量出现。反对称矩阵满足 (A^T-A)即 (a_{ij}-a_{ji})主对角线元素必须为 0。一个实用结论任意方阵都可以分解为对称矩阵和反对称矩阵之和[ A\frac{AA^T}{2}\frac{A-A^T}{2} ]这个分解在理论推导中很常用建议记住。4.3 特殊矩阵对照表矩阵类型定义核心性质常见用途零矩阵所有元素为 0(AOA)(AOO)加法单位元单位矩阵主对角线为 1其余为 0(AIIAA)乘法单位元数量矩阵主对角线为 (k)其余为 0与任意同阶方阵可交换化简矩阵方程对角矩阵非主对角线元素为 0乘法逐元素对应相乘幂运算、相似对角化对称矩阵(A^TA)特征值为实数可正交对角化二次型、协方差矩阵反对称矩阵(A^T-A)主对角线为 0特征值为纯虚数或 0旋转、李代数4.4 转置与矩阵乘法的关系转置运算满足 ((AB)^TB^TA^T)。注意顺序要反过来这是考试高频考点。我见过太多人写成 ((AB)^TA^TB^T)这是错误的。验证方法设 (A) 是 (m\times s)(B) 是 (s\times n)则 (AB) 是 (m\times n)((AB)^T) 是 (n\times m)。而 (B^T) 是 (n\times s)(A^T) 是 (s\times m)所以 (B^TA^T) 是 (n\times m)维度匹配。如果写成 (A^TB^T)维度是 (s\times m) 乘 (n\times s)中间 (m) 和 (n) 不一定相等根本不合法。这个性质可以推广到多个矩阵((A_1A_2\cdots A_k)^TA_k^T\cdots A_2^TA_1^T)。记忆口诀是“转置穿脱衣顺序要倒过来”。5. 实操中常见的错误与排查方法5.1 维度不匹配的排查流程维度错误是矩阵运算中最常见的问题。我总结了一个三步排查法写出每个矩阵的维度标注在矩阵旁边。检查乘法链中相邻矩阵的维度是否首尾相接。预判结果维度与题目要求或后续运算对比。举个例子已知 (A_{2\times3})(B_{3\times4})(C_{4\times2})判断 (ABC) 是否合法。(AB) 是 (2\times4)再乘 (C_{4\times2}) 得到 (2\times2)合法。如果题目要求 (ACB)则 (AC) 是 (2\times2)再乘 (B_{3\times4})中间 (2\neq3)不合法。注意编程中 numpy 的运算符和np.dot都遵循同样的维度规则但*是逐元素乘法不要混淆。我见过不少人在 Python 里用*做矩阵乘法结果得到逐元素乘积调试半天才发现问题。5.2 乘法顺序错误的典型场景矩阵乘法不满足交换律所以顺序至关重要。常见错误场景包括计算 ((AB)^2) 时写成 (A^22ABB^2)。正确展开是 (A^2ABBAB^2)只有当 (ABBA) 时才能合并为 (2AB)。计算 ((AB)^2) 时写成 (A^2B^2)。正确结果是 (ABAB)不能随意交换。解矩阵方程 (AXB) 时左乘 (A^{-1}) 得 (XA^{-1}B)而不是 (BA^{-1})。我建议在做每一步变形时都在旁边标注“左乘”或“右乘”养成习惯后错误率会大幅下降。5.3 特殊矩阵相关的易错点单位矩阵的维度容易搞混。(AI_nA) 要求 (A) 的列数等于 (n)(I_mAA) 要求 (A) 的行数等于 (m)。写单位矩阵时一定要根据上下文确定阶数。对角矩阵相乘时有人会误以为需要做完整的矩阵乘法。实际上两个同阶对角矩阵相乘只需要把对角线元素对应相乘非对角线位置全是 0不需要计算。对称矩阵的乘积不一定是对称矩阵。(A) 和 (B) 都对称时(AB) 对称的充要条件是 (ABBA)。这个结论在考试中经常以判断题形式出现。5.4 常见问题速查表问题现象可能原因排查方法解决方案乘法结果维度不对维度匹配错误写出所有矩阵维度调整乘法顺序或转置(AB\neq BA)矩阵乘法不可交换检查是否误用交换律按定义重新计算(ABO) 但 (A,B\neq O)存在零因子验证是否真的得到零矩阵接受这一事实不要强行推导 (AO)((AB)^T) 写错转置顺序错误检查维度是否匹配改为 (B^TA^T)单位矩阵写错混淆单位矩阵和全 1 矩阵检查主对角线单位矩阵只有对角线为 16. 从这一章到后续内容的衔接矩阵运算这一章是后续所有内容的基石。矩阵的逆、初等变换、秩、线性方程组、特征值、二次型全部建立在加法、数乘、乘法这三条基本运算之上。我个人的经验是如果这一章有漏洞后面会越学越吃力因为每一章都会反复调用这些基础规则。一个很实用的建议学完这一章后找几个 (2\times2) 和 (3\times3) 的矩阵把加法、数乘、乘法、转置、特殊矩阵的性质全部手算一遍。不要用计算器不要用编程库就手算。手算的过程会强迫你关注每一个元素的来源这种“慢”恰恰是建立直觉的最快方式。另外如果你后续要学编程中的矩阵运算numpy 的、np.matmul、np.dot都遵循数学定义但要注意np.dot对高维数组的行为和略有不同。我一般建议直接用语义最清晰。至于*它永远是逐元素乘法不要拿来当矩阵乘法用。最后分享一个我自己的习惯每次遇到矩阵等式变形先在草稿纸角落写下“左乘/右乘”两个字确认顺序后再动笔。这个习惯帮我避免了至少一半的计算错误。矩阵运算不难难的是细心和规范。把这一章的基础打牢后面的路会顺很多。