在R和MATLAB中得到随机矩阵的最大特征值

时间:2013-10-13 19:13:41

标签: r matlab matrix eigenvalue stochastic

我试图获得R& R中完全连接的右随机矩阵的最大特征值。 MATLAB。 从这个链接: http://en.wikipedia.org/wiki/Stochastic_matrix 据我所知,最大特征值为1.例如,在R中运行以下代码后,我们可以看到特征值为“1,0”:

  

>本征(矩阵(REP(0.5,4),NcoI位= 2))

     

$值

     

[1] 1 0

     

$载体

  [,1]      [,2]
     

[1,] 0.707107 -0.707107

     

[2,] 0.707107 0.707107

但是最近,如果我试图得到以下随机矩阵的最大特征值,我发现了一个非常感兴趣的结果:

  

> m =矩阵(c(0.5,0.995,0.5,0.005),ncol = 2,nrow = 2);

     

>本征(米)$值

     

[1] 1.000 -0.495

     

> eigen(m)$ value [1] == 1

     

[1] FALSE

请注意,它显示“FALSE”。那真是怪了!它应该等于1,对吧? 应该有一些计算错误。我也在MATLAB中尝试了这个矩阵,但仍然得到了相同的结果。到目前为止,我只能将其四舍五入到1.关于如何修复它的任何想法?

谢谢,

1 个答案:

答案 0 :(得分:1)

在这种特殊情况下,我在我的机器上得到TRUE,但一般来说,比较浮点值是否相同是一个坏主意,并且因为四舍五入而不可靠。例如,我得到:

> (0.1+0.1+0.1)/3==0.1
[1] FALSE

浮点运算几乎总是涉及一些舍入,因此你不能指望两个计算的结果应该产生代数相等的量来产生相同的浮点值。