← 返回知识卡片总目录

DS1号 · 自学教材系列 | 线性代数

第 10 章 线性变换

这一章把第 5 章埋下的种子长成大树:矩阵 = 线性变换,且反过来,每个线性变换 = 一个矩阵。我们要看清旋转、缩放、剪切、投影这些「动作」长什么样,并理解它们为什么都叫「线性」。

🎯 本章学习目标

  1. 掌握线性变换的严格定义:直线变直线、原点不动。
  2. 理解「线性变换 ↔ 矩阵」的一一对应关系。
  3. 认识五种经典变换的几何图像与对应矩阵。
  4. 再次确认「复合变换 = 矩阵乘法」,并理解基变换思想。

10.1什么是线性变换

一个 变换(transformation),就是一个「规则」:吃进一个向量,吐出一个新向量。记为 T(v)。

但不是所有变换都叫「线性」。线性变换必须满足两条:

这两条的几何后果非常直观:

几何刻画 线性变换把直线仍变成直线,且原点(零向量)保持不动。网格线在变换后仍是一组「平行且等距」的直线。

想象一块平整的橡皮膜,你可以在上面拉伸、旋转、倾斜,但不能「揉出褶皱」或「把某点撕开」。这样的「平滑、保直、保原点」的形变,就是线性变换。

🧠 一句话记忆 线性变换 = 「直线变直线 + 原点不动」= 网格变网格。

深挖:为什么偏偏是这两条定义

初学者常问:定义为什么不干脆说「直线变直线、原点不动」,而非要摆两条代数性质?因为代数性质才可计算、可逐条检验——「直线变直线」无法用一个公式验证,而 T(u+v)=T(u)+T(v) 与 T(kv)=k·T(v) 都能代入具体数字做检查。两条合并成一条,就是「线性」二字的全部分量:

T(c₁u + c₂v) = c₁·T(u) + c₂·T(v)

它还能一路推广到任意有限项:T(c₁v₁+…+cnvn) = c₁T(v₁)+…+cnT(vn)。由此得到一个杠杆原理:想知道 T 对整个空间做了什么,只需知道它对基向量做了什么——其余向量都是基向量的线性组合,而线性组合可以原样「穿过」变换。下一节「矩阵由两列唯一确定」,全部依据在此。

两条定义还附赠几个免费结论。零向量必映到零向量:T(0) = T(0·v) = 0·T(v) = 0——「原点不动」不是额外要求,而是齐次性的必然推论。相反向量映到相反像:T(−v) = −T(v)。等分点保持:线段中点 (A+B)/2 变换后仍是两个像的中点,因为 T((A+B)/2) = (T(A)+T(B))/2。所以均匀网格变换后仍是平行等距的网格,不会「一头疏一头密」。

反过来,破坏其中任何一条,变换立刻「露馅」。三类最典型的非线性伪装者值得一次认清:

📐 例题 1 用定义判别:谁是线性变换?

判断下列变换是否线性,并说明理由:① T₁(x,y)=(2x+y, x−y);② T₂(x,y)=(x+1, y);③ T₃(x,y)=(xy, y)。

思路 先查「门卫条件」T(0)=0——不过关直接出局;过关者再用可加性、齐次性逐条验证。验证时设 u=(a,b)、v=(c,d) 最稳妥。

解 ① T₁(0,0)=(0,0),通过门卫。任取 u=(a,b)、v=(c,d):T₁(u+v)=T₁(a+c, b+d)=(2(a+c)+(b+d), (a+c)−(b+d))=(2a+2c+b+d, a+c−b−d);而 T₁(u)+T₁(v)=(2a+b, a−b)+(2c+d, c−d)=(2a+b+2c+d, a−b+c−d)。逐项比对相同,可加性成立。又 T₁(kx,ky)=(2kx+ky, kx−ky)=k(2x+y, x−y)=k·T₁(x,y),齐次性成立。故 T₁ 线性,矩阵为 [[2,1],[1,−1]](两列即 T(1,0)=(2,1)、T(0,1)=(1,−1))。

② T₂(0,0)=(1,0)≠(0,0),原点被搬走,立刻出局,无须再验。平移属于「仿射」,不属于「线性」。

③ T₃(0,0)=(0,0) 过门卫,但用「输入翻倍」检验:T₃(1,1)=(1,1),而 T₃(2,2)=(4,2)≠2·T₃(1,1)=(2,2)——第一分量 x 变 x²,倍增输入产出四倍,齐次性破坏。故 T₃ 非线性。

答:T₁ 线性,矩阵 [[2,1],[1,−1]];T₂、T₃ 非线性。 ⚠ 易错点:T(0)=0 只是必要条件——通过它不代表线性(如③),但不通过它一定非线性;做题先用它快速排雷。

辨析:线性 vs 仿射 「线性变换+平移」合称仿射变换(affine transformation)。图形与游戏引擎里的模型变换(先旋转缩放、再挪位置)几乎都是仿射。工程师的破解很优雅:把平面点 (x,y) 升维写成 (x,y,1),平移立刻变成 3×3 矩阵 [[1,0,1],[0,1,0],[0,0,1]] 的乘法——用升维把「非线性」的平移重新拉回矩阵语言,这就是图形学齐次坐标的由来。

