3
$\begingroup$

I need to wirte all occasions of

(a+b)^3,Ftp^2, Sin[th]^2, ...etc

as

(a+b)*(a+b)*(a+b), Ftp*Ftp, Sin[th]*Sin[th], ...etc

For

(a+b)^3

it would also be ok to write

a*a*a + 3*a*a*b + 3*a*b*b + b*b*b

Here is an Example expression for wich I need to do this:

(gamma^2*M*Sin[th]*((Fmpb*Fp^2*gamma^2*Cos[th] + 2*Fmp*Fp*Fpb*gamma^2*Cos[th] + (Fmtb*Fp + Fmt*Fpb)*Fpp*gamma^2*Sin[th] - Fmpb*Fp*Ftp*gamma^2*Sin[th] - Fmp*Fpb*Ftp*gamma^2*Sin[th] - Fmp*Fp*Ftpb*gamma^2*Sin[th] + Ft*(Fmtb*Ftp + Fmt*Ftpb - Fmpb*Ftt - Fmp*Fttb)*gamma^2*Sin[th]^3 + Ftb*(Fmt*Ftp*gamma^2 - Fmp*Ftt*gamma^2 + M*omega^2*αlpha*Cos[th])*Sin[th]^3 + Fttb*M*omega^2*αlpha*Sin[th]^4 + Fppb*Sin[th]*(Fmt*Fp*gamma^2 + M*omega^2*αlpha*Sin[th]))*(-(Fp^2*Cos[th]*Sin[ph - phH]*Sin[thH]) + Fp*(Ftp*Sin[ph - phH]*Sin[th]*Sin[thH] + Fpp*(-(Cos[thH]*Sin[th]) + Cos[ph - phH]*Cos[th]*Sin[thH])) + Ft*Sin[th]^2*(Ftt*Sin[ph - phH]*Sin[th]*Sin[thH] + Ftp*(-(Cos[thH]*Sin[th]) + Cos[ph - phH]*Cos[th]*Sin[thH]))) - (Fmp*Fp^2*gamma^2*Cos[th] - Fmp*Fp*Ftp*gamma^2*Sin[th] + Ft*(Fmt*Ftp*gamma^2 - Fmp*Ftt*gamma^2 + M*omega^2*αlpha*Cos[th])*Sin[th]^3 + Ftt*M*omega^2*αlpha*Sin[th]^4 + Fpp*Sin[th]*(Fmt*Fp*gamma^2 + M*omega^2*αlpha*Sin[th]))*(-2*Fp*Fpb*Cos[th]*Sin[ph - phH]*Sin[thH] + Fpb*(Ftp*Sin[ph - phH]*Sin[th]*Sin[thH] + Fpp*(-(Cos[thH]*Sin[th]) + Cos[ph - phH]*Cos[th]*Sin[thH])) + Fp*(Ftpb*Sin[ph - phH]*Sin[th]*Sin[thH] + Fppb*(-(Cos[thH]*Sin[th]) + Cos[ph - phH]*Cos[th]*Sin[thH])) + Ftb*Sin[th]^2*(Ftt*Sin[ph - phH]*Sin[th]*Sin[thH] + Ftp*(-(Cos[thH]*Sin[th]) + Cos[ph - phH]*Cos[th]*Sin[thH])) + Ft*Sin[th]^2*(Fttb*Sin[ph - phH]*Sin[th]*Sin[thH] + Ftpb*(-(Cos[thH]*Sin[th]) + Cos[ph - phH]*Cos[th]*Sin[thH])))))/(Fmp*Fp^2*gamma^2*Cos[th] - Fmp*Fp*Ftp*gamma^2*Sin[th] + Ft*(Fmt*Ftp*gamma^2 - Fmp*Ftt*gamma^2 + M*omega^2*αlpha*Cos[th])*Sin[th]^3 + Ftt*M*omega^2*αlpha*Sin[th]^4 + Fpp*Sin[th]*(Fmt*Fp*gamma^2 + M*omega^2*αlpha*Sin[th]))^2

I always have integer powers and all of them need to be "falttened out" into products.

Thank you for any Help.

$\endgroup$

1 Answer 1

4
$\begingroup$

If you have Version 10:

rF = # /. Power[x_,y_]:>Inactive[Times]@@Table[x,{y}]&;
(* or rF = # /. Power->(Inactive[Times]@@Table[#,{#2}]&)&; *)

lst = {(a + b)^3, Ftp^2, Sin[th]^2};
rF@lst
(* {(a+b)*(a+b)*(a+b),Ftp*Ftp,Sin[th]*Sin[th]} *)

Or

rF2 = Block[{Power=Inactive[Times]@@Table[#,{#2}]&},#]&
rF2 @ lst
(* {(a+b)*(a+b)*(a+b),Ftp*Ftp,Sin[th]*Sin[th]} *)

For Version 9:

rF3 = # /. Power[x_, y_] :> (Fold[Composition[Defer, Times], x, Table[x, {y - 1}]]) &;

rF3@lst
(* {((a + b) (a + b)) (a + b), Ftp Ftp, Sin[th] Sin[th]} *)
$\endgroup$
2
  • $\begingroup$ Thank you very much, i was running on version 9, but just installed 10 to use your code. I'v made a small addition for when i evaluate the example above i get "...M Sin[th] Inactive[Times][] gamma*gamma..." so I used (rF@lst) /. Inactive[Times][] -> 1 $\endgroup$ Commented Dec 21, 2014 at 13:24
  • $\begingroup$ @Walter, my pleasure. Welcome to mma.se. $\endgroup$
    – kglr
    Commented Dec 21, 2014 at 13:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.