N阶实对称矩阵的三对角化

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

N阶实对称矩阵的三对角化

信计31 施昕2130602018

实验原理:

用householder矩阵对n阶实矩阵上Hessenberg化,Q’AQ=T,其中Q 是householder矩阵,T是上Hessenberg矩阵,因为A对称,则变换后的矩阵T是三对角矩阵。通过n个householder矩阵相乘,Hk使得每个Ak的第k行和第k列的后n-k分量变为ae(n-k)。最后得到三对角矩阵。

实验结果:

源程序:

%Householder变换:

function [v,b]=House(x)

n=length(x);

x=x/norm(x,'inf');

c=x(2:n)'*x(2:n);

v(2:n,1)=x(2:n);

if c==0

b=0;

else

a=sqrt((x(1))^2+c);

if x(1)<=0

v(1)=x(1)-a;

else

v(1)=-c/(x(1)+a);

end

b=2*(v(1))^2/(c+(v(1))^2); v=v/v(1);

end

%三对角化:

A=input('输入矩阵A:');

n=length(A);

Q=eye(n);

for k=1:n-2

[v,b]=House(A(k+1:n,k));

u=b*A(k+1:n,k+1:n)*v;

w=u-(b*u'*v/2)*v;

Hk=eye(n-k)-b*(v*v');

H=blkdiag(eye(k),Hk);

Q=Q*H;

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

A(k,k+1)=A(k+1,k);

A(k,k+2:n)=0;

A(k+2:n,k)=0;

A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-v*w'-w*v'; end

T=A

Q

disp(Q*T*Q');

相关文档
最新文档