QR-разложение и разложение Холецкого в R
Недавно я читал о том, как R-матрица QR-разложения может быть вычислена с использованием разложения Choleski. Отношение это:
R = разложение Холецкого (A^TA)
Пример:
> 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
Теперь вычисляем QR и разложение Холецкого:
> 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
Как видно, значения матрицы R, рассчитанные по разложению Холецкого и QR, не совпадают. Первый и третий ряды chol(AtA)
отрицается по отношению к qr.R(qr_A)
, Это почему? Является ли отношение, которое я предполагаю, не правильно?
1 ответ
Решение
QR-разложение матрицы не уникально! Существует QR-разложение с R=chol(AtA), но есть и другие, и qr
не обязательно дает это. В вашем примере
qr.Q(qr_A)%*%qr.R(qr_A)
а также
(qr.Q(qr_A)%*%diag(c(-1,1,-1)))%*%chol(AtA)
оба действительных QR-разложения А.