线性变换与矩阵
上一章认识了四个基本子空间。那时我们说,列空间装着全部可能的输出,零空间装着会被矩阵压成零的输入。现在把这句话里的“输出”和“压成零”当成真正的动作来看:矩阵接过一个向量,按照固定规则改造它,再吐出另一个向量。
所以这一章不再把矩阵只看成一张数表。矩阵更像一台变换机器。你给它一支箭头,它可以把箭头转向、拉长、剪斜、翻面,也可以把一个方向彻底压没。矩阵乘法那些看上去有些古怪的规则,正是为了让这些动作能够被记录、接力和计算。

把向量送进矩阵,得到的 Ax 就是这台变换机器的输出。
本章主要讨论 T:Rn→Rm。输入有 n 个坐标,输出有 m 个坐标,所以表示它的矩阵有 n 列、m 行。列数跟着输入走,行数跟着输出走。
矩阵是一台“吃向量、吐向量”的机器
先看一台具体的机器:
A=[21−13]
把向量 x=(x1,x2) 送进去,输出是
Ax=[21
比如输入 (2,1),输出就是 (3,5)。但只算这一个向量,还看不出矩阵真正做了什么。矩阵定义的是一整套规则:平面上的每一支箭头都要经过同一台机器,整个坐标网格也会随之一起变形。
把这件事写成函数,就是
T(x)=Ax
普通函数 f(t) 喂进去一个数,吐出来一个数;矩阵函数 T(x) 喂进去一支向量,吐出来另一支向量。输入所在的空间叫定义域,全部可能输出组成的空间叫像。
行在算坐标,列在讲动作
计算 Ax 时,可以让矩阵的每一行分别和 x 做点积。这样很适合算数字:第一行算输出的第一个坐标,第二行算输出的第二个坐标。
理解几何动作时,列的看法更有用。把 A 的两列记作 a1,a2,那么
Ax=x1a1+x2a
对上面的矩阵,这句话是
Ax=x1[21]+
输入里的 x1,x2,原本表示沿两个坐标轴各走多少;变换后,同样两个系数改为沿矩阵的两列各走多少。矩阵的列,就是旧坐标方向被改造成的新方向。
“线性”是在要求动作彼此兼容
不是每个“输入向量、输出向量”的函数都能写成普通矩阵乘法。矩阵能表示的是线性变换。所谓线性,不是在说图像看起来像一条直线,而是在说这台机器不会破坏“相加”和“缩放”这两种基本动作。
相加前后要对得上
第一条要求是
T(u+v)=T(u)+T(v)
想象 u 是“先向东走两步”,v 是“再向北走一步”。你可以先把两段路合成一支总位移 u+v,再送进机器;也可以把 u,v 分别送进机器,再把两个输出相加。线性要求两条路线最后必须到同一个地方。
这不是装饰性的公式。它保证变换真的尊重向量加法,不会因为你把同一段移动拆成两步,结果就突然变掉。
放大前后也要对得上
第二条要求是
T(cu)=cT(u)
如果输入箭头先放大 c 倍再变换,结果应该等于先变换、再把输出放大 c 倍。特别地,当 c=−1 时,反向的输入必须得到反向的输出;当 c=0 时,零向量只能被送到零向量。
两条要求合起来,可以写成更紧凑的一句话:
T(cu+dv)=cT(u)+dT(v)
这表示线性变换可以“穿过”任何线性组合。上一章用基向量拼出空间,这一章之所以只看基向量就能确定整个变换,靠的就是这条性质。
线性变换一定固定原点,因为 T(0)=0。所以平移 S(x,y)=(x+3, 虽然会把直线变成直线,也会保持图形形状,却不是线性变换。它把原点搬到了 。能不能保持原点,是很快的排除法,但通过这项检查还不等于已经证明线性。
怎样辨别非线性
来看三个变换:
T(x,y)=(2x−y,x+3y)
S(x,y)=(x+1,y)
Q(x,y)=(x2,y)
T 可以直接写成矩阵乘法,所以它保持所有线性组合:
T(x,y)=[21−1
S 不是线性的,因为 S(0,0)=(1,0)。Q 虽然固定原点,却还是不线性。取 u=(1,0),就有
Q(2u)=Q(2,0)=(4,0)
但
2Q(u)=2(1,0)=(2,0)
它没有遵守数乘。平方、坐标相乘、绝对值、三角函数,以及“把每个向量变成长度为 1 的单位向量”这类规则,通常都会破坏线性。
线性变换会保留什么
线性变换不保证长度、角度和面积不变。剪切会改角度,缩放会改长度,投影甚至会把面积变成零。它真正保证的是:
- 原点留在原点;
- 过原点的直线仍落在过原点的直线或一个点上;
- 平行的网格线变换后仍然平行,除非某个方向被压没;
- 向量之间的线性组合关系保持不变。
例如过原点的直线可以写成 x=tv。变换后
T(tv)=tT(v)
所有输出仍沿着同一个方向 T(v) 排列。若 T(v)=0,整条线就被压成原点。
只看基向量,就能造出整台机器
在 R2 中,标准基向量是
e1=[10],e
任意向量都能唯一写成
x=x1e1+x2e2
若 T 线性,那么
T(x)=x1T(e1)+x2
这意味着不需要逐点记录整个平面会怎样变。只要知道横轴单位箭头 e1 去了哪里、纵轴单位箭头 e2 去了哪里,其他向量的去向就被迫确定了。

第一列记录 T(e1),第二列记录 T(e2);列的顺序不能交换。
标准矩阵为什么按列摆
假设
T(e1)=[ac]
把两根输出箭头按顺序并排,得到
A=[acbd]
于是
Ax=x1[a
“第 j 列等于 T(ej)”并不是一个方便记忆的小窍门,而是矩阵表示线性变换的来源。矩阵乘向量采用“列的线性组合”,正是为了让基向量的去向能够自动推广到所有输入。
完整例题:从两根基向量算到任意输入
一个线性变换 T:R2→R3 满足
T(e1)=
求它的标准矩阵,并计算 T(3,−2)。
输入空间是二维,所以矩阵有两列;输出空间是三维,所以每一列有三个分量。把 T(e1) 放在第一列、T(e2) 放在第二列:
检查矩阵尺寸也能防错:3×2 矩阵接收二维输入,给出三维输出,正好符合题意。
旋转、缩放、剪切、反射和投影
常见几何矩阵不必死背。每次都问同一个问题:“e1 去了哪里,e2 去了哪里?”把答案按列排起来,矩阵自然会出现。

旋转和缩放使用不同规则改造平面,但都固定原点。
旋转:两根单位箭头一起转
绕原点逆时针旋转角度 θ。e1 原来指向 0∘,转完后是
T(e1)=[cosθsinθ]
e2 原来比 e1 多转了 90∘,所以它的像是
T(e2)=[−sinθcosθ]
两列并起来就是旋转矩阵:
Rθ=[cosθsinθ
当 θ=90∘ 时,
R90∘=[0
缩放:两个坐标方向各乘一个倍数
若横向乘 sx,纵向乘 sy,那么
e1↦sxe1,e2
所以
D=[sx00s
它把 (x,y) 变成 (sxx,syy)。当两个倍数相等时,图形等比放大或缩小;当它们不同,圆会被拉成椭圆。若某个倍数是负数,对应方向在缩放之外还会翻到坐标轴另一侧。若某个倍数为零,那个方向就被完全压没。
剪切:高度不变,横向滑动
把一摞纸的上沿往右推,底边不动,中间各层按高度滑动,这就是水平剪切。它的矩阵是
Hk=[10k1
因为
Hk[xy]=[
高度 y 不变,横坐标多出 ky。站得越高,横向滑得越远。由基向量看也很清楚:e1 不动,e2 变成 。

剪切改变角度,却保留了平行关系;这个例子中底和高不变。
反射:沿一条镜线翻到另一侧
关于 x 轴反射时,横坐标不变,纵坐标变号:
Fx=[10
关于直线 y=x 反射时,两个坐标交换:
Fy=x=[01
更一般地,若镜线与 x 轴夹角为 θ,反射矩阵是
Fθ=[cos2θsin2θ
反射不会丢掉信息。再做一次同样的反射,所有向量都会回到原处,因此 Fθ2=I。
投影:把垂直分量压掉
投影到 x 轴时,(x,y) 只保留横向分量:
Px=[10
这里发生了一件反射不会发生的事:不同输入可能得到同一个输出。例如 (2,3)、(2,−1) 和 (2,0) 全都落到 (2,0)。竖直方向的信息已经被压掉,无法从输出恢复。
若投影目标是与 x 轴夹角为 θ 的直线,取这条线上的单位向量
u=[cosθsinθ]
投影矩阵是
Pθ=uuT=[
做一次投影后,向量已经落在目标直线上,再投一次不会继续改变,所以
Pθ2=Pθ

投影会丢掉垂直分量;反射保留长度,只把向量翻到镜线另一侧。
与其背五类矩阵,不如每次画出 e1,e2 的去向。旋转矩阵的三角函数、剪切矩阵里 k 的位置、反射矩阵的正负号,都能从两根基向量重新造出来。
核与像:哪些输入被压没,输出能到哪里
上一章的零空间和列空间,现在可以直接读成变换的两个几何部件。
核是“机器看不见的方向”
线性变换 T(x)=Ax 的核是
ker(T)={x:T(x)=0}=N(A)
核里的向量全被送到原点。更重要的是,只要两个输入相差一个核向量,机器就分不清它们。因为当 v∈ker(T) 时,
T(x+v)=T(x)+T(v)=T(x)
反过来,如果 T(x1)=T(x2),那么
T(x1−x2)=0
所以 x1−x2 必在核里。核准确记录了“哪些差别会在输出中消失”。
像是机器真正能够到达的地方
变换的像是全部可能输出:
im(T)={T(x):x∈Rn}
若 T(x)=Ax,那么
im(T)=C(A)
因为每个 Ax 都是矩阵各列的线性组合。矩阵的列不只记录基向量的去向,它们张成的空间正好就是机器能到达的全部输出。
完整例题:一台从三维压到二维的机器
考虑
T(x,y,z)=(x+2y,z)
先写矩阵,再求核与像,并说明几何上丢掉了什么。
分别代入三根标准基向量:
T(e
这就是秩—零化度定理的动作版本:输入方向不会凭空消失。它们要么在像中留下独立方向,要么进入核,被机器压得看不见。
“压扁”为什么会导致不可逆
若核里有非零向量 v,那么 x 与 x+v 会产生同一个输出。只看结果时,我们无法知道输入到底是哪一个,因此变换不可能一一对应,也就不可能完整倒放。
对方阵 A:Rn→Rn,下面几件事其实是同一件事的不同说法:
- A 可逆;
- ker(A)={0};
- 不同输入不会撞到同一个输出;
- im(A)=Rn;
- 每个输出都能由唯一输入产生。
投影矩阵的核不是零,所以它不可逆;旋转与反射没有压掉任何方向,因此都可以倒放。
动作接力,逼出了矩阵乘法
第一次见矩阵乘法时,“行乘列再相加”很像一条凭空规定的规则。把矩阵看成动作后,它的来历就清楚了:两台变换机器接在一起,总效果也应该能用一台矩阵机器表示。
假设先做 A,再做 B。输入 x 先变成 Ax,随后变成
B(Ax)
我们把两步接力的总矩阵定义为 BA,于是
B(Ax)=(BA)x
右边的矩阵先碰到向量,所以先作用;左边的矩阵后作用。矩阵乘法的行列规则,正是把“动作接力后的总效果”翻译成数字时被逼出来的。

写在右边的动作先发生。改变动作顺序,图形通常会落到不同位置。
顺序为什么通常不能交换
设
A=[01−10]
表示逆时针旋转 90∘,再设
B=[1011]
表示水平剪切。
先旋转再剪切,对应 BA:
BA=[10
先剪切再旋转,对应 AB:
AB=[01
只用 e1 测试就能看出不同:
BAe1=[11],
两台机器顺序一换,第一根基向量已经落在不同位置,因此总变换不可能相同。
“先 A 后 B”写成 BA,不是 AB。读复合矩阵时可以从最靠近输入向量的一侧开始:CBAx 表示先做 ,再做 ,最后做 。
矩阵乘法满足结合律:
C(BA)=(CB)A
这表示三步动作接力时,先把哪两步合成一台机器不会改变最终结果。但它通常不满足交换律,调换动作本身的先后顺序会改变结果。
换一套坐标,矩阵也会换一副数字
前面说“矩阵第 j 列是 T(ej)”,默认输入、输出都使用标准基。可基只是坐标语言,不一定非用横轴和纵轴。换一套基之后,同一个几何变换不会改变,但描述它的数字会改变。
一般基下,列仍是“基向量的去向”
设输入空间 V 的基是
B=(v1,v2,…,vn)
输出空间 W 的基是
C=(w1,w2,…,wm)
对每个输入基向量 vj,先算 T(vj),再用输出基 C 表示它:
T(vj)=a1jw1
这些坐标组成矩阵的第 j 列。于是
[T(x)]C=[T]C←B[x]
箭头上的下标可以读成:“输入使用 B 坐标,输出使用 C 坐标。”
例题:同一个拉伸,改用斜着的输入坐标
设
T(x,y)=(2x,y)
它把水平方向拉长两倍。输入不用标准基,而使用
B=([11],[1
输出仍用标准基 E。先看两根输入基向量的去向:
T([11])=[21
T([1−1])=[2
所以相对于“输入基 B、输出基 E”的矩阵是
[T]E←B=[21
向量 (3,1) 在基 B 下的坐标是 (2,1),因为
[31]=2[1
因此
[T(3,1)]E=[
结果确实是 T(3,1)=(6,1)。
矩阵和坐标必须成套使用。上例的矩阵接收的是 [x]B,不能直接拿它去乘输入的标准坐标。看到非标准基时,先确认输入坐标用哪套基,输出坐标又用哪套基。
矩阵也能表示“对函数做动作”
向量不一定是箭头,也可以是多项式。令 V 是所有不超过二次的多项式,使用基
B=(1,x,x2)
令 W 是所有不超过一次的多项式,使用基
C=(1,x)
求导是一个线性变换,因为
dxd(cf+dg)=cdxdf
只对输入基求导:
1↦0,x↦1,x2↦2x
把三个输出在基 C 下的坐标按列排好,得到
D=[00100
于是
Dabc
左边的坐标代表 a+bx+cx2,右边代表它的导数 b+2cx。这说明矩阵不是只会移动纸上的箭头;只要对象能组成向量空间、动作保持线性组合,就能选基并用矩阵计算。
从 W 积分回 V,并规定积分常数为零,矩阵是
E=010
先积分再求导会完全回到原来的一次多项式,所以
DE=I2
但先求导再积分会丢掉原多项式的常数项:
EDabc
原因不是计算失误,而是求导把所有常数都送到了零。常数多项式正是求导变换的核;信息一旦进入核,就无法靠积分唯一恢复。
常见误区
看到直线就以为线性
f(t)=2t+1 的图像是一条直线,但按线性代数的定义,它不是线性变换,因为 f(0)=1。它是“线性部分加平移”的仿射函数。相反,T:R 给出的 的图像并不是平面纸上的一条直线,却是货真价实的线性映射。
只检查原点就宣布线性
T(0)=0 是必要条件,不是充分条件。Q(x,y)=(x2,y) 固定原点,却不保持数乘。正式证明线性时,要验证它保持任意线性组合,或者把它确实写成矩阵乘法。
把标准矩阵的行列放反
若 T(e1)=(a,c)、T(e2)=,矩阵是
[acbd]
不是把两个输出横着写成两行。最快的自检方法是乘 e1:结果必须等于矩阵第一列。
以为线性就会保持长度和角度
线性只保证线性组合关系。只有旋转、反射这类特殊矩阵才保持所有长度和角度;一般缩放、剪切和投影都不会。
把复合顺序写反
“先 A 后 B”是 BA。如果记不住,就真的把一个测试向量从右向左送进矩阵:BAx 中,x 先碰到 A。
忘记矩阵依赖所选的基
同一个变换,换坐标后会有不同矩阵;同一张数字矩阵,配上不同输入基和输出基,也可能描述不同的几何动作。矩阵不是脱离坐标语言独自存在的标签。
回望与下一问
矩阵之所以能代表线性变换,是因为线性变换保持线性组合。知道基向量的去向,就知道所有向量的去向;这些去向按列排好,就是矩阵。旋转、缩放、剪切、反射和投影看似不同,都能用这一个办法重建。
上一章的四个基本子空间也有了动作含义:核记录被压没的输入方向,像记录所有可能输出。复合变换对应矩阵乘法,乘法从右向左读取;换一套输入、输出基,同一变换会换一张矩阵来表达。
现在还有一个几何问题没有回答。一个矩阵把整张网格拉伸、剪斜或翻转之后,原来面积为 1 的小方格,面积究竟变成了多少?如果整个平面被压成一条线,这个缩放倍数又该是多少?下一章会用一个数同时回答“面积或体积放大了几倍”“方向有没有翻转”“空间有没有被压扁”——这个数就是行列式。
练习
线性与非线性
- 判断下列变换是否线性,并给出最短的可靠理由。
T1(x,y)=(x−2y,3x+y)
T2(x,y)=(x,y+4)
T3(x,y)=(∣x∣,y)
T1 是线性的,因为
T1(x,
- 某个变换把每个非零向量除以自己的长度,使输出长度都变成 1。它是否线性?
不是。若 T(v)=v/∥v∥,那么 T(2v)=T(v),但线性要求 T(2v。这个变换保留方向,却故意抹掉了长度比例。
从基向量写矩阵
- 已知线性变换 T:R2→R2 满足
T(e1)=[3−1
写出标准矩阵,并求 T(−2,5)。
标准矩阵把两根像向量按列排好:
A=[3−124]因此
- 写出顺时针旋转 90∘ 的矩阵,并说明它把 (x,y) 送到哪里。
顺时针 90∘ 就是取 θ=−90∘:
R
- 写出竖直剪切 y↦y+kx 的矩阵。它会固定哪一根标准基向量?
变换是 (x,y)↦(x,y+kx),所以矩阵为
[1
核、像与压扁
- 设
A=[1224]
求 ker(A) 和 im(A),并说明这个变换为什么不可逆。
解 Ax=0 只得到一个独立方程 x1+2x2=0,所以
- 投影到直线 y=x 的矩阵是什么?提示:这条线的单位方向向量是 u=(1/2,1/。
使用 P=uuT:
P
复合与坐标基
- 令 A 表示关于 x 轴反射,B 表示水平方向放大 3 倍。分别计算 BA 和 AB。这次顺序会不会影响结果?
两矩阵是
A=[100−1
- 设输入基为
B=([10],[1
输出使用标准基。若 T(x,y)=(x−y,2y),求 [T]E←B。
分别处理输入基向量:
T(1,0)=(1,0)T(1,1)=(0,2)输出已经用标准坐标写好,所以按列排得
- 在多项式基 B=(1,x,x2,x3) 下,写出二阶求导变换 T(p)= 从三次多项式空间到一次多项式空间的矩阵。输出基取 。
对输入基依次求二阶导数:
1↦0,x↦0,x2↦2,x3↦6x
把整个平面的变化交给一个数
这一章一直在看“箭头怎样变”:基向量去了哪里,核里哪些方向被压没,几个动作又怎样按顺序接力。可如果不只送进去一支箭头,而是把整个单位正方形交给矩阵,我们还会想知道它的面积变成了多少,空间的朝向有没有翻转。
这些变化当然能从矩阵的列一项项算出来,但线性代数把它们压进了一个数。下一章的行列式会告诉我们:这台变换机器把面积或体积放大了几倍,为什么压扁空间时这个数恰好变成零,以及这件事为什么又和可逆性连在一起。