一般的な形式の非常に長く複雑な分析式を生成します。
(...something not so complex...)(...ditto...)(...ditto...)...lots...
私が使用しようとするSimplify
と、Mathematicaは停止しますが、角かっこを拡張したり、異なる角かっこ間で単純化したりしようとしているためだと思います。角かっこは長い式を含んでいますが、Mathematicaだけで簡単に簡略化できます。スコープをSimplify
一度に1つのブラケットに制限する方法はありますか?
編集:いくつかの追加情報と進捗状況。
だから皆さんからのアドバイスを使って、私は今、
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)]
またはTimes
のような適切なヘッドに変更すると、単純化を非常に正確にターゲットにすることができます。ただし、残っている問題/質問は次のとおりです。たとえば、に指定されたレベルよりも深く下降します。Plus
Power
Simplify
Replace
In[3]:= Replace[trouble, form_ /; (Head[form] == Plus) :> Simplify[form], {1}]
Out[3]= Log[Sqrt[a^2 + b^2] + x^2 + y^2]
平方根も単純化します。
私の計画は、一度に1レベルずつ下から上に繰り返し使用することでしたが、これは明らかに、最初に経験したMathematicaのまったく同じ停止をもたらし、Replace
大量の繰り返し作業をもたらすことになります。特定のレベルSimplify
に制限する方法はありますか?Simplify
この種の制限では最適な結果が得られない可能性があることは理解していますが、ここでの考え方は「十分に良い」ものを取得することです。