2011-12-19 34 views
7

Estaba jugando con el (hermoso) polinomio x^4 - 10x^2 + 1. Mira lo que sucede:Mathematica FullSimplify [Sqrt [5 + 2 Sqrt [6]]] produce Sqrt [2] + Sqrt [3] pero FullSimplify [-Sqrt [5 + 2 Sqrt [6]]] no se simplifica, ¿por qué?

In[46]:= f[x_] := x^4 - 10x^2 + 1 
      a = Sqrt[2]; 
      b = Sqrt[3]; 
      Simplify[f[ a + b]] 
      Simplify[f[ a - b]] 
      Simplify[f[-a + b]] 
      Simplify[f[-a - b]] 
Out[49]= 0 
Out[50]= 0 
Out[51]= 0 
Out[52]= 0 

In[53]:= Solve[f[x] == 0, x] 
Out[53]= {{x->-Sqrt[5-2 Sqrt[6]]},{x->Sqrt[5-2 Sqrt[6]]},{x->-Sqrt[5+2 Sqrt[6]]},{x->Sqrt[5+2 Sqrt[6]]}} 
In[54]:= Simplify[Solve[f[x] == 0, x]] 
Out[54]= {{x->-Sqrt[5-2 Sqrt[6]]},{x->Sqrt[5-2 Sqrt[6]]},{x->-Sqrt[5+2 Sqrt[6]]},{x->Sqrt[5+2 Sqrt[6]]}} 
In[55]:= FullSimplify[Solve[f[x] == 0, x]] 
Out[55]= {{x->Sqrt[2]-Sqrt[3]},{x->Sqrt[5-2 Sqrt[6]]},{x->-Sqrt[5+2 Sqrt[6]]},{x->Sqrt[2]+Sqrt[3]}} 

Sqrt[5-2 Sqrt[6]] es igual a Sqrt[3]-Sqrt[2].
Sin embargo, Mathematica FullSimplify no simplifica Sqrt[5-2 Sqrt[6]].

Pregunta: ¿Debo usar otras funciones más especializadas para resolver algebraicamente la ecuación? ¿Si es así, Cuál?

+5

LeafCount @ sqrt [5 - 2 sqrt [6]] da 13, y LeafCount [sqrt [3] - Sqrt [2]] también da 13. Trate de usar ComplexityFunction for Simplify para personalizar lo que se considera más simple para usted. Creo que Mathematica usa LeafCount por defecto. – Nasser

+0

@ NasserM.Abbasi De la _GuideBook para Symbolics_: "El significado de' Automatic' en la configuración de la opción 'ComplexityFunction' es básicamente minimizar el' LeafCount'. Algunas excepciones se hacen para los números. " Por ejemplo, 'Simplify [Exp [Log [12] + 13 (Sqrt [2] + 1)^2 Log [6] - 2 * 13 Sqrt [2] Log [6]]]' no es un 'Entero ' , aunque 'Integer's tiene' LeafCount' '1'. –

+0

No es necesario incluir la respuesta en la pregunta ;-) –

Respuesta

9

De hecho, Solve no simplifica todas las raíces al máximo:

enter image description here

Un paso FullSimplify postprocesado simplifica dos raíces y deja a otros dos vírgenes :

enter image description here

mismo ocurre inicialmente con Roots:

enter image description here

lo suficientemente extraño, ahora FullSimplify simplifica todas las raíces:

enter image description here

La razón de esto es, supongo, que para el valor predeterminado ComplexityFunction algunas de las soluciones escritas arriba en als son, en cierto sentido, más simples que los demás.

Por cierto FunctionExpand sabe cómo hacer frente a los radicales:

enter image description here

enter image description here

+0

+1 para 'FunctionExpand' - No hubiera pensado usarlo en' Sqrt' o 'Power' funciones de enteros ... – Simon

+1

@Sjoerd Gracias, muy educando. Mathematica es casi como las matemáticas en sí mismas. Una vez que piensas que lo has dominado, nuevas montañas para escalar aparecen en el horizonte. –

+0

@Sjoerd En v.7 FullSimplify [Resolver [x^4 - 10 x^2 + 1 == 0, x]] produce {{x -> Sqrt [2] - Sqrt [3]}, {x -> - Sqrt [2] + Sqrt [3]}, {x -> -Sqrt [5 + 2 Sqrt [6]]}, {x -> Sqrt [2] + Sqrt [3]}} mientras que en v.8 dos radicales siguen siendo no Simplificados. Es bastante extraño. ¡Felicidades por la insignia dorada de Mathematica! – Artes

7
FullSimplify[ Solve[x^4-10x^2+1==0,x] 
, 
    ComplexityFunction -> 
    (StringLength[ToString[ 
     InputForm[#1]]] &)] 

da

{{x -> Sqrt[2] - Sqrt[3]}, {x -> -Sqrt[2] + Sqrt[3]}, {x -> -Sqrt[2] - 
Sqrt[3]}, {x -> Sqrt[2] + Sqrt[3]}} 
+0

Bueno, obviamente funciona pero no creo que deba agregar ComplexityFunction -> (StringLength [ToString [ InputForm [# 1]]] &)] cada vez quieres una respuesta correcta. –

Cuestiones relacionadas