声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5945|回复: 8

[综合讨论] 如何求最大特征值对应的特征向量

[复制链接]
发表于 2006-12-22 17:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

 楼主| 发表于 2006-12-22 17:53 | 显示全部楼层
上面这个程序求出了各矩阵的最大特征值,怎么继续求出相应的特征向量啊,谢谢
发表于 2006-12-22 21:05 | 显示全部楼层
看来你并不知道eig的用法.其实eig函数有提供怎样求特征值的特征向量!

给你举个例子

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

[e,r]=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 帮助就能明白了!
 楼主| 发表于 2006-12-23 15:57 | 显示全部楼层
大侠,我的意思是怎么取出来最大特征值对应的特征向量,而不是矩阵的特征向量.
发表于 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
   
    [e,r]=eval( ['eigs(b',  num2str(i), ')']  );
    eval( [' tbmax',num2str(i),'=max(r(:))']  )
    eval( [' tbvector',num2str(i),'=e(:,1)']  )
        
end


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

评分

1

查看全部评分

 楼主| 发表于 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 发表
我想搭车再问一下
这个矩阵是比较小的,但如果我是一个200*400的矩阵呢?
这样会不会比较慢?
而且我只需要前8个较大特征值的特征向量。
应该怎么做呢?

即便是比较大的矩阵,用eig求特征值及其对应的特征向量也不是很花费时间的,尤其是对称矩阵计算起来更快。
如果是要求出一个大矩阵的较大的8个特征向量,可以先求出矩阵特征值及其特征向量,用diag命令将特征值写成一行向量,然后用sort命令将特征值升序排列,[ynew,index]=sort(y),其中index为一个由元素位置构成的向量,index向量最后的8个元素代表较大的8个特征值的位置,将特征向量矩阵重新排序,假设特征向量矩阵为v,则vnew=v(index),则最后的8个列向量就是最大的8个特征值一一对应的特征向量。参看
http://forum.vibunion.com/forum/thread-42011-1-2.html

评分

1

查看全部评分

发表于 2007-11-26 22:12 | 显示全部楼层

楼上的太棒了

楼上的太棒了,坛子里就喜欢你这样的高手
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-12 08:28 , Processed in 0.077153 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表