One useful trick is to use the indicator function in your integrand to define regions where the integrand is non-zero.
int <- function(y){ u2 = y[1] z2 = y[2] u1 =y[3] z1 = y[4] reg.nonzero <- (u2 > z1 & u2 <= 12) & (z2 > z1 & z2 <= 12) & (u1 > 4 & u1 <= z2) & (u2 > 4 & u2 <= z2) ff <- ifelse (reg.nonzero, u1*(z1-u1)*u2*(z2-u2)*exp(-0.027*(12-z2)), 0) return(ff) } Ravi. ____________________________________________________________________ Ravi Varadhan, Ph.D. Assistant Professor, Division of Geriatric Medicine and Gerontology School of Medicine Johns Hopkins University Ph. (410) 502-2619 email: rvarad...@jhmi.edu ----- Original Message ----- From: Dmlong21 <dml...@bios.unc.edu> Date: Tuesday, March 29, 2011 3:05 am Subject: [R] Integration with variable bounds To: r-help@r-project.org > If this is posted elsewhere I cannot find it. I need to perform multiple > integration where some of the variables are in the bounds of the other > variables. I was trying to use R2Cuba function but cannot set the > upper and > lower bounds. My code so far is : > > int <- function(y){ > u2 = y[1] > z2 = y[2] > u1 =y[3] > z1 = y[4] > > ff <- u1*(z1-u1)*u2*(z2-u2)*exp(-0.027*(12-z2)) > return(ff) > } > > > cuhre(4,1,int,rel.tol=1e-3,lower=c(y[4],y[4],4,4),upper=c(12,y[4],12,y[2]),abs.tol= > 1e-12,flags= list(verbose=2, final=0)) > > > I know that code is wrong but it shows that variables are in both the > upper > and lower bounds. > Thanks. > > Dustin Long > UNC-Chapel Hill > > -- > View this message in context: > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org mailing list > > PLEASE do read the posting guide > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.