pracma 包中 integral3 的 R 错误

R error with integral3 from pracma package

我有一个简单的 3d 积分,我想用 pracma 包中的 integral3 来解决:

library(pracma)

W <- function(x,y,z){
  x + y + z
}

ymin <- function(x) x
zmin <- function(x,y) x
zmax <- function(x,y) y

integral3(W, xmin = 0, xmax = 1, ymin = ymin, ymax = 1, zmin = zmin, zmax = zmax)

这会生成错误消息:Error in onevec %*% bottom + t %*% dydt : non-conformable arrays。这应该是一个有效的积分区域,但我确定错误是由我的 zmin 参数引起的。如果我将 zmin 替换为上面的 0,则积分计算正确。基于此,我认为我错误地指定了边界,但我相信我已经正确地遵循了函数文档中的说明。

谢谢

虽然你的函数 zminzmax 看起来很简单,但它们没有矢量化。

W <- function(x,y,z) x + y + z

ymin <- function(x) x
zmin <- function(x,y) rep(x, length(y))
zmax <- function(x,y) rep(y, length(x))

integral3(W, xmin = 0, xmax = 1,
             ymin = ymin, ymax = 1, zmin = zmin, zmax = zmax)
## [1] 0.25

我承认,矢量化 表示一个函数在多个变量中的含义有点令人困惑。