Need help with ideas to make NIntegrate a little faster for multiple variables
- To: mathgroup at smc.vnet.net
- Subject: [mg23031] Need help with ideas to make NIntegrate a little faster for multiple variables
- From: "Don Taylor" <psu04033 at odin.pdx.edu>
- Date: Thu, 13 Apr 2000 02:43:21 -0400 (EDT)
- Organization: Portland State University
- Sender: owner-wri-mathgroup at wolfram.com
I'm finding probabilities of a Gaussian ball that has been
sliced by some hyperplanes. Calculations are taking a LONG time.
Would anyone have any advice on how I might find solutions
to problems like the following in a more reasonable amount
of time that it seems to take in the current form?
NIntegrate[
Exp[-x^2/2-y^2/2-z^2/2
-r1^2/(2*(1/8)^2)-r2^2/(2*(1/8)^2)
-r3^2/(2*(1/8)^2)-r4^2/(2*(1/8)^2)]/
((2*Pi)^(3/2)*(2*Pi*(1/8)^2)^2),
{x,-5,5},{y,-5,5},{z,-5,5},
{r1,-10,y-x},{r2,z-y,10},{r3,y-x,10},{r4,z-y,10}]
The surface is about as smooth as could be expected for a problem.
The real bounds of integration are infinity but I would be able to use
results that have 4 good digits in an answer and thus I have been using
bounds of +/-5 or +/-10 instead of Infinity. But that doesn't seem to
be able to give results in a few hours (on a 360 Mhz machine with lots
of free memory and nothing else soaking up cycles)
I have tried setting NumPoints->10000000 which gives perhaps 10 points
per dimension plus some spares for the algorithm to use as it sees fit.
But Version 3 claims that it sees an error when NumPoints is set and thus
reverts to not using the compiled version I think. The calculations
continue, but slowly, in either case.
Does anyone have any ideas about what I might do to get answers with a
handful of good digits in a plausible amount of time? I believe I have
reduced the problem down to the simplest possible form. But I am still
left with sixty four such integrals to evaluate, to at least give me
eight good points to plot on a graph.
(Would upgrading to version 4 make a dramatic change in this particular
situation?)
Many Thanks
Don