精华内容
下载资源
问答
  • 用幂法求矩阵最大特征值及其对应的特征向量
  • 输入参数:系数矩阵A,近似值lamda_initial,初始向量x_initial,误差限epsilon,最大迭代次数N。输出接近给定的lamda_initial的矩阵特征值
  • 采用C语言编写,运用数值迭代方法求矩阵特征值和特征向量,包括高斯迭代和杜利特尔迭代,精度10^-12
  • cout矩阵A的最大特征值为:"; cout其对应的特征向量为:("; for (int i=1;i;i++) { cout[i]; if (i!=n) { cout,"; } } cout)"; return ; } float abs(float cc) { return cc>0?cc:-cc; }
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<math.h>
    #define N 1100
    using namespace std;
    int n,flag;
    float m,next_m,eclipse,sum,A[N][N],z[N],y[N],next_z[N];
    void readData();
    void power();
    void matrixFact();
    void Findmax();
    void newZ();
    void printResult();
    float abs(float);
    void reckonResidue();
    
    int main()
    {
        cin>>n;
        readData();
        power();
    
        return 0;
    }
    
    void reckonResidue()
    {
        float sum=0;
        for (int i=1;i<=n;i++)
        {
            sum+=abs(z[i]-next_z[i]);
        }
        if (sum<0.001)
        {
            flag=1;
        }
        return ;
    }
    
    void readData()
    {
        for (int i=1;i<=n;i++)
        {
            for (int j=1;j<=n;j++)
            {
                cin>>A[i][j];
            }
        }
        return ;
    }
    
    void power()
    {
        m=next_m;
        flag=0;
        eclipse=1e-5;
        for (int i=1;i<=n;i++)
        {
            z[i]=1;
            next_z[i]=1;
        }
        do
        {
            sum=0;
            for (int i=1;i<=n;i++)
                z[i]=next_z[i];
            matrixFact();
            Findmax();
            newZ();
            reckonResidue();
        }while (!flag);
        printResult();
        return ;
    }
    
    void matrixFact()
    {
        for (int i=1;i<=n;i++)
        {
            sum=0;
            for (int j=1;j<=n;j++)
            {
                sum+=A[i][j]*z[j];
            }
            y[i]=sum;
        }
        for (int i=1;i<=n;i++)
        {
            cout<<y[i]<<" ";
        }
        cout<<endl;
        return ;
    }
    
    void Findmax()
    {
        m=0;
        for (int i=1;i<=n;i++)
        {
            if (abs(m)<abs(y[i]))
            {
                m=y[i];
            }
        }
        cout<<"m:"<<m<<endl;
        return ;
    }
    
    void newZ()
    {
        for (int i=1;i<=n;i++)
        {
            next_z[i]=y[i]/m;
        }
        return ;
    }
    
    void printResult()
    {
        cout<<"矩阵A的最大特征值为:"<<m<<endl;
        cout<<"其对应的特征向量为:(";
        for (int i=1;i<=n;i++)
        {
            cout<<next_z[i];
            if (i!=n)
            {
                cout<<",";
            }
        }
        cout<<")"<<endl;
        return ;
    }
    
    float abs(float cc)
    {
        return cc>0?cc:-cc;
    }
    

    展开全文
  • 本文研究实对称矩阵特征值最大值与最小值。定理设 是 阶实对称矩阵,记 分别是 中所有特征值中的最大值与最小值,则 证明:这里只证关于最大值的那部分。最小值的证明是完全类似的。因为 是实对称矩阵,所以 有由 ...

    本文研究实对称矩阵特征值的最大值与最小值。

    定理

    阶实对称矩阵,记
    分别是
    中所有特征值中的最大值与最小值,则

    证明:这里只证关于最大值的那部分。最小值的证明是完全类似的。

    因为

    是实对称矩阵,所以
    有由
    中标准正交基
    组成的特征向量。这句话的意思是,
    ,其中
    的第
    个特征值,并且
    。因此,对于
    中任意向量
    ,都有

    推论

    阶实对称矩阵,记
    分别是
    中所有特征值中的最大值与最小值,则

    证明:这里还是只证关于最大值的命题。事实上,上述定理已得到

    。另一方面,特别取
    属于
    的特征向量
    ,就有
    ,从而两者是相等的。

    例1

    阶实对称矩阵,求二次型函数
    上的单位球面
    上的最大值与最小值。

    解:

    ,由题意,
    ,故根据本文定理,
    ,当
    分别为
    属于
    的特征向量时取到等号,所以
    的最大值与最小值就是

    例2

    ,求证:
    所有特征值都大于
    ,小于等于

    证明:(该解法来自@希尔伯特23)

    ,则

    是正定矩阵,故所有特征值都大于

    的最大特征值是
    ,则由本文定理知:对于
    中任意的
    ,都有
    ,即
    ;同理,由
    的最大特征值是
    知:对于任意

    由三角不等式,对于任意

    特别取

    属于
    的特征向量,则有
    ,代入上述不等式就得到
    ,解得
    展开全文
  • 简介:当矩阵A满足一定条件时,在工程中可用幂计算其主特征值(按模最大)及其特征向量。矩阵A需要满足的条件为:存在n个线性无关的特征向量,设为1.1计算过程:不全为0,则有可见,当越小时,收敛越快;且当k...

    数值计算解矩阵的按模最大最小特征值及对应的特征向量

    一.幂法

    1. 幂法简介:

    当矩阵A满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量。矩阵A需要满足的条件为:

    存在n个线性无关的特征向量,设为

    1.1计算过程:

    不全为0,则有

    可见,当越小时,收敛越快;且当k充分大时,有,对应的特征向量即是。

    2 算法实现

    3 matlab程序代码

    function [t,y]=lpowerA,x0,eps,N) % t 为所求特征值,y是对应特征向量

    k=1;

    z=0; % z 相当于

    y=x0./max(abs(x0)); % 规范化初始向量

    x=A*y; % 迭代格式

    b=max(x); % b 相当于

    if abs(z-b)

    t=max(x);

    return;

    end

    while abs(z-b)>eps && k

    k=k+1;

    z=b;

    y=x./max(abs(x));

    x=A*y;

    b=max(x);

    end

    [m,index]=max(abs(x)); % 这两步保证取出来的按模最大特征值

    t=x(index); % 是原值,而非其绝对值。

    end

    4 举例验证

    选取一个矩阵A,代入程序,得到结果,并与eig(A)的得到结果比较,再计算 A*y-t*y,验证y是否是对应的特征向量。结果如下:

    结果正确,表明算法和代码正确,然后利用此程序计算15阶Hilb矩阵,与eig(A)的得到结果比较,再计算 A*y-t*y,验证y是否是对应的特征向量。设置初始向量为x0=ones(15,1),结果显示如下

    可见,结果正确。得到了15阶Hilb矩阵的按模最大特征值和对应的特征向量。

    二.反幂法

    1.反幂法简介及其理论

    在工程计算中,可以利用反幂法计算矩阵按模最小特征值及其对应特征向量。其基本理论如下,与幂法基本相同:

    ,可知,A和A-1的特征值互为倒数,求A按模最小特征值即求A-1的按模最大特征值,取倒数即为A的按模最小特征值所以算法基本相同,区别就是在计算

    算法实现

    3 matlab程序代码

    function [s,y]=invpower(A,x0,eps,n) % s 为按模最小特征值,y是对应特征向量

    k=1; r=0; % r相当于

    y=x0./max(abs(x0)); % 规范化初始向量

    [L,U]=lu(A);

    z=L\y;

    x=U\z;

    u=max(x);

    s=1/u; % 按模最小为A-1按模最大的倒数.

    if abs(u-r)

    return

    end

    while abs(u-r)>eps && k

    k=k+1;

    r=u;

    y=x./max(abs(x));

    z=L\y;

    x=U\z;

    u=max(x);

    end

    [m,index]=max(abs(x)); % 这两步保证取出来的按模最大特征值

    s=1/x(index); % 是原值,而非其绝对值。

    end

    4 举例验证

    同幂法一样,选取一个矩阵A,代入程序,得到结果,并与eig(A)的得到结果比较,再计算 A*y-t*y,验证y是否是对应的特征向量。

    可见结果正确,然后利用此程序计算15阶Hilb矩阵,eig(A)的得到结果比较,再计算 A*y-s*y,验证y是否是对应的特征向量。设置初始向量为x0=ones(15,1),结果显示如下

    可见,结果真确。得到了15阶Hilb矩阵的按模最大特征值和对应的特征向量。

    计算条件数

    矩阵A的条件数等于A的范数与A的逆的范数的乘积,即cond(A)=‖A‖·‖A^(-1)‖,对应矩阵的3种范数,可以定义3种条件数。 函数 cond(A,1)、cond(A)或cond(A inf)是判断矩阵病态与否的一种度量,条件数越大表明矩阵的病态程度越大.

    ,

    而如果A为对称矩阵,如Hilb矩阵,的最大最小特征值,分别为A的最大最小特征值的平方。所以cond(A) 为A的最大最小特征值得比值。对于本例中的15阶Hilb矩阵来说,利用上面计算结果得其条件数(选择第二种条件数)为:3.0934e+0

    展开全文
  • python求矩阵最大特征值及对应的特征向量

    千次阅读 多人点赞 2021-07-11 22:47:34
    直接看下面的代码就行啦! import numpy as np #输入矩阵 A = np.array([[1, 1/2, 4, 3, 3], [2, 1, 7, 5, 5], [1/4, 1/7, 1, 1/2, 1/3], ...#求解特征值即特征向量 lamda = np.linalg.eig(A) fo.

    直接看下面的代码就行啦!

    import numpy as np
    
    #输入矩阵
    A = np.array([[1, 1/2, 4, 3, 3],
                  [2, 1, 7, 5, 5],
                  [1/4, 1/7, 1, 1/2, 1/3],
                  [1/3, 1/5, 2, 1, 1],
                  [1/3, 1/5, 3, 1, 1]])
    
    #求解特征值即特征向量
    lamda = np.linalg.eig(A)
    
    for i in range(len(lamda[0])):
        print('特征值:{0}\n对应的特征向量:\n{1}\n'.format(lamda[0][i], np.transpose([lamda[1][:,i]])))
    
    index = np.argmax(lamda[0])
    lamda_max = np.real(lamda[0][index])
    vector = lamda[1][:,index]
    
    vector_final = np.transpose((np.real(vector)))
    
    print('最大特征值为:{0}\n对应的特征向量:\n{1}'.format(lamda_max, vector_final))
    

    输出如下:

    特征值:(5.072084408570216+0j)
    对应的特征向量:
    [[-0.46582183+0.j]
     [-0.84086331+0.j]
     [-0.09509743+0.j]
     [-0.17329948+0.j]
     [-0.19204866+0.j]]
    
    特征值:(-0.03070462349371196+0.6008274290268424j)
    对应的特征向量:
    [[ 0.44186009+0.27105866j]
     [ 0.77734237+0.j        ]
     [-0.02000217-0.15570733j]
     [-0.02610008+0.07828144j]
     [-0.28288299+0.12469508j]]
    
    特征值:(-0.03070462349371196-0.6008274290268424j)
    对应的特征向量:
    [[ 0.44186009-0.27105866j]
     [ 0.77734237-0.j        ]
     [-0.02000217+0.15570733j]
     [-0.02610008-0.07828144j]
     [-0.28288299-0.12469508j]]
    
    特征值:(-0.005337580791396011+0.05475205961539484j)
    对应的特征向量:
    [[-0.36716196+0.2414553j ]
     [ 0.85752776+0.j        ]
     [-0.0190312 +0.00635723j]
     [-0.07374757-0.21459801j]
     [ 0.07483506+0.11850604j]]
    
    特征值:(-0.005337580791396011-0.05475205961539484j)
    对应的特征向量:
    [[-0.36716196-0.2414553j ]
     [ 0.85752776-0.j        ]
     [-0.0190312 -0.00635723j]
     [-0.07374757+0.21459801j]
     [ 0.07483506-0.11850604j]]
    
    最大特征值为:5.072084408570216
    对应的特征向量:
    [-0.46582183 -0.84086331 -0.09509743 -0.17329948 -0.19204866]
    
    进程已结束,退出代码为 0
    

    给个一键三连呗,至少点个赞再走吧!

    展开全文
  • 矩阵最大特征值——matlab求法 小弟不才,第一次写博客,目的在于检验自己的学习成果, 同时也希望自己所学东西可以帮助读者理解相应内容。如果文章存在不足,请多多指正。 关于矩阵的特征值,学习过线性代数的...
  • 首先把特征向量归一化 另一种方法 幂(迭代得到最大特征向量,再求特征值) 反幂
  • 从机器学习、量子计算、物理到许多数学和工程的问题,都可以通过找到一个矩阵特征值和特征向量来解决。根据定义(标量λ、向量v是特征值、特征向量A):视觉上,Av与特征向量v位于同一直线上。这里有些例子。然而,Ax...
  • 其基本思想是:若我们某个n阶方阵A的特征值和特征向量,先任取一个初始向量X(0) (注:x(0)可以用A的特征向量线性表示),构造如下序列:  X(0) ,X(1) =AX(0) ,X(2) =AX(1) ,…, X(K) =AX(K+1) ,… ⑴  当k...
  • 对于有些问题,只要给出矩阵的主特征值(指按模最大特征值)及其所对应的特征向量就可以了。乘幂法正是求矩阵特征值及其相应特征向量的一种方法。
  • 数字图像处理领域中经常会要求某像素矩阵最大特征值。在处理摄像头数据的时候,遇到过这个问题。本来用matlab是可以很快解决的。几行代码而已。但是程序要写入MCU中,matlab就无能为力了。并且本人不熟悉matlab...
  • 由于上次发表的自适应滤波器LMS算法涉及到要寻求矩阵最大特征值,因此一直寻思着找个C语言的雅克比算法,下面的代码也是自己试过了,望各位有问题可以提问,谢谢!!! 矩阵的特征值和特征向量是线性代数以及矩阵论...
  • 乘幂法求矩阵特征值及特征向量

    万次阅读 2017-09-27 21:11:06
    在n非常大时,直接求解特征值及其对应的特征向量开销会很大,因此可以用乘幂解其数值。
  • 例:求矩阵特征值和特征向量,并对照标准答案. 标准答案: AAA的特征值 λ1,λ2,λ3\lambda_1,\lambda_2,\lambda_3λ1​,λ2​,λ3​分别为 -13.220179976292638 ,1.391318328272217 ,7.828861648020419,对应...
  • matlab——求矩阵最大特征值对应的特征向量

    万次阅读 多人点赞 2018-06-20 23:04:50
    A=[1,1,2,3,4;1,1,1,2,3;...%求矩阵特征值和特征向量,x为特征向量矩阵,y为特征值矩阵。 eigenvalue=diag(y);%对角线向量 lamda=max(eigenvalue);%求最大特征值 for i=1:length(A)%求最大特征值对...
  • 它们的特征向量可能具有特定的特征值或特殊关系。还有一些方法可以将一个矩阵分解成这些“更简单”的矩阵。操作复杂性的降低提高了可伸缩性。然而,即使这些矩阵都是特殊的,它们也不是罕见的。在机器学习许多应用...
  • 带状矩阵绝对值最大最小特征值,供参考,非零元素不存储,幂,反幂,python3版本
  • 求解矩阵最大最小特征值及对应的特征向量

    千次阅读 多人点赞 2020-03-26 11:47:25
    矩阵A满足一定条件时,可用幂计算其主特征值(按模最大)及其特征向量。...幂采用迭代运算得到特征值和对应特征向量,具体步骤见下, 3.实例及matlab应用 clear;clc; A=[5.2 4.8 7.8 4.9 6 4.4 8.8 5.0 5.7...
  • 乘幂是用于大型稀疏矩阵的主特征值的迭代方法,此程序自编
  • 特征值D、特征向量V的概念(A^n= V * D^n * VT通过将矩阵分解,使A的n次方运算更快速) %MATLAB A = [4,-5;2,-3]; [U,D] = eig(A) ss=A*U hh=U*D EVD特征值分解 通过迭代获得主(最大特征值 ...
  • 求解矩阵特征值及特征向量

    万次阅读 多人点赞 2019-03-21 11:39:38
    是计算矩阵的按模最大特征值和相应特征向量的一种向量迭代 适用于大型稀疏矩阵 基础知识 求矩阵A特征值问题等价于A的特征方程。 ∣λE−A∣=[λ−a11−a12⋯−a1n−a21λ−a22⋯−a2n⋯⋯⋯⋯λ−an1...
  • java版求矩阵特征值

    热门讨论 2009-04-01 22:10:04
    雅克比迭代式求实对称矩阵特征值特征向量
  • 逆幂也采用迭代运算得到特征值和对应特征向量,具体步骤见下, 2. 实例及matlab应用 clear;clc; A=[5.2 4.8 7.8 4.9 6 4.4 8.8 5.0 5.7 5.7 7.8 6.9 5.4 5 6.4 4.4] x0=[1;1;1;1] eps=1e-8 N=20 %迭代次数 [t,y]...
  • 一、特征分解(特征值、特征向量) 二、正定、半正定、负定 三、奇异值(SVD)分解 一、特征分解(特征值、特征向量) 许多数学对象可以通过将它们分解成多个组成部分或者找到它们的一些属性以便更好地理解,...
  • 矩阵特征值和特征向量特征值的理解特征值 、特征向量、方阵的关系几何意义物理意义特征分解特征值和特征向量的含义的应用补充一点 特征值的理解 其实刚上大学的时候上的线性代数课上,也只是简单讲解了特征值和...
  • 矩阵特征值和特征向量的

    万次阅读 2018-10-11 22:39:53
    最近项目中有一个模块需要求矩阵最大特征值和特征值对应的特征向量,无奈,又重新将以前学习的这方面的知识重新温习了一遍,感觉还是当时学的不够深,所以谢谢感悟,顺便对知识点进行一个总结。 首先特征值和特征...
  • 这是一份计算实习报告,使用的是C#编程,希望对你有参考作用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,363
精华内容 19,745
关键字:

和法求矩阵最大特征值

友情链接: module-internal.rar