矩阵如何处理除以0?

时间:2014-06-16 21:03:52

标签: r matrix

我遇到了R(R-3.0.3)如何在矩阵中处理​​Inf的意外(对我而言)行为。

scalar <- 1

mat1 <- matrix(0)
mat2 <- matrix(1)
mat2 <- -log(mat2)

# > mat1
#       [,1]
# [1,]    0
#
# > mat2
#       [,1]
# [1,]    0

(mat1[1,1] - scalar[1])/mat1[1,1]
# [1] -Inf

(mat2[1,1] - scalar[1])/mat2[1,1]
# [1] Inf

为什么两者都不给-Inf?我没有看到matrix的帮助文件。我也无法使用mat1mat2class来区分strdput

1 个答案:

答案 0 :(得分:1)

我只是总结一下有关评论的讨论,以便结束这个问题。

首先,这种行为不是特定于矩阵,观察

a<- 0; (a-1)/a
# [1] -Inf

a<- -log(1); (a-1)/a
# [1] Inf

而是它是IEEE浮点运算错综复杂的结果。尽管事实如此

-log(1) == 0
# [1] TRUE

零实际上可以举着牌子。有一个&#34; + 0&#34;和&#34; -0&#34;并且-log(1)返回后者。将+0添加到负零值应该使其成为&#34;常规&#34;零。

a<- -log(1)+0; (a-1)/a
# [1] -Inf