我生成了非常长且复杂的一般形式的分析表达式:
(...something not so complex...)(...ditto...)(...ditto...)...lots...
当我尝试使用Simplify
时,Mathematica 停止运行,我假设它试图扩展括号或简化不同的括号。括号虽然包含长表达式,但 Mathematica 自己很容易简化。有什么方法可以一次将范围限制Simplify
为一个括号?
编辑:一些额外的信息和进展。
因此,根据你们的建议,我现在开始使用类似的东西
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]
也简化了平方根。
我的计划是Replace
一次自下而上地迭代使用一个级别,但这显然会导致大量重复工作,Simplify
并最终导致与我一开始所经历的完全相同的 Mathematica 陷入困境。有没有办法限制Simplify
到某个级别?
我意识到这种限制可能不会产生最佳结果,但这里的想法是得到“足够好”的东西。