On Mar 25, 2015, at 8:45 AM, David Winsemius wrote:

> 
> On Mar 25, 2015, at 4:55 AM, <lluis.hurt...@uv.es> <lluis.hurt...@uv.es> 
> wrote:
> 
>> Dear all,
>> 
>> Finally I have tried three different options to integrate a function in a 3D 
>> volume. Here 
>> I show a test example. The volume is the box [0,100] x [0,100] x [0,100] and 
>> the 
>> function is
>> 
>> nfw(d) = 4/((d/5)*(1+(d/5))^2)

snipped quite a bit.

> 
> This is the same as one gets with considering this to be a radial symmetric 
> function and transforming the problem to one dimension using the 
> infinitesimal transformation dV = 4*pi*dr:

I meant to type:
  dV = 4*pi*r^2*dr:

> 
>> f <- function(x) 4*pi*x^2*4.0/((x/5)*(1+(x/5))^2)

But function definition was correct. 

>> integrate(f, 0, 40 , subdivisions=10000)
> 8220.516 with absolute error < 0.0012
> 
> I wasn't able to achieve convergence to that value using adaptIntegrate using 
> a Boolean variation on Duncan's suggestion:
> 
> model <- function(x) 
>   {
>      d <- sqrt((x[1]-50)^2 + (x[2]-50)^2 + (x[3]-40)^2)
>      r <- 4.0/((d/5)*(1+(d/5))^2)
>      dinside <- (d <= 40)*r
>    }
>> adaptIntegrate(model, rep(0,3), rep(100,3), tol=1e-3, maxEval=1000000)
> $integral
> [1] 8199.022
> 
> $error
> [1] 33.33091
> 
> $functionEvaluations
> [1] 1000065
> 
> $returnCode
> [1] 0
> 
> Without the maxEval the method exceeded my patience. If the real problem is 
> radial symmetric (and it might be noting your domain of investigation) this 
> may offer speed and accuracy advantages.
> 
> --
> David.
snipped

David Winsemius
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to