Jor*_*eys 16 c fortran r integral
我正在寻找一个比双重积分更快的解决方案
integrate(function(y) {
sapply(y, function(y) {
integrate(function(x) myfun(x,y), llim, ulim)$value
})
}, llim, ulim)
Run Code Online (Sandbox Code Playgroud)
用例如
myfun <- function(x,y) cos(x+y)
llim <- -0.5
ulim <- 0.5
Run Code Online (Sandbox Code Playgroud)
我找到了一篇旧论文,提到了一个名为FORTRAN的程序quad2d,但我找不到其他任何东西,除了一些matlab的帮助页面.所以我正在寻找一个可以快速进行双积分的C或FORTRAN库(即没有sapply循环),并且可以从R调用.所有想法都非常受欢迎,只要它们都是GPL兼容的.
如果解决方案涉及从R已经附带的库中调用其他功能,我也很乐意听取他们的意见.
pracmaJoshua指出的软件包包含一个版本quad2d.
quad2d(myfun, llim, ulim, llim, ulim)
Run Code Online (Sandbox Code Playgroud)
使用示例函数,这可以在数值公差范围内给出与循环相同的答案.
默认情况下,使用示例函数,quad2d比循环慢.如果你下降n,你可以让它更快,但我想这取决于你的功能是多么平滑,以及你愿意为速度牺牲多少精确度.