MathGroup Archive 2008

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

Search the Archive

Re: Extending Integrate[]

  • To: mathgroup at
  • Subject: [mg87783] Re: Extending Integrate[]
  • From: "Szabolcs HorvÃt" <szhorvat at>
  • Date: Wed, 16 Apr 2008 22:33:14 -0400 (EDT)
  • References: <fu4lnj$si9$> <>

On Wed, Apr 16, 2008 at 2:02 PM, dh <dh at> 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.


  • Prev by Date: Re: Extending Integrate[]
  • Next by Date: Re: Select from list
  • Previous by thread: Re: Extending Integrate[]
  • Next by thread: Re: Extending Integrate[]