Re: Extending Integrate[]
- To: mathgroup at smc.vnet.net
- Subject: [mg87840] Re: Extending Integrate[]
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Fri, 18 Apr 2008 02:41:39 -0400 (EDT)
- Organization: Uni Leipzig
- References: <fu4lnj$si9$1@smc.vnet.net> <4805EADE.1010908@metrohm.ch> <fu6mgu$nne$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
Hi, Integrate[] is, AFAIK a kernel function, written in C++, you can't access it. Regards Jens Szabolcs Horv=E1t wrote: > On Wed, Apr 16, 2008 at 2:02 PM, dh <dh at metrohm.ch> wrote: >> Hi Szabolcs, >> it looks like mathematica does not automatically distribute your rule= over >> Plus. This comes a bit as a surprise. But you can teach it. If you >> additionally give the following rule: >> Integrate[a_+b_,x_]:=Integrate[a,x]+Integrate[b,x] >> then your example works. Of course you also need linearity. > > Hi Daniel, > > Thanks for the reply! > > The problem with this approach is that it will prevent Integrate from > working correctly in certain cases. Here's an example: > > In[1]:= expr = D[x*f[x], x] > Out[1]= f[x] + x*f'[x] > > In[2]:= Integrate[expr, x] > Out[2]= x*f[x] > > In[3]:= Unprotect[Integrate] > Out[3]= {"Integrate"} > > In[4]:= Integrate[a_ + b_, x_] := Integrate[a, x] + Integrate[b, x] > > In[5]:= Integrate[expr, x] > Out[5]= Integrate[f[x], x] + Integrate[x*f'[x], x] > > Jens's suggestion, i.e. > > Integrate[d_. + c_.*Sin[Sin[a_. + b_. x_]], x_] := > c*Jones[a, x]/b + Integrate[d, x] /; FreeQ[c, x] > > appears to be reliable, but everything it does is still fully > implemented with plain old pattern matching. So my original > suspicion, that the internal algorithms of Integrate[] cannot use > these new definitions in any way, seems to be true. > > Szabolcs >