🎯 本章学习目标
理解矩阵的相等、加法、减法、数乘:都是「逐元素」操作。
掌握矩阵乘法的规则:「行乘列」,并理解维度必须匹配。
理解转置 :行变列、列变行。
记住关键运算律,尤其是矩阵乘法一般不满足交换律 。
初步了解分块矩阵 的思想:把块当「大元素」,规则照旧。
警惕矩阵运算里失灵的数字直觉:不仅交换律,消去律 也不成立。
本章目录
4.1 矩阵相等:一模一样才算相等
4.2 加减法与数乘:逐元素操作
4.3 矩阵乘法:行乘列
4.4 转置:行变列、列变行
4.5 运算律:哪些成立,哪些不成立
本章小结 · 自查 · 思考题
4.1 矩阵相等:一模一样才算相等
两个矩阵什么时候「相等」?很直接:形状相同(行数、列数都一样),且每个对应位置上的元素都相等 。
比如 [[1,2],[3,4]] 和 [[1,2],[3,4]] 相等;但 [[1,2],[3,4]] 和 [[1,2,0],[3,4,0]] 不等,因为形状都不同(前者 2×2,后者 2×3)。
规则 两个矩阵相等 ⇔ 同形 + 逐元素相等 。少一个条件都不行。
这看起来是废话,但它确立了后面所有运算的「公平起跑线」:所有运算,本质都是在对应元素之间 做文章。
「逐元素」三个字值得再咂摸一遍。一个 m 行 n 列的矩阵共有 mn 个元素,所以「A = B」这一个式子,实际上是 mn 个标量等式的打包:第 1 行第 1 列对第 1 行第 1 列,第 1 行第 2 列对第 1 行第 2 列……一个不多、一个不少。矩阵语言的全部威力,都建立在「一个记号打包一整批信息」之上——相等是这样,后面所有的运算也是这样。
📐 例题 1 用「相等」反求未知参数
已知 A = [[x +1, 3],[y −2, 7]],B = [[5, 3],[1, 7]],且 A = B。求 x 、y 。
思路 矩阵相等 = 同形 + 对应位置元素相等。两者都是 2×2,形状过关,接下来逐位对齐列方程。
解 (1,1) 位:x +1 = 5 ⟹ x = 4;(1,2) 位:3 = 3,恒成立,不提供信息;(2,1) 位:y −2 = 1 ⟹ y = 3;(2,2) 位:7 = 7,恒成立。代回检验:[[4+1, 3],[3−2, 7]] = [[5,3],[1,7]] = B ✓。
答:x = 4,y = 3。 ⚠ 易错点:「对应位置」按行号列号严格对位,不是把两个矩阵里的未知数随意配对;另外有的位置两边都是常数、直接相等,不会产生方程,别硬凑。
顺着相等的定义,认识两位新朋友。零矩阵 O :所有元素都是 0 的矩阵,它是矩阵加法里的「0」——任何同形矩阵 A 都满足 A + O = A。负矩阵 −A :把 A 的每个元素取相反数,A + (−A) = O。所谓减法,其实就是「加负矩阵」:A − B = A + (−B)。你发现了吗?交换律、结合律、单位元、逆元——这套装备和第 1 章向量的、和普通数字的,一模一样。第 2 章说过:凡是凑齐这套装备的对象,都活在一个「向量空间」里;全体 m×n 矩阵也是其中一员,这一章不过是把那套公理在新对象身上重新演示一遍。
工程语境里,「矩阵相等」是个极严格的标准。比如结构试验中,同一试件分两轮采集的应变矩阵(行 = 测点、列 = 载荷级)若能逐元素完全一致,才敢下结论说「两轮数据无漂移、传感器无松动」;真实数据总有噪声,逐元素相等几乎不可能出现,工程师退而求其次去比均值、比最大偏差——但那是另一回事:矩阵相等的定义里没有「差不多」,差一点点就是不相等。数值程序判断两个矩阵是否一致,也因此必须逐元素比较,而不是比某个汇总指标。
顺带一个辨析:[[1,0],[0,1]] 与 [[2,0],[0,0.5]],把每行每列各取一个元素连乘求和,两者都得到 1(这个「汇总指标」第 7 章会正式登场,叫行列式),但它们显然是两个不同的矩阵。这提醒你:哪怕某个「单个数字指标」相等,也绝不代表矩阵相等——矩阵的信息量是一整张表,任何汇总指标都会丢掉细节。往后你还会遇到「迹」「秩」「行列式」这些把矩阵压缩成一个数的指标,它们各有各的用处,但没有谁能代替矩阵本身。
趁早给自己挂一根弦:矩阵有两种身份 。它可以是一张「数据表」——行 = 测点、列 = 通道的读数记录;也可以是一套「操作说明」——下一章要讲的变换。本章讲的运算对两种身份都成立,但味道不同:两张表相加,是数据合并;两套操作相加,是效果叠加。心里带着这根弦,后面读到「矩阵乘向量」时就不会错把操作说明当成数据表来理解。
顺带分清两个容易打架的记号习惯:数学里「A = B」是一个判断 ——问的是两个既有对象是否一模一样;编程里「A = B」通常是一个赋值 ——让 A 变成 B 的副本。读代码、读论文时留个心眼,别把两种「等于」混为一谈。另外,第 3 章把方程组压成增广矩阵时,我们其实已经在依赖「同形」的纪律:系数矩阵每列对应一个未知数,多一列少一列,整套对应关系就散架了。本章不过是把这套「表格纪律」正式化成规则:先对齐形状,再谈运算。
「m×n」这个形状记号也有读法纪律:横着的行数在前 、竖着的列数在后 ,2×3 读作「两行三列」。把行列说反不是口误小事——它直接决定一个乘法有没有定义。建议养成拿到矩阵先报形状的习惯:「几乘几」脱口而出,如同木工下料前先报「长宽厚」;尺寸不清就动刀,是数学车间和木工车间共同的大忌。
顺带把「方阵」这个词交代了:行数 = 列数的矩阵叫方阵(n×n),它才有「主对角线」可言——左上到右下那条斜线,是转置、单位矩阵、对称矩阵共同关心的轴线。长方形矩阵没有对角线,所以「对称」「幂」这些概念都以方阵为前提;你会在后文反复看到「此结论仅对方阵成立」的限定,根源就在形状。
4.2 加减法与数乘:逐元素操作
加法与减法
两个同形 矩阵相加,就是把对应位置的元素相加 ,结果还是一个同形矩阵。减法同理,逐元素相减。
矩阵加法
两个二乘二矩阵逐元素相加得到新矩阵。
1
2
3
4
+
5
6
7
8
=
6
8
10
12
图 4-1 矩阵加法:对应元素相加,1+5=6、2+6=8、3+7=10、4+8=12。
数乘
用一个标量 k 乘矩阵,就是把每个元素都乘 k ——和第 1 章向量的数乘一模一样,只是现在对整张表格操作。
2 · [[1,2],[3,4]] = [[2,4],[6,8]]
由于加法、数乘都是「逐元素」的,数字世界的运算律被原封不动地继承了下来(每条都可以用「逐元素」直接验证):
交换律:A + B = B + A(每个格子做的都是 aij + bij ,两个数相加当然可交换);
结合律:(A + B) + C = A + (B + C);
数乘分配:k(A + B) = kA + kB,(k + l)A = kA + lA;
数乘结合:k(lA) = (kl)A。
一个高频翻车现场必须点破:把 2×2 与 2×3 的两张表「硬加」。形状不同,就没有「对应位置」——右边那张表多出来的第 3 列,在左边找不到对手。工程里对应的场景是「两轮布点不一致」:第二轮临时增加了一个测点,两张原始读数表就不能直接相加,得先约定缺测位置怎么处理(补零、插值,或干脆剔除该点)——但注意,补零是数据管理的行政决定,不是数学意义上的「矩阵加法」;数学只认同形。另一类常见事故是行列贴反 :[[1,2],[3,4]] 与 [[1,3],[2,4]] 形状同为 2×2,但对应位置元素不同,当然不相等——后一张其实是前一张的转置。录入试验数据时把行列粘反,是数据处理里最常见的低级错误之一;好在转置可逆,发现后整表救得回来,但前提是你得先发现。
「逐元素」也不是低效的代名词,恰恰相反——它是可批量、可并行 的特征。把 500 个测点 × 20 个工况的大表整体乘 0.98 做单位换算,一次数乘搞定;编程里写一句数组乘法,背后就是 m×n 次标量乘法由机器自动完成。数据分析工具里一切「整列整体运算」的功能,数学内核都是本节的逐元素操作。
负矩阵也有鲜活的工程画面:线性系统里加载与卸载互为逆过程——同一级载荷施加时读数变化矩阵若为 A,完全卸除时的读数变化就近乎 −A(理想线性情形)。做「加载—卸载」循环试验时若读数回不到零,工程上叫迟滞、间隙或残余变形,其大小恰是衡量系统偏离理想线性的标尺。−A 不是一个抽象符号,它是每一次「撤销」在数学里的样子。
差值矩阵的日常用法也值得点名:B − A 不是一张「负数表」,而是「第二轮相对第一轮的变化量」。试验后处理里直接把 B − A 画成热力图,哪个测点、哪个工况变化最大一目了然——逐元素减法在这里是最灵的对比工具;反过来,两轮一致的希望全都寄托在 B − A ≈ O 上。
📐 例题 2 两轮试验数据的逐元素处理
某结构静力试验布了 3 个应变测点,每个测点记录 2 个通道(峰值读数、稳态读数,单位 με)。第一轮读数矩阵 A = [[12,15],[9,11],[7,8]],第二轮 B = [[11,13],[10,12],[8,9]]。求:(1) 两轮读数之和 A+B;(2) 两轮平均 (A+B)/2;(3) 加权组合 3A − 2B。
思路 三问全是逐元素操作:加法、数乘 0.5、数乘后相减。按位置一格格算即可。
解 (1) A+B = [[12+11, 15+13],[9+10, 11+12],[7+8, 8+9]] = [[23,28],[19,23],[15,17]]。(2) (A+B)/2 = [[11.5, 14],[9.5, 11.5],[7.5, 8.5]]。(3) 先算 3A = [[36,45],[27,33],[21,24]],2B = [[22,26],[20,24],[16,18]],再逐元素相减:3A−2B = [[14,19],[7,9],[5,6]]。
答:A+B = [[23,28],[19,23],[15,17]];(A+B)/2 = [[11.5,14],[9.5,11.5],[7.5,8.5]];3A−2B = [[14,19],[7,9],[5,6]]。 ⚠ 易错点:数乘必须乘遍每个元素,漏乘一个整张表就废了;(A+B)/2 是「先加再乘 0.5」;3A−2B 中减号后面的 2B 要整体乘 2 再逐个减,不是只减第一个元素。
📖 为什么工程师偏爱「多轮取平均」 每轮读数 = 真实值 + 随机波动。随机波动有正有负、互不偏袒,几轮一平均,正负相抵,波动被压小。概率论会给出更精确的结论——波动幅度大约按 1/√n 缩小(n 为轮数),这就是 (A+B)/2 的工程含义:不是数学游戏,而是每天都在用的降噪手段。
另一处是载荷叠加:结构分析惯用「分别算、再叠加」——惯性载荷单独算一遍,气动载荷单独算一遍,两张内力表逐元素相加,就是组合工况的结果。敢这么干,靠的是结构在小变形下近似满足线性叠加原理,而这恰好是「逐元素加法」能成立的物理土壤。
一个高频混淆放在这里解决:2A 与 A² 完全是两回事。2A 是数乘,把每个元素乘 2;A²(写作 A·A)是矩阵乘法,按下一节的「行乘列」来算。对 A = [[1,2],[3,4]]:2A = [[2,4],[6,8]],而 A² = [[7,10],[15,22]]——无论数值还是算法都不挨着。数字世界里 x² 与 2x 偶尔相等(x = 2 时),矩阵世界里这种巧合更别指望;而且 A² 还要求 A 是方阵,长方形矩阵连「平方」的资格都没有。
🧠 一句话记忆 加减和数乘,都是「逐元素」的机械操作 ——像复印机一样,对每个格子做同样的动作。真正有讲究的,是接下来要讲的乘法 。
4.3 矩阵乘法:行乘列
矩阵乘法是最关键、也最「不按常理」的运算。它不是 逐元素相乘,而是「行乘列 」。
规则:第 i 行 × 第 j 列
设 A 是 m×n 矩阵,B 是 n×p 矩阵,那么乘积 C = AB 是 m×p 矩阵,其中 C 的第 i 行第 j 列元素 cij ,等于 A 的第 i 行 与 B 的第 j 列 的「点积」——对应元素相乘再相加:
cij = ai1 b1j + ai2 b2j + … + ain bnj
维度铁律 A 的列数必须等于 B 的行数 ,乘法才有意义。若 A 是 m×n、B 是 n×p,则 AB 是 m×p。口诀:「(m×n)·(n×p) = (m×p),中间那个 n 必须对齐」 。
把「中间对齐」再拆开看一层。「行乘列」要求把 A 的第 i 行与 B 的第 j 列做「对应相乘再相加」,这一步的前提是:两者长度相同 。A 的第 i 行有 n 个数(因为 A 有 n 列),B 的第 j 列有 n 个数(因为 B 有 n 行)——所以「A 的列数 = B 的行数」不是谁拍脑袋的规定,而是「配对」这个动作自带的物理要求。一旦对齐,结果形状也自动确定:A 提供 m 个行号、B 提供 p 个列号,所以 AB 是 m×p。练两个形状题:2×3 矩阵乘 3×4 矩阵 → 2×4 ✓;3×4 矩阵乘 2×3 矩阵 → 中间的 4 与 2 对不上,根本没定义 ✗。
更隐蔽的坑:AB 有定义、BA 没定义,是完全可能的。比如 A 是 2×3、B 是 3×4:AB 是 2×4,算得出来;可 BA 需要「B 的列数 4 = A 的行数 2」,直接不成立。所以「先乘 AB 还是先乘 BA」有时根本不是「选哪个」的问题,而是「只有一个能选」。写工程计算程序时忘了检查形状,运行时就会收到一次「维度不匹配」的报错——几乎每个和矩阵软件打交道的人都撞过这堵墙。
再给你一个规模的直觉:两个 n×n 矩阵相乘,按定义要算 n² 个格子,每个格子 n 次乘法、n−1 次加法,总量约 n³ 次乘加。n = 2 时是 8 次乘法,无足轻重;n = 3 时 27 次;可当 n = 1000(大型结构分析、整机有限元模型动辄上万自由度)时,n³ = 10⁹,十亿次量级——朴素算法在真实工程尺度上会让人等到怀疑人生。这既解释了为什么数值计算界要死磕「快速矩阵乘法」这类算法,也提醒你:手算练的是理解,工程规模靠的是算法与计算机。
还必须认识一位特殊角色——单位矩阵 I:对角线全 1、其余全 0 的方阵。它对矩阵的作用相当于数字里的 1:IA = A,AI = A。拿 2×2 验证:[[1,0],[0,1]]·[[a,b],[c,d]] = [[1×a+0×c, 1×b+0×d],[0×a+1×c, 0×b+1×d]] = [[a,b],[c,d]],原样奉还。乘法的「两副面孔」在它身上看得最清楚:作为运算,它「什么都没做」;作为动作(下一章),它「原地不动」。
初学者算乘法最常见的动作变形,是把「行乘列」做成「行乘行」——拿 A 的第 1 行去乘 B 的第 1 行。记住:B 是竖着被使用的,第 j 列 才参与配对。自检技巧是想象两片透明胶片叠压:A 的横向第 i 行与 B 的纵向第 j 列十字相交,交点正对你的目标格 (i,j)——「十字定位」一次,扫描方向就不会错。
再埋一把下一章的钥匙:AB 的第 j 列 = A 乘上 B 的第 j 列 。现在可以先把它当一条免费的自检工具用:算完 AB 后抽第 1 列,看它是否恰好等于 A·(B 的第 1 列);若对不上,八成是中途扫错了行。这条式子的完整画面(为什么乘积的列会这样「接力」),等下一章摊开「矩阵 = 动作」的视角后你会恍然大悟。
一个具体例子
算 2×2 矩阵的乘法:
矩阵乘法示例
二乘二矩阵 A 与 B 相乘,结果每个元素是 A 的行与 B 的列的点积。
1
2
3
4
×
5
6
7
8
=
19
22
43
50
19=1·5+2·7
22=1·6+2·8
43=3·5+4·7
图 4-2 结果 (1,1) 位置 = 第 1 行 [1,2] · 第 1 列 [5,7] = 1·5+2·7 = 19,其余类推。
看 (1,1) 位置:A 的第 1 行是 [1, 2],B 的第 1 列是 [5, 7],两两相乘再相加:1×5 + 2×7 = 19。这就是「行乘列」。
🧠 一句话记忆 「横着扫 A,竖着扫 B,对应乘,加起来」 。结果的 (i,j) 元素,就是「A 的第 i 行」点乘「B 的第 j 列」。
为什么是「对应相乘再相加」这个奇怪的动作,而不是「逐元素相乘」?这正是下一章要回答的核心问题——答案藏在「线性变换」里。现在先把这个规则练熟。
📐 例题 3 数量表乘价格表:算出两个车间的总账
两家车间本月领用三种原料,数量表 P = [[3,2,1],[4,0,2]](行 = 甲/乙车间,列 = 铝材、钛材、紧固件,单位 kg);价格表 Q = [[120,8],[260,15],[10,1]](行 = 同一份原料清单,列 = 单价、运费单价,单位 元/kg)。求两车间「材料费 + 运费」总账矩阵 PQ。
思路 PQ 的 (i,j) 元素 = 第 i 个车间对三种原料的消耗量 · 第 j 列价格——正是「数量×单价」的矩阵化。P 是 2×3、Q 是 3×2,中间的 3 对齐,结果是 2×2。
解 c₁₁ = 3×120 + 2×260 + 1×10 = 360+520+10 = 890(甲车间材料费);c₁₂ = 3×8 + 2×15 + 1×1 = 24+30+1 = 55(甲车间运费);c₂₁ = 4×120 + 0×260 + 2×10 = 480+0+20 = 500(乙车间材料费);c₂₂ = 4×8 + 0×15 + 2×1 = 32+0+2 = 34(乙车间运费)。PQ = [[890, 55],[500, 34]]。
答:甲车间材料费 890 元、运费 55 元;乙车间材料费 500 元、运费 34 元。 ⚠ 易错点:P 的列序与 Q 的行序必须是同一份原料清单(铝材对铝材、钛材对钛材),顺序错一位,890 立刻变成一笔糊涂账;另外「0 kg」也要老老实实参与相乘,零不会让那一项自动消失,只是恰好把乘积变成 0。
这种「数量表 × 价格表」的结构在工程界无处不在:物料清单汇总成本、工时矩阵乘费率矩阵核算报价、多坐标系变换的连乘——本质上都是把「逐项相乘再求和」的算账动作,压缩成一次矩阵乘法。矩阵记法的收益在这里看得最清楚:三家车间、八种原料、五类费用,表格再大,「数量表 × 价格表」这六个字不变。
再体会一次例题 3 里「行与列的身份」:P 的行是车间(谁在消耗)、列是原料(消耗什么);Q 的行是原料(被计价)、列是价格类型(怎么计价)。乘积 PQ 的行继承了 P 的行身份(车间),列继承了 Q 的列身份(价格类型)——中间的「原料」标签被乘掉了,像接力棒交完就退场。工程报表里判断「两张表乘完长什么样」,先看标签的接力:行标签接左乘数的行,列标签接右乘数的列,中间标签对齐消失。这条经验在后面解方程组、读系数矩阵时还会反复用到。
📐 例题 4 AB 与 BA 都存在,却连形状都不同
A = [[1,2,3],[4,5,6]](2×3),B = [[1,0],[0,1],[1,1]](3×2)。分别计算 AB 与 BA,并比较两个结果。
思路 两个乘积都有定义,但形状不同:AB 是 2×2,BA 是 3×3。各自按「行乘列」展开。
解 AB:c₁₁ = 1×1 + 2×0 + 3×1 = 4;c₁₂ = 1×0 + 2×1 + 3×1 = 5;c₂₁ = 4×1 + 5×0 + 6×1 = 10;c₂₂ = 4×0 + 5×1 + 6×1 = 11。故 AB = [[4,5],[10,11]]。BA 是 3×3:B 第 1 行 [1,0] 依次点乘 A 的三列 [1,4]、[2,5]、[3,6],得 1、2、3;第 2 行 [0,1] 同法得 4、5、6;第 3 行 [1,1] 得 1+4=5、2+5=7、3+6=9。故 BA = [[1,2,3],[4,5,6],[5,7,9]]。
答:AB = [[4,5],[10,11]](2×2),BA = [[1,2,3],[4,5,6],[5,7,9]](3×3)——形状都不同,谈不上相等与否。 ⚠ 易错点:「AB 与 BA 只是换个顺序」是错觉;遇到乘法,永远先看形状,再谈数值。
一个精巧的辨析收尾:同样两个向量,先横后竖还是先竖后横,结果天差地别。行向量乘列向量:[1,2]·[[3],[4]] = 1×3 + 2×4 = 11,结果是 1×1 的一个数(第 1 章的点积);反过来列乘行:[[3],[4]]·[1,2] = [[3,6],[4,8]],结果是 2×2 的矩阵(每个元素 = 列的第 i 个 × 行的第 j 个,这个动作叫外积 )。点积把信息「浓缩成一个数」,外积把信息「摊开成一张表」——两个方向、两种用途,全看你把向量横放还是竖放。
练到这里,给自己立三条规矩:动手前先问形状(能不能乘、结果几乘几);动手时横竖扫描(行乘列,不重不漏);动手后抽查一两个元素(用组合的含义复核)。下一章会把这些机械动作翻译成几何语言——「矩阵是动作,乘法是连招」,你会看到同一个规则的两副面孔。
4.4 转置:行变列、列变行
最后一个基础运算叫 转置(transpose) ,记作 A T 。做法极简单:把矩阵沿「左上到右下」的对角线翻个个儿 ——原来的第 1 行变成第 1 列,第 2 行变成第 2 列,依此类推。
矩阵转置
三乘二矩阵转置后变成二乘三矩阵,行变列、列变行。
1
2
3
4
5
6
A(3×2)
⟶
转置
1
3
5
2
4
6
Aᵀ(2×3)
图 4-3 转置:3×2 矩阵 A 变成 2×3 矩阵 Aᵀ——第一行 [1,2] 变成第一列 [1,2],第一列 [1,3,5] 变成第一行 [1,3,5],行列互换、下标对调。
规则 A 的第 i 行第 j 列元素,转到 A T 后位于第 j 行第 i 列。即 (AT )ij = Aji 。若 A 是 m×n,则 AT 是 n×m。
转置有个好用的性质:(AB)T = BT AT (注意顺序颠倒了!)。这个「顺序反转」在第 11 章特征值、对称矩阵里还会反复出现。
把转置的运算律列一张清单,前几条完全符合直觉:(Aᵀ)ᵀ = A(翻两次回原样);(A + B)ᵀ = Aᵀ + Bᵀ;(kA)ᵀ = kAᵀ。唯独涉及乘法的那条要倒着写:(AB)ᵀ = BᵀAᵀ。
为什么顺序会反过来?代数上看一眼就明白。(AB)ᵀ 的 (i,j) 元素 = AB 的 (j,i) 元素 = 「A 第 j 行」点乘「B 第 i 列」;而「A 第 j 行」正是 Aᵀ 的第 j 列、「B 第 i 列」正是 Bᵀ 的第 i 行——按「行乘列」重新组装,恰好得到 Bᵀ 的第 i 行乘 Aᵀ 的第 j 列,也就是 (BᵀAᵀ) 的 (i,j) 元素,逐字对位、严丝合缝。想要直觉版?把它想成「倒带」:AB 是「先做 B 再做 A」两部连播,把录像倒放(转置),先出场的必然是后做的那一段——顺序自然颠倒了。
📐 例题 5 亲手验证 (AB)ᵀ = BᵀAᵀ
A = [[1,2],[3,4]],B = [[5,6],[7,8]]。先算 AB 与 (AB)ᵀ,再算 BᵀAᵀ,验证两者相等。另取 T = [[1,2,3],[4,5,6]],验证 (Tᵀ)ᵀ = T。
思路 逐项硬算,眼见为实;顺手再验一条「翻两次回原样」。
解 AB = [[19,22],[43,50]](图 4-2 算过),转置得 (AB)ᵀ = [[19,43],[22,50]]。再看 Bᵀ = [[5,7],[6,8]],Aᵀ = [[1,3],[2,4]],按行乘列:BᵀAᵀ 的 (1,1) = 5×1+7×2 = 19,(1,2) = 5×3+7×4 = 43,(2,1) = 6×1+8×2 = 22,(2,2) = 6×3+8×4 = 50,即 BᵀAᵀ = [[19,43],[22,50]],与 (AB)ᵀ 逐位一致 ✓。另一边:Tᵀ = [[1,4],[2,5],[3,6]](2×3 变 3×2),再转置一次得到 [[1,2,3],[4,5,6]] = T ✓。
答:(AB)ᵀ = BᵀAᵀ = [[19,43],[22,50]];(Tᵀ)ᵀ = T。 ⚠ 易错点:最常见的笔误是把 (AB)ᵀ 写成 AᵀBᵀ。防错口诀——「转置要倒带,顺序跟着翻」。
转置还引出一类重要角色:对称矩阵 ——满足 Aᵀ = A 的方阵,沿主对角线翻折后与自身重合,例如 [[2,1],[1,3]]。它在工程里出镜率极高:结构分析中的刚度矩阵天然对称,根源是功的互等定理——在第 1 点施加单位力在第 2 点引起的位移,等于在第 2 点施加单位力在第 1 点引起的位移。这个对称性不只是好看:要存储的大型矩阵数据量直接砍掉一半,解方程的算法也趁机提速。第 12 章讲二次型时,对称矩阵是绝对主角,这条伏笔请先记下。
转置在数据工作里也天天见面:一张「行 = 测点、列 = 试验工况」的读数矩阵,转置后变成「行 = 工况、列 = 测点」。电子表格里「复制 → 选择性粘贴 → 转置」那个选项,数学名字就叫矩阵转置。行与列从来都是同一批数据的两种摆法——转置,就是换一个视角重新读它。
转置还能帮你看破一件事:第 1 章的点积,其实就是一种矩阵乘法。行向量 u 乘列向量 vᵀ:u 是 1×n、vᵀ 是 n×1,按「行乘列」正好得到 1×1 的一个数——上节的 [1,2]·[[3],[4]] = 11 就是这么来的。换句话说,「行乘列」规则对你并不陌生:它是点积从向量世界到矩阵世界的自然推广。转置在这里扮演的角色,就是把竖着的向量放平、把躺着的向量立起,让维度顺利对齐。
对称矩阵的孪生兄弟也顺带认识一下:满足 Aᵀ = −A 的叫反对称矩阵 ,其对角线必为 0(因为 aii = −aii ,一个数等于自己的相反数只能是 0)。有趣的是,任何方阵都能拆成「对称 + 反对称」两半:A = (A+Aᵀ)/2 + (A−Aᵀ)/2,前一半对称、后一半反对称。结构分析里把一般载荷分解成对称载荷组与反对称载荷组,分别用半结构算完再叠加——正是这套分解思想的工程化身,第 12 章二次型还会再遇到这对兄弟。
4.5 运算律:哪些成立,哪些不成立
矩阵运算和数字运算长得像,但有一个致命区别 ,必须刻进脑子:
最大的坑 矩阵乘法一般不满足交换律 :绝大多数情况下 AB ≠ BA。有时甚至 BA 根本没定义(维度对不上)。所以「AB 和 BA」是两码事,别想当然。
举例:[[1,2],[3,4]] × [[0,1],[1,0]] 和反过来乘,结果完全不同。你可以动手算一算,会发现 AB 的两列交换了,而 BA 的两行交换了。
📐 例题 6 亲手演示 AB ≠ BA:左乘换行、右乘换列
A = [[1,2],[3,4]],B = [[0,1],[1,0]]。计算 AB 与 BA,并解释两个结果分别对 A 做了什么。
思路 B 是「交换矩阵」:它把 (1,0) 与 (0,1) 对调。左乘、右乘各算一遍,观察结果的行列变化。
解 AB = [[1×0+2×1, 1×1+2×0],[3×0+4×1, 3×1+4×0]] = [[2,1],[4,3]];BA = [[0×1+1×3, 0×2+1×4],[1×1+0×3, 1×2+0×4]] = [[3,4],[1,2]]。观察:AB 恰是把 A 的两列互换,BA 恰是把 A 的两行互换。
答:AB = [[2,1],[4,3]](列被交换),BA = [[3,4],[1,2]](行被交换),AB ≠ BA。 ⚠ 易错点:别把「乘交换矩阵」笼统记成「交换行列」——左乘换行、右乘换列,方向一反意义全变。
好在,另一些规则仍然成立(假设维度都匹配):
矩阵运算律:成立 vs 不成立
运算律 是否成立 说明
加法交换律 A+B = B+A ✅ 成立 逐元素相加,顺序无所谓
乘法结合律 (AB)C = A(BC) ✅ 成立 顺序不乱,只是分组方式可换
分配律 A(B+C) = AB+AC ✅ 成立 乘法对加法分配
乘法交换律 AB = BA ❌ 一般不成立 这是矩阵与数字最大的不同
其实被打破的数字直觉不止交换律一条,消去律 也会翻车。数字世界里,ab = ac 且 a ≠ 0,就能两边约去 a 得到 b = c;矩阵世界里 AB = AC 推不出 B = C,甚至 AB = O(零矩阵)也推不出「A = O 或 B = O」。看一道例题。
📐 例题 7 消去律的两次翻车
(1) 取 A = [[1,1],[0,0]],B = [[1,0],[0,0]],C = [[0,0],[1,0]],验证 AB = AC 而 B ≠ C。(2) 取 A = [[1,1],[1,1]],B = [[1,−1],[−1,1]],验证 AB = O 而 A、B 都不是零矩阵。
思路 不辩不争,直接按行乘列硬算,用结果说话。
解 (1) AB = [[1×1+1×0, 1×0+1×0],[0×1+0×0, 0×0+0×0]] = [[1,0],[0,0]];AC = [[1×0+1×1, 1×0+1×0],[0×0+0×1, 0×0+0×0]] = [[1,0],[0,0]]。AB = AC,但 B 与 C 显然不同。(2) AB 的 (1,1) 元素 = 1×1 + 1×(−1) = 0,(1,2) = 1×(−1) + 1×1 = 0,第二行与第一行完全相同,故 AB = [[0,0],[0,0]] = O。
答:AB = AC = [[1,0],[0,0]] 而 B ≠ C;AB = O 而 A、B 均非零。 ⚠ 易错点:根源第 5 章会揭晓——矩阵(变换)可能把不同的输入「压」到同一个输出,信息有损,自然无法反推。在那之前先记住:方程两边出现矩阵因子时,别随手「约」。
进阶视角:分块矩阵——把「块」当元素玩
矩阵大了以后,逐元素操作会让人眼花。一个管理复杂度的思路是 分块(partition) :用几条横线竖线把大矩阵切成小矩阵,每一块当作一个「大元素」。分块之后,「行乘列」的规则原样适用——块的乘积按块展开,只要块的形状按「块尺寸」对齐(左块的列数 = 右块的行数)。普通乘法要求「数对数」,分块乘法要求「块对块」,逻辑同构。
分块矩阵乘法示意
两个分块矩阵相乘,把每一块当作大元素,规则与普通矩阵乘法相同。
A₁₁
A₁₂
A₂₁
A₂₂
×
B₁₁
B₁₂
B₂₁
B₂₂
=
C₁₁
C₁₂
C₂₁
C₂₂
把每一块当作「大元素」:C₁₁ = A₁₁B₁₁ + A₁₂B₂₁(块的形状要对齐)
图 4-4 分块矩阵:把块当作大元素,「行乘列」的规则原样适用——块的乘积按块展开。
挑一个最实用的分块模式——块对角矩阵 。设 A = [[B, O],[O, C]](B、C 坐镇对角线,其余是零块),则 A² = [[B², O],[O, C²]]。代个数:B = [[2,0],[0,3]],C = [5],则 A = [[2,0,0],[0,3,0],[0,0,5]],A² = [[4,0,0],[0,9,0],[0,0,25]]——分块视角下这不过是 B² = [[4,0],[0,9]] 与 C² = [25] 各自平方、互不打扰,一个 3×3 的平方被拆成「一个 2×2 的平方 + 一个 1×1 的平方」。
分块不只是省事,它对应工程里的「解耦」思想:互不影响的子系统在总矩阵里自然形成对角块。比如结构振动分析中,若两个部件近似解耦,各自的特性矩阵就藏在总刚度矩阵的对角块上;数值软件也靠分块把放不进内存的大矩阵切成小块轮流处理、并行计算。你会逐渐体会到:线性代数的每一种「记法」,背后都对应一种管理工程复杂度的手段。
补一条与零矩阵有关的运算纪律:A + O = A,A·O = O,O·A = O——加法里的 0 依旧安分守己;但「乘积为零」不再意味着「因子为零」(例题 7 已亲眼所见 AB = O 而 A、B 均非零)。这条纪律在解方程时极其要紧:看到 AB = O,正确的反应不是「A 或 B 必有一个为零」,而是「信息不足,需进一步分析」。工程里对应的问题意识是:一组测量全为零,不代表系统没工作,也可能是两条相互抵消的通路在起作用。
最后说说幂运算 与结合律的关系。A³ = (A·A)·A = A·(A·A)——结合律保证了「怎么加括号都一样」,这是「幂」有意义的根基(不必担心定义歧义)。但轮到 (AB)³ 时你就要警觉:它等于 AB·AB·AB,A 与 B 严格交替,绝不能随手「展开」成 A³B³——想把三个 A 挪到一起、三个 B 挪到一起,必须交换某些 A 与 B 的位置,而乘法恰恰不能交换。数字世界人人会背的 (ab)³ = a³b³,在矩阵世界一般失效,失效原因和交换律是同一个。什么时候能救回来?只有 A、B 恰好可交换(AB = BA)的特殊情形。
反过来,结合律送了你一份实用的礼物:计算顺序的自由 。三个变换连乘时,(AB)C 与 A(BC) 结果一样,但计算量可能天差地别——工程数值软件内部天天做这种权衡:先合并哪两个矩阵、先作用在哪一端,选错分组可能白算十倍的量。你手算时同理:先挑简单的两个乘出来,常常能把后面的大头省掉。「结果不因分组而变」让分组成为纯粹的效率问题——规则不变、顺序自由,这正是结合律的工程价值(对照:交换律失效,乘法之间没有这份自由)。
📖 为什么乘法不交换其实「很自然」 别急着觉得奇怪。下一章你会看到,矩阵乘法其实是「两个动作的先后组合」:先做动作 A、再做动作 B。生活里「先穿袜子再穿鞋」和「先穿鞋再穿袜子」,结果当然不一样。顺序不能随便换,这不是 bug,而是它的本质。
🧠 一句话记忆 加法随便换,乘法不能换(AB ≠ BA);但结合律、分配律都还在。
辨析:转置为什么让乘法『倒序』 (A+B)ᵀ = Aᵀ + Bᵀ 顺序不变,(AB)ᵀ = BᵀAᵀ 却要倒过来——差别全在「加法可交换、乘法不可交换」。镜像地看:AB 的第 (j, i) 元素 = A 的第 j 行点乘 B 的第 i 列;翻到等号右边,它恰好等于 Bᵀ 的第 i 行点乘 Aᵀ 的第 j 列——正是 BᵀAᵀ 的第 (i, j) 元素。记忆口诀:正着穿衣,倒着脱衣。顺手收一条推论:A + Aᵀ 与 AAᵀ 必对称——转置翻面后自己变回自己,这说明对称矩阵不必靠运气找,随手把任何矩阵送进这两个「合成器」就能造一个。第 9 章讲秩、第 12 章做对称化处理时,这对合成器还会反复出场。
本章小结
相等 :同形且逐元素相等;加减、数乘 :逐元素操作。
乘法 :行乘列——cij = A 第 i 行点乘 B 第 j 列;维度须满足 (m×n)(n×p)=(m×p)。
转置 :行列互换,AT 的第 (i,j) 元素是 A 的 (j,i) 元素。
乘法满足结合律、分配律 ,但不满足交换律 :AB ≠ BA。
(AB)T = BT AT (转置时顺序反转)。
矩阵的数字直觉会失灵:不止交换律,消去律 也不成立——AB = AC 推不出 B = C,AB = O 推不出 A = O 或 B = O。
分块 :把块当大元素,规则照旧;块对角矩阵的幂 = 各块各自取幂,是「解耦」的数学形态。
读完本章,你应该能……
判断两个矩阵能否相加、相乘,并说出结果的形状。
计算 [[1,2],[3,4]] + [[5,6],[7,8]] 和 2·[[1,2],[3,4]]。
用「行乘列」算出两个 2×2 矩阵的乘积。
写出 [[1,2,3],[4,5,6]] 的转置。
举一个 AB ≠ BA 的例子,并解释为什么「乘法不交换」。
算一道 2×3 乘 3×2 的乘法,并说出结果形状为什么是 2×2。
举一个 AB = AC 但 B ≠ C 的数值例子,指出它违反了数字世界的哪条直觉。
写出 (AB)ᵀ 的正确展开,并用一道 2×2 数值题验证。
用「AB 的第 1 列 = A·(B 的第 1 列)」复核一道你算过的乘法。
说出单位矩阵 I 左乘、右乘任何矩阵的效果,并解释它与数字 1 的相似之处。
思考题
1. 为什么两个矩阵相加前必须「同形」?不同形会出什么问题?
提示:加法是逐元素对应相加,形状不同就没有「对应位置」,无法一一相加。
2. 一个 2×3 矩阵乘一个 3×4 矩阵,结果是什么形状?为什么必须「中间对齐」?
提示:结果是 2×4。因为「行乘列」要求 A 的行长(列数)等于 B 的列长(行数),即中间的 3 必须对齐。
3. 计算 [[1,0],[0,1]] × [[2,3],[4,5]],结果是什么?这个特殊矩阵有什么作用?
提示:结果还是 [[2,3],[4,5]]。[[1,0],[0,1]] 是单位矩阵,乘任何矩阵都「不变」,相当于数字里的 1。
4. 找两个 2×2 矩阵 A、B,验证 AB ≠ BA。
提示:例如 A=[[0,1],[0,0]]、B=[[0,0],[1,0]],AB=[[1,0],[0,0]],BA=[[0,0],[0,1]],两者不同。
5. A = [[1,2],[3,4]]:A² 与 2A 相等吗?各是多少?
提示:A² = A·A = [[7,10],[15,22]],2A = [[2,4],[6,8]],完全不同。A² 用的是矩阵乘法(行乘列),2A 是数乘(逐元素)——「平方」两个字在矩阵世界里必须先问清「哪种乘」。
6. 数字里 (a+b)² = a² + 2ab + b²。矩阵里 (A+B)² 展开是什么?麻烦出在哪里?
提示:(A+B)² = A² + AB + BA + B²。中间的 AB 与 BA 一般不相等,不能合并成 2AB——所以一般情况下 (A+B)² ≠ A² + 2AB + B²,乘法不交换让这条初中公式失效。
7. 分块矩阵 [[B, O],[O, C]] 的平方是什么?它为什么让计算变简单?
提示:平方后仍是块对角:[[B², O],[O, C²]]。对角块之间被零块隔开、互不相乘,大矩阵的幂运算被拆成各小块各自的幂——「大问题里的小问题各自为战」。
8. (AB)³ 展开后是什么?为什么一般不等于 A³B³?什么条件下能救回来?
提示:(AB)³ = AB·AB·AB,A 与 B 严格交替。想合并成 A³B³ 必须交换部分 A、B 的次序,而乘法不可交换,所以一般不成立;只有 AB = BA(可交换的特殊情形)时才成立。这条与「交换律失效」同根同源。
9. 1×1 矩阵世界里,矩阵规则退化成什么样?这说明「矩阵」与「数字」是什么关系?
提示:1×1 矩阵加法就是数字加法,乘法就是数字乘法,而且必可交换(只有一个格子,AB = BA 恒成立)。这说明矩阵运算是数字运算的推广——数字是矩阵这个更大家族里的特例;矩阵规则在特例上自动还原为熟悉的数字规则,这正是「好推广」的标准。
10. 设 A = [[1, 2],[3, 4]]。算出 A + Aᵀ 与 AAᵀ,检查两者是否对称,并用转置运算律说明 AAᵀ 为什么必然对称。
提示:Aᵀ = [[1, 3],[2, 4]];A + Aᵀ = [[2, 5],[5, 8]],AAᵀ = [[5, 11],[11, 25]]——两者的 (1,2) 元都等于 (2,1) 元。原因:(AAᵀ)ᵀ = (Aᵀ)ᵀAᵀ = AAᵀ,翻两次等于没翻,正是对称的定义。A + Aᵀ 同理:(A+Aᵀ)ᵀ = Aᵀ + A = A + Aᵀ。