求解R中的双(n元组)多元积分

时间:2016-10-26 10:30:15

标签: r integral

我想编写一个代码来解决这种方程式:

equation to solve

为此,我编写了下面的代码,但它没有解决问题。你对在R中解决这种积分的可能性有任何想法吗?

t_0 = 15
mu = 0.1
lambda = 0.8
f = function(x1,x2) exp(mu*(x1+x2))*dexp(log(lambda)*(x1+x2))
f_comp = function(x2) f(x1,x2)
f_1 = function(x1) {integrate(f_comp,upper = t_0, lower = x1)}
result = integrate(f = f_1, lower = 0, upper = t_0)$value

---------编辑:

鉴于下面的答案,我将代码改编为我的示例,但我仍然认为不正确,至少积分的值0没有意义。

integrate(function(x1) {
  sapply(x1, function(x1){
    integrate(function(x2)  exp(mu*(x1+x2))*dexp(log(lambda)*(x1+x2)), lower = x1, upper = t_0)$value
  })
}, 0, t_0)
顺便说一句,我想为此制定一般程序(这就是为什么我不用手计算积分)。这不仅是双积分,而且是n元组积分,所以我需要一个通用的程序来进行这种计算。

1 个答案:

答案 0 :(得分:0)

对集成领域进行描述。这是具有顶点(0,0),(0,t0),(t0,t0)的单纯形(三角形)。要评估单纯形上的整数,可以使用SimplicialCubature包。

t0 = 15
mu = 0.1
lambda = 0.8

library(SimplicialCubature)
f <- function(xy){
  x <- xy[1]; y <- xy[2]
  exp(-mu*(x+y)) * (1-exp(-lambda*(x+y))) 
}
S <- cbind(c(0,0), c(0,t0), c(t0,t0))
adaptIntegrateSimplex(f, S)$integral
# 29.55906

integrate(function(x1) {
  sapply(x1, function(x1){
    integrate(function(x2) exp(-mu*(x1+x2))*(1-exp(-lambda*(x1+x2))), lower = x1, 
              upper = t0)$value
  })
}, 0, t0)$value
# 29.55906