我想找到矩阵 U 的最小幅度的特征值的相应特征向量。最简单的方法是什么?
目前我正在使用该算法
[evecs, D] = eigs(U);
evals = diag(D);
smallesteig = inf;
for k = 1:length(evals)
if (evals(k) < smallesteig)
smallesteig = evals(k);
vec = evecs(:, k);
end
end
有没有更有效的方法来做到这一点?
最佳答案
对此有一个非常简单的简写: [V,D] = eigs(U,1,'SM')
。
如果您查看 eigs
文档,它会指出:
EIGS(A,K,SIGMA) and EIGS(A,B,K,SIGMA) return K eigenvalues. If SIGMA is:
'LM' or 'SM' - Largest or Smallest Magnitude
For real symmetric problems, SIGMA may also be:
'LA' or 'SA' - Largest or Smallest Algebraic
'BE' - Both Ends, one more from high end if K is odd
For nonsymmetric or complex problems, SIGMA may also be:
'LR' or 'SR' - Largest or Smallest Real part
'LI' or 'SI' - Largest or Smallest Imaginary part
因此,当按 S mallest M agnitude 排序时,
[V,D] = eigs(U,1,'SM')
返回 U 的 1 st 特征值的特征向量和值。
关于matlab - 寻找对应于最小特征值的特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34056426/