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
>