第7章 有限维向量空间上的算子 - 谱定理 (Operators on Finite-Dimensional Vector Spaces)
一、导读
7.1 本章学习目标
通过本章的学习,你将能够:
理解谱定理的核心内容:掌握自伴算子在标准正交基下可对角化的定理,理解其重要性
掌握正规算子的概念:理解 $TT^ = T^T$ 的条件及其几何意义
理解谱分解的形式:掌握如何将自伴算子表示为正交投影的加权和
掌握实对称矩阵的性质:理解为什么实对称矩阵总有实特征值和正交特征向量
理解酉算子和正交算子:掌握保持内积的线性变换的性质
掌握极分解和奇异值分解(SVD):理解任意矩阵的"特征分解"推广
将谱理论应用于实际问题:如主成分分析、图像压缩、振动分析
7.2 为什么本章如此重要
谱定理是线性代数的巅峰之作。它将前面所有章节的概念(向量空间、线性映射、特征值、内积空间)统一起来,给出了线性算子最优雅的结构描述。
从理论的角度看,谱定理表明自伴算子(或更一般的正规算子)具有"最好"的性质:它们可以在标准正交基下对角化。这意味着复杂的线性变换可以分解为独立的缩放操作,每个缩放沿一个正交方向进行。
从应用的角度看:
- 物理学:量子力学中的可观测量是自伴算子,谱定理保证了测量结果是实数,且可以找到正交的本征态
- 工程学:结构振动的模态分析依赖对称矩阵的特征分解;信号处理中的滤波器设计使用谱方法
- 数据科学:PCA 本质上是协方差矩阵(对称矩阵)的谱分解;推荐系统使用 SVD
- 计算机图形学:惯性张量的对角化找到主轴;光照计算使用法向量的谱分解
- 优化:二次型的极值问题转化为特征值问题;半定规划使用谱约束
从认知的角度看,本章帮助你建立"谱思维"。不再将线性算子视为黑盒矩阵,而是看作在特定正交方向上的独立缩放。这种分解视角是理解复杂系统的钥匙。
7.3 核心问题引导
在学习本章时,请持续思考以下问题:
什么是谱定理? 为什么自伴算子可以在标准正交基下对角化?这与一般矩阵的对角化有什么区别?
正规算子与自伴算子有什么关系? 为什么正规算子也可以酉对角化?
谱分解的物理意义是什么? 如何将算子表示为正交投影的加权和?
实对称矩阵有什么特殊性质? 为什么它们的特征值总是实数,特征向量可以选为正交的?
酉算子和正交算子保持什么不变? 它们在几何上对应什么变换?
SVD 与特征分解有什么区别? 为什么 SVD 适用于任意矩阵(包括非方阵)?
极分解如何类比复数的极坐标表示? 它在物理和工程中有何应用?
二、核心概念详解
7.1 自伴算子与谱定理
定义 7.1(自伴算子)
设 $V$ 是内积空间,$T: V \to V$ 是线性算子。如果 $T = T^*$,则称 $T$ 是自伴(Self-Adjoint)或Hermitian算子。
在矩阵语言中,$A = A^*$(共轭转置等于自身)。在实情况下,$A = A^T$(对称矩阵)。
定理 7.1:自伴算子的特征值是实数
设 $T$ 是自伴算子,$\lambda$ 是特征值。则 $\lambda \in \mathbb{R}$。
证明:见定理 6.10。$\square$
深入理解:这个定理的物理意义非常重要。在量子力学中,可观测量(如位置、动量、能量)对应自伴算子,测量结果必须是实数。谱定理保证了这一点。
定理 7.2:自伴算子的不同特征值对应的特征向量正交
设 $T$ 是自伴算子,$\lambda_1 \neq \lambda_2$ 是特征值,$v_1, v_2$ 是对应的特征向量。则 $v_1 \perp v_2$。
证明:
$$\lambda_1 \langle v_1, v_2 \rangle = \langle \lambda_1 v_1, v_2 \rangle = \langle Tv_1, v_2 \rangle = \langle v_1, T^*v_2 \rangle = \langle v_1, Tv_2 \rangle = \langle v_1, \lambda_2 v_2 \rangle = \lambda_2 \langle v_1, v_2 \rangle$$
所以 $(\lambda_1 - \lambda_2)\langle v_1, v_2 \rangle = 0$。由于 $\lambda_1 \neq \lambda_2$,得 $\langle v_1, v_2 \rangle = 0$。$\square$
几何直觉:自伴算子在不同特征值方向上的作用是独立的,这些方向彼此垂直。这使得自伴算子的结构非常"整齐"。
定理 7.3(实谱定理 / 对称矩阵的谱分解)
设 $V$ 是有限维实内积空间,$T: V \to V$ 是自伴算子。则存在 $V$ 的标准正交基由 $T$ 的特征向量组成。
等价地,存在正交矩阵 $Q$($Q^TQ = I$)和对角矩阵 $D$ 使得:
$$T = QDQ^T$$
其中 $D$ 的对角元是 $T$ 的实特征值,$Q$ 的列是对应的单位特征向量。
证明思路:
对 $\dim V$ 进行归纳。
- 基础情况:$\dim V = 1$,显然成立。
- 归纳步骤:由代数基本定理,$T$ 有特征值 $\lambda$(可能是复数)。但由于 $T$ 自伴,$\lambda$ 是实数(定理 7.1)。
取对应于 $\lambda$ 的单位特征向量 $e_1$。考虑 $U = \text{span}(e_1)^\perp$。由于 $T$ 自伴,$U$ 是 $T$ 的不变子空间(若 $u \perp e_1$,则 $Tu \perp e_1$)。
$T|_U: U \to U$ 也是自伴算子。由归纳假设,$U$ 有标准正交基由 $T|_U$ 的特征向量组成。加上 $e_1$,得到 $V$ 的标准正交基。$\square$
重要意义:实谱定理保证了对称矩阵总可以正交对角化。这是 PCA、二次型优化等应用的理论基础。
定理 7.4(复谱定理)
设 $V$ 是有限维复内积空间,$T: V \to V$ 是自伴算子。则存在 $V$ 的标准正交基由 $T$ 的特征向量组成。
等价地,存在酉矩阵 $U$($U^*U = I$)和对角矩阵 $D$(实对角元)使得:
$$T = UDU^*$$
7.2 谱分解
定理 7.5(谱分解)
设 $T$ 是自伴算子,特征值为 $\lambda_1, \ldots, \lambda_k$(不同的),对应的特征空间为 $E_1, \ldots, E_k$。设 $P_i$ 是到 $E_i$ 的正交投影。则:
$$T = \lambda_1 P_1 + \cdots + \lambda_k P_k$$
且满足:
$P_i P_j = 0$ 当 $i \neq j$(投影互斥)
$P_1 + \cdots + P_k = I$(完备性)
$P_i^2 = P_i = P_i^*$(正交投影的性质)
证明:
取 $V$ 的标准正交基由特征向量组成。对于任意 $v \in V$,分解为 $v = v_1 + \cdots + v_k$,其中 $v_i \in E_i$。
则 $Tv = \lambda_1 v_1 + \cdots + \lambda_k v_k = \lambda_1 P_1 v + \cdots + \lambda_k P_k v$。
所以 $T = \sum_{i=1}^k \lambda_i P_i$。
性质 1-3 由正交投影的定义和特征空间的正交性可得。$\square$
物理直觉:谱分解将算子分解为"纯频率"成分的加权和。每个投影 $P_i$ 提取一个特征空间的分量,权重 $\lambda_i$ 是该分量的"强度"。这类似于傅里叶级数将周期函数分解为正弦波的加权和。
例 7.1:谱分解的计算
设 $A = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}$。
特征值:$\lambda_1 = 1$,$\lambda_2 = 3$。
对应的单位特征向量:$v_1 = \frac{1}{\sqrt{2}}(1, -1)^T$,$v_2 = \frac{1}{\sqrt{2}}(1, 1)^T$。
投影算子:
$$P_1 = v_1 v_1^T = \frac{1}{2}\begin{pmatrix} 1 & -1 \\ -1 & 1 \end{pmatrix}$$
$$P_2 = v_2 v_2^T = \frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}$$
验证:
$$A = 1 \cdot P_1 + 3 \cdot P_2 = \frac{1}{2}\begin{pmatrix} 1 & -1 \\ -1 & 1 \end{pmatrix} + \frac{3}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix} = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}$$
7.3 正规算子
定义 7.2(正规算子)
设 $T: V \to V$ 是线性算子。如果 $TT^ = T^T$,则称 $T$ 是正规(Normal)算子。
例 7.2:正规算子的例子
自伴算子:$T = T^$,显然 $TT^ = T^2 = T^*T$。
反自伴算子:$T^ = -T$,则 $TT^ = -T^2 = T^*T$。
酉算子:$T^ = T^{-1}$,则 $TT^ = I = T^*T$。
旋转矩阵:在 $\mathbb{R}^2$ 中,$\begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}$ 是正交矩阵,因此是正规的。
定理 7.6(正规算子的谱定理)
设 $T$ 是正规算子。则存在 $V$ 的标准正交基由 $T$ 的特征向量组成。
等价地,存在酉矩阵 $U$ 和对角矩阵 $D$(可能是复数)使得:
$$T = UDU^*$$
证明思路:
关键引理:对于正规算子,$\|Tv\| = \|T^v\|$。由此可证 $T$ 和 $T^$ 有相同的特征向量。
然后类似自伴算子的证明,使用归纳法和不变子空间。$\square$
重要推论:正规算子可酉对角化。自伴算子、酉算子、反自伴算子都是正规算子的特例。
定理 7.7:正规算子的特征向量性质
设 $T$ 是正规算子,$\lambda$ 是特征值,$v$ 是对应的特征向量。则 $v$ 也是 $T^*$ 的特征向量,对应特征值 $\overline{\lambda}$。
证明:
考虑 $\|(T - \lambda I)v\| = 0$。由于 $T$ 正规,$(T - \lambda I)$ 也正规。
对于正规算子 $S$,有 $\|Sv\| = \|S^v\|$。所以 $\|(T^ - \overline{\lambda}I)v\| = 0$,即 $T^*v = \overline{\lambda}v$。$\square$
7.4 酉算子和正交算子
定义 7.3(酉算子)
设 $V$ 是复内积空间,$U: V \to V$ 是线性算子。如果 $U^U = I$(即 $U^ = U^{-1}$),则称 $U$ 是酉(Unitary)算子。
在实情况下,称为正交(Orthogonal)算子,满足 $Q^TQ = I$。
定理 7.8:酉算子的等价条件
以下条件等价:
$U$ 是酉算子
$\langle Uv, Uw \rangle = \langle v, w \rangle$ 对所有 $v, w$(保持内积)
$\|Uv\| = \|v\|$ 对所有 $v$(保持范数 / 等距)
$U$ 将标准正交基映射为标准正交基
$U$ 的列(在标准正交基下)构成标准正交基
证明:
$(1) \implies (2)$:$\langle Uv, Uw \rangle = \langle v, U^*Uw \rangle = \langle v, w \rangle$
$(2) \implies (3)$:取 $v = w$
$(3) \implies (2)$:由极化恒等式(Polarization Identity)
$(2) \iff (4)$:显然
$(4) \iff (5)$:矩阵表示的直接推论 $\square$
几何直觉:酉算子对应旋转和反射,保持向量的长度和夹角不变。在 $\mathbb{R}^2$ 中,正交矩阵对应旋转或反射;在 $\mathbb{R}^3$ 中,对应绕某轴的旋转或关于某平面的反射。
定理 7.9:酉算子的特征值的模为 1
设 $U$ 是酉算子,$\lambda$ 是特征值。则 $|\lambda| = 1$。
证明:
设 $Uv = \lambda v$,$\|v\| = 1$。则:
$$1 = \|v\|^2 = \|Uv\|^2 = \|\lambda v\|^2 = |\lambda|^2 \|v\|^2 = |\lambda|^2$$
所以 $|\lambda| = 1$。$\square$
几何解释:在复平面上,酉算子的特征值位于单位圆上。对于旋转矩阵 $\begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}$,特征值为 $e^{\pm i\theta}$,模为 1。
定理 7.10:正交矩阵的行列式为 ±1
设 $Q$ 是正交矩阵。则 $\det(Q) = \pm 1$。
证明:
$Q^T Q = I \implies \det(Q^T)\det(Q) = 1 \implies (\det Q)^2 = 1 \implies \det Q = \pm 1$。$\square$
几何意义:$\det Q = 1$ 对应纯旋转(保持定向),$\det Q = -1$ 对应包含反射的变换(反转定向)。
7.5 极分解
定理 7.11(极分解)
设 $T: V \to V$ 是线性算子。则存在酉算子 $U$ 和正半定自伴算子 $P$ 使得:
$$T = UP$$
其中 $P = \sqrt{T^T}$($T^T$ 的唯一正半定平方根)。
如果 $T$ 可逆,则 $U$ 唯一。
类比:这类似于复数的极坐标表示 $z = re^{i\theta}$,其中 $r = |z|$ 是模长,$e^{i\theta}$ 是相位。这里 $P$ 类比模长,$U$ 类比相位。
例 7.3:矩阵的极分解
设 $A = \begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix}$。
$A^TA = \begin{pmatrix} 1 & 0 \\ 1 & 1 \end{pmatrix}\begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 2 \end{pmatrix}$
计算 $P = \sqrt{A^TA}$(需要特征分解),然后 $U = AP^{-1}$。
计算过程:
$A^TA$ 的特征值:$\lambda = \frac{3 \pm \sqrt{5}}{2}$
对应的单位特征向量构成 $V$,则 $A^TA = VDV^T$,$P = V\sqrt{D}V^T$。
$U = AP^{-1}$ 是正交矩阵。
7.6 奇异值分解(SVD)
定理 7.12(SVD)
设 $A$ 是 $m \times n$ 矩阵(可以是复数,可以是非方阵)。则存在:
- 酉矩阵 $U$($m \times m$)
- 酉矩阵 $V$($n \times n$)
- "对角"矩阵 $\Sigma$($m \times n$),对角元 $\sigma_1 \geq \sigma_2 \geq \cdots \geq 0$
使得:
$$A = U\Sigma V^*$$
$\sigma_i$ 称为奇异值(Singular Values),$U$ 的列称为左奇异向量,$V$ 的列称为右奇异向量。
证明思路:
$A^A$ 是 $n \times n$ 半正定自伴矩阵,有特征分解 $A^A = VDV^*$,其中 $D = \text{diag}(\lambda_1, \ldots, \lambda_n)$,$\lambda_i \geq 0$。
定义 $\sigma_i = \sqrt{\lambda_i}$,$\Sigma = \text{diag}(\sigma_1, \ldots, \sigma_r, 0, \ldots)$。
构造 $U$ 的列为 $u_i = \frac{1}{\sigma_i}Av_i$(对 $\sigma_i > 0$),补充正交向量使 $U$ 成为酉矩阵。
验证 $A = U\Sigma V^*$。$\square$
重要意义:SVD 是特征分解的推广,适用于任意矩阵。它是数据分析、图像压缩、推荐系统的核心工具。
定理 7.13:奇异值的性质
奇异值是唯一的(按降序排列)
$\sigma_i = \sqrt{\lambda_i(A^A)} = \sqrt{\lambda_i(AA^)}$
$\text{rank}(A) = $ 非零奇异值的个数
$\|A\|_2 = \sigma_1$(谱范数,最大奇异值)
$\|A\|_F = \sqrt{\sum \sigma_i^2}$(Frobenius 范数)
条件数 $\kappa(A) = \sigma_1 / \sigma_r$($r = \text{rank}(A)$)
几何解释
SVD 揭示了任意线性变换的本质结构:
第一步:$V^*$ 将输入空间旋转/反射(酉变换,保持长度)
第二步:$\Sigma$ 沿坐标轴缩放(可能降维,如果 $m \neq n$)
第三步:$U$ 将结果旋转/反射到输出空间
因此,任意线性变换都可以看作"旋转-缩放-旋转"的组合。
直观理解:想象将一个球体经过线性变换变成椭球体。SVD 告诉我们:先旋转球体,然后沿坐标轴拉伸成椭球,最后再旋转一次。拉伸的倍数就是奇异值,拉伸的方向就是奇异向量。
定理 7.14(Eckart-Young 定理)
设 $A = U\Sigma V^$ 是 SVD。定义 $A_k = \sum_{i=1}^k \sigma_i u_i v_i^$(保留前 $k$ 个奇异值)。则:
$$\min_{\text{rank}(B) \leq k} \|A - B\|_2 = \sigma_{k+1}$$
且 $A_k$ 是最优解。
这里 $\|\cdot\|_2$ 是谱范数(最大奇异值)。
重要意义:SVD 提供了最优的低秩近似。这在数据压缩、去噪、降维中有广泛应用。例如,在图像压缩中,保留前几个奇异值可以大幅减少存储空间,同时保持图像的主要特征。
三、程序员的视角
3.1 在机器学习中的应用
主成分分析(PCA):协方差矩阵是对称矩阵,谱定理保证它可以正交对角化。主成分是特征向量,方差是特征值。PCA 用于降维、可视化、去噪。
奇异值分解(SVD):用于降维、去噪、推荐系统。截断 SVD 保留前 $k$ 个奇异值,实现低秩近似。在自然语言处理中,SVD 用于潜在语义分析(LSA)。
谱聚类:构建数据图的拉普拉斯矩阵(对称半正定),计算其特征向量,用特征向量作为新特征进行聚类。这种方法能捕捉数据的非线性结构,特别适用于传统 K-means 难以处理的复杂形状簇。
神经网络初始化:正交初始化使用权重矩阵保持正交性,有助于梯度流动,避免梯度消失或爆炸。
矩阵补全:在推荐系统中,用户-物品评分矩阵通常是稀疏的。通过低秩 SVD 近似,可以预测缺失的评分。
3.2 常见陷阱与误区
误区 1:混淆特征值与奇异值
特征值针对方阵,可能为复数;奇异值针对任意矩阵,总是非负实数。对称矩阵的特征值绝对值等于奇异值。
误区 2:认为 SVD 是特征分解
SVD 分解的是 $A = U\Sigma V^*$,不是 $A = UDU^{-1}$。$U$ 和 $V$ 一般不同。只有在 $A$ 是对称正定时,SVD 才等同于特征分解。
误区 3:忽略数值稳定性
直接计算 $A^TA$ 然后求特征值可能数值不稳定。实际使用 bidiagonalization 和 QR 迭代。NumPy 的 np.linalg.svd 使用 LAPACK 的稳定算法。
误区 4:认为所有矩阵都可对角化
只有正规矩阵可酉对角化。一般矩阵只能三角化(Schur 分解)。但 SVD 总是存在。
误区 5:忽视奇异值的衰减速度
奇异值衰减快意味着矩阵接近低秩,适合压缩。如果奇异值衰减慢,低秩近似效果差。
3.3 与其他层级的联系
- 与特征值的联系:SVD 的奇异值是 $A^*A$ 的特征值的平方根
- 与最小二乘法的联系:SVD 提供了求解最小二乘问题的稳定方法
- 与伪逆的联系:$A^+ = V\Sigma^+ U^*$,其中 $\Sigma^+$ 将非零奇异值取倒数
- 与条件数的联系:条件数 $\kappa(A) = \sigma_1 / \sigma_r$
- 与谱定理的联系:SVD 可以看作非方阵的"谱分解"
四、代码实战
7.1 对称矩阵的谱分解
import numpy as np
def spectral_decomposition(A):
"""
对称矩阵的谱分解
参数:
A: 对称矩阵
返回:
eigenvalues: 特征值
eigenvectors: 正交特征向量矩阵
"""
# 使用 eigh 专门处理对称/Hermitian 矩阵
eigenvalues, eigenvectors = np.linalg.eigh(A)
return eigenvalues, eigenvectors
# 示例
A = np.array([[2, 1, 0],
[1, 3, 1],
[0, 1, 2]])
# 确保对称
A = (A + A.T) / 2
eigenvalues, eigenvectors = spectral_decomposition(A)
print("特征值:", eigenvalues)
print("特征向量矩阵:")
print(eigenvectors)
# 验证:A = QDQ^T
D = np.diag(eigenvalues)
Q = eigenvectors
A_reconstructed = Q @ D @ Q.T
print("\n重构误差:", np.linalg.norm(A - A_reconstructed))
# 验证正交性
print("Q^T Q:")
print(Q.T @ Q) # 应接近单位矩阵
# 谱分解:A = sum(lambda_i * P_i)
print("\n谱分解验证:")
A_spectral = np.zeros_like(A)
for i in range(len(eigenvalues)):
v = eigenvectors[:, i:i+1] # 列向量
P_i = v @ v.T # 投影矩阵
A_spectral += eigenvalues[i] * P_i
print(f"λ_{i+1} = {eigenvalues[i]:.4f}, P_{i+1}:")
print(P_i.round(4))
print("\n谱分解重构误差:", np.linalg.norm(A - A_spectral))7.2 奇异值分解
import numpy as np
import matplotlib.pyplot as plt
def compute_svd(A):
"""
计算 SVD
参数:
A: m x n 矩阵
返回:
U: m x m 酉矩阵
Sigma: 奇异值数组
Vt: n x n 酉矩阵的转置
"""
U, Sigma, Vt = np.linalg.svd(A, full_matrices=True)
return U, Sigma, Vt
# 示例
A = np.array([[1, 2, 3],
[4, 5, 6]])
U, Sigma, Vt = compute_svd(A)
print("U:")
print(U)
print("\n奇异值:", Sigma)
print("Vt:")
print(Vt)
# 重构
Sigma_matrix = np.zeros(A.shape)
np.fill_diagonal(Sigma_matrix, Sigma)
A_reconstructed = U @ Sigma_matrix @ Vt
print("\n重构误差:", np.linalg.norm(A - A_reconstructed))
# 低秩近似
k = 1 # 保留前 k 个奇异值
U_k = U[:, :k]
Sigma_k = np.diag(Sigma[:k])
Vt_k = Vt[:k, :]
A_approx = U_k @ Sigma_k @ Vt_k
print(f"\n秩-{k} 近似:")
print(A_approx)
print(f"秩-{k} 近似误差:", np.linalg.norm(A - A_approx))
# 可视化奇异值
plt.figure(figsize=(10, 6))
plt.bar(range(1, len(Sigma)+1), Sigma, alpha=0.7)
plt.xlabel('Singular Value Index')
plt.ylabel('Singular Value')
plt.title('Singular Values')
plt.grid(True, alpha=0.3)
plt.savefig('/tmp/singular_values.png', dpi=150, bbox_inches='tight')
plt.show()7.3 极分解
import numpy as np
def polar_decomposition(A):
"""
极分解 A = UP
参数:
A: 方阵
返回:
U: 酉矩阵
P: 正半定自伴矩阵
"""
# SVD
U_svd, Sigma, Vt = np.linalg.svd(A)
# P = V Sigma V^*
V = Vt.conj().T
P = V @ np.diag(Sigma) @ Vt
# U = U_svd Vt
U = U_svd @ Vt
return U, P
# 示例
A = np.array([[1, 2],
[3, 4]])
U, P = polar_decomposition(A)
print("U (酉矩阵):")
print(U)
print("\nP (正半定):")
print(P)
# 验证
A_reconstructed = U @ P
print("\n重构误差:", np.linalg.norm(A - A_reconstructed))
# 验证 U 是酉的
print("U^T U:")
print(U.T @ U) # 应接近单位矩阵
# 验证 P 是对称正半定的
print("P 的特征值:", np.linalg.eigvalsh(P)) # 应全为非负7.4 SVD 在图像压缩中的应用
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
# 读取图像(灰度)
# 创建一个示例图像
np.random.seed(42)
image = np.random.rand(200, 300)
# 计算 SVD
U, Sigma, Vt = np.linalg.svd(image, full_matrices=False)
# 不同秩的近似
ranks = [1, 5, 10, 20, 50, 100]
fig, axes = plt.subplots(2, 3, figsize=(15, 10))
axes = axes.flatten()
for idx, k in enumerate(ranks):
# 低秩近似
U_k = U[:, :k]
Sigma_k = np.diag(Sigma[:k])
Vt_k = Vt[:k, :]
image_approx = U_k @ Sigma_k @ Vt_k
axes[idx].imshow(image_approx, cmap='gray')
axes[idx].set_title(f'Rank {k}')
axes[idx].axis('off')
# 计算压缩率
original_size = image.size
compressed_size = k * (U.shape[0] + Vt.shape[1] + 1)
compression_ratio = original_size / compressed_size
print(f"Rank {k}: 压缩率 = {compression_ratio:.2f}x, 误差 = {np.linalg.norm(image - image_approx):.2f}")
plt.tight_layout()
plt.savefig('/tmp/image_compression.png', dpi=150, bbox_inches='tight')
plt.show()
# 绘制奇异值衰减
plt.figure(figsize=(10, 6))
plt.plot(Sigma[:50], 'bo-', markersize=4)
plt.xlabel('Singular Value Index')
plt.ylabel('Singular Value')
plt.title('Singular Value Decay')
plt.grid(True, alpha=0.3)
plt.yscale('log')
plt.savefig('/tmp/sv_decay.png', dpi=150, bbox_inches='tight')
plt.show()7.5 PCA 使用 SVD
import numpy as np
import matplotlib.pyplot as plt
def pca_svd(X, n_components=2):
"""
使用 SVD 实现 PCA
参数:
X: 数据矩阵(每行是一个样本)
n_components: 保留的主成分数量
返回:
components: 主成分(右奇异向量)
explained_variance: 解释方差(奇异值的平方)
X_transformed: 降维后的数据
"""
# 中心化
X_centered = X - X.mean(axis=0)
# SVD
U, Sigma, Vt = np.linalg.svd(X_centered, full_matrices=False)
# 主成分是右奇异向量
components = Vt[:n_components].T
# 解释方差
explained_variance = Sigma[:n_components]**2 / (X.shape[0] - 1)
# 降维
X_transformed = X_centered @ components
return components, explained_variance, X_transformed
# 生成示例数据
np.random.seed(42)
mean = [0, 0]
cov = [[2, 1], [1, 1]]
X = np.random.multivariate_normal(mean, cov, 500)
# PCA
components, variance, X_pca = pca_svd(X, n_components=2)
print("主成分:")
print(components)
print("\n解释方差:")
print(variance)
print(f"\n总方差解释比例: {sum(variance) / np.var(X, ddof=1).sum():.2%}")
# 可视化
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.scatter(X[:, 0], X[:, 1], alpha=0.5, label='原始数据')
plt.quiver(0, 0, components[0, 0]*3, components[1, 0]*3, color='r', width=0.005, label='PC1')
plt.quiver(0, 0, components[0, 1]*3, components[1, 1]*3, color='g', width=0.005, label='PC2')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('PCA Components')
plt.legend()
plt.axis('equal')
plt.subplot(1, 2, 2)
plt.scatter(X_pca[:, 0], X_pca[:, 1], alpha=0.5)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.title('Data in PCA Space')
plt.axis('equal')
plt.tight_layout()
plt.savefig('/tmp/pca_svd.png', dpi=150, bbox_inches='tight')
plt.show()五、深入思考
5.1 历史背景
谱理论的发展:
- 19世纪初:Cauchy 研究了二次型的主轴问题,发现了实对称矩阵的特征值都是实数
- 19世纪中叶:Hermite 证明了 Hermitian 矩阵的特征值是实数
- 20世纪初:Hilbert 将谱理论推广到无限维空间
- 1930年代:von Neumann 在量子力学中系统使用了谱定理
- 1960年代:SVD 被 Golub 和 Kahan 等人发展为实用的数值算法
- 1970年代:Eckart 和 Young 证明了 SVD 的最优低秩近似性质
5.2 前沿方向
随机矩阵理论:研究大型随机矩阵的谱分布。Wigner 半圆律、Marchenko-Pastur 分布在统计物理、金融、机器学习中应用广泛。例如,在深度学习中,权重矩阵的谱分布影响训练动态和泛化能力。
张量分解:将 SVD 推广到高阶张量,如 Tucker 分解、CP 分解。这在深度学习、信号处理中有重要应用。
非线性谱理论:将谱概念推广到非线性算子,如图神经网络的谱方法。
量子计算:量子相位估计算法可以高效估计酉算子的特征值,这是许多量子算法的核心。
5.3 延伸阅读
Sheldon Axler, Linear Algebra Done Right, 3rd Edition, Springer, 2015 - Chapter 7
Gene H. Golub, Charles F. Van Loan, Matrix Computations, 4th Edition - SVD 的数值算法
Gilbert Strang, Introduction to Linear Algebra, 5th Edition - Chapter 7
3Blue1Brown, "The Essence of Linear Algebra" 关于 SVD 的视频
Lloyd N. Trefethen, David Bau III, Numerical Linear Algebra - 数值线性代数经典
六、实验笔记
实验 1:探索谱定理的几何意义
目标:直观理解自伴算子在正交基下的对角化
步骤:
生成一个随机对称矩阵 $A$
计算其特征值和特征向量
绘制单位圆及其经过 $A$ 变换后的图像(椭圆)
标注特征向量方向(椭圆的主轴)
观察特征值与椭圆轴长的关系
扩展:尝试非对称矩阵,观察变换后的图像不再是正交拉伸。
import numpy as np
import matplotlib.pyplot as plt
# 生成对称矩阵
np.random.seed(42)
B = np.random.rand(2, 2)
A = (B + B.T) / 2
# 特征分解
eigenvalues, eigenvectors = np.linalg.eigh(A)
# 绘制单位圆
theta = np.linspace(0, 2*np.pi, 100)
x_circle = np.cos(theta)
y_circle = np.sin(theta)
# 变换后的椭圆
xy_circle = np.vstack([x_circle, y_circle])
xy_ellipse = A @ xy_circle
plt.figure(figsize=(10, 10))
plt.plot(x_circle, y_circle, 'b-', label='Unit Circle', linewidth=2)
plt.plot(xy_ellipse[0], xy_ellipse[1], 'r-', label='Transformed Ellipse', linewidth=2)
# 标注特征向量
for i in range(2):
v = eigenvectors[:, i]
plt.arrow(0, 0, v[0]*eigenvalues[i], v[1]*eigenvalues[i],
head_width=0.1, head_length=0.1, fc='green', ec='green',
linewidth=2, label=f'λ={eigenvalues[i]:.2f}')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Spectral Theorem: Circle to Ellipse')
plt.legend()
plt.grid(True, alpha=0.3)
plt.axis('equal')
plt.savefig('/tmp/spectral_geometry.png', dpi=150, bbox_inches='tight')
plt.show()实验 2:SVD 在图像压缩中的应用
目标:理解 SVD 如何实现低秩近似和数据压缩
步骤:
读取一张灰度图像(作为矩阵)
计算 SVD
用前 $k$ 个奇异值重构图像($k = 1, 5, 10, 50, 100$)
比较重构图像的质量和压缩率
分析奇异值的衰减速度
挑战:扩展到彩色图像(对每个通道分别做 SVD,或使用张量分解)。
实验 3:谱聚类实验
目标:理解谱聚类如何利用拉普拉斯矩阵的特征向量
步骤:
生成非线性可分的数据(如同心圆、月牙形)
构建相似度图和拉普拉斯矩阵
计算拉普拉斯矩阵的前几个特征向量
用特征向量作为新特征进行 K-means 聚类
与传统 K-means 比较效果
七、本章小结
本章研究了内积空间上线性算子的谱理论,核心内容包括:
核心概念:
- 自伴算子满足 $T = T^*$,特征值为实数,特征向量可选为正交的
- 正规算子满足 $TT^ = T^T$,可酉对角化
- 谱分解将算子表示为正交投影的加权和
- 酉算子保持内积和范数,特征值的模为 1
- 极分解类比复数的极坐标表示
- SVD 是特征分解的推广,适用于任意矩阵
关键定理:
- 实谱定理:实对称矩阵可正交对角化
- 复谱定理:Hermitian 矩阵可酉对角化
- 正规算子的谱定理
- SVD 定理
- Eckart-Young 定理:SVD 提供最优低秩近似
几何直觉:
- 自伴算子对应沿正交方向的独立缩放
- 酉算子对应旋转和反射
- SVD 将任意变换分解为旋转-缩放-旋转
- 谱分解是将算子分解为"纯频率"成分
编程实践:
- 用
np.linalg.eigh计算对称矩阵的特征分解 - 用
np.linalg.svd计算 SVD - 实现极分解和低秩近似
- SVD 在图像压缩和 PCA 中的应用
应用领域:
- 机器学习:PCA、谱聚类、推荐系统
- 图像处理:压缩、去噪
- 物理学:量子力学、振动分析
- 工程学:结构分析、信号处理
谱定理是线性代数的巅峰,下一章我们将进一步研究复向量空间上的算子。
八、习题
基础题
判断下列矩阵是否自伴、正规、酉:
- (a) $\begin{pmatrix} 1 & i \\ -i & 1 \end{pmatrix}$
- (b) $\begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}$
- (c) $\frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ -1 & 1 \end{pmatrix}$
对矩阵 $\begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}$ 进行谱分解,验证 $A = \sum \lambda_i P_i$。
计算矩阵 $\begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$ 的 SVD,并验证重构。
证明:如果 $U$ 是酉算子,则 $\|U\| = 1$。进一步,证明 $U$ 保持所有向量间的距离。
进阶题
设 $A$ 是 $m \times n$ 矩阵。证明:$A$ 和 $A^*$ 有相同的非零奇异值。进一步,证明它们的奇异向量之间的关系。
设 $T$ 是正规算子。证明:$\|Tv\| = \|T^v\|$ 对所有 $v$。进一步,证明 $T$ 和 $T^$ 有相同的特征向量。
设 $A = U\Sigma V^$ 是 SVD。证明:$A^+ = V\Sigma^+ U^$ 是 Moore-Penrose 伪逆,并验证四个 Penrose 条件。
设 $A$ 是 $n \times n$ 矩阵。证明:$\det(A^*A) = \prod_{i=1}^n \sigma_i^2$,其中 $\sigma_i$ 是奇异值。进一步,证明 $|\det(A)| = \prod_{i=1}^n \sigma_i$。
挑战题
证明:任意方阵 $A$ 可以分解为 $A = H + iK$,其中 $H$ 和 $K$ 是 Hermitian 矩阵。(Cartesian 分解)进一步,证明 $A$ 是正规的当且仅当 $HK = KH$。
设 $A$ 是 $m \times n$ 矩阵,$\sigma_1 \geq \cdots \geq \sigma_r > 0$ 是非零奇异值。证明:秩-$k$ 矩阵中,$A_k = \sum_{i=1}^k \sigma_i u_i v_i^*$ 是最优近似(Eckart-Young 定理)。提示:使用 von Neumann 迹不等式。