计算矩阵被积函数 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
的结果不错
我正在尝试计算矩阵的二重积分,我希望结果为矩阵
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
的结果不错