【问题标题】:how does R choose eigenvectors?R如何选择特征向量?
【发布时间】:2020-09-16 20:01:34
【问题描述】:

当给定一个具有重复特征值但没有缺陷的矩阵时,R 函数eigen 如何为特征空间选择一个基?例如,如果我在单位矩阵上调用eigen,它给了我标准基础。它是如何选择该基而不是任何其他正交基的?

【问题讨论】:

  • 这个问题在Cross Validated 或Mathematics 也可能做得很好,因为它是相当理论的。 (正确使用“标准正交基”的问题频率相当低......直到我们最终得到purrr::orthonormal(),即:-)
  • @r2evans 我确实不知道哪个网站更好,但接受的答案提供了完整的参考,所以它成功了。
  • 是的,SO 有时可以包罗万象,因此很容易默认使用。 SO上有很多数学家和统计学家,因此您通常可以获得明智的答案,而Stats和Math的人数却少得多。很高兴你得到了答案。
  • @r2evans,只是想知道purrr::orthonormal(),哦,愚蠢的我,还没有开发。好的,我将迎接错误使用“标准正交基”的低门槛挑战。

标签: r eigenvector


【解决方案1】:

仍然不是一个完整的答案,但更深入一点:eigen 的源代码表明,对于真实的对称矩阵,它调用.Internal(La_rs(x, only.values))

找到La_rs函数here,查看代码可知调用LAPACK函数dsyevr

dsyevr 函数记录在 here:

DSYEVR 首先通过调用将矩阵 A 简化为三对角形式 T 到 DSYTRD。然后,只要有可能,DSYEVR 就会调用 DSTEMR 来计算 使用相对鲁棒表示的特征谱。 DSTEMR 通过 dqds 算法计算特征值,而正交 特征向量是从各种“好”的 L D L^T 表示中计算出来的 (也称为相对鲁棒表示)。

cmets 提供this link,提供更多说明性细节:

下一个任务是计算 $\lambda - s$ 的特征向量。对于每个 $\hat{\lambda}$,该算法小心计算出一个最优的扭曲分解 ... 通过实现自上而下和自下而上的三角分解并在精心选择索引 r ...

处加入它们获得

[强调添加]。强调的字眼暗示细节中有些魔鬼;如果你想进一步深入兔子洞,看起来内部 dlarrv function 是实际计算特征向量的地方......

有关更多详细信息,请参阅 DSTEMR 的文档和:

  • Inderjit S. Dhillon 和 Beresford N. Parlett:“多重表示 计算对称三对角矩阵的正交特征向量,” 线性代数及其应用,387(1),第 1-28 页,2004 年 8 月。
  • Inderjit Dhillon 和 Beresford Parlett:“正交特征向量和 相对差距”,SIAM Journal on Matrix Analysis and Applications,第 25 卷,2004 年。还有 LAPACK 工作说明 154。
  • Inderjit Dhillon:“对称的新 O(n^2) 算法 三对角特征值/特征向量问题", 计算机科学部技术报告编号 UCB/CSD-97-971, 加州大学伯克利分校,1997 年 5 月。

【讨论】:

    【解决方案2】:

    它可能使用了很久以前用 FORTRAN 编写的算法。

    我怀疑有一个程序可以在矩阵上执行以将其调整为可以轻松确定特征值和特征向量的形式。我也怀疑这个过程不需要对单位矩阵做任何事情来把它变成所需的形式,所以特征值和特征向量会立即被读取。

    在退化特征值的一般情况下,您得到的答案将取决于该算法的细节。我怀疑是否有任何选择 - 它只是它首先吐出的任何东西。

    【讨论】:

    • 我认为你是对的,但我想知道算法的细节,我想这可能是标准的。它将矩阵放入的形式可能是众所周知的特殊形式。
    • 我认为这里有描述netlib.org/lapack/lug/node70.html
    猜你喜欢
    • 2013-07-05
    • 2013-02-20
    • 2012-04-20
    • 2020-07-31
    • 2014-01-18
    • 2016-02-12
    • 2014-09-21
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多