工程场景:航电与惯导系统中,三轴加速度计固定在机体上,读出的是「机体系」分量;要得到「导航系」的速度增量,必须每个采样周期乘上当前姿态的旋转矩阵。这个操作必须是线性的——毫秒级周期里只负担得起矩阵向量乘法,而且只有线性才能让误差随叠加可分析。传感器标定、坐标转换、网格变形,背后是同一句话:把物理世界的连续形变限制在线性范畴,才能用矩阵高速计算、误差可控。

为什么工程师较真「线性 vs 仿射」这顶帽子?因为两类变换的处理管线不同:线性变换可以全程用「矩阵乘向量」叠加、合并、求逆;仿射变换多出一个平移量,软件里通常拆开处理——旋转缩放部分进 3×3 矩阵、平移量单独放第四列。仿真器每帧更新位置用「位移累加」(仿射的味道),更新姿态用「矩阵连乘」(纯线性)——两者混用是渲染与仿真代码里最经典的 bug 来源之一。概念上分清,代码里才不会把「点」当「向量」去乘。

最后把「变换」放进更广的地图:变换本质上是函数——定义域与值域都是向量集合的函数,而「线性变换」就是「保持加法与数乘两种运算结构的函数」。这与「连续函数保持极限结构」是同一种思维:先想清楚要保留什么性质,再给函数戴上紧箍咒。约束越强,能刻画的结构定理越深。线性代数之所以叫「代数」,正因为它研究的是「保运算的函数」可以被刻画到什么程度——答案惊人:平面上的全部均匀形变,只需一张 4 个数的表格就能写尽。

直观理解也值得再升级一层:线性变换不是只有「拉伸旋转」一种画面,而是一切满足「网格变网格」的形变家族——剪切像推一摞牌,投影像把影子拍在墙上,镜像像湖面倒影。本节开头的经典变换不是几个孤例,而是这个家族里气质最鲜明的几张「证件照」:恒等代表「不动」,缩放代表「只改尺度」,旋转代表「只改方向」,剪切代表「改夹角不改面积」,投影代表「降维」。拿到任何矩阵都先问一句「它像谁」,这个习惯会让后面的学习事半功倍。

10.2线性变换 ↔ 矩阵

一个深刻的结论:每个线性变换,都恰好对应一个矩阵;每个矩阵,也都对应一个线性变换。

怎么对应?用第 5 章的方法——看基向量的去向。给定线性变换 T,只要知道 T 把两个基向量 (1,0)、(0,1) 送到哪里,就能写出矩阵:

矩阵的第 1 列 = T(1,0), 矩阵的第 2 列 = T(0,1)

反过来,给定矩阵,它的两列就是基向量的去向,从而完全确定变换。这就是为什么线性代数里「矩阵」和「线性变换」可以互换使用。

核心结论 线性变换与矩阵一一对应:矩阵的列 = 基向量变换后的坐标。这是全书最重要的「翻译」——把几何动作翻译成数字表格。

推导:为什么「基向量的去向」能决定一切

这个一一对应值得亲手推一遍。设 T 是平面线性变换,任取向量 v=(a,b),先拆成基向量的组合:

v = a·e₁ + b·e₂, e₁=(1,0),e₂=(0,1)

利用上一节的「线性组合穿过变换」:

T(v) = T(a·e₁ + b·e₂) = a·T(e₁) + b·T(e₂)

把两个像的坐标写出来:设 T(e₁)=(m₁₁, m₂₁)、T(e₂)=(m₁₂, m₂₂),代入得

T(v) = a·(m₁₁, m₂₁) + b·(m₁₂, m₂₂) = (m₁₁a + m₁₂b, m₂₁a + m₂₂b)

最后这行正是第 4 章的矩阵乘向量:把四个 m 按列排成 M=[[m₁₁,m₁₂],[m₂₁,m₂₂]],就有 T(v)=Mv。看下标规律:mij 中,j 指第 j 个基向量的像,i 指该像的第 i 个坐标——所以像必须按「列」填进矩阵,这就是「矩阵的列 = 基向量的去向」的完整推导。

这也解释了矩阵的「自由度」:2×2 矩阵恰好 4 个数 = 2 个基向量的像 × 各 2 个坐标,不多不少。线性变换再复杂,全部信息都浓缩在基向量的去向上——想构造一个线性变换,只需随手画两个箭头(e₁、e₂ 的新位置),矩阵就定了;反过来拿到矩阵,把两列画成箭头,变换的几何图像立刻显形。「代数↔几何」这座桥,从此双向通车。

做个小实验感受「一一对应」:随手在纸上画两个箭头——比如 (2,0) 和 (1,3)——就等于发明了一个新变换(矩阵 [[2,1],[0,3]])。用拇指按住原点,想象整个网格被拖着变形:e₁ 被拖到 (2,0)(x 方向拉长一倍)、e₂ 被拖到 (1,3)(斜着拉长)。纸上的每个点 v,都会被送到「新基下同系数的组合」处。这个小实验说明:矩阵不是一张干巴巴的「数字表」,而是一份「搬动说明书」——四个数字写明 e₁、e₂ 的新家,其余一切点自动各就各位。

