Re: index problem
- To: mathgroup at yoda.physics.unc.edu
- Subject: Re: index problem
- From: withoff (David Withoff)
- Date: Tue, 19 Apr 1994 12:39:49 -0500
> Dear MMA group:
>
> a[2] ={1., 1., 1.}
> a[1] ={2., 2., 2.}
>
> MMA sometimes does convert integers into reals apparently by
> default as in the next example:
>
> NIntegrate[trhoBE[x,1/2], {x,.1,.9}]
> NIntegrate[trhoBE[x,N[1/2]], {x,.1,.9}]
>
> Out[29]=
> 0.4
>
> Out[30]=
> 0.4
>
> Note that both answers are WRONG. We expect 3 * (0.9 - 0.1) = 2.4.
> In a piece of complicated code, it is extremely hard to nail a problem
> down to this.
>
> Funny, isn't it?
>
> -Rudo
>
> ###########################################################################
> # Rudolf A. Roemer (RAR) Room: 306 James Fletcher Building #
> # Department of Physics Email: rar at mail.physics.utah.edu #
> # University of Utah FAX: USA (801) 581 4801 #
> # Salt Lake City, Utah 84112 Phone: USA (801) 581 6424 #
> # USA USA (801) 461 4450 (home) #
> ###########################################################################
All of these examples (including a few that I omitted to save space)
can be explained using the fact that a[2] doesn't match a[2.0], and
the fact that exact integers will be converted into reals by
functions like N and NIntegrate. Both behaviors are, of course,
entirely intentional.
It might perhaps be useful to comment on how this applies to
the following example.
> NIntegrate[
> Sum[
> a[2][[j]],
> {j,1,Length[a[2]]}
> ],
> {x,.1,.9}
> ]
> NIntegrate[
> Sum[
> a[N[2]][[j]],
> {j,1,Length[a[N[2]]]}
> ],
> {x,.1,.9}
> ]
>
> Out[31]=
> 2.4 (* YES, that's RIGHT! *)
>
> Out[32]=
> 1.6 (* WRONG again *)
NIntegrate[expr, {x, .1, .9}] is evaluated by repeatedly assigning
values to x, and (effectively) evaluating N[expr] after each
assignment. These assignments have no effect on either a[2]
from the first integral or a[N[2]] from the second integral.
The a[2] in the first integral will match the rule for a[2],
and the a[N[2]] in the second integral won't.
Dave Withoff
Research and Development
Wolfram Research