QR家庭支持矩阵的分解

时间:2017-10-10 18:18:36

标签: matlab numerical-methods numerical-computing

我已经使用较低波段k1和较高波段ku的带状矩阵。我想把它们放在三角形的下面,这样做,我正在使用QR Householder。因此,我修改了较低频段的QR Householder算法,但无法对上频段的算法进行修改。在下面,对于较低的波段,我将x阵列仅用于非零的位置。然后,当更新A时,它会更新一个矩形数组,该数组从上部带(我想忽略)中取零。我试图对那部分进行矢量化(忽略上部乐队的零点),但不能让它发挥作用。

function [U, R] = HouseH_QR(A, lowband) % so would like to add the upperband argument
[m, n] = size(A);
% algo from Trefethen with my mod for kl
% this works but not taking advantage of upperband 
for k = 1:n,
    kl = min(k+lowband, m);  % the lower band
    x = A(k:kl,k);
    e = zeros(length(x),1); e(1) = 1;
    u = sign(x(1))*norm(x)*e + x;
    u = u./norm(u);
    A(k:kl, k:n) = A(k:kl, k:n) - 2*u*u'*A(k:kl, k:n); % lower triang
    U(k:m,k) = u;
end

0 个答案:

没有答案