5.3.5 豪斯霍尔德 QR 分解
豪斯霍尔德 QR 分解是由 Alston Householder 提出并以其名字命名的一种正交因子分解方法,是数值线性代数中最常用的分解之一。其目标是将一个 m×n 矩阵 A 分解为因子乘积形式:
A=QR
其中:
- Q 是一个 m×m 的酉矩阵(在实数情况下为正交矩阵,即 Q∗Q=I),
- R 是一个 m×n 的上三角矩阵。
算法的核心是通过一系列酉变换逐步将 A 转换为上三角形式,实际上计算的是:
Q∗A=R
其中 Q∗ 是若干豪斯霍尔德变换(反射矩阵)的乘积。这些变换具有特殊形式,我们对矩阵 A 的秩不做任何假设。
第一步:构造第一个豪斯霍尔德变换
我们首先构造一个向量 v∈Cm,使得矩阵 U1=I−vv∗ 为酉矩阵,并将 A 的第 1 列变换为形如 (β,0,…,0)T 的形式,即除了第一个元素外,其余元素为 0。
设 A 的第 1 列为 A1,目标是:
(I−vv∗)A1=βe1
其中 e1=(1,0,…,0)T 是第一个标准单位向量。
根据豪斯霍尔德变换的性质(可参考线性代数中相关引理),我们可以按以下步骤构造 v:
-
选择 β:
- 令 ∣β∣=∥A1∥2(A1 的 2-范数),
- 要求 ⟨A1,βe1⟩ 为实数。
-
定义辅助向量:
- 取 y=A1−βe1,
- 计算 α=∥y∥22,然后 v=αy。
-
避免减法相消:
为确保数值稳定性,我们需要谨慎选择 β 的相位。设 A 的 (1,1) 元素为 a11,将其写为极分解形式:
a11=∣a11∣eiθ,β=∥A1∥2eiφ
则:
⟨A1,βe1⟩=a11β=∣a11∣∥A1∥2ei(θ−φ)
为使此值为实数,θ−φ 需为 0 或 π。选择 θ−φ=π(即 φ=θ−π),则:
β=∥A1∥2ei(θ−π)=−∥A1∥2eiθ=−∥A1∥2∣a11∣a11
此时,v 的第一个分量为:
v1=α(a11−β)=α(∣a11∣eiθ−(−∥A1∥2eiθ))=α(∣a11∣+∥A1∥2)eiθ
由于 ∣a11∣+∥A1∥2>0,此计算避免了减法相消。
算法:构造第一个豪斯霍尔德变换
β←−(∣a11∣a11)∥A1∥2y←A1−βe1α←∥y∥22v←αyU1←I−vv∗
验证 U1 的酉性:U1∗=I−v∗v=I−vv∗=U1,且:
U1∗U1=(I−vv∗)(I−vv∗)=I−2vv∗+vv∗vv∗=I
因为 v∗v=∥v∥22=2(由 α 的定义)。
后续步骤:迭代构造
在第 k 步后,假设我们已应用 k 个酉矩阵 U1,U2,…,Uk,得到:
UkUk−1⋯U1A=[J0HW]
其中:
- J 是 k×k 上三角矩阵,
- 0 是 (m−k)×k 零矩阵,
- H 是 k×(n−k) 矩阵,
- W 是 (m−k)×(n−k) 矩阵。
目标是对 W 的第 1 列(对应原矩阵第 k+1 列)应用豪斯霍尔德变换,使其第一个元素以下为 0。设 W 的第 1 列为 W1,构造 v∈Cm−k 使得:
(I−vv∗)W1=βe1(m−k)
其中 e1(m−k) 是 (m−k)-维的第一个标准单位向量。构造方法同第一步。
定义第 k+1 个变换矩阵:
Uk+1=[Ik00Im−k−vv∗]
应用 Uk+1:
Uk+1[J0HW]=[J0H(I−vv∗)W]
其中 (I−vv∗)W 的第 1 列第一个元素以下为 0,从而整个矩阵的前 k+1 列对角线以下元素为 0。
终止条件
当 k=min(m,n) 时,迭代终止。此时:
Q∗A=R
其中:
- Q∗=Umin(m,n)Umin(m,n)−1⋯U1,
- R 为 m×n 上三角矩阵(若 m>n,则 R 的最后 m−n 行为零)。
由于 Q∗ 是酉矩阵的乘积,Q=(Q∗)∗=U1∗U2∗⋯Umin(m,n)∗。注意到每个 Uk 是埃尔米特矩阵(Uk∗=Uk),因此:
Q=U1U2⋯Umin(m,n)
且 A=QR,完成豪斯霍尔德 QR 分解。
- 令 ∣β∣=∥A1∥2(A1 的 2-范数),
- 要求 ⟨A1,βe1⟩ 为实数。
-
定义辅助向量:
- 取 y=A1−βe1,
- 计算 α=∥y∥22,然后 v=αy。
-
避免减法相消:
为确保数值稳定性,我们需要谨慎选择 β 的相位。设 A 的 (1,1) 元素为 a11,将其写为极分解形式:
a11=∣a11∣eiθ,β=∥A1∥2eiφ
则:
⟨A1,βe1⟩=a11β=∣a11∣∥A1∥2ei(θ−φ)
为使此值为实数,θ−φ 需为 0 或 π。选择 θ−φ=π(即 φ=θ−π),则:
β=∥A1∥2ei(θ−π)=−∥A1∥2eiθ=−∥A1∥2∣a11∣a11
此时,v 的第一个分量为:
v1=α(a11−β)=α(∣a11∣eiθ−(−∥A1∥2eiθ))=α(∣a11∣+∥A1∥2)eiθ
由于 ∣a11∣+∥A1∥2>0,此计算避免了减法相消。
算法:构造第一个豪斯霍尔德变换
β←−(∣a11∣a11)∥A1∥2y←A1−βe1α←∥y∥22v←αyU1←I−vv∗
验证 U1 的酉性:U1∗=I−v∗v=I−vv∗=U1,且:
U1∗U1=(I−vv∗)(I−vv∗)=I−2vv∗+vv∗vv∗=I
因为 v∗v=∥v∥22=2(由 α 的定义)。
后续步骤:迭代构造
在第 k 步后,假设我们已应用 k 个酉矩阵 U1,U2,…,Uk,得到:
UkUk−1⋯U1A=[J0HW]
其中:
- J 是 k×k 上三角矩阵,
- 0 是 (m−k)×k 零矩阵,
- H 是 k×(n−k) 矩阵,
- W 是 (m−k)×(n−k) 矩阵。
目标是对 W 的第 1 列(对应原矩阵第 k+1 列)应用豪斯霍尔德变换,使其第一个元素以下为 0。设 W 的第 1 列为 W1,构造 v∈Cm−k 使得:
(I−vv∗)W1=βe1(m−k)
其中 e1(m−k) 是 (m−k)-维的第一个标准单位向量。构造方法同第一步。
定义第 k+1 个变换矩阵:
Uk+1=[Ik00Im−k−vv∗]
应用 Uk+1:
Uk+1[J0HW]=[J0H(I−vv∗)W]
其中 (I−vv∗)W 的第 1 列第一个元素以下为 0,从而整个矩阵的前 k+1 列对角线以下元素为 0。
终止条件
当 k=min(m,n) 时,迭代终止。此时:
Q∗A=R
其中:
- Q∗=Umin(m,n)Umin(m,n)−1⋯U1,
- R 为 m×n 上三角矩阵(若 m>n,则 R 的最后 m−n 行为零)。
由于 Q∗ 是酉矩阵的乘积,Q=(Q∗)∗=U1∗U2∗⋯Umin(m,n)∗。注意到每个 Uk 是埃尔米特矩阵(Uk∗=Uk),因此:
Q=U1U2⋯Umin(m,n)
且 A=QR,完成豪斯霍尔德 QR 分解。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于