线性代数(四)行列式的秘密
Chen Kai BOSS

行列式在传统课堂上往往是一个让人头疼的计算公式——你需要记住 ,记住按行展开、按列展开,记住一堆符号规则。但当你真正理解行列式的几何本质后,你会发现它其实是一个极其优美的概念:行列式就是线性变换的"缩放因子"。它告诉我们空间经过变换后,面积(或体积)被放大或缩小了多少倍。今天,我们将从这个角度重新认识行列式,让那些枯燥的公式变得鲜活起来。

引言:为什么行列式不应该是"计算题"

在大多数教科书中,行列式是这样引入的:

然后你需要做大量练习:代入数字、计算、得到答案。考试考的也是计算——给你一个 的矩阵,让你算出行列式的值。

但这完全错过了本质!

如果有人问你:"行列式是什么?"

错误答案:"一个数,按照某种规则从矩阵算出来的。"

正确答案:

线

换句话说,行列式告诉你:空间被"拉伸"或"压缩"了多少

这个理解方式的好处是什么?

  • 变得显而易见(两次缩放的总效果 = 缩放倍数相乘)
  • 意味着什么?空间被"压扁"了,降维了,信息丢失了
  • 当然成立——逆变换要把缩放"还原"回去

让我们深入探索这个几何视角。

从单位正方形说起: 2D 行列式的几何意义

单位正方形与基向量

在二维平面上,有一个最简单的参照物:单位正方形。它由两个标准基向量围成:

  • (指向右边)
  • (指向上方)

这个正方形的四个顶点是 ,面积恰好是 1 。

线性变换如何改变正方形

现在考虑一个 矩阵

矩阵 代表一个线性变换,它把基向量映射为:

  • (矩阵的第一列)
  • (矩阵的第二列)

原来的单位正方形变成了一个平行四边形!这个平行四边形由变换后的两个向量围成。

关键观察:这个平行四边形的面积是多少?

答案就是

面积公式的推导

让我们用几何方法推导一下为什么平行四边形面积是

假设两个向量 围成平行四边形。

方法一:底乘高

平行四边形的面积 = 底边长度 × 高。

为底边,长度为

方向的垂直距离。

经过计算(涉及到向量投影),可以得到:

方法二:外接矩形减去多余部分

画一个包住平行四边形的矩形,然后减去四周多余的三角形面积,也能得到同样的结果。

一个具体例子

考虑矩阵

这个变换把: - - 计算行列式: 这意味着:单位正方形的面积被放大了 6 倍!

你可以验证:原来面积为 1 的正方形,变换后的平行四边形面积确实是 6 。

生活中的类比:复印机的缩放

想象一台复印机,你把一张 A4 纸放进去,设置缩放比例为 200%。

  • 纸张的宽度变成原来的 2 倍
  • 纸张的高度变成原来的 2 倍
  • 纸张的面积变成原来的 4 倍(不是 2 倍!)

在数学语言里,这个"200% 等比例缩放"对应的矩阵是:

$$

A =

$$

它的行列式是 ,恰好就是面积的放大倍数。

如果你只在水平方向拉伸 3 倍,对应矩阵:

$$

A =

$$

行列式是 ,面积放大 3 倍。

负行列式的秘密:空间的"翻转"

行列式可以是负数

到目前为止,我们讨论的是 ——行列式的绝对值,代表面积缩放倍数。

但行列式本身可以是正数,也可以是负数。负数代表什么?

负行列式意味着空间被"翻转"了,就像照镜子一样。

右手系与左手系

在二维平面上,有一个"方向"的概念:

  • 右手系(逆时针方向):从 旋转到 是逆时针
  • 左手系(顺时针方向):从 旋转到 是顺时针

大多数坐标系默认是右手系。当一个线性变换保持右手系时,行列式为正;当变换把右手系变成左手系时,行列式为负。

具体例子:反射变换

考虑关于 轴的反射,对应矩阵:

$$

A =

$$

这个变换把 映射到 ,把 保持不变。

行列式是 : - 绝对值是 1,说明面积没有改变 - 负号说明方向被翻转了

你可以想象:把一张写有文字的透明纸翻过来看,文字会变成镜像。这就是负行列式的几何意义。

另一个例子:旋转 + 缩放 + 翻转

考虑矩阵:

