2

我正在使用 LAPACK 的ssteqr函数来计算特征值/特征向量。ssteqr 的文档说特征值是“按升序”排序的。假设特征向量列表也按升序排序是否合理?

4

2 回答 2

2

是的,可以合理地假设特征向量是有序的,使得i第 - 个特征向量对应于i第 - 个特征值。

不过,如果我是你,我会检查每个特征值的特征向量乘以矩阵的结果。通过这种方式,您可以确定您正确解释了输出,并且您可以清楚地看到计算的准确性。

于 2011-09-30T11:49:08.077 回答
1

这是一个老问题,但我最近在这个问题上遇到了困难,所以我为当前和未来的读者添加了这个。

基本答案是,是的,对特征向量进行排序,使得第i个特征向量对应于第i个特征值。但是,请注意,由此获得的特征向量可能不是您想要的实际特征向量。之所以如此,是因为以下。

由于 ?steqr 函数仅适用于三对角矩阵,因此通常使用 LAPACK 的 ?sytrd 函数首先将一个原始对称矩阵(称为M)转换为三对角形式(称为T),使得M = QTQ T其中Q是正交矩阵矩阵(Q T表示它的转置)。然后在这个三对角矩阵T上应用 ?steqr 函数来找到它的特征值和特征向量。现在,由此获得的(T的)特征值与M的特征值完全相同,所以如果一个人只想要特征值,可以在这里停下来。但是如果对特征向量感兴趣,比如 OP,那么需要记住TM的特征向量是不同的。要找到原始矩阵M的特征向量,需要将获得的T的特征向量左乘Q。这很容易通过使用 LAPACK 函数 orgtr 或 ormtr 来完成。请参阅此处以获得明确的解释:https ://software.intel.com/en-us/mkl-developer-reference-fortran-sytrd 。

于 2018-03-21T23:04:57.530 回答