线性代数(五)线性方程组与列空间
Chen Kai BOSS

线性方程组是线性代数最核心的问题之一。当我们问" 何时有解"时,答案藏在矩阵的列空间中——这个空间告诉我们矩阵能够"到达"的所有向量。理解列空间、零空间以及它们之间的关系,是掌握线性代数的关键一步。

从方程组到几何:一个全新的视角

还记得高中时解方程组的日子吗?面对这样的方程组:

老师教我们用消元法:第二个方程减去第一个方程的 2 倍,得到,然后宣布"有无穷多解"。

但这种机械的计算过程完全掩盖了问题的本质。真正深刻的问题是:这个方程组在几何上意味着什么?为什么会有无穷多解?

线性代数给出了一个优雅的答案:

  • 每个方程代表一条直线(或更高维的超平面)
  • 解是这些直线的交点
  • 矩阵列空间决定了哪些 能被"到达"

想象你在一个只能向东和向北走的城市里。如果有人让你走到西南方向的某个点,你能做到吗?这个问题的本质就是:目标点是否在你能到达的空间内?

线性方程组的矩阵形式

从单个方程到矩阵

一个线性方程 本质上是在说:用 个"2"和 个"3"来凑出"5"。

当我们有多个方程时:

可以写成紧凑的矩阵形式:

其中 的系数矩阵, 维未知向量, 维常数向量。

生活类比:菜谱和食材

把这个矩阵方程想象成做菜的问题。假设你想做三道菜,每道菜需要不同比例的食材:

菜品 鸡蛋 面粉 牛奶
煎蛋 2 个 0 克 50ml
蛋糕 3 个 200 克 100ml
布丁 1 个 0 克 200ml

如果你有 10 个鸡蛋、 400 克面粉、 500ml 牛奶,你能做多少份每道菜?

设每道菜做 份,就得到方程组:

这就是线性方程组在现实中的意义:资源分配问题。

线性方程组的两种视角

行视角:超平面的交点

考虑方程组:

行视角把每个方程看成一条直线:

  • 第一条直线:(斜率
  • 第二条直线:(斜率

解就是两条直线的交点。画出图来,你会发现它们交于

在三维空间中,每个方程代表一个平面,解是三个平面的交点(或交线、或无交点)。

列视角:向量的线性组合

同样的方程组可以重新理解。把它写成:

现在问题变成:如何用 这两个向量的线性组合来表示

列视角的核心洞察是:

- 是第一个列向量 的"使用量" - 是第二个列向量 的"使用量" - 目标是找到合适的"配方"来合成

为什么列视角更深刻?

行视角虽然直观,但它隐藏了矩阵的内在结构。列视角直接揭示了关键概念:

  1. 列空间:所有可能合成的 的集合
  2. 线性独立性:列向量是否冗余
  3. :本质上有多少个"方向"可用
  4. 解的存在性 是否能被合成

想象你是一个画家,只有红、黄、蓝三种颜料。列视角问的是:"给定这三种基础颜色,你能调出什么颜色?"——这就是列空间的概念。

高斯消元法:系统化的求解之道

算法思想

高斯消元法是求解线性方程组最基本、最重要的算法。它的核心思想很简单:通过初等行变换,把矩阵化为更简单的形式

初等行变换有三种:

  1. 交换两行
  2. 某行乘以非零常数
  3. 某行加上另一行的倍数

这些变换不改变方程组的解!为什么?因为它们对应着方程组的等价变换。

从增广矩阵到行阶梯形

以方程组为例:

第一步,写出增广矩阵

第二步,消元使得第一列只有第一行非零(第二行减去第一行的 3 倍):

第三步,继续消元(第三行减去第二行的 2 倍):

现在矩阵成了行阶梯形( row echelon form),每一行的第一个非零元素(主元)在前一行主元的右边。

第四步,回代求解:

  • 从第三行:,得
  • 从第二行:,得
  • 从第一行:,得 解为

主元和自由变量

在消元过程中,主元( pivot)是每行第一个非零元素。没有主元的列对应的变量叫自由变量

考虑另一个例子:

主元在第 1 列和第 3 列,所以 是主变量, 是自由变量。

自由变量可以取任意值,然后主变量由自由变量决定。这就是无穷多解的情况。

Python 实现高斯消元

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
import numpy as np

def gaussian_elimination(A, b):
"""
高斯消元法求解 Ax = b
返回:解向量 x,如果无解返回 None
"""
n = len(b)
# 构建增广矩阵
Ab = np.concatenate([A.astype(float), b.reshape(-1, 1).astype(float)], axis=1)

# 前向消元
for col in range(n):
# 寻找主元(部分选主元,提高数值稳定性)
max_row = col + np.argmax(np.abs(Ab[col:, col]))
Ab[[col, max_row]] = Ab[[max_row, col]] # 交换行

if np.abs(Ab[col, col]) < 1e-10:
continue # 跳过零主元

# 消元
for row in range(col + 1, n):
factor = Ab[row, col] / Ab[col, col]
Ab[row, col:] -= factor * Ab[col, col:]

# 回代
x = np.zeros(n)
for i in range(n - 1, -1, -1):
if np.abs(Ab[i, i]) < 1e-10:
if np.abs(Ab[i, -1]) > 1e-10:
return None # 无解
continue
x[i] = (Ab[i, -1] - np.dot(Ab[i, i+1:n], x[i+1:])) / Ab[i, i]

return x

# 测试
A = np.array([[1, 2, 1], [3, 8, 1], [0, 4, 1]])
b = np.array([2, 12, 2])
x = gaussian_elimination(A, b)
print(f"解: {x}")
print(f"验证 Ax = {A @ x}")

消元法的计算复杂度

对于 矩阵,高斯消元的计算复杂度约为。具体来说:

  • 前向消元:约 次浮点运算
  • 回代:约 次浮点运算

很大时(比如),这个计算量是巨大的。这就是为什么实际工程中会用各种迭代方法和稀疏矩阵技术。

列空间:矩阵能"到达"的地方

定义与直觉

矩阵列空间(Column Space),记作,定义为:

简单说, 的所有列向量的所有可能线性组合构成的集合。

直觉理解:如果把 看作一个"变换机器",列空间就是这台机器能输出的所有向量的集合。或者说,如果你可以沿着 的列向量方向任意移动,你能到达的所有位置就是列空间。

生活类比:音乐混音器

想象一个音乐混音器,有三个输入通道(吉他、贝斯、鼓),每个通道有一个音量推子。

  • 每个乐器的声音是一个"列向量"
  • 推子位置 是"系数"
  • 最终混音是列向量的线性组合

列空间就是你能调出的所有可能的混音。如果吉他和贝斯的音色很像(线性相关),那么你能调出的音色就比想象的少。

例子:二维和三维中的列空间

例子 1:一条直线 是所有形如 的向量,这是 中过原点、方向为 的一条直线。

例子 2:一个平面

两个列向量 张成 中的一个平面。这个平面过原点,由这两个向量确定。

例子 3:整个空间

这是单位矩阵,。任何三维向量都可以表示为这三个列向量的线性组合。

核心定理:解的存在性

定理:方程 有解,当且仅当

证明

  • 如果,根据定义,存在 使得,即有解。
  • 反过来,如果有解,则 是列向量的线性组合,所以

这个定理把"方程是否有解"转化为"向量是否在某个空间内"的几何问题。

如何判断 是否在列空间中?

方法:将 添加为 的新列,检查秩是否改变。

如果添加 后秩增加了,说明 带来了"新信息",不在原列空间中。

零空间:被"杀死"的向量

定义与直觉

矩阵零空间(Null Space),记作,定义为:

零空间是所有被 映射到零向量的向量的集合。

直觉理解:零空间告诉我们,从哪些方向出发会"迷失"——被矩阵"压扁"到原点。如果零空间只包含零向量,说明 是"一对一"的映射,没有信息丢失。

生活类比:压路机

想象一个压路机在地面上滚过。原本三维的物体被压成二维。

  • 任何沿垂直方向的运动都会被"压扁"到零
  • 零空间就是"垂直方向"——所有会被压扁的方向
  • 水平方向的运动不受影响——它们不在零空间中

例子

考虑矩阵:

第二行是第一行的 2 倍,所以这个矩阵把二维平面压成了一条直线。

寻找零空间:设

两个方程等价,得。取,得基向量

几何上, 中方向为 的直线。

零空间与解的唯一性

关键观察:如果 的一个解,那么)也是解!

推论

  • 如果(零空间只有零向量),解唯一
  • 如果 包含非零向量,有无穷多解

求零空间的基

方法:将 化为行阶梯形,找出自由变量,然后写出通解。

例如,对于

化为行阶梯形:

主元在第 1 列和第 3 列, 是自由变量。

从第二行: 从第一行:,得零空间的基:

秩:维度的本质

定义

矩阵(rank),记作,定义为:

即列空间的维度,也等于线性独立的列向量的最大个数

等价地:

  • 秩 = 行阶梯形中主元的个数
  • 秩 = 线性独立的行向量的最大个数
  • 行秩 = 列秩(这是一个重要定理)

秩的直觉理解

秩告诉我们矩阵有多少"有效维度"。

- 矩阵秩为 3:变换是"满的",不压缩任何维度 - 矩阵秩为 2:三维空间被压成平面 - 矩阵秩为 1:三维空间被压成直线 - 矩阵秩为 0:一切都被压到原点(零矩阵)

生活类比:信息压缩

想象你要用电话描述一张彩色照片。

  • 如果对方能看到红、绿、蓝三个通道(秩=3),你能完整传达图像
  • 如果对方只能看到黑白(秩=1),大量信息丢失
  • 秩就是"信息通道"的数量

秩的计算方法

方法 1:高斯消元,数主元个数

两个主元,所以

方法 2:用 Python

1
2
3
4
5
import numpy as np

A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
rank = np.linalg.matrix_rank(A)
print(f"秩: {rank}") # 输出: 秩: 2

秩与方程组解的关系

对于 矩阵

条件 含义
满秩方阵,唯一解
满列秩,至多一个解
满行秩,若有解则无穷多
秩亏,解的情况取决于

秩-零化度定理

定理陈述

对于 矩阵

列空间维度 + 零空间维度 = 列数

直觉理解

维输入空间想象成一块蛋糕。矩阵 把它切成两部分:

  • 一部分被"保留",映射到列空间( 维)
  • 一部分被"压扁",成为零空间( 维)

蛋糕的总大小( 维)不变。

证明概要

化为行阶梯形后有 个主元。

  • 主变量有 个,对应 维列空间
  • 自由变量有 个,对应 维零空间

应用

例子 矩阵,。求零空间维度。

解: 这意味着 有 3 个自由变量,零空间是 3 维子空间。

解的存在性和唯一性

完整分析框架

对于方程 矩阵,秩为):