$$

A =

$$

计算行列式: 这意味着: - 面积被放大了 6 倍() - 空间被翻转了(行列式为负)

生活中的类比:手套的左右

如果你有一只右手手套,无论你怎么在三维空间中旋转它、拉伸它、压缩它(只要不翻过来),它永远是右手手套。

但如果你把它"翻过来"(从里面翻到外面),它就变成了左手手套。

这个"翻转"操作就对应负行列式的变换。

行列式为零:空间被"压扁"

降维意味着什么

时,发生了什么?

根据我们的几何解释:面积缩放因子是 0,意味着面积变成了 0

在二维空间中,面积变成 0 只有一种可能:平面被"压扁"成了一条直线(或一个点)。

这种情况叫做降维( dimension reduction)或奇异( singular)。

具体例子

考虑矩阵:

$$

A =

$$

计算行列式: 注意到第二列是第一列的 2 倍:

这意味着两个基向量变换后在同一条直线上!

原来的二维平面上所有的点,经过这个变换后,都落在过原点、方向为 的直线上。

整个平面被"压扁"成了一条直线,面积自然变成 0 。

为什么不可逆

时,矩阵 不可逆。这是为什么?

想象一下:你把一张二维的照片"压扁"成一条线,然后问:"怎么把它还原回二维照片?"

不可能!因为信息丢失了——原本照片上不同位置的点,压扁后可能重叠在线上的同一点。你无法区分它们原来在哪里。

用数学语言说:如果 ,那么从 无法唯一确定 ,所以 不存在。

线性相关与行列式

行列式为零有一个等价表述:矩阵的列向量(或行向量)线性相关

线性相关意味着某一列可以用其他列线性表示,就像上面的例子中第二列是第一列的 2 倍。

这给了我们判断线性相关性的一个方法:计算行列式,如果是 0,则线性相关

三维行列式:体积缩放因子

从立方体到平行六面体

在三维空间中,单位立方体由三个标准基向量围成:

体积是 1 。

一个 矩阵 把这三个基向量映射为矩阵的三个列向量,单位立方体变成一个平行六面体

行列式的计算

对于 矩阵:

$$

A =

$$

行列式的计算公式是:

这个公式可以通过Sarrus 法则Laplace 展开得到。

混合积公式

三维行列式还有一个漂亮的解释:它等于三个向量的混合积( scalar triple product):

其中 是矩阵的三个列向量, 是叉积, 是点积。

混合积的几何意义正是以这三个向量为棱的平行六面体的有向体积

负行列式在三维中的意义

在三维中,负行列式意味着右手系变成了左手系。

想象你用右手握拳,拇指指向 轴正方向,四指从 轴弯向 轴。这是右手系。

如果一个变换把这个关系破坏了(比如对其中一个轴做反射),行列式就变成负数。

行列式的性质

理解了行列式的几何意义后,许多性质就变得直观了。

乘法性质:

直觉 将体积缩放 倍,然后 再将体积缩放 倍。总效果是缩放 倍。

这就像说:如果复印机先放大 2 倍,再放大 3 倍,总效果是放大 6 倍。

形式化证明:考虑单位体积的图形

  • 经过 变换后,体积变成
  • 再经过 变换,体积变成 同时, 变换直接把体积变成 。因此

考虑正负号后,等式 成立。

转置不变性:

矩阵转置交换了行和列。但行列式的值不变。

直觉:行列式只关心"缩放了多少",而不关心你是用行向量还是列向量来描述这个变换。

逆矩阵性质:

直觉 把体积放大 倍,那么 要把它还原回去,必须把体积缩小 倍,也就是乘以

推导

行交换与符号变化

交换矩阵的两行,行列式变号。

直觉:交换两个基向量的顺序,会改变空间的"手性"(从右手系变左手系,或反过来)。

例如在二维中,交换 的顺序,原本逆时针旋转从 ,变成了顺时针。

行的倍乘

将矩阵某一行乘以常数 ,行列式也乘以

直觉:把一个基向量拉长 倍,平行四边形的面积也拉长 倍。

推论,其中 是矩阵的维度。

因为 相当于把每一行都乘以 ,一共 行,所以行列式乘以

行的加法

将某一行加上另一行的倍数,行列式不变。

