MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: compile a numerical integral

  • To: mathgroup at smc.vnet.net
  • Subject: [mg124576] Re: compile a numerical integral
  • From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
  • Date: Wed, 25 Jan 2012 07:05:37 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jflvvs$jr4$1@smc.vnet.net>

On Tue, 24 Jan 2012 10:09:00 -0000, Ruth Lazkoz S=E1ez <ruth.lazkoz at ehu.es>  
wrote:

> Hi wise people,
>
> I am working to make a code faster using compile and failed at the very
> beginning.
> Is there a way to make a version that works?
>
> f=Compile[{u},NIntegrate[x*u,{x,0.,#}]&/@{1,2,3}]
>
> Best,
>
> Ruth Lazkoz
>

Sorry to disappoint, but no. NIntegrate cannot be compiled and, even if it  
could, it wouldn't provide any meaningful performance improvement  
(although sometimes the integrand can be compiled; if this is likely to be  
beneficial it will be done automatically, but you can try it manually  
using the option Compiled->True). However, one can often benefit by  
changing the Method option appropriately (see  
tutorial/NIntegrateIntegrationRules), although this can be quite involved  
and is obviously not a panacea. It is worth persisting, however: in an  
example from my own work, optimizing the Method yielded a fourfold  
reduction in calculation time versus the default setting when evaluating
some complicated projection integrals, and I was only able to improve on
this slightly (by another 40% or so) by pre-calculating the integration 
bounds analytically for special cases of the integrand instead of letting  
NIntegrate find the bounds itself.



  • Prev by Date: Mapping Bezier curve to surface. Locator problem, still.
  • Next by Date: Re: Infinite Series Error - Bug?
  • Previous by thread: Re: compile a numerical integral
  • Next by thread: Re: compile a numerical integral