R 误差函数之间的差异

R 误差函数之间的差异,r,arbitrary-precision,R,Arbitrary Precision,在Mathematica中,有一个选项可以计算两个误差函数之间的差值。然而,我还没有在R中发现任何类似的东西 我需要计算像Erf(1604.041)-Erf(3117.127)这样的值,得到一个非零值…你可以接近@James评论中给出的4e-1117421的结果。 首先,误差函数的计算方法如下: 1 - 2 * pnorm(-sqrt(2) * x) 但是,由于浮点精度,这将为您提供数字零。幸运的是,pnorm可以返回p值的日志。然后,可以使用任意精度的数字对其进行幂运算: library(R

在Mathematica中,有一个选项可以计算两个误差函数之间的差值。然而,我还没有在R中发现任何类似的东西


我需要计算像Erf(1604.041)-Erf(3117.127)这样的值,得到一个非零值…

你可以接近@James评论中给出的4e-1117421的结果。 首先,误差函数的计算方法如下:

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

您可以接近@James在评论中给出的4e-1117421的结果。 首先,误差函数的计算方法如下:

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

R主要是一个数值计算系统。Wolfram Alpha给出的结果约为4e-1117421。这远远超出了数值精度的范围,更不用说计算了。例如,double的最小值约为2e-308。R主要是一个数值计算系统。Wolfram Alpha给出的结果约为4e-1117421。这远远超出了数值精度的范围,更不用说计算了。例如,双精度的最小值约为2e-308。很好。我曾尝试使用Rmpfr,但最终失败了!数值积分。。。我需要对两个误差函数之差的比率进行数值积分,这两个误差函数可以取这个值。我不认为这是前进的方向。(我怀疑你是集成0还是4e-1117421会有什么不同。)不错。我曾尝试使用Rmpfr,但最终失败了!数值积分。。。我需要对两个误差函数之差的比率进行数值积分,这两个误差函数可以取这个值。我不认为这是前进的方向。(我怀疑,无论是集成0还是4e-1117421,这都会产生不同。)