问题
I recently read about how the R matrix of QR decomposition can be calculated using the Choleski decomposition. The relation is:
R = Choleski-decomposition(A^TA)
Example:
> A=matrix(c(1,2,3,2,3,5,1,3,2), nrow=3)
> A
[,1] [,2] [,3]
[1,] 1 2 1
[2,] 2 3 3
[3,] 3 5 2
> AtA = t(A)%*%A
> AtA
[,1] [,2] [,3]
[1,] 14 23 13
[2,] 23 38 21
[3,] 13 21 14
Now calculating QR and Choleski decomposition:
> chol(AtA)
[,1] [,2] [,3]
[1,] 3.741657 6.147009 3.4743961
[2,] 0.000000 0.462910 -0.7715167
[3,] 0.000000 0.000000 1.1547005
> qr_A = qr(A)
> qr.R(qr_A)
[,1] [,2] [,3]
[1,] -3.741657 -6.147009 -3.4743961
[2,] 0.000000 0.462910 -0.7715167
[3,] 0.000000 0.000000 -1.1547005
As observed, the values of the R matrix calculated from Choleski and QR decomposition are not the same. The first and the third rows of chol(AtA)
are negated w.r.t qr.R(qr_A)
. Why is that? Is the relation I'm assuming not correct?
回答1:
The QR-decomposition of a matrix is not unique! There is a QR-decomposition with R=chol(AtA), but there are also others and qr
does not necessairily give that one. In your example
qr.Q(qr_A)%*%qr.R(qr_A)
and
(qr.Q(qr_A)%*%diag(c(-1,1,-1)))%*%chol(AtA)
are both valid QR-decompositions of A.
来源:https://stackoverflow.com/questions/19536933/qr-decomposition-and-choleski-decomposition-in-r