2011-07-05 273 views
3

排序特征值矩阵我在列向量形式n个特征值。因此,存在与这些特征值对应的N个特征向量,形成特征向量矩阵。现在与特征向量矩阵

,我的工作问题需要我的特征值列向量进行降序排列。我如何排列特征向量与特征值相同的顺序以保持对应?

+0

注意当机器号码Mathematica的使用,'Eigensystem'已经返回降序排列特征值/向量。 – Szabolcs

+0

Eigensystem将返回特征值和特征向量与后者相对应的前者。丹尼尔Lichtblau –

+5

我确实想指出一点,对于一个数值矩阵,所述简并本征矢量(即相同的特征值)'Eigenvectors'并且是线性独立的,不正交'Eigensystem'返回向量。这比我多一次。但是,你可以在退化集上使用'Orthogonalize'来给你一个正交集。 – rcollyer

回答

10

例如,

m = RandomReal[{0, 1}, {5, 5}]; 
{evals, evecs} = Eigensystem[m]; 
SortBy[Transpose[{evals, evecs}], First] 

,或者如果你希望他们以相同的形式,通过

[email protected][Transpose[{evals, evecs}], First] 

编辑替换最后一行:当我用{evals,evecs}=Eigensystem[m],这是没有必要的。我只能使用s=Eigensystem[m],然后在我目前有{evals,evecs}的地方使用s

+0

哦,你打我吧;)我会删除我的回答 –

+0

@Thies一分钟:)谢谢虽然! – acl

+2

先生,你是一位学者和一名冠军。 – Bonk

1

可以使用Sort功能根据特征值特征系统进行排序。

mat = (#*[email protected]#) &@RandomReal[NormalDistribution[], {4, 4}]; 
eigsys = [email protected]@Eigensystem[mat]; 

Sort的默认行为是按第一列排序。

+0

我不知道,很好学习。有记录吗? – acl

+0

我不确定;这是我观察到的,在玩过几个测试用例之后,我很满意,我一直用它来排列第一列......我倾向于这样做,直到出现可怕的错误时才去阅读文档: ) – abcd

+0

我的印象是,在排序列表中,它实现了一个词法排序,例如'{1,0,3}'在'{1,0,4}'之前。因此,粗略的检查,它似乎是排序的第一列,它实际上是由他们全部排序。 – rcollyer

8

虽然排序@acl和@ Yoda的方式(即配对列表中的元素,然后一起排序)是容易的,常用的,我想显示另一个泛型方法可以轻松地进行排序基于一个特定的列表任意数量的列表(list1):

oo = Ordering[list1]; (* this finds the sorting order of list1 *) 
list1[[oo]] 
list2[[oo]] 
list3[[oo]] (* these order some other lists in the same way *) 
相关问题