直觉:这个操作叫做"错切"( shear),它把平行四边形变成另一个平行四边形,但不改变面积。

想象把一叠扑克牌斜着推一下,每张牌滑动的距离不同,但整叠牌的总体积不变。

特殊矩阵的行列式

单位矩阵(不缩放,不翻转)

对角矩阵:行列式 = 对角线元素之积

三角矩阵:行列式也等于对角线元素之积

行列式的计算方法

方法一: 矩阵公式

这个公式要牢记。主对角线乘积减去副对角线乘积。

:计算

方法二: 矩阵的 Sarrus 法则

对于 矩阵,有一个"对角线法则":

$$

A =

$$

把矩阵的前两列复制到右边,形成一个 的表:

- 三条"主对角线"乘积相加: - 三条"副对角线"乘积相减: :计算

主对角线: 副对角线: 行列式 = 这个矩阵的行列式是 0!(因为第三行 = 第一行 + 第二行的某个线性组合,列线性相关。)

注意: Sarrus 法则只适用于 矩阵,不适用于更高维!

方法三: Laplace 展开(余子式展开)

对于任意 矩阵,可以用 Laplace 展开按某一行或某一列展开。

按第一行展开

其中 代数余子式( cofactor):

$$

C_{ij} = (-1)^{i+j} M_{ij} $$ 余子式( minor),即删除第 行、第 列后剩下的 子矩阵的行列式。

:计算 按第一行展开。

其中:

技巧:选择含有最多零元素的行或列来展开,可以减少计算量。

方法四:高斯消元化为三角矩阵

对于大矩阵,最实用的方法是用初等行变换把矩阵化为上三角形式,然后对角线元素相乘。

需要注意的是: - 行交换会改变行列式的符号 - 行的倍乘会改变行列式的值 - 行的加法不改变行列式的值

:计算 步骤 1:

步骤 2:

步骤 3:

上三角矩阵的行列式 = 对角线元素之积 =

克拉默法则

公式与原理

