Re: HoldAll for Integrate
- To: mathgroup at smc.vnet.net
- Subject: [mg97986] Re: HoldAll for Integrate
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Fri, 27 Mar 2009 05:35:12 -0500 (EST)
- References: <gqfknb$kht$1@smc.vnet.net>
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? > > Regards, > > Tammo Jan Dijkema > >