假设我有一个真正的对称矩阵,我想用eig
提取k个最大的特征向量。
我知道我可以使用eigs
,但这不是我的问题。
我读到他们使用different algorithms,并且eigs
的文档明确指出“最大幅度 ”,这似乎意味着特征值将是以绝对值排序,特别是因为显然是特征向量/值does not matter的符号。
但是我也读到ordering the eigenvectors应该根据特征值的排名来完成sort(diag(D))
;这里没有绝对值(并且没有关于矩阵正面性的假设)。
我认为后一篇文章是错误的,或者Matlab的eigs
文档在使用“最大幅度”这个词时是错误或误导的,是吗?或者他们是对的,我误解了什么?
为了澄清那么,“最大”的特征向量应该根据绝对特征值进行排序,对吗?
答案 0 :(得分:0)
您引用的后一个问题是eig
,它使用了针对一般密集矩阵的直接方法;您正在讨论eigs
,它使用针对一般稀疏矩阵的迭代方法。
eig
将按直接方法找到的顺序返回特征值。通常,这意味着随机排序。对于实对称矩阵,直接方法的排序似乎产生从最负到最正的特征值。
eigs
将返回具有最大/最小幅度/实部/虚部(用户指定)的k
个特征值和向量。但是,as noted," eigs
并不总是返回已排序的特征值和特征向量。使用sort
在输出特征值和特征向量很重要的情况下对其进行显式排序。"
通常,是,最大(绝对)幅度。虽然可以使用sort
将特征值置换为任何所需的顺序。