秩1更新到QR因子分解
(Q1, R1) = qrupdate (Q, R, u, v)
(Q1, R1) = qrupdate (Q, R, u, v)
当(Q, R) = qr (A)
原来的QR分解是一个
,返回的QR分解一个+ u * v '
,在那里u
和v
是具有适当长度的列向量。
矩阵
=根号eps = 1.4901e-08μ*眼(4)];
在最小二乘法中是否有一个众所周知的例子表明了形成的危险“*
.相反,我们使用QR分解-标准正交Q和上三角R。
(Q, R) = qr (A);
我们预计,R
是上三角。
R = -1.0000 -1.0000 -1.0000 -1.0000 0 0.0000 0.0000 0.0000 0.0000 00
在这种情况下,上三角项R
,不包括第一行,其顺序为sqrt (eps)
.
考虑更新向量
U = [-1 0 0 0 0]';v = 1 (4,1);
而不是计算这个秩1更新的微不足道的QR分解一个
从头开始,
(QT, RT) = qr (A + u * v ') QT = 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 RT = 1.0 e - 007 * -0.1490 -0.1490 -0.1490 0 0 0 0 0 0 0 0 0 0 0 0 -0.1490 0 0 0 0
我们可以使用qrupdate
.
(Q1, R1) = qrupdate (Q, R, u, v) Q1 = -0.0000 -0.0000 -0.0000 -0.0000 1.0000 1.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 1.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 1.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 1.0000 0.0000 R1 = 1.0 e - 007 * 0.1490 0.0000 0.0000 0.0000 0.1490 0.0000 0.0000 0 0 0.1490 0.0000 0.1490 0 0 0 0 0 0 0
请注意,这两种分解都是正确的,尽管它们是不同的。
qrupdate
仅适用于完整的矩阵。
qrupdate
使用的算法在第12.5.1节的第三版矩阵计算Golub和van Loan。qrupdate
是有用的,如果我们采取N = max (m, N)
,则从头计算新的QR分解大致是一个O(N3.)算法,而简单地以这种方式更新现有的因子是一种O(N2)算法。
[1] Golub, Gene h和Charles Van Loan,矩阵计算,第三版,约翰霍普金斯大学出版社,巴尔的摩,1996