如何解决R中数字积分的非光滑行为函数“ integrate”
我正在使用函数integrate
在R中进行数值积分。我正在集成函数fun1
,并且发现了一些不平滑的行为。稍微改变积分的下限会使积分的计算值产生较大的跳跃;比较下面的aaa
和ccc
。 aaa
大致正确,可以使用在线数字积分计算器进行验证。但是,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 举报,一经查实,本站将立刻删除。