2011-12-19 4 views
7

나는 (아름다운) 다항식 x^4 - 10x^2 + 1을 가지고 노는 중이 었습니다. 무슨 봐 :Mathematica FullSimplify [Sqrt [5 + 2 Sqrt [6]]는 Sqrt [2] + Sqrt [3]를 산출하지만 FullSimplify [-Sqrt [5 + 2 Sqrt [6]]는 단순화되지 않는다.

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]과 같다.
그러나 Mathematica의 FullSimplifySqrt[5-2 Sqrt[6]]을 단순화하지 않습니다.

질문 : 방정식을 대수적으로 풀려면 다른보다 특수화 된 함수를 사용해야합니까? 그렇다면 어느 것입니까?

+5

LeafCount [5 - 2 SQRT [6] (13)를 제공하고, LeafCount [SQRT [3] - Sqrt [2]]는 또한 13을 제공합니다. Simplify를 위해 ComplexityFunction을 사용해보십시오. Mathematica는 기본적으로 LeafCount를 사용합니다. – Nasser

+0

@ NasserM.Abbasi _GuideBook for Symbolics_에서 : "ComplexityFunction' 옵션 설정에서'Automatic'의 의미는 기본적으로'LeafCount'를 최소화하는 것입니다. 숫자에는 예외가 있습니다." 예를 들어'Simplify [Exp [Log [12] + 13 (Sqrt [2] + 1)^2 Log [6] - 2 * 13 Sqrt [2] Log [6]]]'는 정수가 아닙니다. 'Integer'는'LeafCount'가 '1'입니다. –

+0

질문에 대답을 포함 할 필요가 없습니다 .-) –

답변

9

실제로 제공, Solve는 최대 모든 뿌리를 간단하지 않습니다

enter image description here

FullSimplify 후 처리 단계는 두 개의 뿌리를 단순화하고 훼손되지 않은 다른 두 잎 :

enter image description here

같은 초기에 Roots으로 발생합니다

enter image description here

, 나는 것으로, 그 이유를 가정한다 : 충분히 이상한

enter image description here

을 지금 FullSimplify 모든 뿌리를 단순화 기본값이 ComplexityFunction 인 경우 위에 중첩 된 radic으로 작성된 일부 솔루션 다른 것들보다 의미가 더 간단합니다.

BTW FunctionExpand 이들 라디칼을 처리하는 방법을 알고있다 : SQRT @

enter image description here

enter image description here

+0

+1 'FunctionExpand' - 정수의'Sqrt' 또는'Power' 함수를 사용하지 않을 것입니다 ... – Simon

+1

@Sjoerd 감사합니다. Mathematica는 수학 자체와 거의 같습니다. 일단 당신이 그것을 마스터했다고 생각하면 새로운 산이 수평선에 나타납니다. –

+0

@Sjoerd v.7 FullSimplify [Solve [x^4 - 10 x^2 + 1 == 0, x]]는 {{x -> Sqrt [2] - Sqrt [3]}, {x - v.8에서 2 개의 급진적 인 근사가있는 동안, [2] + Sqrt [2] + Sqrt [2] + Sqrt [3]}, {x - FullSimplified로 남아 있지 않습니다. 이상하게. Mathematica 황금 배지 축하합니다! – Artes

7
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]}} 
+0

니스 분명히 작동하지만 ComplexityFunction -> (StringLength [ToString [InputForm [# 1]]] &)]을 매번 추가해야합니다. 당신은 정답을 원합니다. –

관련 문제