Re: customizing Integrate with Unprotect
- To: mathgroup at smc.vnet.net
- Subject: [mg49276] Re: [mg49273] customizing Integrate with Unprotect
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sun, 11 Jul 2004 02:16:11 -0400 (EDT)
- References: <200407100648.CAA04632@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 10 Jul 2004, at 15:48, S. Narayan wrote: > *This message was transferred with a trial version of CommuniGate(tm) > Pro* > For some custom function F, I used Unprotect to "teach" Mathematica the > integration (which involves a recursive definition) I am unable to use > this integration in more than one dimension. > > Here is the example (in text, I have the mathematica session at the end > of the post) > > Unprotect[Integrate]; > Clear[Integrate]; > Integrate[x_^n_ * F[a_ + b_* x_], x_] := > (n+1)a^n *Integrate[x^(n-1) * F[a + b*x], x] + (n-1)*b^n; > Integrate[x_ * F[a_ + b_*x_], x_] := 2* a * F[a/b]; > Integrate[F[a_ + b_*x_], x_] := F[a/b]; > > I require that n be a whole number and a, b real numbers. > I tried a couple of examples in one dimension and it works correctly: > > Integrate[x*x*F[a + b*x], x] > >> b^2 + 6 a^3 F(a/b); > > When I try it in multiple dimensions, I don't get the right answer: > > Integrate[y*F[a + b*x + c*y], y] >> 2*(a + b*x)* F[(a + b*x)/ c] > Integrate[%, y] >> 2Integrate[(a + b*x)*F[(a + b*x)/c], x] > > Note that it does not apply the integration form from above, correctly. > > Is there anyway I can get this integration performed in Mathematica ? > (My problem is I have to do this nested integration in more than 2 > dimensions and cannot do it manually) > > Thanks, > - narayan > > The problem is that your pattern matching is not accurate enough. In addition to the problem you have noticed, your definition won't work if a=0 or b=1. This should do better: Unprotect[Integrate]; Integrate[x_^n_*F[a_.+b_.*x_],x_]:=( n+1)a^n*Integrate[x^(n-1)*F[a+b*x],x]+(n-1)*b^n; Integrate[x_*F[a_.+b_.*x_],x_]:=2*a*F[Expand[a/b]]; Integrate[F[a_.+b_.*x_],x_]:=F[Expand[a/b]]; Protect[Integrate] Andrzej Kozlowski Chiba, Japan http://www.mimuw.edu.pl/~akoz/
- References:
- customizing Integrate with Unprotect
- From: "S. Narayan" <narayans@btv.ibm.com>
- customizing Integrate with Unprotect