R语言 积分:积分可能发散

mbjcgjjk  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(252)

我用integrate在循环中做了一些积分,我遇到了一个错误,我无法理解,也无法摆脱。下面是我可以提取的MWE:

b=1/1.230219e-07
f=function(x)
{exp(-x/b)}
integrate(f,0, Inf)

这将返回错误“积分(f,0,Inf)中的错误:积分可能发散”这显然是错误的
我试着改变上下,它的工作

b=1/1.230219e-07
f=function(x)
{exp(-x/b)}
integrate(f,0, 2)

并且结果输出2 with absolute error < 2.2e-14
我想问题出在无穷大上,但我不知道怎么解决它。

e4yzc0pl

e4yzc0pl1#

使用程序包cubature,函数hcubature
用手积分等于b,这就是hcubature的结果。
另外,我重新定义了函数,将b作为形式参数。

library(cubature)

f <- function(x, b){exp(-x/b)}

b <- 1/1.230219e-07
b
#> [1] 8128634

eps <- .Machine$double.eps^0.5
hcubature(f, 0, Inf, b = b, tol = eps)
#> $integral
#> [1] 8128634
#> 
#> $error
#> [1] 0.05960908
#> 
#> $functionEvaluations
#> [1] 825
#> 
#> $returnCode
#> [1] 0

创建于2022年12月27日,使用reprex v2.0.2

相关问题