genero expresiones analíticas muy largas y complejas de la forma general:Targeted Simplificar en Mathematica
(...something not so complex...)(...ditto...)(...ditto...)...lots...
Cuando intento utilizar Simplify
, Mathematica se detiene, estoy asumiendo que debido al hecho de que se trata para ampliar los corchetes y/o simplificar entre diferentes corchetes. Los paréntesis, que contienen expresiones largas, son fácilmente simplificados por Mathematica por sí mismos. ¿Hay alguna manera de limitar el alcance de Simplify
a un solo soporte a la vez?
Editar: Alguna información adicional y progreso.
Así, utilizando el consejo de ustedes ahora he comenzado a usar algo en la vena 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)]
Cambio Times
a una cabeza apropiada como Plus
o Power
hace posible dirigir la simplificación bastante precisión. El problema/pregunta que queda, sin embargo, es el siguiente: Simplify
seguirá descendiendo más allá del nivel especificado en Replace
, p.
In[3]:= Replace[trouble, form_ /; (Head[form] == Plus) :> Simplify[form], {1}]
Out[3]= Log[Sqrt[a^2 + b^2] + x^2 + y^2]
simplifica la raíz cuadrada también.
Mi plan era utilizar de forma iterativa Replace
de abajo hacia arriba un nivel a la vez, pero esto claramente dará lugar a gran cantidad de trabajo repetido por Simplify
y en última instancia resultar en la misma exacta empantanamiento de Mathematica que he visto en el principio . ¿Hay alguna forma de restringir Simplify
a cierto nivel (s)?
Me doy cuenta de que este tipo de restricción puede no producir resultados óptimos, pero la idea aquí es obtener algo que sea "lo suficientemente bueno".
Gracias esto (y las otras respuestas también) me ayudó mucho. – Timo