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/