【问题标题】:Find eigenvector for a given eigenvalue R找到给定特征值 R 的特征向量
【发布时间】:2013-05-15 03:19:21
【问题描述】:

我有一个 100x100 的矩阵,我发现它是最大的特征值。现在我需要找到这个特征值对应的特征向量。我该怎么做?

【问题讨论】:

  • 这里提供的解决方案会返回所有特征值和所有特征向量,这是一种矫枉过正的做法,正如您所说,您已经找到了最大的特征值并且只想要特征向量。请参阅my this answer 中的“如何使用教科书方法查找特征向量”部分。

标签: r eigenvector eigenvalue


【解决方案1】:

eigen 函数没有为您提供所需的内容?

> B <- matrix(1:9, 3)
> eigen(B)
$values
[1]  1.611684e+01 -1.116844e+00 -4.054214e-16

$vectors
           [,1]       [,2]       [,3]
[1,] -0.4645473 -0.8829060  0.4082483
[2,] -0.5707955 -0.2395204 -0.8164966
[3,] -0.6770438  0.4038651  0.4082483

【讨论】:

  • 不,我认为不会。例如,对于您的矩阵,我知道特征值 1.611684e+01 并且我知道该特征值的特征向量,而不是全部三个
  • @user2080209:是什么让您认为特征向量与特征值的顺序不同?
  • @user2080209, eig &lt;- eigen(B); eig$vectors[eig$values == 1.611684e+01] 会选择合适的特征向量
【解决方案2】:

阅读特征函数状态的实际帮助,$vectors 是: “一个 p*p 矩阵,其列包含 x 的特征向量。” 最大特征值对应的实际向量是$vectors 的第一列。 直接获取:

> B <- matrix(1:9, 3)
> eig <- eigen(B)
> eig$vectors[,which.max(eig$values)]
[1] -0.4645473 -0.5707955 -0.6770438
# equivalent to: 
> eig$vectors[,1]
[1] -0.4645473 -0.5707955 -0.6770438

请注意@user2080209 的答案不起作用:它将返回第一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2014-05-11
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多