数组分析 jacobi法求实对称矩阵全部特征值与特征向量 MATLAB实现

原创 2015年11月19日 19:48:31

结果截图:


MATLAB程序:(算法参考数值分析第四版 颜庆津 P53)


%function [lam,U]=jacobi(A,eps)



%Jacobi迭代法求解实对称矩阵的特征值与特征向量。
%输入:eps允许的误差限,A实对称矩阵;输出:lam是n个特征值,U的列向量对应特征向量


%2015.11.19  密密编写  (*^__^*) 
function [lam,U]=jacobi(A,eps)


%初始化
n=size(A);
U=eye(n);
A1=eye(n);
%A1=A;
%求矩阵非对角元素中按模最大的值,p、q为其下标
p=1;
q=2;
for i=1:n
    for j=i+1:n
            if abs(A(i,j))>abs(A(p,q))
                p=i;
                q=j;
            end
    end
end
%迭代开始
while abs(A(p,q))>=eps
    A1=eye(n);
    cot2=(A(p,p)-A(q,q))/(2*A(p,q));
    sin2=sqrt(1/(1+cot2*cot2));
    cos2=sqrt(1-sin2*sin2);
    cos1=sqrt((cos2+1)/2);
    sin1=sqrt(1-cos1*cos1);
    %求特征向量,存储于矩阵U
    R=U;
    for i=1:n
        U(i,p)=R(i,p)*cos1+R(i,q)*sin1;
        U(i,q)=-R(i,p)*sin1+R(i,q)*cos1;
        for j=1:n
            if j~=p&&j~=q
                U(i,j)=R(i,j);
            end
        end
    end
    %求A1
    A1(p,p)=A(p,p)*cos1*cos1+A(q,q)*sin1*sin1+A(p,q)*sin2;
    A1(q,q)=A(p,p)*sin1*sin1+A(q,q)*cos1*cos1-A(p,q)*sin2;
    A1(p,q)=0.5*(A(q,q)-A(p,p))*sin2+A(p,q)*cos2;
    A1(q,p)=A1(p,q);
    for j=1:n
        if j~=p&&j~=q
            A1(p,j)=A(p,j)*cos1+A(q,j)*sin1;
            A1(q,j)=-A(p,j)*sin1+A(q,j)*cos1;
            A1(j,p)=A1(p,j);%实对称矩阵
            A1(j,q)=A1(q,j);
        end
    end
    for i=1:n
        for j=1:n
            if i~=p&&i~=q&&j~=p&&j~=q
               A1(i,j)=A(i,j);
               A1(j,i)=A1(i,j);
            end
        end
    end
    A=A1;
    lam=diag(A1)';
    %求矩阵A非对角元素中按模最大值的下标p、q
    p=1;
    q=2;
    for i=1:n
        for j=i+1:n
                if abs(A(i,j))>abs(A(p,q))
                    p=i;
                    q=j;
                end
        end
    end
end




end

相关文章推荐

特征变换(2)沃尔什-哈达玛变换

笔记->印象笔记(沃尔什变换篇) /************************************************************************* * * 函数...

Windows+caffe对自己的样本进行特征提取

生成lmdb/leveldb文件利用caffe对自己的图片生成leveldb格式文件: http://www.cnblogs.com/TensorSense/p/6744075.html 1、将图...

Jacobi法确定对称矩阵特征值与特征向量

//Jacobi法确定对称矩阵特征值与特征向量 #include #include #include #include using namespace std; class jac...

Jacobi迭代求矩阵特征值和特征向量+C代码

Jacobi计算过程如下: 1. 选择矩阵A非对角元中最大值A[i][j],运用公式 tan 2O = 2*A[i][j] / (A[i][i] - A[j][j]) 获得选择平面矩阵J,使J * A...

Jacobi 方法计算特征值特征向量

在求解协方差矩阵的特征值和特征向量时用到了Jacobi方法原理设A是n阶实对称矩阵,则必有正交矩阵P,使PTAP=⎡⎣⎢⎢λ1⋮0⋯⋱⋯0⋮λn⎤⎦⎥⎥=∧; P^TAP= \begin{bmatri...

求矩阵特征值和特征向量

  • 2014年07月15日 07:55
  • 208KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组分析 jacobi法求实对称矩阵全部特征值与特征向量 MATLAB实现
举报原因:
原因补充:

(最多只允许输入30个字)