Chapter 05

基与维数

基的严格定义、维数定理、坐标表示与基变换

01

核心概念

基的定义

向量空间 V 的一组(basis)是满足以下两个条件的向量集合 B = {v₁, v₂, ..., vₙ}:

  1. 线性无关:集合中的向量彼此不能互相线性表示。
  2. 张成空间:span(B) = V,即 V 中任何向量都可由 B 线性表示。
直观理解

基是向量空间的"最小生成集"和"最大线性无关集"。就像地图的坐标轴,基为我们提供了一套描述空间中任意位置的"语言"——坐标。

维数定理

若 V 是有限维向量空间,则 V 的任意两组基包含相同数量的向量。这个数量称为 V 的维数(dimension),记作 dim(V)。

若 B₁ 和 B₂ 都是 V 的基,则 |B₁| = |B₂| = dim(V)

维数是向量空间最本质的不变量之一。无论选择哪组基,坐标系的"自由度"(即维数)始终不变。例如:

坐标表示

给定 V 的一组基 B = {b₁, b₂, ..., bₙ},任何向量 v ∈ V 都可以唯一地表示为:

v = c₁b₁ + c₂b₂ + ... + cₙbₙ

系数 (c₁, c₂, ..., cₙ) 称为 v 相对于基 B 的坐标,记作 [v]ᴮ = (c₁, c₂, ..., cₙ)ᵀ。

坐标的唯一性

坐标的唯一性由基的线性无关性保证。若存在两组不同的系数表示同一个向量,则基的线性组合等于零向量且系数不全为零,这与基的线性无关性矛盾。

标准基

Rⁿ 中最常用的基是标准基(standard basis):

e₁ = (1,0,...,0)ᵀ,   e₂ = (0,1,...,0)ᵀ,   ...,   eₙ = (0,0,...,1)ᵀ

在标准基下,向量 v = (v₁, v₂, ..., vₙ)ᵀ 的坐标就是其分量本身,即 [v]ᴱ = v。

改变基

设 B = {b₁, ..., bₙ} 和 C = {c₁, ..., cₙ} 是 V 的两组基。向量 v 在两组基下的坐标 [v]ᴮ 和 [v]ᶜ 之间的关系由基变换矩阵(change-of-basis matrix)决定。

从 B 到 C 的基变换矩阵 P_{C←B} 的列是 B 中向量在 C 下的坐标:

P_{C←B} = [ [b₁]ᶜ   [b₂]ᶜ   ...   [bₙ]ᶜ ]

坐标变换公式为:

[v]ᶜ = P_{C←B} · [v]ᴮ
基变换矩阵的逆

从 C 到 B 的基变换矩阵是 P_{C←B} 的逆矩阵:P_{B←C} = (P_{C←B})⁻¹。特别地,若 C 是标准基,则 P_{C←B} 就是以 B 的向量为列构成的矩阵。

02

计算方法

求向量在某基下的坐标

给定基 B = {b₁, b₂, ..., bₙ} 和向量 v,求 [v]ᴮ 即求解线性方程组:

c₁b₁ + c₂b₂ + ... + cₙbₙ = v

构造增广矩阵 [b₁ b₂ ... bₙ | v],通过高斯消元得到解 (c₁, c₂, ..., cₙ)。

判断是否为基

判断 n 个向量是否构成 Rⁿ 的基,等价于判断它们是否线性无关。常用方法:

基变换矩阵的计算

设 B 和 C 是 Rⁿ 的两组基。求 P_{C←B} 的步骤:

  1. 将 B 的每个向量 bᵢ 表示为 C 的线性组合,求 [bᵢ]ᶜ。
  2. 将所有 [bᵢ]ᶜ 作为列向量构成 P_{C←B}。

更实用的方法:若已知矩阵 B_mat(以 B 为列)和 C_mat(以 C 为列),则:

P_{C←B} = C_mat⁻¹ · B_mat
03

工程应用

坐标系转换(GPS坐标变换)

全球定位系统(GPS)需要在不同的坐标系之间转换:地心地固坐标系(ECEF)、地理坐标系(经纬度高程)、局部切平面坐标系(ENU)。这些转换本质上是基变换:选择不同的基向量(指向北、东、天顶的单位向量),同一个物理位置在不同基下有不同的坐标表示。

数据降维(选择有效基)

在机器学习中,高维数据往往存在于低维流形上。主成分分析(PCA)的核心思想就是寻找一组新的正交基(主成分),使得数据在前几个基向量方向上的投影方差最大。这相当于将数据从标准基变换到"数据驱动"的基,从而保留主要信息并降维。

JPEG的DCT基

JPEG图像压缩使用离散余弦变换(DCT)。8×8 的图像块被表示为64个DCT基函数的线性组合。由于大部分图像能量集中在低频DCT基上,高频系数可以被量化和丢弃,实现大幅压缩而不明显损失视觉质量。

有限元方法的形函数基

在结构力学和电磁场仿真中,有限元法将连续域离散化为有限个单元。每个单元上的未知场量(如位移、电势)用形函数(shape function)作为基来插值。选择适当的形函数基是有限元方法精度和效率的关键。

04

例题

例题 5.1

在 R³ 中,给定基 B = {b₁, b₂, b₃},其中 b₁ = (1,0,1)ᵀ, b₂ = (0,1,1)ᵀ, b₃ = (1,1,0)ᵀ。求向量 v = (4,3,3)ᵀ 在基 B 下的坐标 [v]ᴮ。

