R中数字积分的非​​光滑行为函数“ integrate”

问题描述

我正在使用函数integrate在R中进行数值积分。我正在集成函数fun1,并且发现了一些不平滑的行为。稍微改变积分的下限会使积分的计算值产生较大的跳跃;比较下面的aaacccaaa大致正确,可以使用在线数字积分计算器进行验证。但是,ccc与事实相去甚远。

出于说明目的,我将积分间隔一分为二并将两部分相加。结果与在单个时间间隔内积分的结果有很大不同。事实并非如此,因为在代数上两者是相等的。

fun1 <- function(x,d){
 min( 0,-(exp(x)-0.1*abs(exp(x)-d)-0.05*(exp(x)-d))^(-1) ) * dnorm(x=x,mean=0,sd=0.05)
}
aaa <- integrate(f=fun1,d=0.8932789,lower=-3.159041,upper=40       )$value; aaa
bbb <- integrate(f=fun1,upper=-3.157379)$value; bbb
ccc <- integrate(f=fun1,lower=-3.157379,upper=40       )$value; ccc
aaa-(bbb+ccc) # This should be (but is not) close to zero because algebraically,aaa-(bbb+ccc)=0

问题:为什么会这样?我该如何解决?即如何获得ccc的正确值?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...