Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

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

Search the Archive

Re: HoldAll for Integrate

  • To: mathgroup at smc.vnet.net
  • Subject: [mg97978] Re: HoldAll for Integrate
  • From: dh <dh at metrohm.com>
  • Date: Fri, 27 Mar 2009 05:33:40 -0500 (EST)
  • References: <gqfknb$kht$1@smc.vnet.net>


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