MathGroup Archive 2009

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

Search the Archive

Re: HoldAll for Integrate

  • To: mathgroup at
  • Subject: [mg98009] Re: HoldAll for Integrate
  • From: Tammo Jan Dijkema <T.J.Dijkema at>
  • Date: Sat, 28 Mar 2009 05:39:47 -0500 (EST)
  • References: <gqfknb$kht$> <gqia4g$oi0$>


Thanks for the responses. I realize that I'm doing a strange thing 
here, the goal is not to compute the integral, but to understand a bit 
better how Integrate works with regards to evaluation orders.

I hadn't tried using Trace, and for the indefinite integral it 
certainly explains the output 1000. Apparently, something in the code 
for Integrate has changed since 1996 and now (since it evaluated to 
1000/3 then).

However, I'm still curious about the output of the definite integral 
Integrate[ x^2, {x,0,1} ]
There is no 'reasonable' way I can think of for this to yield the value 0.

Tammo Jan

Op 2009-03-27 11:34:56 +0100, zei Jens-Peer Kuska 
<kuska at>:

> Hi,
> compare
> x = 10;
> SetAttributes[Integrate, HoldAll];
> Trace[Block[{x}, Integrate[x^2, x]]]
> with
> Trace[Integrate[x^2, x]]
> and you see, that x^2 is evaluated to 100 but
> x is preserved, than 100 dx is computed to 100*x
> and than x->10 is substituted again to give
> 1000
> Regards
>    Jens
> 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?

  • Prev by Date: Using a variable set elsewhere within a function that has attribute
  • Next by Date: Re: UNDO and Mathematica - how useless is it?
  • Previous by thread: Re: HoldAll for Integrate
  • Next by thread: Re: HoldAll for Integrate