线性代数交互式教程 · 第3章

矩阵与线性变换

矩阵是线性变换的表示——理解变换的几何意义

3.1

矩阵即变换

在线性代数中,矩阵不仅仅是数字排列成的表格。它的真正意义是线性变换的表示。一个 m×n 矩阵 A 定义了一个从 Rⁿ 到 Rᵐ 的映射:输入向量 x,输出向量 Ax。

x ∈ Rⁿ --(A)--> Ax ∈ Rᵐ

线性变换的定义

变换 T 是线性的,如果满足两个条件:

这两个条件可以合并为:T(au + bv) = a·T(u) + b·T(v)。

核心洞察:矩阵乘向量 = 变换作用

矩阵 A 作用于向量 x 的结果 Ax,就是将 x 经过 A 所代表的线性变换后的像。理解这一点,矩阵乘法就不再是死板的"行乘列",而是几何变换的代数实现。

工程应用:矩阵变换无处不在

计算机图形学(旋转缩放):3D 游戏中的每一个物体运动——旋转、平移、缩放——都可以用 4×4 变换矩阵表示。GPU 每秒执行数十亿次矩阵-向量乘法,实时渲染出逼真的三维世界。

机器人运动学(变换矩阵):机器人手臂各关节的位置和姿态用齐次变换矩阵描述。通过矩阵乘法串联各关节的变换,可以计算末端执行器在空间的精确位置和方向。

图像处理(卷积核):图像模糊、锐化、边缘检测等操作本质上是小矩阵(卷积核)在图像上的滑动变换。卷积神经网络通过可学习的卷积核自动提取图像特征。

电路网络(导纳矩阵):在电路分析中,节点电压与注入电流之间的关系由导纳矩阵 Y 描述:I = YV。矩阵的结构反映了电路的拓扑连接方式。

3.2

基本变换矩阵

所有线性变换都可以由几种基本变换组合而成。理解这些基本变换,是理解任意矩阵几何意义的关键。

旋转矩阵

在 R² 中,将向量逆时针旋转角度 θ 的矩阵为:

R(θ) = [ cosθ -sinθ ]
         [ sinθ cosθ ]

旋转矩阵保持向量长度不变(正交矩阵),且 det(R) = 1。

缩放矩阵

沿 x 轴缩放 a 倍、沿 y 轴缩放 b 倍的矩阵:

S = [ a 0 ]
    [ 0 b ]

当 a = b 时,是均匀缩放;当 a ≠ b 时,是各向异性缩放(拉伸或压缩)。

剪切矩阵

x 方向剪切(y 坐标不变,x 坐标按 y 的比例偏移):

H = [ 1 k ]
    [ 0 1 ]

剪切变换保持面积不变(det(H) = 1),但改变形状。

投影矩阵

将向量投影到 x 轴上的矩阵:

P = [ 1 0 ]
    [ 0 0 ]

投影是"降维"操作,将二维向量压缩到一维直线上。

图 3-1:旋转变换的几何效果——单位向量 e₁, e₂ 被旋转到新的位置
3.3

复合变换

多个线性变换依次作用,等价于一个复合变换。复合变换的矩阵是各变换矩阵的乘积

复合变换的顺序

若先进行变换 B,再进行变换 A,则复合变换的矩阵为 AB。

注意:矩阵乘法不满足交换律,即 AB ≠ BA(一般情况下)。变换的顺序至关重要!

例子:先旋转后缩放 vs 先缩放后旋转

设 R 是旋转 90° 的矩阵,S 是沿 x 轴缩放 2 倍的矩阵。

这两个复合变换通常不同,因为旋转和缩放会相互影响。

矩阵乘法的几何意义

矩阵乘法 AB 的几何意义是"先应用 B,再应用 A"。理解这一点,矩阵乘法的许多性质就变得直观了:为什么 (AB)C = A(BC)(结合律)?因为变换的串联顺序本来就是结合的。为什么 AB ≠ BA(不交换)?因为"先旋转再剪切"和"先剪切再旋转"通常得到不同的结果。

3.4

行列式——面积与体积的缩放因子

方阵 A 的行列式(Determinant)det(A) 是一个标量,它揭示了变换 A 对空间"体积"的影响程度。

行列式的几何意义
  • |det(A)| = 变换后面积(或体积)与原面积之比
  • det(A) > 0:变换保持定向("手性"不变)
  • det(A) < 0:变换反转定向(如镜像反射)
  • det(A) = 0:变换将空间压缩到更低维度("压扁"了)

2×2 行列式

det(A) = | a b | = ad - bc
         | c d |

ad - bc 的绝对值就是以 (a,c) 和 (b,d) 为邻边的平行四边形的面积。

3×3 行列式

det(A) = a₁₁(a₂₂a₃₃ - a₂₃a₃₂) - a₁₂(a₂₁a₃₃ - a₂₃a₃₁) + a₁₃(a₂₁a₃₂ - a₂₂a₃₁)

这是三个 2×2 子行列式的交替和,其绝对值表示平行六面体的体积。

图 3-2:行列式的几何意义——变换前后面积的变化比例
Ex

例题精讲

例1:求旋转矩阵

求将 R² 中向量逆时针旋转 60° 的旋转矩阵,并计算它作用于向量 (1, 0) 和 (0, 1) 的结果。

