givens.asv

来自「矩阵论中比较重要的一种算法givens矩阵变换算法 自己编写的 调试通过」· ASV 代码 · 共 51 行

ASV
51
字号
clc;
clear;

%%%%Givens旋转法求解对称阵的所有特征值和对应的特征向量

N=50;%矩阵阶数
v=[100 1:1:(N-1)];
A=toeplitz(v);
T=zeros(N,N);
B=zeros(1,N);
eigenvector=eye(N,N);%特征向量
eigenvalue=zeros(1,N);%特征值  

%迭代过程
while(1)
     for k=1:N;
         B(k)=A(k,k);
     end;  
     DA=sum(B.^2);%主对角线元素的平方和
     SA=sum(sum(A.^2))-DA;%非主对角线元素的平方和 
     if SA>10^(-6)%设置精度
        for m=2:N;
            for n=1:(m-1);
                T(m,n)=A(m,n);
            end;
        end;   
        [max,irow,jrow]=maxreturn(T);

        i=jrow;
        j=irow;
        theta=atan(2*A(i,j)/(A(i,i)-A(j,j)))/2;
        G=eye(N,N);
        G(i,i)=cos(theta);
        G(j,j)=cos(theta);
        G(i,j)=sin(theta);
        G(j,i)=-sin(theta);

        A=G*A*G'; 
        eigenvector=eigenvector*G';

        else
            break;
     end; 
end;

for i=1:N;
    eigenvalue(i)=A(i,i);
end;


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?