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

时间:2013-12-02 22:22:25

标签: matlab matrix eigenvalue

[我在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的特征值,但我不知道从这里到哪里:

  1. 找到特征向量
  2. 获取两个最大的特征向量
  3. 编写一个有用的函数以适应脚本。
  4. 如果有任何帮助,我将非常感激。谢谢!

1 个答案:

答案 0 :(得分:3)

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

对于特征向量,请参阅Luis Mendo建议的documentation for eig,以及documentation for eigs,它允许您根据k请求sigma特征向量:

eigs(A,k,sigma)

sigma可以是:

  

'lm'   最大幅度(默认)。

     

'sm'   最小的。与sigma = 0相同。

     

对于真正的对称问题,以下也是选项:

     

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

     

'sa'   最小代数('sr')   '是'   两端(如果k为奇数,则从高端再一端)

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

请参阅this page for how to define a function