计算矩阵被积函数 R 中的多维积分

compute multidimensional integral in R of matrix integrand

我正在尝试计算矩阵的二重积分,我希望结果为矩阵

fn <- function(u, z){
  h <- function(z) exp(sum(z*u))
  res <- h(z)
  uut <- u %*% t(u) 
  return(res * uut)
}

I <- cubature::cubintegrate(f = fn, lower = c(-3.5,-3.5), upper = c(4,4), method = "cuhre", z = 0.5)

如您所见,fn 的输出是具有 u 维的方阵,这是我所期望的,但出于某种原因,我使用 cubature::cubintegrate 和参数 fDim =1 时只能得到一个标量。如果我更改 fDim = 4,我会得到具有四个值的向量,但我不确定从该向量创建矩阵是否正确。

有没有办法计算积分并得到方阵?非常感谢您的帮助。

我们来看一个简单的被积函数,我们知道其积分值:

fn <- function(u){
  u %*% t(u) 
}

cubature::cubintegrate(f = fn, lower = c(0,0), upper = c(1,1), method = "cuhre", 
                       fDim = 4)$integral
# [1] 0.3333333 0.2500000 0.2500000 0.3333333

# integral_0^1 integral_0^1 x^2 dxdy = 1/3
# integral_0^1 integral_0^1 x*y dxdy = 1/2*1/2 = 1/4

看来fDim = 4的结果不错