美文网首页
对称矩阵的特征值(EVD)计算的雅各宾(Jacobi)方法

对称矩阵的特征值(EVD)计算的雅各宾(Jacobi)方法

作者: 寽虎非虫003 | 来源:发表于2022-09-05 16:17 被阅读0次

参考

[1]《矩阵计算》中译本第四版,P444~451。
[2]《矩阵计算六讲》,P134~140.
[3]NEW FAST AND ACCURATE JACOBI SVD ALGORITHM: I. doi:10.1137/050639193.
[4]NEW FAST AND ACCURATE JACOBI SVD ALGORITHM: II. doi:10.1137/05063920X

实现

按照[1]的经典Jacobi法实现

function [V] = myEigNorm(A,sigma)
[m,n] = size(A);
if m~=n
    
else
    V = eye(n);
    delta = sigma*norm(A,'fro')
    omi = off(A)
    while omi>delta
        for p=1:n-1
            for q=p+1:n
                [c,s,t]=jacobi(A(p,p),A(p,q),A(q,q));
                G = eye(n);
                G(p,p) = c;
                    G(q,q) = c;%conj(c);
                    G(p,q) = s;
                    G(q,p) = -s;%conj(s);
                    G
                    A = G'*A*G
                    V = V*G
            end
        end
        omi = off(A)
    end
end


function [c,s,t]=jacobi(alpha,beta,gama)
% 求解jacobi矩阵的三个主要值

if beta~=0
    tao = (gama -alpha)/(2*beta);
    if tao>=0
        t = 1/(tao+sqrt(1+tao^2));
    else
        t = 1/(tao-sqrt(1+tao^2));
    end
    c=1/sqrt(1+t^2);
    s=t*c;
else
    c=1;
    s=0;
    t=0;
end
end

function [o] = off(A)
%计算off函数
s = 0;
[m,n]=size(A);
for i=1:m
    for j=1:n
        if i~=j
            s=s+A(i,j)^2;
        end
    end
end
o = sqrt(s);

end

测试,测试的例子来自[2]的P140例3.4.2.
A = \begin{bmatrix} 10^{40} & 10^{29} &10^{19}\\ 10^{29} & 10^{20} &10^{9}\\ 10^{19} & 10^{9} & 1 \end{bmatrix}
直接手算的特征值为
\lambda_1 = 10^{40},\lambda_2=9.9\times 10^{19},\lambda_3=9.81818\times10^{-1}

直接调用MATLAB的eig函数的结果为

-3.96678784561050e+23
-8.10000976406272e+19
1.00000000000000e+40

Jacobi法测试代码:

clc;
clear;

A= [1e40 1e29 1e19;
    1e29 1e20 1e9;
    1e19 1e9 1]

[V] = myEigNorm(A,1e-14);
S = V'*A*V;
sigmas = [S(1,1),S(2,2),S(3,3)]

结果为

1.00000000000000e+40    
9.90000000000000e+19    
0.981818181818182

确实能够达到机器理论精度。
其他速度改进我后续再学习。

相关文章

  • 对称矩阵的特征值(EVD)计算的雅各宾(Jacobi)方法

    参考 [1]《矩阵计算》中译本第四版,P444~451。[2]《矩阵计算六讲》,P134~140.[3]NEW F...

  • 正交矩阵、EVD、SVD

    一、正交矩阵 二、EVD 特征值分解(Eigen Value Decomposition, EVD)。对于对称阵,...

  • 线性代数笔记26

    对称矩阵及对称性 对称矩阵 特征值都是实数 特征向量都是垂直的(正交的) 则通常则对称矩阵可以写为 为什么特征值为...

  • 对称矩阵性质

    说明 如无特别说明都是实对称矩阵 定理 对称矩阵的特征值为实数 证明 设复数 定理的意义 由于对称矩阵A的特征值 ...

  • 高等代数理论基础66:实对称矩阵的标准形

    实对称矩阵的标准形 对称矩阵的性质 引理:设A是实对称矩阵,则A的特征值皆为实数 证明: 注:对实对称矩阵A,在n...

  • 线代-对称矩阵与正交对角化

    对称矩阵:矩阵上的所有元素关于主对角线对称,满足 对称矩阵的重要性质 对于对称矩阵来说,其特征值一定是实数; 尽管...

  • 线代概念5---其它

    实对称矩阵、二次型、正交化、正定 实对称矩阵: 1、实对称矩阵一定是可对角化的 2、实对称矩阵的特征值全是实数、特...

  • 奇异值

    简述:如果是方阵,则可以通过特征值分解(EVD)得到矩阵的特征参数(特征值与特征向量)。对于非方阵则需要用到奇异值...

  • 特征值,特征向量,标准正交向量组与numpy

    使用python的数值计算库numpy来计算矩阵的特征值,特征向量与标准正交向量组 1.求矩阵的特征值和各特征值所...

  • 证明:二次型f=x^TAx在||x||=1时的最大值为矩阵A的最

    证明:二次型在时的最大值为矩阵的最大特征值,其中是对称正定矩阵。 因为是对称矩阵,所以必定存在正交矩阵使得,其中是...

网友评论

      本文标题:对称矩阵的特征值(EVD)计算的雅各宾(Jacobi)方法

      本文链接:https://www.haomeiwen.com/subject/hcxbnrtx.html