【问题标题】:How to deal with underflow in R? [duplicate]如何处理R中的下溢? [复制]
【发布时间】:2021-12-15 01:58:28
【问题描述】:

我想计算这个数字: 0.34911191 ^ 1157 我正在使用 R 编程语言,它返回我 0 (这是一个下溢问题)。我该如何解决?谢谢。

【问题讨论】:

  • 不,Rmpfr 和 Ryacas 包不起作用
  • “不工作”是什么意思?你能描述一下预期的结果吗?
  • 这两个软件包中的任何一个都不太可能有一些问题导致它们从根本上不起作用,更有可能是关于它们的您的实现的某些东西不起作用。没有您的任何代码,我们不知道那可能是什么。那篇文章也有 4 个答案,而不仅仅是提到这 2 个包的那个

标签: r precision numeric exponential underflow


【解决方案1】:

您是否正在寻找类似的东西?
CRAN 包Brobdingnag 有两个小插曲来解释它的用途。

library(Brobdingnag)

x <- 1157 * log(0.34911191)
y <- as.brob(x)
exp(y)
#[1] +exp(-1217.6)
exp(y) < .Machine$double.neg.eps
#[1] TRUE

【讨论】:

    【解决方案2】:

    您可以使用Numerical Characteristics of the Machine.Machine {base})测试结果,如下图:

    > 0.34911191 ^ 10 < .Machine$double.neg.eps
    [1] FALSE
    > 0.34911191 ^ 1157 < .Machine$double.neg.eps
    [1] TRUE
    

    double.neg.eps 是一个小的正浮点数 x,使得 1 - x != 1。

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 2020-02-19
      • 2013-07-10
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 2021-09-07
      相关资源
      最近更新 更多