【问题标题】:Ordering of eigenvectors when calculating eigenvectors using LAPACK's ssteqr使用 LAPACK 的 ssteqr 计算特征向量时的特征向量排序
【发布时间】:2011-09-29 17:28:58
【问题描述】:

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

【问题讨论】:

    标签: lapack eigenvector eigenvalue


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这是一个老问题,但我最近对此感到困惑,所以我为当前和未来的读者添加了这个。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-18
        相关资源
        最近更新 更多