R中的矩阵运算-QR分解

来源:互联网 发布:图书馆数据库是什么 编辑:程序博客网 时间:2024/05/17 08:01

实数矩阵 A 的 QR 分解是把 A 分解为

 A = QR, \,

这里的 Q 是正交矩阵(意味着 QTQ = I)而 R 是上三角矩阵。类似的,我们可以定义 A 的 QL, RQ 和 LQ 分解。

更一般的说,我们可以因数分解复数 m×n 矩阵(有着 m ≥ n)为  m×n 酉矩阵(在 QQ = I 的意义上)和 n× n 上三角矩阵的乘积。

> 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