0

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

> 特征(矩阵(代表(0.5,4),ncol=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);

> 特征(m)$值

[1] 1.000 -0.495

> 特征(m)$值[1] == 1

[1] 错误

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

谢谢,

4

1 回答 1

1

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

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

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

于 2013-10-13T19:28:17.813 回答