Re: How to disable Integrate[] ?
- To: mathgroup at smc.vnet.net
- Subject: [mg109501] Re: How to disable Integrate[] ?
- From: David Bailey <dave at removedbailey.co.uk>
- Date: Sat, 1 May 2010 06:51:14 -0400 (EDT)
- References: <hrbaas$hon$1@smc.vnet.net> <hre937$6o$1@smc.vnet.net>
slawek wrote:
> U=BFytkownik "Christoph Lhotka" <christoph.lhotka at univie.ac.at> napisa=B3w
> wiadomo=B6ci grup dyskusyjnych:hrbaas$hon$1 at smc.vnet.net...
>> Simplifiy[...., ExcludedForms->{Integrate[__,_]}]
>
> Nice, but it doesn't work, check yourself:
>
> In[1]:= int1 = HoldForm[Integrate[x + x, {x, a + a, b + b}]];
> In[2]:= int2 = HoldForm[Integrate[1/(1 + Sin[x]^(1/3)), {x, a + a, b + b}]];
> In[3]:= Simplify[int1 // ReleaseHold, ExcludedForms -> {Integrate[_, _ ]}]
> In[4]:= Simplify[int2 // ReleaseHold, ExcludedForms -> {Integrate[_, _ ]}]
>
>> IntegrateH[expr,vars]
>
> Yes, it is possible replace Integrate by an dummyIntegrate or similar
> placeholder. It should be even possible to define some simple rules for
> dummyInterate,
> i.e. dummyIntegrate[a_,lst_]+ dummyIntegrate[b_,lst_] ->
> dummyIntegrate[a+b,lst] and so on. But, I think that it is not the most
> finesse way. I think that some global switch, like the iteration limit and
> the recursion limit should work better. Unfortunatelly these limits don't
> force Mathematica give up simplification but abort calculation with an
> "Abort" msg.
>
> slawek
>
>
>
How about using some other name - say, Integral - (yes, I know I should
not use uppercase names!) that invokes Integrate only if a switch is
set, otherwise returning unevaluated:
In[505]:= SetAttributes[Integral, HoldAll];
Integral[args___] := Integrate[args] /; DoIntegrals
In[507]:= Integral[Sin[x], x]
Out[507]= Integral[Sin[x], x]
In[508]:= DoIntegrals = True;
In[509]:= Integral[Sin[x], x]
Out[509]= -Cos[x]
BTW, it is almost never a good idea to modify the built-in Mathematica
operations.
David Bailey
http://www.dbaileyconsultancy.co.uk