如何求最大特征值对应的特征向量
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 上面这个程序求出了各矩阵的最大特征值,怎么继续求出相应的特征向量啊,谢谢 看来你并不知道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 帮助就能明白了! 大侠,我的意思是怎么取出来最大特征值对应的特征向量,而不是矩阵的特征向量. 对不起,是我粗心没有看清楚问题.
下面给你解决:
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
你看这个应该就是你要的答案了吧! 正是我要的结果,非常感激 我想搭车再问一下
这个矩阵是比较小的,但如果我是一个200*400的矩阵呢?
这样会不会比较慢?
而且我只需要前8个较大特征值的特征向量。
应该怎么做呢?
[ 本帖最后由 不化顽石 于 2007-5-6 08:59 编辑 ] 原帖由 不化顽石 于 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
楼上的太棒了
楼上的太棒了,坛子里就喜欢你这样的高手
页:
[1]