用古典jacobi求矩阵特征值和特征向量的matlab程序,但是他迭代后A和Q都越来越大是为什么呀?程序如下:A=[1,1,0.5;1,1,0.25;0.5,0.25,2];n=length(A);S=eye(n);Q=eye(n);B=ones(n,1);while 1 for i=1:n B(i)=A(i,i);%用向量B来储存A的对角线元素 A(i,i)=0;%将A的对角线元素变为0,使得下面找按绝对值最大值时不会找到对角线元素 end m=max(max(abs(A)));%第一个max返回A的每列的按绝对值最大值 [q,p]=find(abs(A)==m,1); for i=1:n A(i,i)=B(i);%将A的对角线元素带回 end a=(A(q,q)-A(p,p))/(2*A(p,q)); if a<0 t=-(1/(abs(a)+sqrt(1+a^2))); else t=1/(abs(a)+sqrt(1+a^2)); end cosk=1/sqrt(1+t^2); sink=t*cosk; S(p,p)=cosk; S(q,q)=cosk; S(p,q)=sink; S(q,p)=-sink; A=S'*A*S; Q=Q*S; sum=0; for i=1:n for j=1:i-1 sum=sum+A(i,j)^2; end for j=i+1:n sum=sum+A(i,j)^2; end end sum if sum<1 break end A Qend