       Re: Bug in NIntegrate[]?

• To: mathgroup at smc.vnet.net
• Subject: [mg126889] Re: Bug in NIntegrate[]?
• From: Bill Rowe <readnews at sbcglobal.net>
• Date: Fri, 15 Jun 2012 15:28:28 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com

```On 6/15/12 at 3:41 AM, vokaputs at gmail.com (GS) wrote:

>I define the function f[x] as follows:

>f[x_] := 0 /; x < 0 || x > 1; f[x_] := 1

>It is zero outside of the interval [0,1]. This can be verified by
>plotting Plot[f[x], {x, -1, 2}]

>Now I integrate it from -1 to 2: In:= NIntegrate[f[x], {x, -1,
>2}] Out= 3.

>The result should be 1, but it is 3. Clearly Mathematica ignores the
>fact that f[x] is zero outside of [0,1].

>This caused a lot of headache for me recently when I encountered
>such behavior in one of my research code. GS

This does appear to be a bug. Instead of using logical operators
to define your function why not define it in terms of
HeavisideTheta, i.e.

g[x_] := HeavisideTheta[x] - HeavisideTheta[x - 1]

The advantage of this approach is Mathematica know how to
integrate and differentiate HeavisideTheta. That is:

In:= Integrate[g[x], {x, -2, 1}]

Out= 1

Note, NIntegrate does have problems with this definition. That is

In:= NIntegrate[g[x], {x, -2, 1}]

Out= 1.00024

with a warning about failure to converge with 9 recursive bisections

```

• Prev by Date: Re: Bug in NIntegrate[]?
• Next by Date: Re: Bug in NIntegrate[]?
• Previous by thread: Re: Bug in NIntegrate[]?
• Next by thread: Re: Bug in NIntegrate[]?