je produis très longues et complexes expressions analytiques de la forme générale:ciblée Simplifier dans Mathematica
(...something not so complex...)(...ditto...)(...ditto...)...lots...
Lorsque je tente d'utiliser Simplify
, Mathematica enraye, je suppose en raison du fait qu'il essaie pour étendre les parenthèses et ou simplifier entre différentes parenthèses. Les parenthèses, tout en contenant de longues expressions, sont facilement simplifiées par Mathematica. Est-il possible de limiter la portée de Simplify
à une seule parenthèse à la fois?
Edit: Quelques infos supplémentaires et du progrès.
Donc, en utilisant les conseils de vous les gars que j'ai maintenant commencé à utiliser quelque chose dans la veine de
In[1]:= trouble = Log[(x + I y) (x - I y) + Sqrt[(a + I b) (a - I b)]];
In[2]:= Replace[trouble, form_ /; (Head[form] == Times) :> Simplify[form],{3}]
Out[2]= Log[Sqrt[a^2 + b^2] + (x - I y) (x + I y)]
Changement Times
à une tête appropriée comme Plus
ou Power
permet de cibler la simplification tout à fait avec précision. Le problème/question qui reste, cependant, est le suivant: Simplify
descendra toujours plus profond que le niveau spécifié à Replace
, par ex.
In[3]:= Replace[trouble, form_ /; (Head[form] == Plus) :> Simplify[form], {1}]
Out[3]= Log[Sqrt[a^2 + b^2] + x^2 + y^2]
simplifie également la racine carrée.
Mon plan était d'utiliser itérativement Replace
du bas vers le haut d'un niveau à la fois, mais cela clairement entraîner grande quantité de travail répétée par Simplify
et, finalement, aboutir à exactement la même embourber de Mathematica j'ai vécu dans le départ . Y at-il un moyen de limiter Simplify
à un certain niveau (s)?
Je me rends compte que ce genre de restriction peut ne pas produire des résultats optimaux, mais l'idée ici est d'obtenir quelque chose qui est « assez bon ».
Merci beaucoup (ainsi que les autres réponses). – Timo