通过在R中创建矩阵的力量来实现NaN

时间:2014-03-03 15:08:06

标签: r matrix

假设我们有以下矩阵,并希望建立1.5的幂,即b ^ 1.5:

b <- matrix(c(1,2,4,4,-0.6,56), ncol=1)
b^1.5

           [,1]
[1,]   1.000000
[2,]   2.828427
[3,]   8.000000
[4,]   8.000000
[5,]        NaN
[6,] 419.065627

但是

-0.6^1.5
[1] -0.464758

是否有人意识到此类问题的解决方案?

2 个答案:

答案 0 :(得分:2)

-0.6^1.5(-0.6)^1.5不同。

来自help("^")

  

用户有时会对返回的值感到惊讶,例如为什么   (-8)^(1/3)是NaN。对于双输入,R使用IEC 60559   所有平台上的算术,以及C系统功能pow   对于^运算符。相关标准定义了许多结果   角落案件。特别是,上面例子中的结果是   由C99标准强制执行。在许多类Unix系统上的命令   man pow提供了大量极端情况下的值的详细信息。

你想要的结果是什么?

答案 1 :(得分:1)

这与R中的评估顺序有关。

-0.6^1.5实际上是0.6^1.5-1。指数在否定之前进行评估。

当您将-0.6放入矩阵时,在创建0.6时,否定值将应用于b。这意味着当你拿到指数时,你真的这样做了:

(-0.6)^1.5
# NaN