排名1更新到QR分解
[Q1,R1] = QRUPDATE(Q,R,U,V)
[Q1,R1] = QRUPDATE(Q,R,U,V)
什么时候[q,r] = qr(a)
是原始的QR分解一种
,返回QR分解A + U * V'
,在哪里你
和V.
是适当长度的柱矢量。
矩阵
mu = sqrt(eps)mu = 1.4901e-08 a = [(1,4);mu *眼睛(4)];
是一个众所周知的例子,其在最小二乘面上表示成型的危险'* a
。相反,我们使用QR分解 - 正交式Q和上三角形R.
[q,r] = qr(a);
我们期待,R.
是上三角形。
R = -1.0000 -1.0000 -1.0000 -1.0000 0 0.0000 0.0000 0 0 0.0000 0.0000 0 0 0 0.0000 0 0 0 0 0
在这种情况下,上三角条目R.
,排除第一行,是按顺序排列SQRT(EPS)
。
考虑更新向量
U = [-1 0 0 0 0]'';v = =(4,1);
而不是计算这个等级的相当琐碎的QR分解一种
从划伤
[Qt,RT] = QR(A + U * V')QT = 0 0 0 0 1 -1 0 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 -1 0 RT = 1.0e-007 * -0.1490 0 0 0 0 -0.1490 0 0 0 0 0.1490 0 0 0 0 0. 0 0 0
我们可以使用qrupdate.
。
[q1,r1] = qrupdate(q,r,u,v)q1 = -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.000000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000-0.0000 -0.0000 1.0000 0.0000 R1 = 1.0E-007 * 0.1490 0.0000 0.0000 0 0.1490 0.0000 0. 0 0 0 0.1490 0.00 0 0 0 0 0.1490 0 0 0 0 0
请注意,两个因素都是正确的,即使它们是不同的。
qrupdate.
仅适用于完整矩阵。
qrupdate.
使用第三版第12.5.1节中的算法矩阵计算由Golub和Van贷款。qrupdate.
自从我们采取以来是有用的n = max(m,n)
,然后计算从头划痕计算新的QR分组是大致的O.(N3.)算法,同时简单地以这种方式更新现有因素是一个O.(N2)算法。
[1] Golub,Gene H.和Charles Van Loan,矩阵计算,第三版,约翰霍普金斯大学出版社,巴尔的摩,1996年