min функция в верхней границе интеграла

Моя цель — интегрировать следующий двойной интеграл в R: Вот двойной интеграл

Я не знаю, как реализовать верхнюю границу в 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). Любые идеи?

для иллюстрации скопируйте это в google:

((-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))

спасибо за помощь


person Valegard234    schedule 05.09.2014    source источник
comment
Я думаю, нам нужен какой-то контекст.   -  person IRTFM    schedule 05.09.2014
comment
Не могли бы вы просто разделить это на два интеграла. Один для t от -Inf до 0 и один для t от 0 до Inf? Таким образом, внутренний интеграл либо всегда имеет t, либо всегда имеет 0 на верхней границе?   -  person MrFlick    schedule 05.09.2014
comment
Итак, что происходит с upperLimit = c(0, min(0,t) ). Вы не дали нам ни малейшего представления о том, лежит ли вокруг t-вектор или как он может выглядеть. Скопировав предложенное выражение в поиск, я развеселился, но не просветился.   -  person IRTFM    schedule 05.09.2014


Ответы (1)


Вот подход, но я не уверен, как проверить правильность ответа. Две реализации дают один и тот же ответ, что многообещающе. Первая реализация содержит все внутри интеграла 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

person Community    schedule 05.09.2014
comment
удивительный первый, кажется, соответствует тому, что я искал. Первые испытания прошли успешно. Большое спасибо! @BondedDust на графике вы можете видеть, что рядом с x = 0 есть еще один график, который вам, возможно, придется немного прокрутить. - person Valegard234; 05.09.2014