C 快速计算R中的二重积分
我在寻找一个二重积分的解,它比C 快速计算R中的二重积分,c,r,fortran,integral,C,R,Fortran,Integral,我在寻找一个二重积分的解,它比 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 myfun约书亚指出的pracma软件包包含一个版本的qua
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
myfun约书亚指出的pracma
软件包包含一个版本的quad2d
quad2d(myfun, llim, ulim, llim, ulim)
这将使用示例函数给出与循环相同的答案(在数值公差范围内)
默认情况下,对于示例函数,quad2d
比循环慢。如果你把n
放下来,你可以使它更快,但我想这取决于你的函数有多平滑,以及你愿意为速度牺牲多少精度。该软件包使用自适应算法进行2D(和n-D)积分。对于大多数被积函数,它的性能应该优于更简单的方法。您是否考虑过:pracma::dblquad
,pracma:simpson2d
,或者cuburation和r2cumba包中的函数?对于指针,我将在本周末运行测试,看看哪一个是我最满意的。供将来参考,cubature
方法将是:adaptIntegrate(函数(x)cos(x[1]+x[2]),c(llim,llim),c(ulim,ulim))
。例如,Thx。我将在实际函数上测试它,因为它们有点复杂。我最需要准确度,但速度确实是个问题。我会随时告诉你最新情况。