Re: HoldAll for Integrate
- To: mathgroup at smc.vnet.net
- Subject: [mg98069] Re: HoldAll for Integrate
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sun, 29 Mar 2009 02:46:19 -0500 (EST)
- References: <gqfknb$kht$1@smc.vnet.net> <gqia4g$oi0$1@smc.vnet.net> <gqkuoj$44r$1@smc.vnet.net>
Hi, AFAIK Integrate[] is C/C++ code of the Mathematica Kernel and only the CVS at Wolfram Reseach will know exacly what have changed since 1996. Regards Jens Tammo Jan Dijkema wrote: > Hi, > > 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. > > Regards, > Tammo Jan > > Op 2009-03-27 11:34:56 +0100, zei Jens-Peer Kuska > <kuska at informatik.uni-leipzig.de>: > >> 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? > >