计算R中函数乘积的对偶积分的问题

时间:2019-01-27 11:57:21

标签: r

我正在尝试从R包“ pracma”中使用函数“ integral2”计算一个双积分。 我在计算

时遇到问题
integral2(function(x,y){ X(x)*R(x,y)*X(y) }, 0, 10, 0, 10)

其中

X <- function(t) {
  -0.4*sqrt(2)*sin(pi*1*t)+0.016*sqrt(2)*sin(pi*2*t)-0.01*sqrt(2)*sin(pi*3*t)
}

R <- function(x,y){(1/2*(x^2-x+1/6))*(1/2*(y^2-y+1/6))-
           (1/24*((abs(x-y)^4)-2*(abs(x-y)^3)+(abs(x-y)^2)-1/30))}.

我在r中的双积分的结果是

integral2(function(x,y){ X(x)*R(x,y)*X(y) }, 0, 10, 0, 10)$Q = 80.77929, 

但是如果我在Maple中计算相同的积分,则结果为87.911。

1 个答案:

答案 0 :(得分:0)

以下将起作用。

X <- function(t){-0.4*sqrt(2)*sin(pi*1*t)+0.016*sqrt(2)*sin(pi*2*t)-
    0.01*sqrt(2)*sin(pi*3*t)}

R <- function(x,y){(1/2*(x^2-x+1/6))*(1/2*(y^2-y+1/6))-
    (1/24*((abs(x-y)^4)-2*(abs(x-y)^3)+(abs(x-y)^2)-1/30))}

f <- function(x, y){X(x)*R(x, y)*X(y)}

integral2b <- function(f, lower, upper){
  integrate( function(y) {
    sapply(y, function(y) {
      integrate(function(x) f(x,y), lower[1], upper[1])$value
    })
  }, lower[2], upper[2])
}

integral2b(f, c(0, 0), c(10, 10))
#84.94517 with absolute error < 0.0081

请参见R-Help,此答案是从该线程改编的。