克拉默法则( Cramer's Rule)给出了线性方程组 解的显式公式。

如果 可逆矩阵(即 ),则方程组有唯一解:

$$

x_i = $$

其中 是把矩阵 的第 列替换成向量 后得到的矩阵。

二元方程组的例子

解方程组:

系数矩阵 计算各行列式:

因此:

$$

x = = = 1

y = = = 2 $$

验证:✓,

三元方程组的例子

解方程组:

系数矩阵 首先计算

计算 (第一列换成 ):

$$

A_1 =

(A_1) = 14(1-2) - 2(7-10) + 3(14-10) = -14 + 6 + 12 = 4 $$

因此

类似地可计算 $ y = 2 z = 3$。

克拉默法则的几何意义

克拉默法则有一个美妙的几何解释。考虑二维情况:

向量 可以用变换后的基向量 线性表示:

就是我们要求的解。

用面积来推导: 围成的平行四边形面积,除以 围成的平行四边形面积,恰好等于

这就是克拉默法则的几何本质。

局限性

虽然克拉默法则形式优美,但它的实际计算效率很低:

  • 个未知数的方程组,需要计算 行列式
  • 每个行列式的计算量是 (用定义)或 (用高斯消元)
  • 总计算量约为 ,而直接用高斯消元只需 所以克拉默法则更多用于理论分析(比如证明解的存在唯一性),而不是实际计算。

行列式在面积与体积计算中的应用

任意三角形的面积

给定三角形的三个顶点 ,面积为:

或者用齐次坐标的形式:

:计算顶点为 的三角形面积。

平行四边形的面积

两个向量 围成的平行四边形面积:

平行六面体的体积

三个向量 围成的平行六面体体积:

四面体的体积

四个顶点 确定的四面体体积是对应平行六面体体积的

向量的叉积

在三维空间中,两个向量的叉积可以用行列式表示:

展开后:

叉积的模长 正是 围成的平行四边形面积。

行列式与线性方程组解的存在性

基本定理

对于线性方程组 ,其中 方阵:

  • :方程组有且仅有一个解
  • :方程组无解或有无穷多解

为什么 意味着唯一解

意味着 可逆,因此:

是唯一的解。

从几何角度看: 意味着变换没有把空间"压扁",每个输出向量 都恰好对应一个输入向量

为什么 导致无解或无穷多解

意味着空间被"压扁"到更低维度。这时:

  • 如果 恰好在压扁后的空间里(比如在那条直线上),则有无穷多个 映射到同一个
  • 如果 不在压扁后的空间里,则没有任何 能映射到 :考虑

$$

A = , _1 = , _2 =

$$ 对于

方程组是 (两个方程本质相同)。

解集是直线 上的所有点,有无穷多解。

对于

方程组是 (矛盾!)

无解。

齐次方程组

对于齐次方程组

  • :只有零解
  • :有非零解(解空间的维数 =

雅可比行列式与变量替换

在多元微积分中,行列式有一个重要应用:变量替换时的缩放因子

一维情况:-替换

在一维积分中,如果令 ,则:

这里 就是"缩放因子"—— 之间的比例。

二维情况:雅可比行列式

在二维积分中,如果从 换成 ,其中 $ x = x(u,v) y = y(u,v)$:

其中雅可比行列式是:

它表示从 坐标系到 坐标系的局部面积缩放因子。

极坐标变换

最常见的例子是直角坐标到极坐标的变换:

$$

x = r, y = r $$

雅可比行列式是:

所以:

这就是为什么极坐标积分里会出现那个

Python 实现

计算行列式

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np

# 使用 NumPy 计算行列式
A = np.array([[3, 1], [2, 4]])
det_A = np.linalg.det(A)
print(f"det(A) = {det_A}") # 输出: 10.0

# 3x3 矩阵
B = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
det_B = np.linalg.det(B)
print(f"det(B) = {det_B}") # 输出: 约 0 (实际是 0)

可视化行列式的几何意义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import numpy as np
import matplotlib.pyplot as plt

def plot_transformation(A, title):
"""可视化线性变换对单位正方形的影响"""
# 单位正方形的顶点
square = np.array([[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]).T

# 变换后的顶点
transformed = A @ square

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# 原图
axes[0].fill(square[0], square[1], alpha=0.3, color='blue')
axes[0].plot(square[0], square[1], 'b-', linewidth=2)
axes[0].set_xlim(-2, 3)
axes[0].set_ylim(-2, 3)
axes[0].axhline(y=0, color='k', linewidth=0.5)
axes[0].axvline(x=0, color='k', linewidth=0.5)
axes[0].set_title('原单位正方形 (面积 = 1)')
axes[0].set_aspect('equal')
axes[0].grid(True, alpha=0.3)

# 变换后
det_A = np.linalg.det(A)
axes[1].fill(transformed[0], transformed[1], alpha=0.3,
color='red' if det_A < 0 else 'green')
axes[1].plot(transformed[0], transformed[1],
'r-' if det_A < 0 else 'g-', linewidth=2)
axes[1].set_xlim(-2, 3)
axes[1].set_ylim(-2, 3)
axes[1].axhline(y=0, color='k', linewidth=0.5)
axes[1].axvline(x=0, color='k', linewidth=0.5)
axes[1].set_title(f'变换后 (面积 = |det(A)| = {abs(det_A):.2f})')
axes[1].set_aspect('equal')
axes[1].grid(True, alpha=0.3)

plt.suptitle(f'{title}\ndet(A) = {det_A:.2f}')
plt.tight_layout()
plt.show()

# 示例
A1 = np.array([[2, 0], [0, 1.5]]) # 拉伸
plot_transformation(A1, "拉伸变换")

A2 = np.array([[1, 0.5], [0, 1]]) # 错切
plot_transformation(A2, "错切变换")

A3 = np.array([[-1, 0], [0, 1]]) # 反射
plot_transformation(A3, "反射变换 (det < 0)")

克拉默法则实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import numpy as np

def cramer_rule(A, b):
"""用克拉默法则解方程组 Ax = b"""
n = len(b)
det_A = np.linalg.det(A)

if abs(det_A) < 1e-10:
raise ValueError("行列式为 0,无法使用克拉默法则")

x = np.zeros(n)
for i in range(n):
A_i = A.copy()
A_i[:, i] = b # 替换第 i 列
x[i] = np.linalg.det(A_i) / det_A

return x

# 示例
A = np.array([[2, 3], [4, 1]], dtype=float)
b = np.array([8, 6], dtype=float)

x = cramer_rule(A, b)
print(f"解: x = {x}") # 应该是 [1, 2]

# 验证
print(f"验证 Ax = {A @ x}") # 应该等于 b

总结与展望

本章关键要点

行列式的几何本质

  • 中:= 单位正方形变换后的面积
  • 中:= 单位立方体变换后的体积
  • 中:= 单位超立方体变换后的超体积

行列式的符号意义

  • :保持空间定向(右手系不变)
  • :翻转空间定向(右手系变左手系)
  • :空间被"压扁",降维,不可逆

核心性质(从几何角度都显而易见):

  • (缩放相乘)
  • (行列等价)
  • (逆变换还原缩放)
  • 是维度)

重要应用

  • 判断矩阵是否可逆(
  • 判断向量是否线性相关(
  • 计算面积和体积
  • 克拉默法则求解线性方程组
  • 雅可比行列式用于变量替换

直觉总结

当你看到行列式时,不要想"我要计算这个数",而要想:

"这个线性变换如何改变空间的大小和方向?"

  • 行列式的绝对值告诉你空间被放大或缩小了多少倍
  • 行列式的符号告诉你空间是否被"翻转"了
  • 行列式为零告诉你空间被"压扁"了,有信息丢失

这种几何直觉会让你在高等数学的许多地方受益:微分几何中的度量张量、流形上的积分、物理中的相空间体积……它们都与行列式有着深刻的联系。

下一章预告

《线性方程组与列空间》

  • 何时有解?
  • 列空间与零空间的几何意义
  • 秩是什么?为什么重要?
  • 基础解系与通解的结构

练习题

基础题

  1. 计算行列式 ,并解释其几何意义。

  2. 为什么单位矩阵 的行列式是 1?

  3. 如果 矩阵,则 是多少? 呢?

  4. 计算 ,这个矩阵可逆吗?

  5. 如果 矩阵且 ,求

中等题

  1. 证明:如果矩阵有两行相同,则行列式为 0 。

  2. 证明:(提示:用 Laplace 展开)

  3. 找一个 矩阵,使得它将面积放大 3 倍且反转方向。

  4. 计算三角形顶点为 的面积。

  5. 用克拉默法则解方程组:

进阶题

  1. 证明: 矩阵 的特征值之积等于 。(提示:特征多项式

  2. 都是 矩阵,证明

  3. 如果 是正交矩阵(),证明

  4. 对于 矩阵 ,如果 (幂等矩阵),那么 的可能值是什么?

  5. ,验证伴随矩阵公式:

$$

A^{-1} =

$$

应用题

  1. 三个向量 围成的平行六面体体积是多少?

  2. 用雅可比行列式,验证在球坐标变换 下,体积元

  3. 一个线性变换把单位圆变成椭圆 ,求这个变换的行列式的绝对值。

编程题

  1. 编写 Python 函数,用 Laplace 展开递归计算任意 矩阵的行列式(不使用 numpy.linalg.det)。

  2. 用 Python 可视化一个动画:正方形在不同矩阵下的连续变换,实时显示行列式的值。

  3. 实现克拉默法则求解 线性方程组,并与 numpy.linalg.solve 比较结果。

  4. 制作一个交互式工具:用户输入 矩阵的四个元素,程序实时显示变换前后的图形和行列式。

思考题

  1. 为什么 Sarrus 法则只对 矩阵有效,而不能推广到 或更高维?

  2. 行列式可以定义在非方阵上吗?为什么?

  3. 复数矩阵的行列式可以是复数。一个复数行列式的"几何意义"是什么?

参考资料

  1. Axler, S. (2015). Linear Algebra Done Right. Chapter 10.
  2. 3Blue1Brown. Essence of Linear Algebra, Chapter 5-6. YouTube
  3. Strang, G. (2019). Introduction to Linear Algebra. Chapter 5.
  4. Lang, S. (2012). Linear Algebra. Chapter 6.

本文是《线性代数的本质与应用》系列的第 4 章,共 18 章。

  • 本文标题:线性代数(四)行列式的秘密
  • 本文作者:Chen Kai
  • 创建时间:2019-01-20 16:20:00
  • 本文链接:https://www.chenk.top/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%EF%BC%88%E5%9B%9B%EF%BC%89%E8%A1%8C%E5%88%97%E5%BC%8F%E7%9A%84%E7%A7%98%E5%AF%86/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论