![](https://csdnimg.cn/release/download_crawler_static/5958595/bg6.jpg)
3.3 QR 分解 · 3-4 ·
5: for i = 1 to j − 1 do
6: r
ij
= q
∗
i
a
j
% q
∗
i
表示共轭转置
7: q
j
= q
j
− r
ij
q
i
8: end for
9: r
jj
= ∥q
j
∥
2
10: q
j
= q
j
/r
jj
11: end for
如果 A 不是列满秩, 我们可以做类似的正交化过程:
•
如果 a
1
= 0, 则令 q
1
= 0; 否则令 q
1
= a
1
/∥a
1
∥
2
;
•
对于 j = 2, 3, . . . , n, 计算 ˜q
j
= a
j
−
j−1
i=1
(q
∗
i
a
j
)q
i
. 如果 ˜q
j
= 0, 则表明 a
j
可以由 a
1
, a
2
, . . . , a
j−1
线性表出, 令 q
j
= 0. 否则令 q
j
= ˜q
j
/∥˜q
j
∥
2
.
于是我们有
A = QR,
其中 Q = [q
1
, q
2
, . . . , q
n
] 列正交 (但不是规范列正交), 其列向量要么是单位向量, 要么就是零向量.
这里的 R = [r
ij
]
n×n
是上三角矩阵, 定义如下
r
ij
=
q
∗
i
a
j
, for i ≤ j
0, for i > j
如果 Q 的某一列 q
k
= 0, 则 R 中对应的第 k 行就全为 0.
设 rank(A) = k < n, 则 Q 有 k 个非零列, 设为 q
i
1
, q
i
2
, . . . , q
i
k
. 它们形成 C
m
中的一个规范正
交向量组, 所以我们可以将其扩展成 C
m
中的一组规范正交基, 即
q
i
1
, q
i
2
, . . . , q
i
k
, ˜q
1
, . . . , ˜q
m−k
.
然后我们用 ˜q
1
替换 Q 中的第一个零列, 用 ˜q
2
替换 Q 中的第二个零列, 依此类推, 将 Q 中的所有零
列都替换掉. 将最后得到的矩阵记为
˜
Q, 则
˜
Q ∈ C
m×n
规范列正交, 且
˜
QR = QR.
这是由于
˜
Q 中的新的列向量正好与 R 中的零行相对应. 所以我们有 QR 分解
A =
˜
QR.
下面证明满秩矩阵 QR 分解的存在唯一性.
存在性: 由于 A 列满秩, 由 Gram-Schmidt 正交化过程 (算法 3.1) 可知, 存在上三角矩阵
R = [r
ij
]
n×n
满足 r
jj
> 0, 使得 A = QR, 其中 Q 规范列正交.
唯一性: 假设 A 存在 QR 分解
A = Q
1
R
1
= Q
2
R
2
,
其中 Q
1
, Q
2
∈ C
m×n
规范列正交, R
1
, R
2
∈ C
n×n
为具有正对角元素的上三角矩阵. 则有
Q
1
= Q
2
R
2
R
−1
1
. (3.9)
由于 R
1
, R
2
均为上三角矩阵, 所以 R
2
R
−1
1
也是上三角矩阵, 且其对角线元素为 R
2
(i, i)/R
1
(i, i),
i = 1, 2, . . . , n. 由 (3.9) 可得
1 = ∥Q
1
∥
2
= ∥Q
2
R
2
R
−1
1
∥
2
= ∥R
2
R
−1
1
∥
2
.