最小函数在积分的上边界

时间:2014-09-05 00:35:11

标签: windows r integrate

我的目标是在R中集成以下双积分: Here is the doubleintegral

我不知道如何在R中实现上限(min(0,t))

我计算积分的方式是:

library('cubature')
adaptIntegrate(doubleintegralfunction, lowerLimit = c(-2.5, -2), upperLimit = c(0, 2), x=x,r=r,m=m,n=n)$integral

不要担心不同的边界,我唯一想改变的是0到min(0,t)。有什么想法吗?

用于插图复制过去到谷歌:

((-x)^(2-1)*(y-x)^(2-1)*exp((16.8+72.9)*x))*exp(-72.9*y- (-0.036-y-0.0332*1+0.5*0.0311^2*1)^2/(2*0.0311^2*1))

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

这是一种方法,但我不确定如何检查答案是否正确。这两个实现给出了相同的答案,这很有希望。第一个实现包含dx积分内的所有内容,而第二个实现将dt部分拆分,因为写入了积分。

 n=2
 m=2
 nd=16.8
 nw=72.9
 r = -0.036
 mu = 0.0332
 s = 1
 sig = 0.0311

g <- function(t) {
  if (t<0) t
  else 0
}

integrate(function(t) {
  sapply(t, function(t) {
    integrate(function(x) 
      # (-x)^?(2-?1) *?
      # (y-?x)^?(2-?1)*?
      # exp(?(16.8+?72.9)*?x) *?
      # exp(?(-72.9)*?y-?((-0.036)-?y-?0.0332*?1+?0.5*?0.0311^?2*?1)^?2/?(2*?0.0311^?2*?1))
      (-x)^(n-1) * 
      (t-x)^(m-1)*
      exp((nw+nd)*x) *
      exp(-nw*t-(r-t-mu*s+0.5*sig^2*s)^2 / (2*sig^2*s) ), 
      -Inf, g(t))$value
    }
  )
}, -Inf, Inf)

integrate(function(t) {
  sapply(t, function(t) {
    integrate(function(x) 
      # (-x)^?(2-?1) *?
      # (y-?x)^?(2-?1)*?
      # exp(?(16.8+?72.9)*?x) *?
      # exp(?(-72.9)*?y-?((-0.036)-?y-?0.0332*?1+?0.5*?0.0311^?2*?1)^?2/?(2*?0.0311^?2*?1))
      (-x)^(n-1) * 
      (t-x)^(m-1)*
      exp((nw+nd)*x) , 
      -Inf, g(t))$value
    }
  ) *
  exp(-nw*t-(r-t-mu*s+0.5*sig^2*s)^2 / (2*sig^2*s) )
}, -Inf, Inf)

参考:http://www.pitt.edu/~njc23/Lecture7.pdf