El problema es que lo que supone que es "Simple" y lo que MMA supone que es simple son dos cosas diferentes. Echar un vistazo a ComplexityFunction indica que MMA mira principalmente a "LeafCount". La aplicación de LeafCount da:
In[3]:= Abs[q + I w] // LeafCount
Out[3]= 8
In[4]:= Sqrt[q^2 + w^2] // LeafCount
Out[4]= 11
Así, MMA tiene en cuenta la forma Abs
a ser mejor. (Uno puede explorar visualmente la simplicidad usando TreeForm o FullForm). Lo que debemos hacer es decirle a MMA que trate MMA como más caro. Para ello, tomamos el ejemplo de ComplexityFunction y escribir:
In[7]:= f[e_] := 100 Count[e, _Abs, {0, Infinity}] + LeafCount[e]
FullSimplify[Abs[q + I w], Element[{q, w}, Reals],
ComplexityFunction -> f]
Out[8]= Sqrt[q^2 + w^2]
a lo solicitado. Básicamente, le estamos diciendo a MMA a través del f[e]
que el conteo de todas las partes del formulario Abs
debe contar como 100 hojas.
EDIT: Como se mencionó por Brett, también puede hacer que sea más general, y el uso de _Complex
como la regla que debe buscar:
In[20]:= f[e_] := 100 Count[e, _Complex, {0, Infinity}] + LeafCount[e]
FullSimplify[Abs[q + I w], Element[{q, w}, Reals],
ComplexityFunction -> f]
Out[21]= Sqrt[q^2 + w^2]
No estoy en mi máquina de Mathematica ahora mismo, así que no puedo probar nada pero tengo una pregunta para ti. ¿En qué sentido es Sqrt [q^2 + w^2] más simple que Abs [q + Iw]? ¿Estás seguro de que tu expectativa de que FullSimplify haga esta 'simplificación' es una expectativa sensata? Además, al pensarlo un poco más, el título de su pregunta está en desacuerdo con su pregunta. –
Puedo ejecutar el comando 'Series' en' Sqrt' pero no en 'Abs'. – shadesofdarkred
Puede probar 'ComplexExpand'. Por ejemplo 'ComplexExpand [Abs [q + I w]]' produce 'Sqrt [q^2 + w^2]' – Heike