MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: variable of integration not localized in Integrate and Sum?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg63833] Re: [mg63827] variable of integration not localized in Integrate and Sum?
  • From: "David Park" <djmp at earthlink.net>
  • Date: Wed, 18 Jan 2006 02:39:02 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Don,

Generally you have to localize with Module. But even that doesn't always
work.

If

F[f_, x_] := Integrate[f[x + t], {t, -1/2, 1/2}]

then F[Sin,t] is equivalent to

Hold[Integrate[f[x + t], {t, -1/2, 1/2}]] /. {f -> Sin, x -> t}
% // ReleaseHold
Hold[Integrate[Sin[t + t], {t, -(1/2), 1/2}]]
0

But with

F[f_, x_] := Module[{t}, Integrate[f[x + t], {t, -1/2, 1/2}]]

Mathematica uses t$ as the actual symbol for the local variable and we have

F[Sin, t]
2*Sin[1/2]*Sin[t]

But it does not really isolate the local variable because if we evaluate

F[Sin, t$]
0

we are back in the same situation. It appears that Mathematica works only
because the user is unlikely to use t$ as an input symbol to the call.

I thought that I learned a long time ago that Mathematica automatically
changes the Module variable symbols so as not to conflict with input
symbols - but now I can't find where that is stated, and in fact it doesn't
do it.

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/




From: Don Hatch [mailto:hatch at plunk.org]
To: mathgroup at smc.vnet.net


Apparently I need to explicitly localize t in the following,
otherwise it messes up when I pass in t as the second argument.
    In:
        F[f_, x_] := Integrate[f[x + t], {t, -1/2, 1/2}]
        F[Sin, x]
        F[Sin, t]
    Out:
        2 Sin[1/2] Sin[x]  <---- correct
        0                  <---- ?!?!
This is surprising to me-- I thought that
the fact that t is the integration variable
would cause it to be automatically localized, but apparently not.
To get the right answer, I can say:
    In:
        F[f_, x_] := Module[{t}, Integrate[f[x + t], {t, -1/2, 1/2}]]
        F[Sin, x]
        F[Sin, t]
    Out:
        2 Sin[1/2] Sin[x]  <---- correct
        2 Sin[1/2] Sin[t]  <---- correct
(note, I really have to use Module, not Block-- it still messes up using
Block).

The documentation for Integrate doesn't seem to support my hope that t gets
localized, as far as I could see;
however, note that exactly the same problem
occurs for Sum, whose documentation does explicitly state:
   The iteration variable i is treated as local.
So here is an example that seems to clearly contradict the documentation
of Sum:
   In:
       F[f_, x_] := Sum[f[x + t], {t, -1/2, 1/2, 1/10}]/11
       F[Identity, x]
       F[Identity, t]
   Out:
       x              <---- correct
       0              <---- ?!?!
Just as for Integrate, it works properly when I explicitly
localize using Module (but not Block):
   In:
       F[f_, x_] := Module[{t}, Sum[f[x + t], {t, -1/2, 1/2, 1/10}]/11]
       F[Identity, x]
       F[Identity, t]
   Out:
       x              <---- correct
       t              <---- correct

Is this a bug in Sum and/or Integrate?
I'm using Mathematica version 5.2.0.0, on Linux/X.

Don Hatch



  • Prev by Date: Re: Java -> Mathematica -> Java
  • Next by Date: Re: NDSolve::ndsz question
  • Previous by thread: Re: variable of integration not localized in Integrate and Sum?
  • Next by thread: question about matrix