问题描述
我正在使用函数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 (将#修改为@)