如何推广用于Householder QR分解的MATLAB代码

时间:2015-11-15 20:35:25

标签: algorithm matlab matrix-factorization

我正在寻求帮助来概括我为Householder QR分解的第一步所做的代码。我做了以下事情:

A=[60,41,-88;42,60,51;0,-28,56;126,82,-71];
disp(A)
m=length(A(:,1));
n=length(A(1,:));
I=eye(m);
e1=I(:,1)';

    %We compute the first step of the method.
    beta=-sqrt(A(:,1)'*A(:,1));
    y=A(:,1)'-beta.*e1;
    alpha=sqrt(2)/(sqrt(y*y'));
    v=alpha*y;
    U=I-(v'*v);
    disp(U)
    R1=U*A;
    disp(R1)

我尝试了以下其他步骤:

for k=2:n
  ek=I(:,k)';
 for j=0:k
  beta=-sqrt(R1(k+j,k)'*R1(k+j,k));
   end
   disp(beta)
end

%For the standard basis just define A=eye(N), so the vectors are
%A(:,i).

但是它没有用,它给出了一个错误,说明如下:

  

尝试访问R1(5,3);索引超出界限因为   尺寸(R1)= [4,3]。

     

Householderfactorization错误(第33行)       的β= -sqrt(R1(K + J,K)' * R1(K + J,K));

所以我一直在尝试寻找另一种获取算法的方法,但我无法弄清楚如何做到这一点,我已经阅读了这本书"数值分析"由Kincaid&切尼第一版得到澄清,但在阅读之后我感到更加困惑(我想在书中执行算法,因为它是我发现的最简单的算法,尽管有点令人困惑)。

有人可以帮助我以正确的方式执行此算法吗?

  

注意:本书可以找到Here,实际上是在第253页。所以我想把第一个之后的部分算法转换成MATLAB代码(这是概括我的我正在谈论),这个算法的问题是当你想要计算第二步和前进时你必须考虑以前的矩阵然后你必须改变,例如,你的A(:,1)到[R1 (2,2),R 1(3,2),R 1(4,2)]'然后使用这个新向量计算你在第一步中所做的所有事情,所以这个过程是我不知道如何将其转换为MATLAB的过程。第一步很简单,其他的对我来说很难。

0 个答案:

没有答案