热门

最新

红包

立Flag

投票

同城

我的

发布
qq_53304625
mikaaaa
5 年前
trueqq_53304625

用古典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
Q
end

CSDN App 扫码分享
分享
评论
点赞
打赏
  • 复制链接
  • 举报
下一条:
用vs2019编写c语言时为啥不能出现正常的一幕,点击创建就出现了第二副图的样子
立即登录