Re: Replace each f in f^n to different variables
- To: mathgroup at smc.vnet.net
- Subject: [mg126049] Re: Replace each f in f^n to different variables
- From: Alexei Boulbitch <Alexei.Boulbitch at iee.lu>
- Date: Fri, 13 Apr 2012 04:57:52 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
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