【问题标题】:R error with integral3 from pracma package来自pracma包的integral3的R错误
【发布时间】:2021-04-24 04:55:39
【问题描述】:

我有一个简单的 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 参数引起的。如果我用上面的 0 替换 zmin,则积分计算正确。基于此,我认为我错误地指定了边界,但我相信我已经正确地遵循了函数文档中的说明。

谢谢

【问题讨论】:

    标签: r numerical-integration


    【解决方案1】:

    虽然您的函数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
    

    我承认,对于一个包含多个变量的函数,vectorized 的含义有点令人困惑。

    【讨论】:

      猜你喜欢
      • 2014-09-23
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 2019-07-28
      • 1970-01-01
      • 2021-09-21
      相关资源
      最近更新 更多