在数值线性代数与矩阵分析中,常见的能产生正交(或酉)矩阵的分解方法包括 QR 分解、奇异值分解(SVD)、Schur 分解 等。这些方法虽然都会产生一个(或多个)正交矩阵,但它们在适用范围、分解形式、计算重点和应用场景等方面各不相同。本文将尽量对这些分解方法进行系统地介绍与对比。
正交矩阵(Orthogonal Matrix)
在实数域 R \mathbb{R} R 上,若 Q Q Q 是一个 n × n n\times n n×n 矩阵并满足
Q T Q = I ⟺ Q T = Q − 1 , Q^T Q = I \quad \Longleftrightarrow \quad Q^T = Q^{-1}, QTQ=I⟺QT=Q−1,
则称 Q Q Q 为正交矩阵。其列向量(和行向量)彼此正交且范数为 1。
酉矩阵(Unitary Matrix)
在复数域 C \mathbb{C} C 上,正交矩阵的概念推广为酉矩阵,若 U U U 满足
U ∗ U = I ⟺ U ∗ = U − 1 , U^* U = I \quad \Longleftrightarrow \quad U^* = U^{-1}, U∗U=I⟺U∗=U−1,
则称 U U U 为酉矩阵。这里 U ∗ U^* U∗ 表示复共轭转置(又记作 U † U^\dagger U† 或 U ‾ T \overline{U}^T UT)。
在很多文献中,若不特别指明实数或复数,我们常将“正交矩阵”和“酉矩阵”都笼统地称为“正交(或酉)矩阵”。
一个 n n n 维向量空间(实数或复数)中,一组向量若两两正交并且每个向量范数为 1,则称这组向量为一组 标准正交(正交规范)基。在数值线性代数中,经常希望通过某种分解把矩阵关联到一个正交(或酉)矩阵,以获得正交基的好处,比如数值稳定性、简化运算、方便几何解释等。
对于一个 m × n m \times n m×n 的实矩阵 A A A(假设 m ≥ n m \ge n m≥n),QR 分解是指将 A A A 分解为
A = Q R , A = Q\,R, A=QR,
其中:
在更常见的实用形式中,若 A A A 列满秩,则可写为:
A = Q [ R 0 ] , A = Q \begin{bmatrix} R \\ 0 \end{bmatrix}, A=Q[R0],
其中 Q Q Q 为 m × m m \times m m×m 的正交矩阵, [ R 0 ] \begin{bmatrix}R \\ 0\end{bmatrix} [R0] 则是 m × n m \times n m×n 矩阵,只有前 n × n n \times n n×n 区域为上三角 R R R 而下面为 0。
由于 Q Q Q 的列向量构成一个正交基,因此在 QR 分解中,
一个经典的构造 QR 分解的思路是 Gram-Schmidt 正交化。令矩阵 A = [ a 1 , a 2 , … , a n ] A = [\,a_1, a_2, \dots, a_n] A=[a1,a2,…,an] 的列为 { a 1 , a 2 , … , a n } \{a_1,a_2,\dots,a_n\} {a1,a2,…,an},我们依次构造一组正交向量 { u ^ 1 , u ^ 2 , … , u ^ n } \{\hat{u}_1,\hat{u}_2,\dots,\hat{u}_n\} {u^1,u^2,…,u^n},然后归一化得到正交规范向量 { q 1 , q 2 , … , q n } \{q_1,q_2,\dots,q_n\} {q1,q2,…,qn}。
具体算法如下(经典形式):
初始步:
u ^ 1 = a 1 , q 1 = u ^ 1 ∥ u ^ 1 ∥ . \hat{u}_1 = a_1, \quad q_1 = \frac{\hat{u}_1}{\|\hat{u}_1\|}. u^1=a1,q1=∥u^1∥u^1.
第 k k k 步 ( 2 ≤ k ≤ n 2 \le k \le n 2≤k≤n):
u ^ k = a k − ∑ j = 1 k − 1 ⟨ a k , q j ⟩ q j \hat{u}_k \;=\; a_k \;-\;\sum_{j=1}^{k-1} \langle a_k,\, q_j \rangle \, q_j u^k=ak−j=1∑k−1⟨ak,qj⟩qj
q k = u ^ k ∥ u ^ k ∥ . q_k = \frac{\hat{u}_k}{\|\hat{u}_k\|}. qk=∥u^k∥u^k.
于是得到 Q = [ q 1 , q 2 , … , q n ] Q = [\,q_1,q_2,\dots,q_n] Q=[q1,q2,…,qn],而上三角矩阵 R R R 的元素可由内积求得:
R j k = ⟨ a k , q j ⟩ , ( 1 ≤ j ≤ k ≤ n ) . R_{jk} = \langle a_k,\, q_j\rangle, \quad (1 \le j \le k \le n). Rjk=⟨ak,qj⟩,(1≤j≤k≤n).
在数值算法中,更稳定常用 修正 Gram-Schmidt 或 Householder 变换、Givens 旋转 等方法来实现 QR 分解。
奇异值分解是最具“普适性”的分解之一。对 任意 m × n m \times n m×n 矩阵 A A A,无论是否方阵,都存在 SVD。形式如下(在实数域):
A = U Σ V T , A = U\,\Sigma\,V^T, A=UΣVT,
在复数域则为
A = U Σ V ∗ , A = U\,\Sigma\,V^*, A=UΣV∗,
其中:
举例:若 m ≥ n m \ge n m≥n,则
Σ = [ σ 1 0 σ 2 ⋱ σ n 0 ] m × n . \Sigma = \begin{bmatrix} \sigma_1 & & & 0 \\ & \sigma_2 & & \\ & & \ddots & \\ & & & \sigma_n \\ & & & 0 \\ \end{bmatrix}_{m\times n}. Σ= σ1σ2⋱0σn0 m×n.
双重正交基
SVD 同时给出两组正交基: U U U 的列向量与 V V V 的列向量分别是 R m \mathbb{R}^m Rm 与 R n \mathbb{R}^n Rn 中的正交基。它们将矩阵 A A A 在行空间、列空间上的结构都描述得很清晰。
低秩近似
若保留前 k k k 个最大的奇异值及对应的左右奇异向量,就可得最优(在 2 范数或 Frobenius 范数意义下)秩- k k k 近似:
A ≈ U k Σ k V k T , A \approx U_k\,\Sigma_k\,V_k^T, A≈UkΣkVkT,
其中 Σ k \Sigma_k Σk 仅保留前 k k k 个奇异值,对应地 U k U_k Uk 和 V k V_k Vk 也取相应列。
主成分分析(PCA)
数据分析中常把数据矩阵做奇异值分解,用最大奇异值对应的方向来做主成分提取。
伪逆(Moore-Penrose 逆)
若 A = U Σ V T A = U\,\Sigma\,V^T A=UΣVT,则
A + = V Σ + U T , A^+ \;=\; V\,\Sigma^+\,U^T, A+=VΣ+UT,
其中 Σ + \Sigma^+ Σ+ 是将 Σ \Sigma Σ 中的非零对角元素取倒数并转置得到的矩阵。
对于 任意 n × n n\times n n×n 方阵 A A A(在复数域 C \mathbb{C} C 上),存在一个 酉矩阵(unitary) Q Q Q 使得
Q ∗ A Q = T , Q^*\,A\,Q \;=\; T, Q∗AQ=T,
其中 T T T 是一个 上三角矩阵(称为 Schur 形式)。这即是 Schur 定理。在实数域上若强行做 Schur 分解,则会引入 2×2 块去表示复共轭特征值对,一般在复数域上表述更简洁。
Schur 分解的一个关键点在于,上三角矩阵 T T T 的主对角线元素就是 A A A 的特征值:
T i i = λ i , T_{ii} = \lambda_i, Tii=λi,
故而 Schur 分解在特征值分析中格外重要。进一步,若 A A A 可对角化,则可把 T T T 化为对角矩阵(这时就退化为普通的特征分解);若 A A A 不是可对角化的,也至少能保证上三角形式。
正交(酉)基
Schur 分解告诉我们,存在一个酉矩阵 Q Q Q 使得 A A A 在这个基下为上三角 T T T。于是, Q Q Q 的列向量构成一组正交(酉)基。
特征值算法(QR 迭代)
在计算特征值时,往往先把 A A A 化为 Hessenberg 矩阵(或上三角),然后反复做 QR 分解迭代,最终收敛到 Schur 形式,从而提取特征值。
只适用于方阵
Schur 分解仅针对方阵,而且一般在复数域上最自然。
对任何矩阵(方阵或矩形),都可写成
A = Q P , A = Q\,P, A=QP,
其中 Q Q Q 为正交(或酉)矩阵, P P P 为对称正定(或 Hermitian 正定)矩阵。
实际上,极分解与 SVD 有密切关系:若 A = U Σ V T A = U\,\Sigma\,V^T A=UΣVT 是其 SVD,则可令
Q = U V T , P = V Σ V T , Q = U\,V^T, \quad P = V\,\Sigma\,V^T, Q=UVT,P=VΣVT,
这样也能得到 A = Q P A = QP A=QP。此时 Q Q Q 同样提供一个正交基。
任何 n × n n\times n n×n 方阵都可通过相似变换化为 Hessenberg 形式(只有主对角线下方一条带可非零,其余在更下的部分为 0)。在数值算法里,这个相似变换通常也可选为正交矩阵积,因此也在一定程度上“产生了”一个正交变换。
下表对 QR、SVD、Schur 分解作一个概括性比较,同时也提及特征分解、极分解等:
分解 | 适用范围 | 分解形式 | 是否一定方阵 | 正交(酉)矩阵的作用 | 主要关注点 | 计算复杂度 |
---|---|---|---|---|---|---|
QR 分解 | 任意 m × n m\times n m×n 矩阵 | A = Q R A = Q R A=QR (或薄形式 Q [ R ; 0 ] Q [R;0] Q[R;0]) | 否 | Q Q Q 的列为正交基 | 最小二乘、正交化、数值稳定 | O ( m n 2 ) O(mn^2) O(mn2) 量级(若 m ≥ n m\ge n m≥n) |
SVD | 任意 m × n m\times n m×n 矩阵 | A = U Σ V T A = U \Sigma V^T A=UΣVT | 否 | U U U、 V V V 同为正交基(行/列空间) | 奇异值谱、低秩近似、PCA、伪逆 | O ( m n min ( m , n ) ) O(mn \min(m,n)) O(mnmin(m,n)) |
Schur 分解 | 任意 n × n n\times n n×n 方阵(复数) | Q ∗ A Q = T Q^* A Q = T Q∗AQ=T (上三角) | 是 | Q Q Q 列向量为酉基; T T T 对角即特征值 | 特征值分析、特征值算法 | O ( n 3 ) O(n^3) O(n3) (迭代实现) |
特征分解 | 可对角化方阵 / 对称(或Herm.) | A = P D P − 1 A = P D P^{-1} A=PDP−1;对称时 A = Q Λ Q T A=Q\Lambda Q^T A=QΛQT | 是 | 对称(或Herm.)时可用正交(酉)对角化 | 特征值、对称矩阵正交特征向量 | 一般也是 O ( n 3 ) O(n^3) O(n3) |
极分解 | 任意矩阵(方阵或矩形) | A = Q P A = Q P A=QP, P P P 正定 | 否或是 | Q Q Q 为正交/酉矩阵 | “幅角-模”分离,与 SVD 密切相关 | 一般通过 SVD 获得 |
本节列出一些在实现或理解这些分解时常见的重要公式或推导片段。
在实际数值算法中,为了把矩阵 A A A 转为上三角,可以迭代地构造一系列 Householder 反射:
H k = I − 2 w k w k T w k T w k , H_k = I - 2\frac{w_k w_k^T}{w_k^T w_k}, Hk=I−2wkTwkwkwkT,
其中 w k w_k wk 是经过精心选择的向量,使得用 H k H_k Hk 去乘矩阵某一列,可把特定位置以下的元素变为 0。然后通过有限步反射,就能把 A A A 化为 R R R,最后所有这些反射之积即为 Q T Q^T QT(或 Q Q Q):
Q = ( H 1 H 2 ⋯ H n ) T . Q = \bigl(H_1 H_2 \cdots H_n \bigr)^T. Q=(H1H2⋯Hn)T.
记 A A A 是 m × n m\times n m×n,令
A T A ∈ R n × n , A A T ∈ R m × m . A^T A \in \mathbb{R}^{n\times n},\quad A A^T \in \mathbb{R}^{m\times m}. ATA∈Rn×n,AAT∈Rm×m.
则 A T A A^T A ATA 和 A A T A A^T AAT 的非零特征值完全相同,并且它们都非负。记这些公共特征值为 σ 1 2 , σ 2 2 , … , σ r 2 \sigma_1^2,\sigma_2^2,\dots,\sigma_r^2 σ12,σ22,…,σr2,其中 r = r a n k ( A ) r=\mathrm{rank}(A) r=rank(A)。选对应的特征向量为 v i v_i vi(右奇异向量)与 u i u_i ui(左奇异向量),即
A T A v i = σ i 2 v i , A A T u i = σ i 2 u i . A^T A \, v_i = \sigma_i^2 \, v_i, \quad A A^T \, u_i = \sigma_i^2 \, u_i. ATAvi=σi2vi,AATui=σi2ui.
经适当归一化可使得
A v i = σ i u i , A\,v_i = \sigma_i\,u_i, Avi=σiui,
再将所有 { u i } , { v i } \{u_i\},\{v_i\} {ui},{vi} 扩展成一组完整正交基,就能组装出 U U U 和 V V V; Σ \Sigma Σ 则在对角位置放 σ i \sigma_i σi。
Schur 分解可视为对“任意方阵都可相似三角化(在复数域上)”这一定理的数值实现。对于 A ∈ C n × n A\in \mathbb{C}^{n\times n} A∈Cn×n,存在可逆的酉矩阵 Q Q Q,使
Q ∗ A Q = T , Q^* A Q = T, Q∗AQ=T,
T T T 上三角(又称 Schur 形式),且对角元就是 A A A 的特征值。若还需要分块对角 2×2 形式处理实数情况下的共轭复数对,则可用 实 Schur 分解。
如果 A A A 是实对称矩阵,则有
A = Q Λ Q T , A = Q\,\Lambda\, Q^T, A=QΛQT,
其中 Λ \Lambda Λ 是实对角, Q Q Q 正交。每个列向量 q i q_i qi 对应一个特征值 λ i \lambda_i λi,即
A q i = λ i q i , λ i ∈ R . A\,q_i = \lambda_i\, q_i, \quad \lambda_i \in \mathbb{R}. Aqi=λiqi,λi∈R.
这是 Schur 分解的特例,因为实对称矩阵 Schur 分解就是对角实数矩阵(无需上三角带非对角元)。
QR 分解
奇异值分解(SVD)
Schur 分解
所有这几类分解在数值代数中都极为重要,它们从不同视角揭示了矩阵结构,且都能在某种意义上“产生活用的正交基”。根据具体需求(最小二乘、降维、特征值、正交化等),我们会选择不同的分解方法。