📐 例题 2 由基向量的像重构整个变换

已知线性变换 T 满足 T(1,0)=(3,1)、T(0,1)=(1,2)。① 写出 T 的矩阵;② 求 T(4,3);③ 求 T(−2,5);④ 不动用乘法,直接用「线性组合」求 T(1,1) 并用矩阵复查。

思路 基向量的像就是矩阵的两列,先拼出矩阵;之后所有像点都交给矩阵乘向量。

解 ① 第 1 列 = T(e₁)=(3,1),第 2 列 = T(e₂)=(1,2),故 M=[[3,1],[1,2]]。

② T(4,3) = M·(4,3) = (3×4+1×3, 1×4+2×3) = (12+3, 4+6) = (15,10)。

③ T(−2,5) = M·(−2,5) = (3×(−2)+1×5, 1×(−2)+2×5) = (−6+5, −2+10) = (−1,8)。

④ 只用定义:T(1,1) = T(e₁+e₂) = T(e₁)+T(e₂) = (3,1)+(1,2) = (4,3)。用矩阵复查:M·(1,1)=(3×1+1×1, 1×1+2×1)=(4,3),两条路答案一致——矩阵乘法规则本来就是从「线性组合」推出来的,殊途同归是应有之义。

答:M=[[3,1],[1,2]];T(4,3)=(15,10);T(−2,5)=(−1,8);T(1,1)=(4,3)。 ⚠ 易错点:两列顺序不能颠倒,T(e₁) 永远在第 1 列;草稿上把像点横着写时,记得转成竖列再乘。

辨析:列视角 vs 行视角 同一个 Mv 有两种读法。列视角(本节):Mv 是各列的加权组合,权重是 v 的分量——几何味浓,适合理解「变换做了什么」;行视角(第 4 章):Mv 的第 i 分量 = 第 i 行与 v 的点积——计算味浓,适合手算与编程。几何直觉用列、具体计算用行,随时切换两种读法,是线代成熟的标志。

工程场景:机翼结构分析前,要把翼肋上数百个网格节点从「局部图纸坐标」搬到「全机坐标」,做法是给每个节点坐标左乘同一个安装角度矩阵(旋转+缩放)。正因为变换线性,图纸上的直杆变换后仍是直线、平行桁条变换后仍平行,几何关系无损搬进全机模型。装机复查时抽查的正是例题 2 的思路:挑两三个「基方向」上的节点,看它们是否被送到了正确位置——基对了,整个网格就对。

顺手做一次全书会师:矩阵向量乘法 Mv 同时是三个角色——几何上,它是「变换 M 作用于点 v」(本章);组合上,它是「M 的各列按 v 的分量加权合成」(例题 2 的 ④);方程上,「求 x 使 Mx=v」是第 6 章的主角。三个视角在例题 2 里全部出场过:用组合视角拼出矩阵,用方程视角验算乘法,用几何视角想象两个箭头张成的新网格。以后凡遇矩阵,先问一句「此刻我在用哪个视角」——切换自如之后,线代题目的难度会肉眼可见地下降。

10.3五种经典变换

下面五种变换,是理解一切复杂变换的「积木」。观察每种变换把单位正方形(灰框)变成什么。

① 恒等变换:什么都不做

矩阵 I = [[1,0],[0,1]]。基向量原地不动,正方形保持原样。它是「零动作」,也是所有变换的「单位」。

② 缩放:沿坐标轴拉伸/压缩

矩阵 [[s₁,0],[0,s₂]]:x 方向缩放 s₁ 倍、y 方向缩放 s₂ 倍。当 s₁=s₂ 时叫「均匀缩放」,图形只是等比例放大;不相等时是「各向异性缩放」,正方形变矩形。

缩放变换 矩阵 [[2,0],[0,1]] 把单位正方形横向拉长为原来的两倍。 单位正方形 ⟶ [[2,0],[0,1]] 横向拉长 2 倍
图 10-1缩放:[[2,0],[0,1]] 把正方形横向拉成两倍宽的矩形。

值得把缩放矩阵的两条「退化路线」看清楚——五种积木其实是相通的。其一,均匀缩放 s₁=s₂=s 是相似变换:只改大小、不改形状,网格仍是正交网格,一切夹角不变;工程上等比放样、图纸按 1:50 出图,用的都是它。其二,缩放系数走向极端时会「变身」:s₂→0 时缩放退化为投影(y 方向被彻底压没);s₂=−1 时它变成镜像(y 方向翻转)。可见「积木」并非孤岛,而是同一家族里参数取极端值时的不同面孔——这也是工程师喜欢把一切坐标变换拆成「旋转×缩放×旋转」的原因(第 12 章会兑现这个直觉)。

工程场景:结构设计中「等强度」思想落在缩放矩阵上就是各向异性缩放——按弯矩分布调整截面尺寸,相当于对几何施加不均匀缩放;实测载荷折算为设计载荷时的「载荷系数」,则是均匀缩放的日常形态。缩放是所有变换中唯一「不动任何方向」的:坐标轴在缩放下原样保留,这也让它在分解复杂变换时充当「主干」。

③ 旋转:绕原点转动

