第8章 复向量空间上的算子 - 舒尔定理与 SVD (Operators on Complex Vector Spaces)
一、导读
8.1 本章学习目标
通过本章的学习,你将能够:
理解舒尔定理的核心内容:掌握任意复方阵都可以酉三角化的定理,理解其作为谱定理的推广
掌握 Schur 分解的计算方法:理解如何通过酉变换将矩阵化为上三角形式
深入理解奇异值分解(SVD):掌握 SVD 的几何意义、计算方法和应用
理解伪逆的概念和性质:掌握 Moore-Penrose 伪逆的定义及其在最小二乘法中的应用
掌握极分解的理论和应用:理解任意矩阵如何分解为酉矩阵和正半定矩阵的乘积
理解数值范围(Field of Values)的概念:掌握特征值的定位方法
将复算子理论应用于实际问题:如信号处理、控制系统、量子力学
8.2 为什么本章如此重要
实向量空间中的线性算子可能没有实特征值(如旋转矩阵),这限制了谱定理的应用范围。复向量空间则不同:代数基本定理保证了每个复系数多项式都有复根,从而每个复线性算子都有特征值。这使得复向量空间成为研究线性算子的自然舞台。
从理论的角度看,舒尔定理是谱定理的前奏。它表明任意复方阵都可以通过酉变换化为上三角形式,对角元就是特征值。对于正规矩阵,这个上三角形式实际上是对角形式,从而得到谱定理。
从应用的角度看:
- 信号处理:复数表示信号的幅度和相位;傅里叶变换在复域中进行
- 控制系统:系统稳定性由传递函数的极点(复特征值)决定
- 量子力学:量子态是复 Hilbert 空间中的向量;可观测量是 Hermitian 算子
- 数值分析:QR 算法基于 Schur 分解;SVD 是最稳定的矩阵分解方法
- 优化:伪逆提供了欠定和超定方程组的最小范数解
从认知的角度看,本章帮助你建立"复数思维"。复数不仅是实数的扩展,更是理解线性变换本质的钥匙。许多在实数域中看似复杂的问题,在复数域中变得简洁优雅。
8.3 核心问题引导
在学习本章时,请持续思考以下问题:
为什么复向量空间比实向量空间更适合研究线性算子? 代数基本定理在其中起了什么作用?
舒尔定理与谱定理有什么关系? 为什么舒尔分解是上三角而不是对角?什么情况下可以对角化?
SVD 的几何意义是什么? 如何将任意线性变换分解为旋转-缩放-旋转?
伪逆与普通逆矩阵有什么区别? 为什么伪逆总是存在?它在最小二乘法中起什么作用?
极分解如何类比复数的极坐标表示? $P$ 和 $U$ 分别对应什么?
数值范围与特征值有什么关系? 如何用数值范围估计特征值的位置?
在实际计算中,如何选择适当的矩阵分解方法? QR、LU、Cholesky、SVD 各有什么优缺点?
二、核心概念详解
8.1 舒尔定理
定理 8.1(舒尔定理 / Schur Decomposition)
设 $A$ 是 $n \times n$ 复矩阵。则存在酉矩阵 $U$ 和上三角矩阵 $T$ 使得:
$$A = UTU^*$$
其中 $T$ 的对角元是 $A$ 的特征值 $\lambda_1, \ldots, \lambda_n$(按任意顺序排列)。
证明:
对 $n$ 进行归纳。
- 基础情况:$n = 1$,显然成立($A = [\lambda]$)。
- 归纳步骤:由代数基本定理,$A$ 有特征值 $\lambda_1$ 和对应的单位特征向量 $v_1$。
将 $v_1$ 扩展为 $\mathbb{C}^n$ 的标准正交基 $v_1, v_2, \ldots, v_n$。令 $U_1 = [v_1, v_2, \ldots, v_n]$ 是酉矩阵。
则:
$$U_1^ A U_1 = \begin{pmatrix} \lambda_1 & \\ 0 & A_1 \end{pmatrix}$$
其中 $A_1$ 是 $(n-1) \times (n-1)$ 矩阵。
由归纳假设,存在 $(n-1) \times (n-1)$ 酉矩阵 $V$ 和上三角矩阵 $T_1$ 使得 $A_1 = VT_1V^*$。
令 $U_2 = \begin{pmatrix} 1 & 0 \\ 0 & V \end{pmatrix}$,这是酉矩阵。
则:
$$U_2^(U_1^ A U_1)U_2 = \begin{pmatrix} \lambda_1 & * \\ 0 & T_1 \end{pmatrix} = T$$
是上三角矩阵。
令 $U = U_1 U_2$,这是酉矩阵。则 $A = UTU^*$。$\square$
重要意义:舒尔定理表明任意复方阵都可以通过酉相似变换化为上三角形式。这是矩阵分析的基础工具,也是 QR 算法的理论基础。
几何直觉:舒尔分解告诉我们,任何线性变换都可以在某个标准正交基下表示为上三角形式。这意味着我们可以找到一个"好"的坐标系,使得变换的矩阵表示尽可能简单(虽然不一定是对角的)。
推论 8.2:正规矩阵的谱定理
设 $A$ 是正规矩阵($AA^ = A^A$)。则在舒尔分解 $A = UTU^*$ 中,$T$ 实际上是对角矩阵。
证明:
由于 $A$ 正规,$T = U^*AU$ 也正规(酉相似保持正规性)。
设 $T = \begin{pmatrix} \lambda_1 & t_{12} & \cdots \\ 0 & \lambda_2 & \cdots \\ \vdots & \ddots & \ddots \end{pmatrix}$。
计算 $TT^$ 和 $T^T$ 的 $(1,1)$ 元素:
$$(TT^*)_{11} = |\lambda_1|^2 + |t_{12}|^2 + \cdots + |t_{1n}|^2$$
$$(T^*T)_{11} = |\lambda_1|^2$$
由于 $T$ 正规,$TT^ = T^T$,所以 $|t_{12}|^2 + \cdots + |t_{1n}|^2 = 0$,即 $t_{12} = \cdots = t_{1n} = 0$。
类似地,可以证明所有非对角元为零。因此 $T$ 是对角矩阵。$\square$
重要推论:正规矩阵可酉对角化。这包括 Hermitian 矩阵、酉矩阵、斜 Hermitian 矩阵等。
例 8.1:舒尔分解的计算
设 $A = \begin{pmatrix} 1 & 1 \\ 0 & 2 \end{pmatrix}$。
特征值:$\lambda_1 = 1$,$\lambda_2 = 2$。
对应的单位特征向量:$v_1 = (1, 0)^T$,$v_2 = (1, 1)^T/\sqrt{2}$。
构造 $U = [v_1, v_2] = \begin{pmatrix} 1 & 1/\sqrt{2} \\ 0 & 1/\sqrt{2} \end{pmatrix}$。
验证 $U^*AU = T$ 是上三角矩阵。
8.2 奇异值分解的深入理解
定理 8.3(SVD 的存在性)
设 $A$ 是 $m \times n$ 复矩阵。则存在:
- 酉矩阵 $U \in \mathbb{C}^{m \times m}$
- 酉矩阵 $V \in \mathbb{C}^{n \times n}$
- "对角"矩阵 $\Sigma \in \mathbb{R}^{m \times n}$(只有主对角线上可能有非零元)
使得:
$$A = U\Sigma V^*$$
其中 $\Sigma$ 的对角元 $\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0$($r = \text{rank}(A)$)称为奇异值。
证明:
$A^*A$ 是 $n \times n$ 半正定 Hermitian 矩阵,有特征分解:
$$A^A = VDV^$$
其中 $V$ 是酉矩阵,$D = \text{diag}(\lambda_1, \ldots, \lambda_n)$,$\lambda_i \geq 0$。
定义 $\sigma_i = \sqrt{\lambda_i}$,重排使得 $\sigma_1 \geq \cdots \geq \sigma_r > 0 = \sigma_{r+1} = \cdots$。
令 $\Sigma = \begin{pmatrix} \text{diag}(\sigma_1, \ldots, \sigma_r) & 0 \\ 0 & 0 \end{pmatrix}$(适当填充零)。
对于 $i = 1, \ldots, r$,定义 $u_i = \frac{1}{\sigma_i}Av_i$。可以验证 $u_1, \ldots, u_r$ 是标准正交的。
将 $u_1, \ldots, u_r$ 扩展为 $\mathbb{C}^m$ 的标准正交基 $u_1, \ldots, u_m$。令 $U = [u_1, \ldots, u_m]$。
验证 $A = U\Sigma V^*$:
$$AV = U\Sigma \iff A v_i = \sigma_i u_i \quad (\text{对 } i = 1, \ldots, r)$$
这正是 $u_i$ 的定义。对于 $i > r$,$\sigma_i = 0$,且 $Av_i = 0$(因为 $A^*Av_i = 0 \implies \|Av_i\|^2 = 0$)。$\square$
几何解释
SVD 揭示了任意线性变换的本质结构:
第一步:$V^*$ 将输入空间旋转/反射(酉变换,保持长度)
第二步:$\Sigma$ 沿坐标轴缩放(可能降维,如果 $m \neq n$)
第三步:$U$ 将结果旋转/反射到输出空间
因此,任意线性变换都可以看作"旋转-缩放-旋转"的组合。
直观理解:想象将一个球体经过线性变换变成椭球体。SVD 告诉我们:先旋转球体,然后沿坐标轴拉伸成椭球,最后再旋转一次。拉伸的倍数就是奇异值,拉伸的方向就是奇异向量。
定理 8.4:SVD 的最优低秩近似性质(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 提供了最优的低秩近似。这在数据压缩、去噪、降维中有广泛应用。例如,在图像压缩中,保留前几个奇异值可以大幅减少存储空间,同时保持图像的主要特征。
8.3 Moore-Penrose 伪逆
定义 8.1(伪逆)
设 $A$ 是 $m \times n$ 矩阵。Moore-Penrose 伪逆 $A^+$ 是唯一满足以下四个条件的 $n \times m$ 矩阵:
$AA^+A = A$
$A^+AA^+ = A^+$
$(AA^+)^* = AA^+$
$(A^+A)^* = A^+A$
定理 8.5:伪逆的 SVD 表示
设 $A = U\Sigma V^*$ 是 SVD,其中 $\Sigma = \begin{pmatrix} D & 0 \\ 0 & 0 \end{pmatrix}$,$D = \text{diag}(\sigma_1, \ldots, \sigma_r)$。
则:
$$A^+ = V\Sigma^+ U^*$$
其中 $\Sigma^+ = \begin{pmatrix} D^{-1} & 0 \\ 0 & 0 \end{pmatrix}$,$D^{-1} = \text{diag}(1/\sigma_1, \ldots, 1/\sigma_r)$。
证明:直接验证四个条件即可。$\square$
定理 8.6:伪逆的性质
如果 $A$ 可逆,则 $A^+ = A^{-1}$
$A^+$ 总是存在且唯一
$AA^+$ 是到 $\text{range}(A)$ 的正交投影
$A^+A$ 是到 $\text{range}(A^*)$ 的正交投影
$x = A^+b$ 是 $Ax = b$ 的最小范数最小二乘解
证明:
最小二乘解满足 $A^Ax = A^b$。如果 $A = U\Sigma V^*$,则:
$$x = V\Sigma^+ U^* b$$
这是最小范数解(在解空间中范数最小)。$\square$
实用价值:伪逆统一处理了超定方程组(最小二乘解)和欠定方程组(最小范数解)。在机器学习中,伪逆用于求解线性回归问题,特别是当设计矩阵不满秩时。
例 8.2:伪逆的计算
设 $A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix}$。
SVD:$A = U\Sigma V^*$。
伪逆:$A^+ = V\Sigma^+ U^*$。
验证 $AA^+A = A$ 和 $A^+AA^+ = A^+$。
8.4 极分解
定理 8.7(极分解)
设 $A$ 是 $n \times n$ 复矩阵。则存在酉矩阵 $U$ 和半正定 Hermitian 矩阵 $P$ 使得:
$$A = UP$$
其中 $P = \sqrt{A^*A}$(唯一的半正定平方根)。
如果 $A$ 可逆,则 $U$ 唯一,且 $U = AP^{-1}$。
证明:
由 SVD,$A = U_A \Sigma V^*$。
令 $P = V\Sigma V^$(半正定 Hermitian),$U = U_A V^$(酉)。
则 $A = U_A \Sigma V^ = (U_A V^)(V\Sigma V^*) = UP$。$\square$
类比:复数 $z = re^{i\theta}$,其中 $r = |z|$,$e^{i\theta} = z/|z|$。这里 $P$ 类比模长,$U$ 类比相位。
例 8.3:极分解的计算
设 $A = \begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix}$。
$A^*A = \begin{pmatrix} 1 & 0 \\ 1 & 1 \end{pmatrix}\begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 2 \end{pmatrix}$
计算 $A^*A$ 的特征分解:
特征值:$\lambda = \frac{3 \pm \sqrt{5}}{2}$
特征向量:归一化后得到 $V$
$P = V\sqrt{D}V^*$
$U = AP^{-1}$
8.5 数值范围
定义 8.2(数值范围 / Field of Values)
设 $A$ 是 $n \times n$ 复矩阵。数值范围定义为:
$$W(A) = \{x^*Ax : x \in \mathbb{C}^n, \|x\| = 1\}$$
定理 8.8:数值范围的性质
$W(A)$ 是复平面上的紧凸集(Toeplitz-Hausdorff 定理)
特征值包含在数值范围中:$\sigma(A) \subseteq W(A)$
如果 $A$ 是 Hermitian,则 $W(A) \subseteq \mathbb{R}$,且 $W(A) = [\lambda_{\min}, \lambda_{\max}]$
$W(A^*) = \overline{W(A)}$(共轭)
$W(U^*AU) = W(A)$ 对酉矩阵 $U$
应用:数值范围提供了特征值的定位区域。在控制理论中,数值范围用于分析系统稳定性。如果数值范围不包含原点,则矩阵可逆。
例 8.4:数值范围的计算
设 $A = \begin{pmatrix} 1 & 2 \\ 0 & 3 \end{pmatrix}$。
特征值:$\lambda_1 = 1$,$\lambda_2 = 3$。
数值范围是一个椭圆区域,包含特征值。
三、程序员的视角
3.1 在机器学习中的应用
SVD 在推荐系统中的应用:用户-物品评分矩阵通常是稀疏的。SVD 可以提取潜在因子,实现协同过滤。Netflix Prize 的获胜方案大量使用了矩阵分解技术。
伪逆在回归中的应用:当设计矩阵不满秩时(特征共线性),普通最小二乘无唯一解。伪逆给出最小范数解,等价于岭回归的特例。
极分解在归一化中的应用:在神经网络中,权重归一化可以使用极分解将权重矩阵分解为旋转和缩放部分,分别更新。
舒尔分解在特征值计算中的应用:QR 算法基于舒尔分解,是计算大型矩阵特征值的标准方法。
3.2 常见陷阱与误区
误区 1:认为 SVD 和特征分解是一回事
SVD 适用于任意矩阵,特征分解仅适用于方阵。SVD 的奇异值总是非负实数,特征值可能是复数。
误区 2:混淆伪逆与广义逆
Moore-Penrose 伪逆是唯一的,但广义逆(满足部分条件)不唯一。不同应用可能需要不同的广义逆。
误区 3:忽略数值稳定性
直接计算 $A^*A$ 然后求特征值可能损失精度。实际使用 bidiagonalization 和分治法计算 SVD。
误区 4:认为极分解中的 $U$ 总是唯一
只有当 $A$ 可逆时,$U$ 才唯一。否则 $U$ 在零空间上可以任意选择。
误区 5:忽视舒尔分解的非唯一性
舒尔分解不是唯一的,因为特征值可以按不同顺序排列,且特征向量可以有不同的相位。
3.3 与其他层级的联系
- 与舒尔分解的联系:舒尔分解是 SVD 的特例(方阵情况)
- 与 QR 分解的联系:QR 分解可以看作极分解的离散版本
- 与特征值的联系:SVD 的奇异值是 $A^*A$ 的特征值的平方根
- 与优化的联系:伪逆提供了最小二乘和最小范数问题的统一解
- 与控制理论的联系:数值范围用于分析系统稳定性
四、代码实战
8.1 舒尔分解
import numpy as np
from scipy.linalg import schur
# 示例矩阵
A = np.array([[1, 2, 3],
[0, 4, 5],
[0, 0, 6]], dtype=complex)
# 复舒尔分解
T, U = schur(A, output='complex')
print("T (上三角):")
print(T)
print("\nU (酉矩阵):")
print(U)
# 验证:A = UTU*
A_reconstructed = U @ T @ U.conj().T
print("\n重构误差:", np.linalg.norm(A - A_reconstructed))
# 验证 U 是酉的
print("U*U:")
print(U.conj().T @ U) # 应接近单位矩阵
# 特征值在对角线上
print("\nT 的对角元:", np.diag(T))
print("A 的特征值:", np.linalg.eigvals(A))
# 测试非三角矩阵
B = np.array([[1, 2],
[3, 4]], dtype=complex)
T_B, U_B = schur(B, output='complex')
print("\n\nB 的舒尔分解:")
print("T:", T_B)
print("U:", U_B)
print("对角元(特征值):", np.diag(T_B))8.2 SVD 与伪逆
import numpy as np
# 示例:超定方程组
A = np.array([[1, 2],
[3, 4],
[5, 6]])
b = np.array([1, 2, 3])
# 计算 SVD
U, Sigma, Vt = np.linalg.svd(A, full_matrices=False)
print("奇异值:", Sigma)
# 计算伪逆
Sigma_inv = np.diag(1 / Sigma)
A_pinv = Vt.T @ Sigma_inv @ U.T
print("\n伪逆:")
print(A_pinv)
# 与 numpy 内置函数比较
A_pinv_np = np.linalg.pinv(A)
print("\nNumPy 伪逆:")
print(A_pinv_np)
# 最小二乘解
x_ls = A_pinv @ b
print("\n最小二乘解:", x_ls)
# 验证残差
residual = A @ x_ls - b
print("残差:", residual)
print("残差范数:", np.linalg.norm(residual))
# 与 lstsq 比较
x_lstsq, _, _, _ = np.linalg.lstsq(A, b, rcond=None)
print("lstsq 解:", x_lstsq)
# 欠定方程组示例
C = np.array([[1, 2, 3],
[4, 5, 6]])
d = np.array([1, 2])
C_pinv = np.linalg.pinv(C)
x_min_norm = C_pinv @ d
print(f"\n欠定方程组最小范数解: {x_min_norm}")
print(f"验证 Cd = d: {C @ x_min_norm}")8.3 极分解
import numpy as np
def polar_decomposition(A):
"""
极分解 A = UP
参数:
A: 方阵
返回:
U: 酉矩阵
P: 半正定 Hermitian 矩阵
"""
# 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]], dtype=complex)
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*U:")
print(U.conj().T @ U)
# 验证 P 是 Hermitian
print("P 是 Hermitian:", np.allclose(P, P.conj().T))
# 验证 P 的特征值非负
eigenvalues_P = np.linalg.eigvalsh(P)
print("P 的特征值:", eigenvalues_P)
print("所有特征值非负:", np.all(eigenvalues_P >= -1e-10))
# 类比复数极坐标
z = 3 + 4j
r = abs(z)
theta = np.angle(z)
print(f"\n复数极坐标类比: z = {z}")
print(f"模长 r = {r}")
print(f"相位 e^(iθ) = {np.exp(1j*theta)}")
print(f"验证: r * e^(iθ) = {r * np.exp(1j*theta)}")8.4 数值范围可视化
import numpy as np
import matplotlib.pyplot as plt
def numerical_range(A, num_samples=1000):
"""
数值采样近似数值范围
参数:
A: 方阵
num_samples: 采样点数
返回:
values: 数值范围内的点
"""
n = A.shape[0]
values = []
for _ in range(num_samples):
# 生成随机单位向量
x = np.random.randn(n) + 1j * np.random.randn(n)
x = x / np.linalg.norm(x)
# 计算 x*Ax
val = np.dot(x.conj(), A @ x)
values.append(val)
return np.array(values)
# 示例
A = np.array([[1, 2],
[0, 3]], dtype=complex)
values = numerical_range(A, num_samples=5000)
# 绘制
plt.figure(figsize=(10, 8))
plt.scatter(values.real, values.imag, s=1, alpha=0.5)
plt.xlabel('Re')
plt.ylabel('Im')
plt.title('Numerical Range of A')
plt.grid(True, alpha=0.3)
plt.axis('equal')
# 标注特征值
eigenvalues = np.linalg.eigvals(A)
plt.scatter(eigenvalues.real, eigenvalues.imag, c='red', s=100, marker='x', label='Eigenvalues')
plt.legend()
plt.savefig('/tmp/numerical_range.png', dpi=150, bbox_inches='tight')
plt.show()
# 测试 Hermitian 矩阵
H = np.array([[2, 1],
[1, 3]], dtype=complex)
H = (H + H.conj().T) / 2 # 确保 Hermitian
values_H = numerical_range(H, num_samples=5000)
eigenvalues_H = np.linalg.eigvalsh(H)
plt.figure(figsize=(10, 8))
plt.scatter(values_H.real, values_H.imag, s=1, alpha=0.5)
plt.axhline(y=0, color='k', linestyle='--', alpha=0.3)
plt.scatter(eigenvalues_H, np.zeros_like(eigenvalues_H), c='red', s=100, marker='x', label='Eigenvalues')
plt.xlabel('Re')
plt.ylabel('Im')
plt.title('Numerical Range of Hermitian Matrix (on real axis)')
plt.legend()
plt.grid(True, alpha=0.3)
plt.savefig('/tmp/numerical_range_hermitian.png', dpi=150, bbox_inches='tight')
plt.show()
print(f"Hermitian 矩阵特征值: {eigenvalues_H}")
print(f"数值范围在实轴上: [{min(values_H.real):.4f}, {max(values_H.real):.4f}]")8.5 SVD 在推荐系统中的应用
import numpy as np
# 模拟用户-物品评分矩阵(5用户 x 4物品)
# NaN 表示未评分
ratings = np.array([
[5, 3, 0, 1],
[4, 0, 0, 1],
[1, 1, 0, 5],
[1, 0, 0, 4],
[0, 1, 5, 4]
], dtype=float)
# 用均值填充缺失值
user_means = np.mean(ratings[ratings > 0], axis=1, keepdims=True)
ratings_filled = np.where(ratings > 0, ratings, user_means)
# 中心化
item_means = np.mean(ratings_filled, axis=0)
ratings_centered = ratings_filled - item_means
# SVD
U, Sigma, Vt = np.linalg.svd(ratings_centered, full_matrices=False)
# 保留前 k 个奇异值
k = 2
U_k = U[:, :k]
Sigma_k = np.diag(Sigma[:k])
Vt_k = Vt[:k, :]
# 重构
ratings_predicted = U_k @ Sigma_k @ Vt_k + item_means
print("原始评分矩阵:")
print(ratings)
print("\n预测评分矩阵:")
print(np.round(ratings_predicted, 2))
# 为特定用户推荐
user_id = 0
user_ratings = ratings[user_id]
unrated_items = np.where(user_ratings == 0)[0]
predicted_ratings = ratings_predicted[user_id]
print(f"\n用户 {user_id} 未评分的物品: {unrated_items}")
print(f"预测评分: {predicted_ratings[unrated_items]}")
recommended_item = unrated_items[np.argmax(predicted_ratings[unrated_items])]
print(f"推荐物品: {recommended_item}")五、深入思考
5.1 历史背景
复算子理论的发展:
- 19世纪末:Schur 研究了矩阵的三角化问题
- 20世纪初:Moore 和 Penrose 独立提出了伪逆的概念
- 1930年代:von Neumann 在量子力学中系统使用了复 Hilbert 空间
- 1960年代:Golub 和 Kahan 开发了实用的 SVD 算法
- 1970年代:Eckart 和 Young 证明了 SVD 的最优低秩近似性质
- 1980年代:QR 算法成为计算特征值的标准方法
5.2 前沿方向
张量分解:将 SVD 推广到高阶张量,如 Tucker 分解、CP 分解、Tensor Train。这在深度学习压缩、信号处理中有重要应用。
随机化数值线性代数:使用随机投影加速 SVD 和特征值计算,适用于大规模数据。
非线性矩阵分解:将矩阵分解与非线性约束结合,如非负矩阵分解(NMF)、稀疏编码。
量子奇异值分解:在量子计算机上高效计算 SVD,用于量子机器学习。
5.3 延伸阅读
Sheldon Axler, Linear Algebra Done Right, 3rd Edition, Springer, 2015 - Chapter 8
Gene H. Golub, Charles F. Van Loan, Matrix Computations, 4th Edition
Lloyd N. Trefethen, David Bau III, Numerical Linear Algebra
Gilbert Strang, Introduction to Linear Algebra, 5th Edition
Rajendra Bhatia, Matrix Analysis - 矩阵分析的高级主题
六、实验笔记
实验 1:探索舒尔分解与特征分解的关系
目标:理解舒尔分解如何推广特征分解
步骤:
生成一个随机复方阵(非正规)
计算舒尔分解 $A = UTU^*$
验证 $T$ 是上三角,对角元是特征值
尝试正规矩阵,观察 $T$ 是否变为对角
比较舒尔分解与特征分解的数值稳定性
import numpy as np
from scipy.linalg import schur
# 非正规矩阵
np.random.seed(42)
A = np.random.rand(5, 5) + 1j * np.random.rand(5, 5)
# 舒尔分解
T, U = schur(A, output='complex')
# 验证
print("T 是上三角:", np.allclose(T, np.triu(T)))
print("U 是酉矩阵:", np.allclose(U.conj().T @ U, np.eye(5)))
print("T 的对角元:", np.diag(T))
print("A 的特征值:", np.linalg.eigvals(A))
# 正规矩阵
B = np.random.rand(5, 5) + 1j * np.random.rand(5, 5)
B = B + B.conj().T # Hermitian
T_B, U_B = schur(B, output='complex')
print("\nHermitian 矩阵的 T 是对角:", np.allclose(T_B, np.diag(np.diag(T_B))))实验 2:SVD 在图像去噪中的应用
目标:理解 SVD 如何实现信号与噪声的分离
步骤:
读取一张灰度图像
添加高斯噪声
对噪声图像进行 SVD
用不同数量的奇异值重构图像
分析信噪比(SNR)随奇异值数量的变化
确定最优的截断阈值
挑战:扩展到彩色图像,或使用块 SVD 方法。
实验 3:伪逆在欠定系统中的应用
目标:理解伪逆如何给出最小范数解
步骤:
构造一个欠定线性方程组(未知数多于方程)
使用伪逆求解
验证解的最小范数性质
比较与其他广义逆的差异
七、本章小结
本章研究了复向量空间上的线性算子,核心内容包括:
核心概念:
- 舒尔定理:任意复方阵可酉三角化
- SVD:任意矩阵可分解为酉-对角-酉的形式
- 伪逆:提供最小二乘和最小范数解的统一框架
- 极分解:类比复数的极坐标表示
- 数值范围:特征值的定位区域
关键定理:
- 舒尔定理:$A = UTU^*$,$T$ 上三角
- SVD:$A = U\Sigma V^*$
- Eckart-Young 定理:SVD 提供最优低秩近似
- 伪逆的 SVD 表示:$A^+ = V\Sigma^+ U^*$
几何直觉:
- 舒尔分解揭示特征值的三角结构
- SVD 将任意变换分解为旋转-缩放-旋转
- 极分解分离"旋转"和"拉伸"成分
- 数值范围是特征值的"云团"区域
编程实践:
- 用
scipy.linalg.schur计算舒尔分解 - 用
np.linalg.svd计算 SVD - 用
np.linalg.pinv计算伪逆 - 实现极分解和数值范围可视化
应用领域:
- 推荐系统:SVD 提取潜在因子
- 图像处理:SVD 去噪和压缩
- 控制系统:数值范围分析稳定性
- 量子力学:复 Hilbert 空间
复算子理论为最后的章节——多线性代数——奠定了基础。
八、习题
基础题
对矩阵 $\begin{pmatrix} 1 & i \\ 0 & 2 \end{pmatrix}$ 进行舒尔分解,验证结果是上三角形式。
计算矩阵 $\begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix}$ 的 SVD 和伪逆,验证 Penrose 条件。
证明:如果 $A$ 是正规矩阵,则舒尔分解中的 $T$ 是对角矩阵。提示:利用 $TT^ = T^T$。
设 $A = U\Sigma V^*$ 是 SVD。证明:$\|A\|_F = \sqrt{\sum \sigma_i^2}$。
进阶题
设 $A$ 是 $m \times n$ 矩阵,$b \in \mathbb{C}^m$。证明:$x = A^+b$ 是 $\min \|x\|$ subject to $\min \|Ax - b\|$ 的解。进一步,证明解的唯一性条件。
设 $A = UP$ 是极分解。证明:如果 $A$ 可逆,则 $U$ 和 $P$ 唯一。举例说明不可逆时 $U$ 不唯一。
证明:数值范围 $W(A)$ 是凸集(Toeplitz-Hausdorff 定理的二维情况)。提示:使用连续性和连通性。
设 $A$ 和 $B$ 是酉相似的($B = U^*AU$)。证明:$W(A) = W(B)$。进一步,证明它们有相同的奇异值。
挑战题
证明:任意 $n \times n$ 矩阵 $A$ 可以写为两个对称矩阵的乘积。提示:使用 Jordan 标准形。
设 $A$ 是 $m \times n$ 矩阵。证明:$\text{rank}(A) = \text{rank}(A^+)$,且 $AA^+$ 和 $A^+A$ 都是正交投影。进一步,证明 $\text{range}(AA^+) = \text{range}(A)$ 和 $\text{range}(A^+A) = \text{range}(A^*)$。