雅可比迭代法

计算科学 线性代数 矩阵 特征值 科学实验室 抽象代数
2021-12-07 07:20:22

我正在使用 Jacobi 迭代方法来查找厄米特矩阵或对称矩阵的特征值和特征向量。对应于特征值的特征向量并不精确。第三个特征向量完全关闭。我已经实现并阅读了有关 Jacobi 的信息。可能的原因是什么?

这是我在 scilab 中的函数文件:

function [eig,eigv]=Jacobimethod(A, I)
r=0
while [1]

B=A-diag(diag(A)) 
[m, index]=max(abs(B))
if m==0
   break
end

p=min(index)
q=max(index)
R=eye(n,n)
if A(p,p)==A(q,q)
   theta=%pi/4
   else
theta=(atan(2*A(p,q)/(A(p,p)-A(q,q))))/2
end
c=cos(theta)
s=sin(theta)
R(p,p)=c
R(q,q)=c
R(p,q)=-s
R(q,p)=s
Anew=clean((R')*A*R,10^-4)
//disp(Anew)
   eig=diag(Anew)
   A=Anew 
   X=I*R
   eigv=X
   I=X 
 r=r+1
 
end 
disp(r,"No of iterations")     
endfunction
1个回答

可能你累积的旋转错误。在每个步骤中,您都有一个工作矩阵开始并且应该收敛到对角矩阵,以及一个矩阵上执行的所有旋转每一步后打印,看看它在哪里停止变小。DD=AQDQDQTA