逆时针旋转 θ 角的矩阵是 [[cosθ, −sinθ],[sinθ, cosθ]]。旋转不改变图形的大小和形状,只改变朝向——所以它的行列式恒为 1(第 7 章那个「旋转面积不变」的例子)。

旋转变换 矩阵把正方形逆时针旋转九十度,形状大小不变。 单位正方形 ⟶ 旋转 90° 原地转 90°,形状不变
图 10-2旋转:正方形绕原点转 90°,位置变了,形状大小不变。

深挖:旋转矩阵为什么长这样

[[cosθ,−sinθ],[sinθ,cosθ]] 不是硬背的口诀,而是「基向量去向法」现推的结果。让 e₁=(1,0) 逆时针转 θ:按三角函数定义,它落在单位圆上角度 θ 处,坐标正是 (cosθ, sinθ)——这就是第 1 列。e₂=(0,1) 原在 90° 位置,转 θ 后到 90°+θ 处,用诱导公式 cos(90°+θ)=−sinθ、sin(90°+θ)=cosθ,所以 e₂ 的像是 (−sinθ, cosθ)——这就是第 2 列。两列一拼:

R(θ) = [[cosθ, −sinθ],[sinθ, cosθ]]

旋转矩阵的推导 单位圆上,基向量 e1 逆时针旋转 θ 后落在 (cosθ, sinθ),e2 落在 (−sinθ, cosθ),两列拼出旋转矩阵。 θ e₁=(1,0) T(e₁)=(cosθ, sinθ) e₂=(0,1) T(e₂)=(−sinθ, cosθ) 用「基向量去向法」现推旋转矩阵 e₁ 转 θ 落到 (cosθ, sinθ) → 第 1 列 e₂ 转 θ 落到 (−sinθ, cosθ) → 第 2 列 R(θ) = [[cosθ, −sinθ],[sinθ, cosθ]] 两列长度都是 1、互相垂直; det = cos²θ + sin²θ = 1:转而不缩、面积不变。
图 10-3旋转矩阵的推导:两个基向量各自转过 θ,落点的坐标按列填入,即得 R(θ)。

这个推导顺带解释了旋转矩阵的三大性质:每列长度为 1(基向量转动不伸缩,单位圆被映成单位圆);两列互相垂直(正交基转完仍是正交基);行列式 cosθ·cosθ−(−sinθ)·sinθ = cos²θ+sin²θ = 1(面积不变)。这样的矩阵有专名——正交矩阵(orthogonal matrix),标志是与自己的转置相乘得单位矩阵:R(θ)ᵀ·R(θ)=I,即「转置就是逆」:往前转 θ 的撤销操作就是往回转 θ,而代数上恰是取转置。姿态解算、坐标转换的代码里满屏都是正交矩阵,根源就在这里。

一个高频辨析:矩阵 [[cosθ, sinθ],[−sinθ, cosθ]](注意 sin 的符号位置互换)是顺时针旋转 θ。它与逆时针版本互为转置、也互为逆——「逆时针转 θ 的撤销」就是「顺时针转 θ」。记忆锚点用例题 3 的办法:把 e₁=(1,0) 代进去,看它落向第一象限(逆时针)还是第四象限(顺时针)。角度以「逆时针为正」的约定来自右手系传统,数学教材与工程图纸一致,例题与手册不必再各自声明。

📐 例题 3 给定点算旋转像点(雷达屏的坐标旋转)

机载雷达屏幕上,某目标相对载机的方位向量为 P=(3,1)(单位 km;x 轴指向机头,y 轴指向左翼)。① 屏幕整体逆时针旋转 90° 后,目标显示坐标是多少?② 若逆时针旋转 45° 呢(√2 保留、并给近似值)?

思路 写对旋转矩阵,代入 P 做矩阵乘向量;90° 练特殊角,45° 练一般角;算完用「长度不变」复查。

解 ① θ=90°:cosθ=0、sinθ=1,R=[[0,−1],[1,0]]。R·P = (0×3+(−1)×1, 1×3+0×1) = (−1, 3)。

② θ=45°:cosθ=sinθ=√2/2,R=[[√2/2, −√2/2],[√2/2, √2/2]]。R·P = (√2/2×3−√2/2×1, √2/2×3+√2/2×1) = (√2/2×2, √2/2×4) = (√2, 2√2) ≈ (1.41, 2.83)。

复查 旋转不改变长度:|P|=√(3²+1²)=√10;90° 情形 |(−1,3)|=√(1+9)=√10 ✓;45° 情形 |(√2,2√2)|=√(2+8)=√10 ✓。两条路都对得上,放心。

答:① (−1,3);② (√2, 2√2) ≈ (1.41, 2.83)。 ⚠ 易错点:逆时针旋转的 −sinθ 在矩阵右上角(第 1 行第 2 列);把符号挪到左下角就成了顺时针旋转,屏幕上目标方位会左右颠倒。

工程场景:惯导解算的每一步都在乘旋转矩阵:机体的俯仰、滚转、偏航各对应一个旋转矩阵,连乘成一个「姿态矩阵」,把传感器坐标系的读数换算到导航系。因为旋转矩阵是正交的(转置=逆),「求逆」不放大误差,且轴之间的夹角关系永远保持——这是姿态算法敢在毫秒级循环里反复连乘的底气。显示器画面随载体姿态转动、雷达天线随扫描角旋转,屏幕坐标刷新用的也是同一个 R(θ):角度每变一小步,矩阵就重算一次,屏幕上成千上万个坐标点逐个左乘,全部是「矩阵×向量」。

