Re: Replace each f in f^n to different variables
- To: mathgroup at smc.vnet.net
- Subject: [mg126059] Re: Replace each f in f^n to different variables
- From: Yi Wang <tririverwangyi at gmail.com>
- Date: Sat, 14 Apr 2012 03:09:26 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <7BB0E96E72E84E41B24A1FF8ED13F5E629998E33CD@IE2RD2XVS581.red002.local>
Of course thank Ray as well! Sorry for this additional post but interestingly Ray's reply didn't show up in my email and I cannot modify my post. On Fri, Apr 13, 2012 at 6:25 AM, Yi Wang <tririverwangyi at gmail.com> wrote: > Thanks a lot, Bob and Alexei! Yes, those methods work very well. > > Best, > Yi > > On Fri, Apr 13, 2012 at 3:18 AM, Alexei Boulbitch > <Alexei.Boulbitch at iee.lu> wrote: >> Hi, all, >> >> I want to replace *each* f in f^n to a different variable, say >> >> f^n -> var1 * var2 * ... * varn >> >> Naively, if I try >> >> f^n /. f:>Unique[], >> >> Mathematica simply returns (a unique variable)^n, instead of the above behaviour. >> >> Is there a simple way to get the f's into different variables? >> >> Thanks! >> Yi >> >> PS: >> >> (1) I know there are ways to transform Power to a list by hand, and then do something in it. For example, >> >> Times[((f^3)[[1]]*Table[1, {(f^3)[[2]]}]) /. f :> Unique[]] >> >> However, eventually I will be dealing with a large expression, with all kinds of terms, instead of a single term. This method quickly becomes very complicated. >> >> (2) I want to do such "strange" things, because a product of functions in position space f(x)^n becomes F(k1)F(k2)...F(k_{n-1})F(-k1-k2...) in momentum space. >> >> >> Hi, Yi, >> >> Is this: >> >> replaceFun[g_] := If[MatchQ[g, Power[_, _]], >> If[IntegerQ[g[[2]]], >> >> Times @@ Table[ToExpression["var" <> ToString[i]], {i, 1, g[[2]]}], >> Print[ >> Style["Error: the function \!\(\*SuperscriptBox[\(f\), \(n\)]\) \ >> has a non-integer exponent n", Red]] >> ], >> Print[Style[ >> "Error: the function does not have the form \ >> \!\(\*SuperscriptBox[\(f\), \(n\)]\)", Red]] >> ]; >> >> >> replaceFun[f[x]^4.1] >> replaceFun[Sin[x]^6] >> >> Error: the function f^n has a non-integer exponent n >> >> var1 var2 var3 var4 var5 var6 >> >> what you are looking for? >> >> Have fun, Alexei >> >> >> Alexei BOULBITCH, Dr., habil. >> IEE S.A. >> ZAE Weiergewan, >> 11, rue Edmond Reuter, >> L-5326 Contern, LUXEMBOURG >> >> Office phone : +352-2454-2566 >> Office fax: +352-2454-3566 >> mobile phone: +49 151 52 40 66 44 >> >> e-mail: alexei.boulbitch at iee.lu >> >> >> >>