Mathematica FullSimplify [Sqrt [5 + 2 Sqrt [6]]]得到Sqrt [2] + Sqrt [3],但FullSimplify [-Sqrt [5 + 2 Sqrt [6]]]未简化,为什么?

nil*_*ock 7 wolfram-mathematica

我正在玩(美丽的)多项式x^4 - 10x^2 + 1.看看会发生什么:

 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]}}
Run Code Online (Sandbox Code Playgroud)

Sqrt[5-2 Sqrt[6]]等于Sqrt[3]-Sqrt[2].
但是,Mathematica FullSimplify并没有简化Sqrt[5-2 Sqrt[6]].

问题:我应该使用其他更专业的函数来代数求解方程式吗?如果是这样,哪一个?

Sjo*_*ies 9

实际上,Solve并没有简化所有根到最大:

在此输入图像描述

一个FullSimplify后处理步骤简化了两个根和叶两个人不变:

在此输入图像描述

同样最初发生在Roots:

在此输入图像描述

奇怪的是,现在FullSimplify简化了所有的根源:

在此输入图像描述

其原因是,我认为,对于默认情况ComplexityFunction,上面在嵌套字根中编写的一些解决方案在某种意义上比其他解决方案更简单.

BTW FunctionExpand知道如何处理这些激进派:

在此输入图像描述

在此输入图像描述


Rol*_*tig 7

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

{{x -> Sqrt[2] - Sqrt[3]}, {x -> -Sqrt[2] + Sqrt[3]}, {x -> -Sqrt[2] -
 Sqrt[3]}, {x -> Sqrt[2] + Sqrt[3]}}
Run Code Online (Sandbox Code Playgroud)