④ 剪切:把正方形「推斜」

矩阵 [[1,k],[0,1]] 表示「剪切」:x 坐标不动,y 每增加 1,x 就被水平方向多推 k 格。正方形被「推」成平行四边形。

剪切变换 矩阵 [[1,1],[0,1]] 把正方形推斜成平行四边形。 单位正方形 ⟶ [[1,1],[0,1]] 推斜成平行四边形
图 10-4剪切:正方形被「推」成平行四边形,面积保持不变(行列式仍为 1)。

剪切的物理原型随处可见:流体流过平板时,贴壁一层几乎不动、离壁越远流速越大,速度剖面就是一个「剪切场」;一摞纸放平,手掌推最上面一张,纸层层层错动,也是剪切。参数 k 的几何含义要读准:y 每升高 1 格,x 就多推进 k 格——k 是「水平错动量随高度的变化率」。剪切不改变面积(det=1),却会改变对角线方向与夹角;特别地,水平剪切下任何竖直线都变斜,而水平线纹丝不动——e₁ 所在的水平方向就是剪切的「不动方向」。这种「变而不缩、方向不变」的特殊方向,正是第 11 章特征向量的预告片:哪怕是最「歪」的变换,也往往藏着几个不肯转向的方向。

工程场景:材料力学里的切应力作用在微元上,产生的正是微小剪切变形——剪切矩阵是「切应变」的几何化身。蒙皮受剪、铆钉受剪、螺栓受剪,破坏大多发生在「层与层错动」的方向上;工程师反复强调「抗剪校核」,几何原型就是本节的推斜动作。再看流体:边界层内速度剖面层层错开,也是剪切场的连续版本。

⑤ 投影:把空间「拍扁」

矩阵 [[1,0],[0,0]] 把每个向量投到 x 轴上:y 坐标被抹掉。正方形被「拍扁」成一条线段。注意它的行列式是 0——这就是第 7 章说的「降维」,投影是不可逆的。

投影变换 矩阵 [[1,0],[0,0]] 把正方形压扁成 x 轴上的一条线段。 单位正方形 ⟶ [[1,0],[0,0]] 压扁成一条线(降维)
图 10-5投影:正方形被「拍扁」成 x 轴上的一条线段,维度从 2 降到 1,行列式为 0。

投影把「行列式为 0」的含义一次说透——这是全书三条主线的交汇点。其一,几何线:det 是面积缩放率,投影把平面压成直线,面积缩放率恰为 0。其二,方程线(第 8 章):det=0 意味着逆矩阵不存在——像上一点 (4,0) 对应原平面上整整一条直线 (4,t) 的原像,「从像还原原」没有唯一答案,撤销动作无从定义。其三,空间线(本节稍后的核与像):整整一个方向(y 轴)被送进零向量,信息在核中湮灭。三条线说的是同一件事的三个侧面:降维=丢信息=不可逆。工程上处理投影的正确姿势从来不是「假装没丢」,而是把丢失的信息另行存档(如渲染里的深度缓冲),或干脆在设计阶段就只依赖「像」里的信息做判断。

投影矩阵还有一个可爱的代数签名——幂等性 P²=P:投一次之后再投一次,结果还在原地(已经落在 x 轴上的点,再投影纹丝不动)。手算验证:[[1,0],[0,0]]² 的第一行 = (1×1+0×0, 1×0+0×0) = (1,0),第二行 = (0,0),平方仍等于自身。这个性质是「投影」的代数定义(第 11 章会看到:幂等矩阵的特征值只能取 0 或 1,正对应每个方向「消失/留下」两种命运)。

顺带分清两种投影:正交投影沿垂直方向「拍」到直线上(本节的 [[1,0],[0,0]] 就是沿 y 方向拍到 x 轴);斜投影沿斜方向拍。两者都幂等、都降维,区别只在「拍的方向」。工程图纸的正投影三视图用正交投影;太阳斜照下影子在地面上的拉伸,更接近斜投影。教材与手册不特别说明时,默认都是正交投影。

五种经典线性变换速查
变换矩阵几何效果行列式
恒等[[1,0],[0,1]]不动1
缩放[[s₁,0],[0,s₂]]沿轴拉伸s₁·s₂
旋转[[cosθ,−sinθ],[sinθ,cosθ]]绕原点转动1
剪切[[1,k],[0,1]]推斜1
投影[[1,0],[0,0]]拍扁到轴0

补第六块积木:镜像(反射)

速查表之外还有一块常用积木——镜像。关于 x 轴翻转的矩阵是 [[1,0],[0,−1]]:e₁ 原地不动、e₂ 掉头向下,整个平面变成自己的「上下反演」。它的行列式 = 1×(−1)−0×0 = −1。对照第 7 章可知:行列式的绝对值是面积缩放率,而符号是「定向」标记——正号表示变换后网格手性不变(旋转、剪切都是正),负号表示手性翻转(镜像是负)。右手系变左手系、逆时针变顺时针,都由这个负号负责。镜像矩阵同样是正交矩阵(转置=逆:照两次镜子回到原样),它不改长度、只翻定向,是「保距变换」家族的一员。

