快速计算R中的双积分

我正在寻找一种比双重积分更快的解决方案

integrate(function(y) { sapply(y, function(y) { integrate(function(x) myfun(x,y), llim, ulim)$value }) }, llim, ulim) 

用例如

 myfun <- function(x,y) cos(x+y) llim <- -0.5 ulim <- 0.5 

我发现了一篇旧文件 ,提到了一个名为quad2d的FORTRAN程序,但除了matlab的其他一些帮助页面之外我找不到其他任何东西。 所以我正在寻找一个可以快速进行双积分的C或FORTRAN库(即没有sapply循环),并且可以从R调用。所有的想法都非常受欢迎,只要它们都是GPL兼容的。

如果解决方案涉及从R已经附带的库中调用其他function,我也很乐意听取他们的意见。

cubature包使用自适应算法进行2D(和ND)集成。 它应该胜过大多数被积函数的简单方法。

Joshua指出的pracma软件包包含一个quad2d版本。

 quad2d(myfun, llim, ulim, llim, ulim) 

使用示例函数,这可以在数值公差范围内给出与循环相同的答案。

默认情况下,使用示例函数, quad2d比循环慢。 如果你向下拉,你可以让它更快,但我想这取决于你的function是多么平滑,以及你愿意为速度牺牲多少精确度。