[Date Index]
[Thread Index]
[Author Index]
Re: newbie problem with NIntegrate
*To*: mathgroup at smc.vnet.net
*Subject*: [mg49841] Re: newbie problem with NIntegrate
*From*: "David W. Cantrell" <DWCantrell at sigmaxi.org>
*Date*: Tue, 3 Aug 2004 01:11:13 -0400 (EDT)
*References*: <cei8o5$2he$1@smc.vnet.net> <cejs90$cpk$1@smc.vnet.net>
*Sender*: owner-wri-mathgroup at wolfram.com
On Aug. 2, 2004, Garry Helzer wrote:
> On Aug 1, 2004, David W. Cantrell wrote:
> > "Xiaoxun" <dbjunxiao at hotmail.com> wrote:
> >> Hi, all,
> >>
> >> Please advices:
> >>
> >> Geom = (200 >=x>= 100 && 50 >= y >= -50 && -20 <= z <= 20);
> >> gr[x_, y_, z_] := 2 /; Geom;
> >> gr[x_, y_, z_] := 0 /; ! (Geom);
> >> N[Integrate[gr[x, y, z], {x, 0, 300}, {y, -100, 100}, {z, -30, 30}]
> >> This gives a result of 799995.
> >> However, if changing the x range to {x,0,600} results 799993.
> >> and {x,0,900} results 0;
> >>
> >> So what could we do to ensure the right answer?
> >
> > First, let me note that in problems like this, it's often good to
> > write the function using UnitStep. For example, in your problem, it
> > can be written as
> >
> > gr[x_, y_, z_] := 2(UnitStep[x - 100] - UnitStep[x - 200])
> > (UnitStep[y + 50] - UnitStep[y - 50])
> > (UnitStep[z + 20] - UnitStep[z - 20])
> >
> > However, doing that in your problem does not happen to be necessary.
> > Just get rid of the N[...]. (Did you notice the warning messages you
> > were getting?) In other words, the following works fine (regardless of
> > whether the upper limit of integration for x is 300, as shown, or 600
> > or 900):
> >
> > In[1]:=
> > Geom = (200 >= x >= 100 && 50 >= y >= -50 && -20 <= z <= 20);
> > gr[x_, y_, z_] := 2 /; Geom; gr[x_, y_, z_] := 0 /; ! (Geom);
> > Integrate[gr[x, y, z], {x, 0, 300}, {y, -100, 100}, {z, -30, 30}]
> >
> > Out[1]=
> > 800000
> What version are you using? The last expression is returned unevaluated
> on my system ( version 5.0.1, Mac OS 10.3.4).
The fact that I'm using version 5.0.0 is immaterial. I made a mistake.
Sorry! Doing what it _looks_ like I did, the expression is returned
unevaluated on my system too.
I had actually done the work in the midst of a long session. [The
In and Out numbers were really in the thousands.] I had first defined gr
in terms of UnitStep, as noted above, and had seen that the symbolic
integral worked as desired in several cases. (So far, so good.) I then
decided to see if the OP's definition of gr could be used successfully
instead. In doing so, I uncritically copied the OP's code, and then
deleted the N[]. It seemed to work as desired. What I unfortunately failed
to notice was that the OP's code did not in fact change the definition of
gr! It was still defined in terms of UnitStep. I apologize for my
oversight.
Anyway, at least using UnitStep gives an alternative to loading the
Calculus`Integration` package and using Boole.
David Cantrell
Prev by Date:
**Re: ListDensityPlot, ColorFunction, and associated confusions**
Next by Date:
**Re: Re: newbie problem with NIntegrate**
Previous by thread:
**Re: Re: newbie problem with NIntegrate**
Next by thread:
**The Histogram[] command**
| |