MathGroup Archive 2009

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

Search the Archive

Re: HoldAll for Integrate



Hi Tammo,

what Integrate really does can only somebody from Wolfram explain. But 

it completely eludes me why the integration variable in "Integrate" is 

not localized. Maybe some can give a reason for this.

For the rest of us, we may define a new Integrate that does localize and 

see if it creates troubles.

Here is a possibility, where we use Hold and Replace to protect the 

variable by giving it another name:



SetAttributes[myInt, HoldAll];

myInt[integ_, {var_, low_, high_}] := Module[{integ0, var0},

   Integrate @@ (Hold[integ, {var, low, high}] /.

      HoldPattern[var] -> var0)

   ];



Here is another one using "With" to protect the integration variable:



SetAttributes[myInt, HoldAll];

myInt[integ_, {var_, low_, high_}] := With[{var = Unevaluated@var},

    Integrate[integ, {var, low, high}]];



Daniel





Tammo Jan Dijkema wrote:

> The following commands yield unexpected output:

> 

> x=10;

> Integrate[x^2, {x,0,1}]

> 

> That is because Integrate does not have attributes HoldAll, so that the 

> second command will be interpreted as Integrate[100, {10,0,1}] which is 

> not a command that Integrate can work with (so a warning message is 

> returned).

> 

> However, I can add the attribute HoldAll to Integrate myself:

> 

> SetAttributes[Integrate, HoldAll];

> 

> I'm not very sure what to expect when now trying the same experiment 

> (the correct answer 1/3 would be nice), but the actual output surprised 

> me:

> 

> x=10;

> Integrate[x^2, {x,0,1}]

> 

> Yields as output: 0 (without any warnings). Could anyone explain why I 

> should have expected this result?

> 

> On a side note, I found a similar in the Tech Support column of the 

> Mathematica Journal Volume 6, Issue 2, by Carl Roy. He tried the 

> integral without limits:

> 

> x=10;

> SetAttributes[Integrate, HoldAll];

> Integrate[x^2, x]

> 

> In the journal, the output 1000/3 is mentioned, whereas in Mathematica 

> 7.0.1 this outputs 1000.

> 

> Again, does anyone understand this?

> 

> Regards,

> 

> Tammo Jan Dijkema

> 

> 




  • Prev by Date: Re: Re: Histograms and Iterators - Beginner Question
  • Next by Date: Re: What's going on here (Table-generated lists)?
  • Previous by thread: Re: HoldAll for Integrate
  • Next by thread: Re: HoldAll for Integrate