📐 例题 4 缩放与投影的组合(侧视图的降维)

翼面俯视图上一处接头坐标为 (2,1)(单位 m)。制图流程先做各向异性缩放 S=[[2,0],[0,3]](横向 2 倍、纵向 3 倍),再做投影 P=[[1,0],[0,0]](拍扁到 x 轴,生成侧视示意)。① 分步求最终像点;② 用复合矩阵一步到位;③ 换成「先投影、后缩放」,结果如何?为什么这回两种顺序恰好等价?

思路 「先 S 后 P」对应复合矩阵 PS(后做的在左),分别计算 PS 与 SP 作用在点上的结果,对比即可。

解 ① 分步:S·(2,1) = (2×2, 3×1) = (4,3);再 P·(4,3) = (4,0)。最终像点 (4,0)。

② 复合:PS = P·S,第一行 = (1×2+0×0, 1×0+0×3) = (2,0),第二行 = (0,0),故 PS=[[2,0],[0,0]];PS·(2,1) = (2×2+0×1, 0) = (4,0),与分步一致。

③ 反序:SP = S·P,第一行 = (2×1+0×0, 2×0+0×0) = (2,0),第二行 = (0,0),故 SP=[[2,0],[0,0]];SP·(2,1) = (4,0)——居然相同。原因:S、P 都是对角矩阵,对角矩阵彼此可交换;几何上,投影把 y 坐标整条抹掉,于是「先纵向拉伸再抹」与「先抹掉、再对已消失的 y 做纵向拉伸」殊途同归。⚠ 这是特例:一旦中间插入一次旋转(非对角阵),顺序效应立刻现身——见例题 5。

答:①②③ 最终像点均为 (4,0);两序等价仅因对角阵可交换,不可推广为一般规律。 ⚠ 易错点:复合矩阵书写顺序与执行顺序相反——「先做的变换写在乘积的右边」。

工程场景:投影降维无处不在。航电生成顶视/侧视/前视三视图,本质是用投影矩阵把三维机体坐标「拍扁」到不同平面;图纸上标注的杆长,是真实杆件在纸面上的投影长度。液压作动筒把输出力 F 化为沿连杆轴线的有效推力,做法是把力向量点乘轴线单位向量——那正是投影的代数内核(有效分量 = 模长×夹角余弦)。投影的代价是信息损失:三维场景投到二维屏幕后「谁前谁后」被一并压扁,渲染管线必须另存一份深度缓冲(z-buffer)才能正确处理遮挡——降维不可逆,工程上用「备份数据」补救。

至此积木箱齐了:恒等、缩放、旋转、剪切、投影、镜像。一个自然的问题是——六块积木能搭出所有 2×2 变换吗?答案是肯定的,而且有句漂亮的口号:任何变换都能「先转到合适的角度,沿轴缩放(含翻转),再转回去」。把「转角」交给旋转、「伸缩」交给对角阵,就得到「旋转×对角×旋转」三连乘。这个直觉版可以先记下来,学完第 11、12 章后会看到它的严格版本——那正是特征分解与奇异值分解的思想内核。

10.4复合 = 乘法,再谈基变换

第 5 章已经证明:两个线性变换连着做(复合),对应的矩阵就是相乘。这一章我们再次确认:先做 B、后做 A,等价于作用复合矩阵 AB。

这里再点出一个重要视角——基变换。矩阵的列,本质上是在回答「我用哪组基来丈量空间」。标准基 (1,0)、(0,1) 是最常用的尺子,但有时换一把尺子(换一组基)会让问题大大简化。比如下一章,我们会找一组「变换后方向不变」的特殊基——特征向量,让矩阵变成最简单的对角形式。

伏笔 「换基」是线性代数的深层技能。同一个变换,在不同基下有不同的矩阵,但它们描述的是同一个几何动作。找「好基」,就是下一章特征值分解要干的事。

算一算:复合的顺序为什么不能乱

📐 例题 5 先剪切再旋转 ≠ 先旋转再剪切(AB≠BA 逐点验证)

取旋转 A=[[0,−1],[1,0]](逆时针 90°)与水平剪切 B=[[1,1],[0,1]]。① 求两个复合矩阵 AB 与 BA;② 用点 (1,0) 分别走两条「几何路线」验证;③ 检查两种复合是否都保持面积。

思路 「先 B 后 A」= 复合矩阵 AB(后做的在左)。算完矩阵,务必再走一遍分步几何自查。

解 ① AB = [[0,−1],[1,0]]·[[1,1],[0,1]]:第一行 = (0×1+(−1)×0, 0×1+(−1)×1) = (0,−1);第二行 = (1×1+0×0, 1×1+0×1) = (1,1)。故 AB=[[0,−1],[1,1]]。BA = [[1,1],[0,1]]·[[0,−1],[1,0]]:第一行 = (1×0+1×1, 1×(−1)+1×0) = (1,−1);第二行 = (0×0+1×1, 0×(−1)+1×0) = (1,0)。故 BA=[[1,−1],[1,0]]。两个复合矩阵明显不同。

