利用Lanczos算法化对称阵为三对角阵T,并利用Strum算法对T求解最大特征值和
最小特征值.
无中断情况:
function lanczos(A)
[m,n]=size(A);
q1=ones(m,1)/norm(ones(m,1),2);
a1=q1'*A*q1;
r1=A*q1-a1.*q1;
b1=norm(r1,2);
q2=r1./b1;
a(1)=a1;
b(1)=b1;
for i=2:m
a2=q2'*A*q2;
a(i)=a2;
r1=A*q2-a2.*q2-b1*q1;
if r1==0
disp('ÖжÏÁË!');
break;
end
b1=norm(r1,2);
q1=q2;
q2=r1./b1;
if i<m
b(i)=b1;
end
end
T=diag(a)+diag(b,1)+diag(b,-1)
strum(T);
function strum(A)
[n,m]=size(A);
a=0;b=0;
for i=1:n
s=sum(abs(A(i,:)))-abs(A(i,i));
a1=-s+A(i,i);
b1=s+A(i,i);
if a>a1
a=a1;
end
if b1>b
b=b1;
end
end
max=0;min=0;
a1=a;b1=b;c=(a1+b1)/2;
- 1
- 2
前往页