第一步:写出旋转矩阵

cos(60°) = 1/2,sin(60°) = √3/2

R = [ 1/2 -√3/2 ]
    [ √3/2 1/2 ]

第二步:作用于基向量

R·(1,0) = (1/2, √3/2) —— 单位向量旋转到 60° 方向

R·(0,1) = (-√3/2, 1/2) —— 原 y 轴方向旋转到 150° 方向

第三步:验证

两个结果向量的长度仍为 1(旋转保持长度)。

两向量之间的夹角仍为 90°(旋转保持角度)。

R = [0.5 -0.866; 0.866 0.5];R(1,0)=(0.5,0.866);R(0,1)=(-0.866,0.5)
例2:复合变换

设 A 是旋转 45° 的矩阵,B 是沿 x 轴缩放 2 倍的矩阵。求 AB 和 BA,并说明它们的几何意义。

第一步:写出各矩阵

A = [ √2/2 -√2/2 ]
    [ √2/2 √2/2 ]

B = [ 2 0 ]
    [ 0 1 ]

第二步:计算 AB(先缩放后旋转)

AB = [ √2/2 -√2/2 ] [ 2 0 ] = [ √2 -√2/2 ]
      [ √2/2 √2/2 ] [ 0 1 ] [ √2 √2/2 ]

第三步:计算 BA(先旋转后缩放)

BA = [ 2 0 ] [ √2/2 -√2/2 ] = [ √2 -√2 ]
      [ 0 1 ] [ √2/2 √2/2 ] [ √2/2 √2/2]

AB ≠ BA。先缩放后旋转与先旋转后缩放得到不同的变换。
例3:行列式的计算与几何意义

计算以下矩阵的行列式,并解释几何意义:

(a) A = [ 2 0 ] (b) B = [ 1 2 ]

        [ 0 3 ]         [ 2 4 ]

(a) 解

det(A) = 2×3 - 0×0 = 6

几何意义:A 将面积放大 6 倍(x 方向放大 2 倍,y 方向放大 3 倍,2×3=6)。

det(A) > 0,保持定向。

(b) 解

det(B) = 1×4 - 2×2 = 0

几何意义:B 将二维空间"压扁"到一条直线上(因为第二列是第一列的 2 倍,两列线性相关)。

变换后面积为 0,所以 det(B) = 0。

(a) det(A) = 6,面积放大6倍;(b) det(B) = 0,空间被压缩到一维
例4:剪切变换

设 H = [ 1 2 ],求 H 作用于单位正方形四个顶点 (0,0), (1,0), (0,1), (1,1) 的结果,并计算面积变化。

        [ 0 1 ]

第一步:计算各顶点的像

H·(0,0) = (0, 0)

H·(1,0) = (1, 0)

H·(0,1) = (2, 1)

H·(1,1) = (3, 1)

第二步:分析几何形状

原单位正方形变为平行四边形,顶点为 (0,0), (1,0), (3,1), (2,1)。

底边长度仍为 1,高仍为 1,所以面积仍为 1。

第三步:用行列式验证

det(H) = 1×1 - 2×0 = 1

行列式为 1,验证了面积不变。

单位正方形变为平行四边形,面积保持为 1。det(H) = 1。
ML

MATLAB 代码演示

以下 MATLAB 代码演示如何定义变换矩阵、应用变换并可视化旋转效果。

transformation_matrices.m
% 第3章:定义变换矩阵并应用变换 % 目标:理解矩阵乘法的几何意义 % 旋转矩阵(逆时针 60 度) theta = pi/3; R = [cos(theta) -sin(theta); sin(theta) cos(theta)]; % 缩放矩阵 S = [2 0; 0 0.5]; % 剪切矩阵 H = [1 2; 0 1]; % 定义测试向量 v = [1; 0]; disp('旋转后的 v:'); disp(R * v); disp('缩放后的 v:'); disp(S * v); disp('剪切后的 v:'); disp(H * v); % 复合变换:先旋转后缩放 disp('先旋转后缩放:'); disp(S * R * v); disp('先缩放后旋转:'); disp(R * S * v);
visualize_rotation.m
% 第3章:可视化旋转变换 % 目标:观察矩阵变换对单位圆的作用 theta = pi/6; R = [cos(theta) -sin(theta); sin(theta) cos(theta)]; % 生成单位圆上的点 t = linspace(0, 2*pi, 100); unit_circle = [cos(t); sin(t)]; % 应用旋转变换 rotated = R * unit_circle; figure; plot(unit_circle(1,:), unit_circle(2,:), 'b--', 'LineWidth', 1.5); hold on; plot(rotated(1,:), rotated(2,:), 'r-', 'LineWidth', 2); % 标记基向量 quiver(0,0,1,0,0,'Color','b','LineWidth',1.5); Rv = R * [1;0]; quiver(0,0,Rv(1),Rv(2),0,'Color','r','LineWidth',1.5); axis equal; grid on; title('旋转变换:单位圆(蓝虚线)→ 旋转后(红实线)'); legend('原单位圆','旋转后','e_1','R*e_1');
← 上一章:第2章 线性组合与张成空间 下一章:第4章 矩阵运算与逆矩阵 →