② 几何验证。路线一「先剪切后旋转」:剪切不动 e₁(B·(1,0)=(1,0)),再旋转得 A·(1,0)=(0,1);核对 AB·(1,0) = (0×1+(−1)×0, 1×1+1×0) = (0,1) ✓。路线二「先旋转后剪切」:旋转送 (1,0)→(0,1),再剪切得 B·(0,1) = (0+1, 1) = (1,1);核对 BA·(1,0) = (1×1+(−1)×0, 1×1+0×0) = (1,1) ✓。同一起点,两条路到达不同终点——顺序本身就是内容。

③ det(AB) = 0×1−(−1)×1 = 1;det(BA) = 1×0−(−1)×1 = 1;也可用行列式乘法性质:det(AB)=det(A)·det(B)=1×1=1。旋转与剪切都保面积,先后组合仍保面积——两种顺序殊途同归地「不丢面积」。

答:AB=[[0,−1],[1,1]],BA=[[1,−1],[1,0]];作用在 (1,0) 上分别得 (0,1) 与 (1,1)。 ⚠ 易错点:「先做的变换在乘积右边」——矩阵乘法的书写顺序与动手顺序相反,是本节最高频事故点。

核与像:变换的「入口档案」与「出口清单」

评价一个变换「吞掉了什么、产出了什么」,标准工具是一对子空间。核(kernel,记 ker T):所有被送到零向量的输入,ker T = {v : T(v)=0}——进来就消失的点;像(image,记 im T):所有可能被产出的输出,im T = {T(v) : v 遍历整个空间}——变换的「产品目录」。用第 9 章的语言翻译:im T 就是矩阵各列张成的空间,其维度正是矩阵的秩;ker T 则是齐次方程 Mv=0 的全部解。

以投影 M=[[1,0],[0,0]] 为例:y 轴上每一点 (0,t) 都被拍到原点,所以 ker T 是整条 y 轴(1 维);所有输出都落在 x 轴上,所以 im T 是整条 x 轴(1 维)。两个维数相加恰等于输入空间的维数:1+1=2。这不是巧合,而是一般规律——维数公式 dim(ker T) + dim(im T) = n(秩-零化度定理的几何形态):n 个维度的「信息预算」,一部分在核里湮灭,其余全数流向像。可逆变换(第 8 章 det≠0)是极端特例:核里只剩零向量、像填满全空间——信息零损失,变换才能被完美撤销。

把维数公式与第 9 章的秩接上:dim(im T) = r(M)(矩阵的秩),于是 dim(ker T) = n − r(M)——这正是第 6 章「n 个未知数、r 个有效方程,剩 n−r 个自由变量」的几何化身。例题 6 中 r=2、自由变量 0 个(核只含零向量);投影中 r=1、自由变量 1 个(核是一整条 y 轴)。「秩」「自由变量个数」「核的维数」,三个术语讲一个故事:信息量守恒。

投影的核与像 投影矩阵把整个平面压到 x 轴:y 轴上所有点被送到原点构成核,x 轴是像。 v₁=(2,1) 像 (2,0) v₂=(−1,0.5) 像 (−1,0) v₃=(0,1.5) 虚线:每个点被投影矩阵送往自己的像;v₃ 被送到原点 投影 M=[[1,0],[0,0]] 的核与像 ker T = 整条 y 轴(v₃ 这类点进来就消失) im T = 整条 x 轴(全部可能的产出) dim ker T + dim im T = 1 + 1 = 2 1 维在核中湮灭,1 维流向像,输入预算守恒。 可逆变换则是:ker T 只含零向量,im T 填满全平面。
图 10-6投影变换的核与像:y 轴整个是核(被送到零向量),x 轴是像;维数公式 1+1=2 守恒。

📐 例题 6 求剪切变换的核与像

求水平剪切 T(x,y)=(x+2y, y)(矩阵 [[1,2],[0,1]])的核与像,并判断变换是否可逆。

思路 核 = 解齐次方程「矩阵×v = 0」;像 = 两列张成的空间;可逆性用行列式判断,再用「核是否只含零向量」交叉验证。

解 求核:令 (x+2y, y) = (0,0)。第二个分量给出 y=0,代回第一个分量得 x+2×0=0,故 x=0。于是 ker T = {(0,0)},只有零向量——没有非零点会在剪切中消失。

求像:两列 (1,0) 与 (2,1) 不成比例(线性无关),张成整个平面,故 im T = R²。用维数公式对账:dim ker + dim im = 0 + 2 = 2 ✓。

可逆性:det[[1,2],[0,1]] = 1×1−2×0 = 1 ≠ 0,可逆。至此「行列式非零、核只含零向量、像填满全空间、方程总有唯一解」四种说法再次互证——它们本是同一件事的四张面孔。

答:ker T={0},im T=R²,变换可逆(det=1)。 ⚠ 易错点:求核时别只看「y=0」就宣称核是 x 轴——必须把每个分量方程全部解完,最后再用维数公式对账。

工程场景:结构分析把斜撑杆轴力「分解」到节点坐标方向,是投影(像=有效分量,核=垂直方向的无效分量);信号处理把含噪测量「投影到信号子空间」去噪,是核与像思路的反用;网格生成软件剔除退化三角形的判据,是面积映射的行列式趋近 0——核在膨胀、像在坍缩的量化信号。凡是需要判断「这步变换丢没丢信息」的场合,先看核与像。

