Como simplificar a expressão de forma eficiente dentro do Power
Como posso simplificar as trivialexpressões sob o Power?
Aqui está um exemplo:
(z2p-z2p z3)^-ϵ
A saída esperada:
z2p^-ϵ (1 - z3)^-ϵ
Atualmente, estou tentando analisar FullForme decidir a regra como a seguir:
(z2p-z2p z3)^-ϵ /. Plus[x_,Times[-1,x_,y_]] -> x(1-y) //PowerExpand
No entanto, como posso estendê-lo a um caso geral em que pode haver vários termos relacionados +-? Ou existe uma maneira melhor de lidar com isso?
EDITAR::
Em um cenário geral, seriam multiplicados fatores com esse tipo de termos.
Exemplo:
expr= ((1 - z2p)^-e (1 - z3)^-e z3^-e (z2p - z2p z3)^-e)/
( z2p (-1 + z3)^2 (1 - z2p + z2p z3))
Basicamente, como se deve proceder para simplificar / fatorar esses termos?
Respostas
Vamos primeiro apresentar uma função que usarei:
factorMinus[expr_] := Module[{}, (-1)*HoldForm[Evaluate[-expr]]]
Aqui está sua expressão (eu escrevo em uma notação simplificada para torná-la mais visível):
expr = (z2 - z2*z3)^-e;
Experimente isto:
MapAt[factorMinus, MapAt[Factor, expr, {1}], {1, 3}] //
PowerExpand // ReleaseHold
(* z2^-e (1 - z3)^-e *)
Diverta-se!
À luz da recente edição da questão, considere um caso um pouco mais difícil de dois Powers:
test2 = (z2p - z2p z3)^-ϵ + (z2p1^2 - z2p1^2 z31^3)^-ϵ1
Defina a função,
m[z1_, z2_] := Module[{fac}, fac = List @@ Factor[z1];
If[fac[[1]] < 0, fac[[1 ;; 2]] = -fac[[1 ;; 2]]]; Times @@ (fac^z2)]
Então
test2 /. z1_^z2_ :> m[z1, z2]
(* (-z2p)^-ϵ (-1 + z3)^-ϵ + (-z2p1^2)^-ϵ1 (-1 + z31)^-ϵ1 (1 + z31 + z31^2)^-ϵ1 *)
Note que existe uma ambigüidade inerente a este processo, e de fato na própria questão, a saber o que fazer com um fator geral de -1. Optei por anexá-lo ao segundo fator, mas outras opções são possíveis.