存在性:有解

唯一性:解唯一

四种情形详解

情形 1:(满秩方阵)

- 可逆, 存在 - 对任意,唯一解 - 列空间,零空间 情形 2:(超定方程组,满列秩)

  • 方程比未知数多,通常无解
  • ,唯一解
  • 实际应用中用最小二乘法找"最近似"解

情形 3:(欠定方程组,满行秩)

  • 未知数比方程多,自由度过多

  • 对任意都有解(

  • 无穷多解,零空间维度为 情形 4:(秩亏)

  • 某些 无解,某些有无穷多解

  • 最"病态"的情况,需要具体分析

通解的结构

如果 有解,通解为:

其中:

- 是任一特解( particular solution) -零空间中任意向量

几何意义:解集是零空间平移后的仿射子空间。

四个基本子空间

概述

对于 矩阵,有四个紧密相关的子空间:

子空间 符号 所在空间 维度
列空间
零空间
行空间
左零空间

行空间

行空间 的列空间:

等价于 的行向量的所有线性组合。

重要性质(行秩=列秩)

左零空间

左零空间 的零空间:

为什么叫"左"零空间?因为 可以看作 从左边乘

正交关系

核心定理:四个子空间两两正交!

-:零空间与行空间正交 -:左零空间与列空间正交

而且它们不只是正交,还是正交补

- - 直觉理解 维输入空间被分成两个正交部分——行空间和零空间。矩阵 把行空间映射到列空间,把零空间压扁到原点。

具体例子

考虑(两行成比例)

  • 列空间 中方向 的直线,维度 1
  • 零空间:满足 平面,维度 2
  • 行空间 中方向 的直线,维度 1
  • 左零空间 中方向 的直线,维度 1

验证:(列数),(行数)✓

工程应用案例

应用一:电路分析

考虑一个简单电路网络。根据基尔霍夫电流定律( KCL),每个节点的电流总和为零。

假设电路有 3 个节点和 5 个支路,关联矩阵 描述了支路和节点的连接关系:

方程 描述了 KCL 。这里 是支路电流向量, 给出了所有可能的电流分布。

实际意义:零空间的维度告诉我们电路中有多少"独立回路"。

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

# 关联矩阵
A = np.array([
[1, -1, 0, 1, 0],
[-1, 0, 1, 0, 1],
[0, 1, -1, -1, -1]
])

# 计算秩
rank = np.linalg.matrix_rank(A)
null_dim = A.shape[1] - rank
print(f"秩: {rank}, 零空间维度(独立回路数): {null_dim}")

应用二:计算机图形学

3D 图形变换本质上是矩阵乘法。当你在建模软件中旋转、缩放、投影一个模型时,发生的正是

投影问题:把 3D 点投影到 2D 屏幕

这个矩阵的零空间是 轴方向——所有沿 轴的点都被投影到同一位置。

逆问题:从 2D 图像恢复 3D 结构。由于投影丢失了 信息(零空间非平凡),这个问题是病态的,需要额外约束。

应用三:最小二乘法与数据拟合

当方程组 无解(超定方程组)时,我们找"最接近"的解。

正规方程

这是最小二乘解的公式。有趣的是, 的列空间与 的行空间相同!

例子:线性回归

有数据点,拟合直线

4 个方程 2 个未知数,无精确解。最小二乘解:

1
2
3
4
5
6
7
8
import numpy as np

A = np.array([[1, 1], [2, 1], [3, 1], [4, 1]])
b = np.array([2, 3, 5, 4])

# 正规方程
x = np.linalg.lstsq(A, b, rcond=None)[0]
print(f"最佳拟合: y = {x[0]:.2f}x + {x[1]:.2f}")

应用四:经济学中的投入产出模型

Leontief 投入产出模型描述了经济部门之间的相互依赖。

是各部门的总产出, 是投入产出系数矩阵( 表示生产 1 单位 产品需要多少 产品), 是最终需求。

平衡方程:,即 问题:给定最终需求,各部门需要生产多少?

这是一个线性方程组问题。如果 可逆,解为

应用五:信号处理与图像压缩

JPEG 图像压缩的核心是离散余弦变换( DCT)。设 是原始像素向量, 是 DCT 矩阵: 是可逆的满秩矩阵, 是频率域系数。压缩的关键是:大多数 很小,可以舍弃(设为 0),从而只保留少量重要系数。

解压缩就是求解,即

深入理解:几何直觉

列空间的"可达性"

想象你站在原点,手里有几根魔法棍(列向量)。每根棍可以正反方向使用,长度可以任意缩放。

  • 一根棍:你能到达一条直线上的所有点
  • 两根不平行的棍:你能到达一个平面上的所有点
  • 三根不共面的棍:你能到达三维空间的所有点

如果某根棍是其他棍的组合(线性相关),它就是"冗余"的,不增加可达范围。

零空间的"损失"

零空间描述了"信息损失"。如果你把零空间中的任何向量加到输入上,输出不变。

这就像:

  • 在黑白照片中,红色和绿色可能无法区分(某些颜色差异在零空间中)
  • 在低分辨率图像中,微小细节被抹掉(高频信息在零空间中)

秩的"信息维度"

秩是"有效信息维度"。一个 的矩阵可能秩只有 3,意味着它本质上只携带 3 维信息,其余都是冗余。

在数据科学中,这催生了降维技术——找到数据的"本质维度",舍弃噪声。

练习题

基础题

题 1:判断 是否在 的列空间中。

题 2:求矩阵 的秩。

题 3:求矩阵 的零空间。

题 4:解释为什么零空间总是包含零向量。

题 5:对于 矩阵,如果,求

计算题

题 6:用高斯消元法求解:

题 7:求矩阵 的列空间和零空间的基。

题 8:验证 满足秩-零化度定理。

题 9:求方程组的通解:

题 10:设 矩阵。证明

证明题

题 11:证明:如果 矩阵且,则 对所有都有解。

题 12:证明:零空间与行空间正交,即若,则

题 13:证明:方程 有解当且仅当 中所有向量正交。

题 14:设 是投影矩阵()。证明

应用题

题 15:某工厂生产 A 、 B 、 C 三种产品。每单位产品需要的原料如下:

产品 钢材(kg) 塑料(kg) 电子元件(个)
A 2 1 3
B 1 2 2
C 3 1 4

现有钢材 100kg 、塑料 80kg 、电子元件 150 个。问能否恰好用完所有原料?如果能,生产计划是什么?

题 16:用最小二乘法拟合数据 到直线,并计算残差。

题 17:某电路网络的关联矩阵为:

求独立回路的数量(即)。

编程题

题 18:实现一个函数,判断方程组 是无解、唯一解还是无穷多解。

1
2
3
4
5
6
7
def analyze_system(A, b):
"""
分析线性方程组 Ax = b 的解的情况
返回: 'no_solution', 'unique', 或 'infinite'
"""
# 请实现此函数
pass

题 19:编写程序,对于给定矩阵,计算并可视化四个基本子空间。

题 20:实现简化行阶梯形( RREF)算法,并用它求矩阵的秩和零空间基。

思考题

题 21:为什么"行秩=列秩"?尝试用几何直觉解释。

题 22:在机器学习中,为什么特征矩阵的秩很重要?秩亏的特征矩阵会带来什么问题?

题 23:考虑图像压缩。一张 的灰度图可以看作 维向量。为什么实际中可以用远少于 个数来近似表示它?这与矩阵的秩有什么关系?

题 24: GPS 定位需要至少 4 颗卫星的信号,为什么?这与线性方程组有什么关系?

练习题详细答案

基础题答案

题 1:判断 是否在 的列空间中

解答

观察矩阵:两列都是 的倍数

  • 第一列:
  • 第二列:

因此 是方向 的直线(一维子空间)。

检查

由于 的倍数,所以

验证方法2:求解

增广矩阵:

无矛盾行,有解,因此


题 2:求矩阵 的秩

解答

行化简:

只有 1 个主元,所以

几何意义:三个列向量都在同一条直线上(都是 的倍数)。

题 3:求矩阵 的零空间

解答

求解

从第一个方程:

代入第二个方程:

因此,从而

答案(只有零向量)

原因 是满秩方阵,,可逆。


题 4:解释为什么零空间总是包含零向量

解答

定义:零空间

证明零向量必在其中

对于任意矩阵,总有:

这是矩阵乘法的性质。因此零向量 总满足

结论 对任意矩阵 成立。

更深层原因:零空间是向量空间的子空间,而任何子空间都必须包含零向量(这是子空间的三个条件之一)。


题 5:对于 矩阵,如果,求

解答

使用秩-零化度定理

其中 是列数。

代入已知条件:

- -(矩阵是

因此:

答案

意义:零空间是 3 维的,有 3 个自由变量。


计算题答案

题 6:用高斯消元法求解方程组

解答

步骤1:写出增广矩阵

步骤2:消元(

步骤3:继续消元(

步骤4:回代求解

从第二行:

代入第一行:

通解 为自由变量):

验证:代入原方程组检验 ✓

题 2 答案

Gauss消元法将增广矩阵 化为行阶梯形。如果在消元过程中出现类似)的矛盾行,则无解。

等价条件:

几何意义: 不在列空间 中。

题 3 答案

不一定。如果(列数),则零空间只有零向量,解唯一。

如果,则有 个自由变量,解有无穷多个,构成仿射子空间。

题 4 答案

第二行是第一行的 2 倍,所以

列空间:所有形如 的向量(通过原点的直线)。

零空间:解,得

验证秩-零化度定理:

题 5 答案

秩为 矩阵,零空间维度 =

-:零空间维度 = 4 -:零空间维度 = 3 -:零空间维度 = 2

题 6 答案

自由变量:。基础解系:

零空间:,是 中的平面。

题 7 答案

对于 矩阵

  • 列空间
  • 零空间

它们"住"在不同维度的空间!不能直接比较是否正交。

但是,行空间 和零空间 都在 中,它们正交补

题 8 答案

化为行阶梯形:

主元列:第 1 列和第 3 列。基础向量:

(满行秩,列空间是整个

题 9 答案 矩阵,秩为 5(满行秩)。

由秩-零化度定理:

几何意义:8 维输入空间中,有 3 维被"压扁"到零,5 维被保留映射到输出空间。

题 10 答案

已解答(见正文)。

通解:

题 11 答案

。这意味着 个线性独立的列向量,它们张成(因为 个线性独立的 维向量必然张成整个)。

所以,任意 都在列空间中,因此 对所有 有解。

总结与展望

本章核心公式

思维模型

当遇到线性方程组时,不要急着消元计算。先问自己三个问题:

  1. 列空间是什么? → 决定哪些 有解
  2. 零空间是什么? → 决定解是否唯一
  3. 秩是多少? → 量化"有效信息"

这才是线性代数的本质思维——用空间和维度来理解方程。

下一章预告

《特征值与特征向量》将揭示矩阵的"内在基因":

  • 什么是矩阵的"本征"方向?
  • 特征值的几何意义是什么?
  • 对角化:找到最简单的坐标系
  • 应用: Google PageRank 、主成分分析、动力系统

参考资料

  1. Strang, G. (2019). Introduction to Linear Algebra. Chapters 3-4.
  2. Lay, D. C. (2015). Linear Algebra and Its Applications. Chapter 2.
  3. 3Blue1Brown. Essence of Linear Algebra, Chapters 7-10.
  4. MIT OpenCourseWare. 18.06 Linear Algebra, Lectures 5-11.

本文是《线性代数的本质与应用》系列的第 5 章。

  • 本文标题:线性代数(五)线性方程组与列空间
  • 本文作者:Chen Kai
  • 创建时间:2019-01-26 11:00:00
  • 本文链接:https://www.chenk.top/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%EF%BC%88%E4%BA%94%EF%BC%89%E7%BA%BF%E6%80%A7%E6%96%B9%E7%A8%8B%E7%BB%84%E4%B8%8E%E5%88%97%E7%A9%BA%E9%97%B4/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论