我想計算R中三個變量函數的三重積分f(x,y,z)
我使用包cubature
和函數adaptIntegrate()
。被積函數只在某個域(x<y<z
,否則爲0)中等於1,我不知道如何指定。我嘗試了2種不同的函數實現,但它們都不起作用:R中的三次積分(如何指定域)
#First implementation
fxyz <- function(w) {
x <- w[1]
y <- w[2]
z <- w[3]
x*y*z*(x < y)&(y < z)
}
#Second implementation
fxyz <- function(w) {
x <- w[1]
y <- w[2]
z <- w[3]
if(x<y&y<z)
out<-1
else
out<-0
out
}
#Computation of integral
library(cubature)
lower <- rep(0,3)
upper <- rep(1, 3)
adaptIntegrate(f=fxyz, lowerLimit=lower, upperLimit=upper, fDim = 3)
有關如何正確指定域的任何想法?
太好了。使用'<='而不是'<'是否正確?我的域名是'x
Egodym
2015-04-05 13:57:17
是的。但在這裏也是必要的。您不能在由<<構成的域中評估積分。想想吧! – Bhas 2015-04-06 09:30:05