Matlab 编写脚本以查找对称矩阵的最大和第二大特征向量

Matlab 编写脚本以查找对称矩阵的最大和第二大特征向量,matlab,matrix,eigenvalue,Matlab,Matrix,Eigenvalue,[我在math.stackexchange上发布了这篇文章,并被告知它更适合这里。] 在我的线性代数简介的最后一个项目中,我的任务是编写一个脚本,在MATLAB中查找对称矩阵的最大和第二大特征向量。为了获得最佳等级,它还必须包含一个函数。到目前为止,我已经能够让我的脚本验证矩阵是对称的,我感觉有点卡住了。我需要一些指导来完成这项任务,因为我的MATLAB经验非常有限 以下是我到目前为止的情况: prompt = 'Please input a symmetric matrix A.' A =

[我在math.stackexchange上发布了这篇文章,并被告知它更适合这里。]

在我的线性代数简介的最后一个项目中,我的任务是编写一个脚本,在MATLAB中查找对称矩阵的最大和第二大特征向量。为了获得最佳等级,它还必须包含一个函数。到目前为止,我已经能够让我的脚本验证矩阵是对称的,我感觉有点卡住了。我需要一些指导来完成这项任务,因为我的MATLAB经验非常有限


以下是我到目前为止的情况:

prompt = 'Please input a symmetric matrix A.'

A = input(prompt);

if (A == A'),

     eig(A)

else

     disp('A is not a symmetric matrix.  Please input a symmetric matrix.')

end

请注意,脚本希望验证
A
是否对称,我有
A
的特征值,但我不确定从这里到:

  • 求特征向量
  • 得到两个最大的特征向量
  • 编写一个适合脚本的有用函数

  • 我将非常感谢给予的任何帮助。谢谢

    您有一个检查对称矩阵的解决方案

    对于特征向量,请参见Luis Mendo建议的,但也可以参见,它允许您根据
    sigma
    请求
    k
    特征向量:

    eigs(A,k,sigma)
    
    其中
    sigma
    可以是:

    'lm'
    最大震级(默认值)

    “sm”
    最小震级。与sigma=0相同

    对于实对称问题,以下也是选项:

    'la'
    最大代数('lr')

    'sa'
    最小代数('sr') “是” 两端(如果k为奇数,则从高端多出一个)

    使用
    eig
    k
    语法应该比
    eig
    稍微容易一些,但两者都可以工作


    请参阅。

    提示:
    eig
    可以有两个输出;请参阅文档:在matlab之外还有BLAS库,这是一个“系列”库,提供一组定义的线性代数运算。我的提示是记录BLAS库中使用的算法,始终从给定属性的定义开始,而不是从属性本身开始,例如,不要考虑对称矩阵,而是思考矩阵何时对称以及为什么对称。官方文档链接(也应随您提供Matlab副本)已经发布。一旦您阅读了它,请尝试更多内容,欢迎您就具体问题提出问题。我感谢您的帮助。非常有用!如果我使用EIG(A,k,sigma)格式,将给我两个最大的特征值,因此如果我要分配[A B]=eigs(A,k,sigma)这会给我一个矩阵,其中列是k个最大的特征向量吗?@HeathHuffman是的,
    A
    的列将是
    k
    最大的特征向量,
    B
    将是相应的特征值。