「换基」补一个可触摸的画面。剪切矩阵 [[1,2],[0,1]] 在标准坐标下,两列 (1,0)、(2,1) 看着并不「整齐」;但若把尺子换成沿「不动的水平方向」与「被推斜的方向」来度量,同一个变换的数字面孔立刻简洁许多。矩阵的具体数字取决于用哪把尺子量,而变换这个「动作」与尺子无关——就像同一段航程,用海里记和用公里记数字不同,航程本身没变。挑一把让数字最简洁的尺子,就是「换基」的全部动机;下一章的特征向量,就是为每个变换量身定制的「最好尺子」。

承上启下 本章把「变换-矩阵」词典装配完毕:列=基像、复合=乘积、核与像=信息流。但还有一问没答:有没有哪个方向,变换只拉伸、不转向?——找到这些「不变方向」(特征向量),矩阵就能对角化,计算瞬间变简单。这是第 11 章的全部使命,也是「换好基」的终极回报。

收束成一张随身词典:变换 ↔ 矩阵(列=基像);复合 ↔ 乘法(后做的在左);撤销 ↔ 逆矩阵(det≠0 才存在);缩放率 ↔ 行列式(符号=定向);信息流 ↔ 核与像(维数公式守恒)。这张词典表在第 11、12 章还要继续扩充,但骨架已经立稳:几何的每个动作,都有代数的一个记号。

本章小结

  1. 线性变换:满足可加性、齐次性,几何上「直线变直线、原点不动」。
  2. 线性变换 ↔ 矩阵一一对应:矩阵的列 = 基向量的去向。
  3. 五种基本变换:恒等、缩放、旋转、剪切、投影,任何变换都能由它们组合而成。
  4. 投影让行列式为 0(降维),旋转/剪切行列式为 1(保面积)。
  5. 复合 = 乘法;换基能让同一变换呈现不同矩阵。

读完本章,你应该能……

思考题

1. 为什么「原点不动」是线性变换的必要条件?

提示:由齐次性,T(0)=T(0·v)=0·T(v)=0,原点必然被送到原点。

2. 平移变换 T(v)=v+(1,0) 是线性变换吗?

提示:不是。T(0)=(1,0)≠0,原点被移动了,违反齐次性。

3. 旋转 90° 的矩阵把 (1,0) 送到哪?把 (0,1) 送到哪?

提示:(1,0)→(0,1),(0,1)→(−1,0)。这两列正是旋转矩阵 [[0,−1],[1,0]]。

4. 为什么「先旋转再剪切」和「先剪切再旋转」结果一般不同?

提示:这是第 5 章「复合 = 乘法」的直接体现:动作顺序不可交换,所以对应矩阵 AB ≠ BA。

5. 镜像矩阵 [[1,0],[0,−1]] 把单位正方形变成什么?行列式说明什么?

提示:e₁ 不动、e₂ 掉头,正方形翻到 x 轴下方,形状大小不变、手性翻转;det = 1×(−1)−0×0 = −1,负号=定向翻转(对照第 7 章「定向面积」)。

6. 用维数公式 dim ker T + dim im T = 2 说明:平面上的投影为什么必然「吞掉整整一个方向」?

提示:投影把平面压到一条直线,dim im T = 1,于是 dim ker T = 2−1 = 1 必然存在——整整一个方向(y 轴)被送回原点。维度守恒像信息预算:流向像的用掉了,剩下的全在核里湮灭。

7. 图形引擎为什么宁可用 3×3 矩阵来表示平移?

提示:把 (x,y) 升维为 (x,y,1),平移写成 [[1,0,tx],[0,1,ty],[0,0,1]] 的乘法——仿射变换统一进矩阵语言后,旋转、缩放、平移可连乘成一个复合矩阵,每帧对每个顶点只需一次矩阵乘法。

8. 关于直线 y=x 的镜像矩阵是什么?先猜再验证。

提示:镜像把 e₁=(1,0) 送到 (0,1)、把 e₂=(0,1) 送到 (1,0)——两列互换,矩阵就是 [[0,1],[1,0]];det = 0×1−1×1 = −1,定向翻转,与「照镜子左右互换」的直觉一致。

9. 验证投影矩阵 P=[[1,0],[0,0]] 满足 P²=P,并解释为什么「连投两次」等于「投一次」。

提示:P² 的第一行 = (1×1+0×0, 1×0+0×0) = (1,0),第二行 = (0,0),故 P²=P。因为第一次投影后所有点都已在 x 轴上,而 x 轴上的点再投影不动——「已经完成的动作重复做,不会改变结果」。

10. 剪切矩阵 [[1,2],[0,1]] 把 (1,1) 送到哪里?先算再画,验证「水平方向不动」。

提示:[[1,2],[0,1]]·(1,1) = (1×1+2×1, 0×1+1×1) = (3,1)。水平方向上 (1,0) 映到 (1,0) 不动;y 每升 1 格、x 多推 2 格——(1,1) 的 y 是 1,所以 x 从 1 被推到 3。