Re: Re: newbie problem with NIntegrate
- To: mathgroup at smc.vnet.net
- Subject: [mg49839] Re: [mg49806] Re: newbie problem with NIntegrate
- From: Garry Helzer <gah at math.umd.edu>
- Date: Tue, 3 Aug 2004 01:11:11 -0400 (EDT)
- References: <cei8o5$2he$1@smc.vnet.net> <200408012248.SAA12999@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Aug 1, 2004, at 6:48 PM, 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
>
> David Cantrell
>
>
What version are you using? The last expression is returned unevaluated
on my system ( version 5.0.1, Mac OS 10.3.4).
Garry Helzer
gah at math.umd.edu
- References:
- Re: newbie problem with NIntegrate
- From: "David W. Cantrell" <DWCantrell@sigmaxi.org>
- Re: newbie problem with NIntegrate