qrupdate
QR分解排名1更新
语法
(Q1, R1) = qrupdate (Q, R, u, v)
描述
(Q1, R1) = qrupdate (Q, R, u, v)
当(Q, R) = qr (A)
是原来的QR因式分解一个
,返回的QR分解一个+ u * v '
,在那里u
而且v
是长度适当的列向量。
例子
矩阵
mu = root (eps) mu = 1.4901e-08 A = [ones(1,4);μ*眼(4)];
在最小二乘中有一个著名的例子表明了形成的危险吗“*
.相反,我们使用QR分解——标准正交Q和上三角R。
(Q, R) = qr (A);
我们预计,R
是上三角。
R = -1.0000 -1.0000 -1.0000 -1.0000 0 0.0000 0.0000 0000 0.0000 0.0000 0000 00
在这种情况下,上三角项R
除第一行外,的数量级为sqrt (eps)
.
考虑更新向量
U = [-1 0 0 0 0]';v = 1 (4,1);
而不是计算相当琐碎的QR分解这个秩一更新到一个
从头开始,
[QT,RT] = qr(A + u*v') QT = 00 00 1 -1 00 00 00 0 -1 00 00 00 -1 00 00 0 -1 00 00 -1 00 00 RT = 1.0e-007 * -0.1490 00 00 -0.1490 00 00 -0.1490 00 00 0
我们可以使用qrupdate
.
[Q1,R1] = qrupdate(Q,R,u,v) Q1 = -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 1.0000 R1 = 1.0e-007 * 0.1490 0.0000 0.0000 0.0000 0.0000 0.1490 0.0000 00 0.1490 0000 0.1490 0000 00
注意,这两种分解都是正确的,尽管它们是不同的。
提示
qrupdate
只适用于全矩阵。
算法
qrupdate
的第三版第12.5.1节中的算法矩阵计算Golub和van Loan的作品。qrupdate
是有用的,如果我们取N = max (m, N)
,则从零开始计算新的QR分解大致为O(N3.)算法,而简单地以这种方式更新现有的因子是一个O(N2)算法。
参考文献
Golub, Gene H.和Charles Van Loan,矩阵计算,第三版,约翰霍普金斯大学出版社,巴尔的摩,1996年
另请参阅
之前介绍过的R2006a
这个话题有帮助吗?