Mathematica FullSimplify [Sqrt [5 + 2 Sqrt [6]]] дает Sqrt [2] + Sqrt [3], но FullSimplify [-Sqrt [5 + 2 Sqrt [6]]] не упрощается, почему? - PullRequest
7 голосов
/ 20 декабря 2011

Я играл с (красивым) полиномом 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]}}

Sqrt[5-2 Sqrt[6]] равно Sqrt[3]-Sqrt[2].
Однако FullSimplify в Mathematica не упрощает Sqrt[5-2 Sqrt[6]].

Вопрос: Должен ли я использовать другие более специализированные функции для алгебраического решения уравнения? Если да, то какой?

Ответы [ 2 ]

9 голосов
/ 20 декабря 2011

Действительно, Solve не максимально упрощает все корни:

enter image description here

A FullSimplify шаг постобработки упрощает два корня и оставляет два других нетронутыми:

enter image description here

То же самое изначально происходит с Roots:

enter image description here

Достаточно странно, теперь FullSimplify упрощает все корни:

enter image description here

Причина этого, как я полагаю, в том, что для значения по умолчанию ComplexityFunction некоторые решения, написанные выше для вложенных радикалов, в некотором смысле проще, чем другие.

Кстати FunctionExpand знает, как бороться с этими радикалами:

enter image description here

enter image description here

7 голосов
/ 20 декабря 2011
FullSimplify[ Solve[x^4-10x^2+1==0,x]
, 
  ComplexityFunction -> 
   (StringLength[ToString[
      InputForm[#1]]] & )]

дает

{{x -> Sqrt[2] - Sqrt[3]}, {x -> -Sqrt[2] + Sqrt[3]}, {x -> -Sqrt[2] -
 Sqrt[3]}, {x -> Sqrt[2] + Sqrt[3]}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...