【问题标题】:eigen() and the correct eigenvectorseigen() 和正确的特征向量
【发布时间】:2021-03-08 11:26:05
【问题描述】:

我的问题如下:

我正在尝试使用 R 来以数字方式计算 this 问题。 所以我已经在控制台中正确设置了问题,然后我尝试计算特征向量。

但我希望与 lambda = 1 关联的特征向量是 (1,2,1) 而不是我在这里得到的。所以,缩放是正确的(0.4082483 实际上是 0.8164966 的一半),但我想获得一致的结果。

我最初的问题是使用 R 找到马尔可夫链的平稳分布,而不是在纸上进行。所以从概率的角度来看,我的平稳分布是一个向量,其分量之和等于 1。出于这个原因,我试图改变比例以获得我定义的“一致结果”。

我该怎么做?

【问题讨论】:

  • 您能否将您的结果发布为代码格式的文本(从控制台剪切并粘贴文本,然后使用缩进或三个反引号来编码格式)而不是图像?谢谢...
  • 特征向量被归一化。 “一致”是什么意思?如果V 是一个特征向量,那么s * V 也是一个特征向量,对于任何非零标量s。

标签: r matrix eigenvalue eigenvector


【解决方案1】:
C <- matrix(c(0.5,0.25,0,0.5,0.5,0.5,0,0.25,0.5),
            nrow=3)
ee <- eigen(t(C))$vectors

正如@Stéphane Laurent 在 cmets 中所建议的,特征向量的缩放是任意的;仅指定相对值。 R中的默认值是特征向量的平方和(它们的范数)等于1; colSums(ee^2) 是 1s 的向量。

通过链接,我们可以看到您希望每个特征向量总和为 1。

ee2 <- sweep(ee,MARGIN=2,STATS=colSums(ee),FUN=`/`)

(即,将每个特征向量除以其总和)。

(这是一个很好的通用解决方案,但在这种情况下,第二个和第三个特征向量的总和都近似为零[理论上,它们恰好为零],所以这只对第一个特征向量才有意义。)

【讨论】:

  • 他/她最终想要一个随机向量(如链接中所示)。
【解决方案2】:

R 返回的特征向量被归一化(对于平方范数)。如果V 是一个特征向量,那么s * V 对于任何非零标量s 也是一个特征向量。如果您想要链接中的固定分布,请除以总和:

V / sum(V)

你会得到(1/4, 1/2, 1/4)。

所以:

ev <- eigen(t(C))$vectors
ev / colSums(ev)

一次性获得所有解决方案。

【讨论】:

    猜你喜欢
    • 2019-07-25
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多