当前位置:  开发笔记 > 编程语言 > 正文

错误功能之间的区别

如何解决《错误功能之间的区别》经验,为你挑选了1个好方法。

在Mathematica中有一个选项可以看到这个问题来计算两个误差函数之间的差异.但是,我还没有在R中找到类似的东西.

我需要计算像Erf(1604.041) - Erf(3117.127)这样的东西并获得非零值......



1> Roland..:

您可以接近@James的评论中给出的4e-1117421的结果.首先,可以在R中像这样计算误差函数:

1 - 2 * pnorm(-sqrt(2) * x)

但是,由于浮点精度,这将为您提供数字零.幸运的是,pnorm可以返回p值的日志.然后,您可以使用任意精度数对其进行取幂:

library(Rmpfr)
2 * exp(mpfr(pnorm(-sqrt(2) * 1604.041, log.p = TRUE), precBits = 32)) -
  2 * exp(mpfr(pnorm(-sqrt(2) * 3117.127, log.p = TRUE), precBits = 32)) 
#1 'mpfr' number of precision  32   bits 
#[1] 4.2826176801e-1117421

(请注意,您只获得log-p值的浮点精度.)

但是,我想知道在哪种应用中需要这样的精度.它基本上是零值.

编辑:我刚刚发现Rmpfr提供了补充错误功能的实现.你可以这样做:

erfc(mpfr(3117.127, precBits = 32)) - erfc(mpfr(1604.041, precBits = 32))
#1 'mpfr' number of precision  32   bits 
#[1] -4.2854514871e-1117421

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有