       Re: NIntegrate - bug??

• To: mathgroup at smc.vnet.net
• Subject: [mg85370] Re: NIntegrate - bug??
• From: Szabolcs Horvát <szhorvat at gmail.com>
• Date: Thu, 7 Feb 2008 07:07:25 -0500 (EST)
• References: <foeklg\$i9b\$1@smc.vnet.net>

```Costa Bravo wrote:
> I have defined the function of Exp with series
>
> expN[x_, p1_] := Module[{min = 10^-20,s, u, j},
>    s = 1; u = 1; j = 1;
>    While[u *= N[p1*x/j, 20];
>          s += u; j++;
>          u > min*s];
>      s]
>
>
> The differences between Exp & expN
>
> tp = 10; tk = 20;
> Table[{x, Exp[x/5] - expN[x, 1/5]}, {x, tp, tk, 1}]
>
> (* OK 0*10^-18 *)
>
> (* I have integration Exp[x/5] with 'NIntegrate' *)
>
> NIntegrate[Exp[x/5], {x, tp, tk}]
>
> 236.045   (* OK *)
>
> (*  and  expN[x,1/5]  *)
>
> NIntegrate[expN[x, 1/5], {x, tp, tk}]
>
> 40.    (* Bad !! *)
>
> (* primitive integration expN   *)
>
> t1 = Table[expN[x, 1/5], {x, tp, tk, 1/10}];
> (Total[t1] - (t1[] + t1[[-1]])/2)/10
>
> 236.0533...   (* ~OK *)
>
> Why the integration of expN with NIntegrate is bad ?
>
> Tested with Mathematica 5.0 ,5.2 and 6
>
> PS
> If defined function expN1 ( without While !!)
>
> expN1[x_, p1_] := Module[{min = 10^-20, s, u, j},
>    s = 1; u = 1;
>    Do[u *= N[p1 x/j, 20]; s += u, {j, 30}];
>    s]
>
> NIntegrate[expN1[x, 1/5], {x, tp, tk}]
>
> 236.045 ( OK !!!! )
>

Hi,

It is not a bug.  Whenever you write function that takes numerical
arguments, such as expN[], make sure that they are evaluated *only* for
numerical data!  Change the definition to look like this:

expN[x_?NumericQ, p1_?NumericQ] := ...

If you evaluate the original expN with symbolic parameters, you get:

In:= expN[a, b]
Out= 1 + a b

And NIntegrate[1 + a/5, {a, 10, 20}] happens to be:

In:= NIntegrate[1 + a/5, {a, 10, 20}]
Out= 40.

Szabolcs Horv=E1t

```

• Prev by Date: Re: Conditional Plotting
• Next by Date: Re: Cause and Effect Diagramming in Mathematica
• Previous by thread: Re: Memory and NDSolve
• Next by thread: Re: NIntegrate - bug??