Recopilación de potencias comunes de los términos
Cómo recopilar las potencias comunes que aparecen en la siguiente función usando MATHEMATICA, de modo que si ingreso
(4 m^6)/((m - n)^2 (m + n)^4 (2m+n)^4)
entonces la salida debe mostrarse como
((2 m^3)/((m - n) (m + n)^2 (2m+n)^2))^2
Editar: en general, si hay muchos términos con diferentes potencias tanto en el numerador como en el denominador, lo que se requiere es el MCD de todas las potencias de los términos tanto en el numerador como en el denominador. Por ejemplo si tenemos sigue
(a1^(n1)a2^(n2)a3^(n3)a4^(n4)...a^(nn))/(b1^(m1)b2^(m2)b3^(m3)b4^(m4)...bm^(mm))
Lo que podría tomarse como poder común es el
GCD(n1,n2,...,nn,m1,m2,m3....mm)
Respuestas
expr = (4 m^6)/((m - n)^2 (m + n)^4 (2 m + n)^4);
El formulario que solicitó se simplificará automáticamente a la expresión original.
((2 m^3)/((m - n) (m + n)^2 (2 m + n)^2))^2
(* (4 m^6)/((m - n)^2 (m + n)^4 (2 m + n)^4) *&)
Para conservar el formulario solicitado es necesario evitar la simplificación automática
expr2 = Module[{$a}, Inactive[Power][
($a /. Solve[expr == $a^2, $a][[-1]]), 2]]

expr2 // Activate
(* (4 m^6)/((m - n)^2 (m + n)^4 (2 m + n)^4) *)
EDITAR:
expr = (a1^3 a2^6 a3^9 a4^6 a5^6)/(b1^3 b2^12 b3^15 b4^9 b5^6);
gcd = GCD @@ Cases[expr, x_^p_. :> p, 1]
(* 3 *)
Inactive[Power][(expr /. x_^p_ :> x^(p/gcd)), gcd]

(% // Activate) === expr
(* True *)
EDITAR 2:
format[expr_] := Module[{coef, gcd},
coef = expr /. {a_Integer r_ :> a, r_ :> 1};
gcd = GCD @@
Cases[expr/coef, (a : _Integer : 1) x_^p_. :> p, 1];
Inactive[Power][
(expr/(coef^(1/gcd)) /. x_^p_ :> x^(p/gcd)), gcd]]
format[(4 m^6)/((m - n)^2 (m + n)^4 (2 m + n)^4)]

format[(a1^3 a2^6 a3^9 a4^6 a5^6)/(b1^3 b2^12 b3^15 b4^9 b5^6)]
