Comment simplifier efficacement l'expression dans Power

Sep 03 2020

Comment puis-je simplifier les trivialexpressions sous le Power?

Voici un exemple:

(z2p-z2p z3)^-ϵ

Le résultat attendu:

z2p^-ϵ (1 - z3)^-ϵ        

Actuellement, j'essaie de regarder FullFormet de décider de la règle comme ci-dessous:

(z2p-z2p z3)^-ϵ /. Plus[x_,Times[-1,x_,y_]] -> x(1-y) //PowerExpand

Cependant, comment puis-je l'étendre à un cas général où il pourrait y avoir plusieurs termes liés à +-? Ou y a-t-il une meilleure façon de gérer?

ÉDITER::

Dans un scénario général, on aurait des facteurs multipliés par ce type de termes.

Exemple:

  expr= ((1 - z2p)^-e (1 - z3)^-e z3^-e (z2p - z2p z3)^-e)/
        ( z2p (-1 + z3)^2 (1 - z2p + z2p z3))

Fondamentalement, comment devrait-on procéder pour simplifier / factoriser ces termes?

Réponses

2 AlexeiBoulbitch Sep 03 2020 at 14:34

Introduisons d'abord une fonction que j'utiliserai:

factorMinus[expr_] := Module[{}, (-1)*HoldForm[Evaluate[-expr]]]

Voici votre expression (je l'écris dans une notation simplifiée pour la rendre plus visible):

expr = (z2 - z2*z3)^-e; 

Essaye ça:

MapAt[factorMinus, MapAt[Factor, expr, {1}], {1, 3}] // 
  PowerExpand // ReleaseHold



 (*  z2^-e (1 - z3)^-e  *)

S'amuser!

1 bbgodfrey Sep 04 2020 at 00:10

À la lumière de la récente modification de la question, considérons un cas légèrement plus difficile de deux Powers:

test2 = (z2p - z2p z3)^-ϵ + (z2p1^2 - z2p1^2 z31^3)^-ϵ1

Définissez la fonction,

m[z1_, z2_] := Module[{fac}, fac = List @@ Factor[z1]; 
    If[fac[[1]] < 0, fac[[1 ;; 2]] = -fac[[1 ;; 2]]]; Times @@ (fac^z2)]

ensuite

test2 /. z1_^z2_ :> m[z1, z2]
(* (-z2p)^-ϵ (-1 + z3)^-ϵ + (-z2p1^2)^-ϵ1 (-1 + z31)^-ϵ1 (1 + z31 + z31^2)^-ϵ1 *)

Notez qu'il existe une ambiguïté inhérente à ce processus, et même à la question elle-même, à savoir que faire avec un facteur global de -1. J'ai choisi de l'attacher au deuxième facteur, mais d'autres options sont possibles.