sjpet2004 发表于 2006-12-22 17:51

如何求最大特征值对应的特征向量

function B=test1(b1,b2,b3,b4,b5)
b1=[1 3 1
    1/3 1 1/3
    1 3 1];
b2=[1 2 2 5
    1/2 1 2 5
    1/2 1/2 1 3
    1/5 1/5 1/3 1];
b3=[1 2 1/2 1 5
    1/2 1 1/3 1/2 3
    2 3 1 2 7
    1 2 1/2 1 5
    1/5 1/3 1/7 1/5 1];
b4=[1 1/5 1/3
    5 1 2
    3 1/2 1];
b5=[1 1/5 1
    5 1 5
    1 1/5 1];
%求特征值及最大特征值

for i=1:5
    eval( [' tb',num2str(i),'=eig(b',num2str(i), ')'])
    eval( [' tbmax',num2str(i),'=max(tb', num2str(i), ')'])
end

sjpet2004 发表于 2006-12-22 17:53

上面这个程序求出了各矩阵的最大特征值,怎么继续求出相应的特征向量啊,谢谢

yukeyyxh 发表于 2006-12-22 21:05

看来你并不知道eig的用法.其实eig函数有提供怎样求特征值的特征向量!

给你举个例子

b1=[1 3 1
    1/3 1 1/3
    1 3 1];

=eig(b1)

result is :
e =

   -0.8847    0.6882    0.8164
    0.1474    0.2294   -0.4083
    0.4423    0.6882    0.4085


r =

         0         0         0
         0    3.0000         0
         0         0    0.0000
r就是特征值,e就是对应的特征向量!

仔细看 eig 帮助就能明白了!

sjpet2004 发表于 2006-12-23 15:57

大侠,我的意思是怎么取出来最大特征值对应的特征向量,而不是矩阵的特征向量.

yukeyyxh 发表于 2006-12-24 10:23

对不起,是我粗心没有看清楚问题.
下面给你解决:

b1=[1 3 1
    1/3 1 1/3
    1 3 1];
b2=[1 2 2 5
    1/2 1 2 5
    1/2 1/2 1 3
    1/5 1/5 1/3 1];
b3=[1 2 1/2 1 5
    1/2 1 1/3 1/2 3
    2 3 1 2 7
    1 2 1/2 1 5
    1/5 1/3 1/7 1/5 1];
b4=[1 1/5 1/3
    5 1 2
    3 1/2 1];
b5=[1 1/5 1
    5 1 5
    1 1/5 1];
%求特征值及最大特征值

for i=1:5
   
    =eval( ['eigs(b',num2str(i), ')']);
    eval( [' tbmax',num2str(i),'=max(r(:))'])
    eval( [' tbvector',num2str(i),'=e(:,1)'])
      
end


你看这个应该就是你要的答案了吧!

sjpet2004 发表于 2006-12-25 16:17

正是我要的结果,非常感激

不化顽石 发表于 2007-5-6 08:50

我想搭车再问一下
这个矩阵是比较小的,但如果我是一个200*400的矩阵呢?
这样会不会比较慢?
而且我只需要前8个较大特征值的特征向量。
应该怎么做呢?

[ 本帖最后由 不化顽石 于 2007-5-6 08:59 编辑 ]

咕噜噜 发表于 2007-5-6 09:26

原帖由 不化顽石 于 2007-5-6 08:50 发表 http://forum.vibunion.com/forum/images/common/back.gif
我想搭车再问一下
这个矩阵是比较小的,但如果我是一个200*400的矩阵呢?
这样会不会比较慢?
而且我只需要前8个较大特征值的特征向量。
应该怎么做呢?
即便是比较大的矩阵,用eig求特征值及其对应的特征向量也不是很花费时间的,尤其是对称矩阵计算起来更快。
如果是要求出一个大矩阵的较大的8个特征向量,可以先求出矩阵特征值及其特征向量,用diag命令将特征值写成一行向量,然后用sort命令将特征值升序排列,=sort(y),其中index为一个由元素位置构成的向量,index向量最后的8个元素代表较大的8个特征值的位置,将特征向量矩阵重新排序,假设特征向量矩阵为v,则vnew=v(index),则最后的8个列向量就是最大的8个特征值一一对应的特征向量。参看
http://forum.vibunion.com/forum/thread-42011-1-2.html

laosee 发表于 2007-11-26 22:12

楼上的太棒了

楼上的太棒了,坛子里就喜欢你这样的高手
页: [1]
查看完整版本: 如何求最大特征值对应的特征向量