Re: unevaluatedsdi integral
- To: mathgroup at smc.vnet.net
- Subject: [mg19475] Re: [mg19441] unevaluatedsdi integral
- From: "David Park" <djmp at earthlink.net>
- Date: Sat, 28 Aug 1999 15:53:05 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Jack Michel Cornil wrote:
>Hello,
>
>
>Does someone knows elegant mean of working (with MATHEMATICE ) with
>unevaluated integral in order to show change of variables, integration
>by parts, simplification of the integrang ?
>
>Thanks a lot
>
>Jack Michel CORNIL
>VERSAILLES FRANCE
>
>
Jack,
The integral has to be put in HoldForm to prevent automatic evaluation.
Here is a routine which defines a rule for direct substitution which allows the user
to specify the substitution rule as a parameter of the rule:
DirectIntegralSubstitution[u_ -> subexpr_] :=
HoldForm[Integrate[integrand_, x_]] :>
Module[{newintegrand, a, b},
newintegrand = integrand /. subexpr -> u;
newintegrand = newintegrand/D[subexpr, x];
HoldForm[Integrate[a, b]] /. {a -> newintegrand, b -> u}]
Here is a similar routine which defines a rule for integration by parts which allows
the user to specify the u part of u dv. It also allows an optional print out of the
details.
ClearAll[IntegrationByParts];
Options[IntegrationByParts] = {Details -> False};
IntegrationByParts[u_, (opts___)?OptionQ] :=
HoldForm[Integrate[integrand_, x_]] :>
Module[{newintegrand, v, du, dv, dx, a, b, print},
print = Details /. {opts} /. Options[IntegrationByParts];
dx = StringJoin["d", SymbolName[x]]; du = D[u, x];
dv = integrand/u*dx; v = Integrate[integrand/u, x];
If[print, Print[TableForm[{"u" -> u, "du" -> du*dx,
"dv" -> dv, "v" -> v}]]];
u*v - HoldForm[Integrate[a, b]] /. {a -> v*du, b -> x}]
I am sending you a notebook by separate email which illustrates the use of these
routines.
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/