Hessenberg矩阵与Hermitian矩阵的住户变换

时间:2016-05-05 06:58:22

标签: matlab matrix

我编写了一个程序来找到一个Hessenberg矩阵,它使用住户变换与矩阵A正交等价。该程序正常工作,直到我开始使用Hermitian矩阵。通常,当使用埃尔米特矩阵时,hessenberg矩阵应该是三对角的,但是我的第一行的某些位置(当然在子对角线下方)只有零。谁能帮我? 我的户主功能定义为:

function [H,Q]=householder(A)

[m,n] = size(A);

Q=eye(n);

for k = 1:n-2

  x=A(k+1:n,k);

  [sz,szz] = size(x);
  e_k = zeros(sz,1);
  e_k(1)=1;

  u = (x+sign(x(1))*norm(x)*e_k)/(norm(x+sign(x(1))*norm(x)*e_k));

  I=eye(sz);   

  P=I-2*(u)*(u');

  Q_temp=blkdiag(eye(k),P);
  Q=Q_temp*Q;
  A=(Q_temp')*A*(Q_temp);

end
  H=A;

end

我做了一个随机的Hermitian矩阵:

function RHM=RandomHermitianMatrix(n)
   A=complex(rand(n,n),(rand(n,n)*2)-1);
   for k=1:n-1
     vct=diag(A,k);
     for l=1:n-k
        A(l+k,l)=conj(vct(l));
     end
   end
   RHM=A;
end

我用以下方法测试:

function message = test_householder_hermitian(n)
   tic;
   tst=RandomHermitianMatrix(n)
   tstt=householder(tst)
   toc

   message='done';
end

非常感谢!

0 个答案:

没有答案