数组分析 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

数值分析 jacobi迭代法求解线性方程组 MATLAB程序实现

数值分析 jacobi迭代法MATLAB程序实现   函数内容(保存为jacobi.m文件,在MATLAB中运行): %function [G,d,x,N]=jacobi(A,b) %Jacob...
  • jingmiaa
  • jingmiaa
  • 2015年11月06日 19:01
  • 5777

如何使用Matlab产生对称矩阵

有时候做实验需要使用对角矩阵,这里介绍如何使用Matlab产生
  • bendanban
  • bendanban
  • 2014年06月20日 00:54
  • 15195

基于Matlab来计算矩阵特征值和特征向量

简介 线性代数相关领域中,矩阵操作一般是核心内容。对矩阵的特征值和特征向量的计算一直在数值计算占有重要位置。这里介绍一种根据指定个数来返回矩阵特征值及特征向量的方式。 实例 % By lyq...
  • Evan123mg
  • Evan123mg
  • 2015年03月22日 16:35
  • 1581

雅可比算法求方阵的全部特征值和特征向量

ValVect.h #include class ValVect { public : ValVect(void); void clear(void); //~ValVect(void);...
  • shiguangrenran1
  • shiguangrenran1
  • 2012年10月31日 08:11
  • 4532

矩阵的特征值和特征向量的雅克比算法C/C++实现

矩阵的特征值和特征向量是线性代数以及矩阵论中非常重要的一个概念。在遥感领域也是经常用到,比如多光谱以及高光谱图像的主成分分析要求解波段间协方差矩阵或者相关系数矩阵的特征值和特征向量。 根据普通线...
  • liuheng0111
  • liuheng0111
  • 2016年09月09日 00:10
  • 1739

矩阵的特征值和特征向量的雅克比算法C/C++实现

矩阵的特征值和特征向量是线性代数以及矩阵论中非常重要的一个概念。在遥感领域也是经常用到,比如多光谱以及高光谱图像的主成分分析要求解波段间协方差矩阵或者相关系数矩阵的特征值和特征向量。根据普通线性代数中...
  • zhouxuguang236
  • zhouxuguang236
  • 2014年10月18日 16:10
  • 22733

雅可比旋转求解对称二维矩阵的特征值和特征向量

问题描述:给定一个矩阵,如下: A=[a11a21a12a22] A=\begin{bmatrix} a_{11}&a_{12}\\ a_{21}& a_{22} \end{bmatrix} ...
  • xiamentingtao
  • xiamentingtao
  • 2016年09月25日 23:32
  • 1256

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

//Jacobi法确定对称矩阵特征值与特征向量 #include #include #include #include using namespace std; class jac...
  • u011378809
  • u011378809
  • 2013年07月28日 14:06
  • 524

Jacobi__矩阵特征值和特征向量(详细,有例子)

  • 2012年11月21日 13:20
  • 250KB
  • 下载

古典Jacobi方法求矩阵的全部特征值和特征向量

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

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