实数矩阵 A 的 QR 分解是把 A 分解为
这里的 Q 是正交矩阵(意味着 QTQ = I)而 R 是上三角矩阵。类似的,我们可以定义 A 的 QL, RQ 和 LQ 分解。
更一般的说,我们可以因数分解复数 × 矩阵(有着 m ≥ n)为 × 酉矩阵(在 Q∗Q = I 的意义上)和 × 上三角矩阵的乘积。
> m
[,1] [,2] [,3]
[1,] 2 -1 3
[2,] 1 2 1
[3,] 2 4 2
> q <- qr(m)
> a
[1] 1 2 3 -1 0 5 2 5 13
> q
$qr
[,1] [,2] [,3]
[1,] -3.0000000 -2.6666667 -3.666667e+00
[2,] 0.3333333 -3.7267800 7.453560e-01
[3,] 0.6666667 0.8944272 -1.110223e-16
$rank
[1] 2
$qraux
[1] 1.666667e+00 1.447214e+00 1.110223e-16
$pivot
[1] 1 2 3
attr(,"class")
[1] "qr"
rank项返回矩阵的秩,qr项包含了矩阵Q和R的信息,要得到矩阵Q和R,可以用函数
qr.Q()和qr.R()作用qr()的返回结果,例如:
> qr.Q(q)
[,1] [,2] [,3]
[1,] -0.6666667 0.7453560 -1.110223e-16
[2,] -0.3333333 -0.2981424 -8.944272e-01
[3,] -0.6666667 -0.5962848 4.472136e-01
> qr.R(q)
[,1] [,2] [,3]
[1,] -3 -2.666667 -3.666667e+00
[2,] 0 -3.726780 7.453560e-01
[3,] 0 0.000000 -1.110223e-16