设 [v]ᴮ = (c₁, c₂, c₃)ᵀ,则 c₁b₁ + c₂b₂ + c₃b₃ = v。

构造增广矩阵并进行行简化:

[ 1 0 1 | 4 ]
[ 0 1 1 | 3 ]
[ 1 1 0 | 3 ]

R₃ ← R₃ - R₁:

[ 1 0 1 | 4 ]
[ 0 1 1 | 3 ]
[ 0 1 -1 | -1 ]

R₃ ← R₃ - R₂:

[ 1 0 1 | 4 ]
[ 0 1 1 | 3 ]
[ 0 0 -2 | -4 ]

回代得:c₃ = 2, c₂ = 1, c₁ = 2。

[v]ᴮ = (2, 1, 2)ᵀ
例题 5.2

判断向量组 v₁ = (1,2,3)ᵀ, v₂ = (2,5,7)ᵀ, v₃ = (1,3,4)ᵀ 是否构成 R³ 的一组基。

构造矩阵 A = [v₁ v₂ v₃]:

A = [ 1 2 1 ]
     [ 2 5 3 ]
     [ 3 7 4 ]

计算行列式 det(A):

det(A) = 1×(5×4 - 3×7) - 2×(2×4 - 3×3) + 1×(2×7 - 5×3)

= 1×(20-21) - 2×(8-9) + 1×(14-15)

= -1 + 2 - 1 = 0

det(A) = 0,故该向量组线性相关,不能构成 R³ 的基。
例题 5.3

在 R² 中,给定两组基:B = {b₁=(1,1)ᵀ, b₂=(1,-1)ᵀ} 和 C = {c₁=(2,1)ᵀ, c₂=(1,2)ᵀ}。求从 B 到 C 的基变换矩阵 P_{C←B}。

方法:P_{C←B} = C⁻¹B,其中 B 和 C 是以基向量为列的矩阵。

B = [ 1 1 ]    C = [ 2 1 ]
     [ 1 -1 ]         [ 1 2 ]

先求 C⁻¹:det(C) = 4-1 = 3

C⁻¹ = (1/3)[ 2 -1 ]
             [ -1 2 ]

计算 P_{C←B} = C⁻¹B:

P_{C←B} = (1/3)[ 2 -1 ][ 1 1 ] = (1/3)[ 1 3 ]
                  [ -1 2 ][ 1 -1 ]         [ 1 -3 ]
P_{C←B} = [1/3 1; 1/3 -1]
例题 5.4

设多项式空间 P₂ 的两组基为 B = {1, x, x²} 和 C = {1, 1+x, 1+x+x²}。求多项式 p(x) = 2 + 3x + 4x² 在基 C 下的坐标 [p]ᶜ。

首先,B 是标准基,[p]ᴮ = (2, 3, 4)ᵀ。

求 P_{B←C}:C 中向量在 B 下的坐标即为其系数:

[1]ᴮ = (1,0,0)ᵀ,   [1+x]ᴮ = (1,1,0)ᵀ,   [1+x+x²]ᴮ = (1,1,1)ᵀ

因此:

P_{B←C} = [ 1 1 1 ]
             [ 0 1 1 ]
             [ 0 0 1 ]

P_{C←B} = (P_{B←C})⁻¹。对三角矩阵求逆:

P_{C←B} = [ 1 -1 0 ]
             [ 0 1 -1 ]
             [ 0 0 1 ]

[p]ᶜ = P_{C←B}[p]ᴮ = (2-3, 3-4, 4)ᵀ = (-1, -1, 4)ᵀ。

验证:-1·1 + (-1)·(1+x) + 4·(1+x+x²) = -1-1-x+4+4x+4x² = 2+3x+4x²,正确。

[p]ᶜ = (-1, -1, 4)ᵀ
05

MATLAB 实践

定义基与坐标变换

MATLAB
% 定义基向量(作为列向量) B = [1 0 1; 0 1 1; 1 1 0]; % 验证是否为基:检查行列式是否非零 detB = det(B); disp(['det(B) = ', num2str(detB)]); % 输出: det(B) = -2,非零,是基 % 求向量 v 在基 B 下的坐标 v = [4; 3; 3]; coords = B \ v; % 等价于 inv(B)*v,但更稳定 disp('坐标 [v]_B ='); disp(coords'); % 输出: 2 1 2

基变换矩阵

MATLAB
% 定义两组基 B = [1 1; 1 -1]; C = [2 1; 1 2]; % 计算从 B 到 C 的基变换矩阵 P_CB = C \ B; disp('P_{C←B} ='); disp(P_CB); % 验证:取 B 下坐标为 (1,0) 的向量(即 b1) % 在 C 下的坐标应为 P_CB * [1;0] coord_in_C = P_CB * [1; 0]; disp('b1 在 C 下的坐标:'); disp(coord_in_C'); % 验证还原:从 C 坐标转回标准坐标 back_to_std = C * coord_in_C; disp('还原为标准坐标:'); disp(back_to_std'); % 应等于 b1 = [1, 1]

结果展示

执行上述代码,MATLAB 命令行输出如下:

MATLAB 输出
det(B) = -2 坐标 [v]_B = 2 1 2 P_{C←B} = 0.3333 1.0000 0.3333 -1.0000 b1 在 C 下的坐标: 0.3333 0.3333 还原为标准坐标: 1 1
不同基下同一向量的坐标表示
← 上一章:矩阵运算与逆矩阵 下一章:线性方程组 →