Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Cannot solve 3x3 Eigensystem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg68618] Re: Cannot solve 3x3 Eigensystem
  • From: Peter Pein <petsie at dordos.net>
  • Date: Sun, 13 Aug 2006 05:52:26 -0400 (EDT)
  • References: <ebhi7q$12a$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

kdittmer schrieb:
> The result of
> 
> FullSimplify[Eigensystem[{{a1, b1, 0}, {b1, a2, b2}, {0, b2, a3}}, 
> Cubics-> True], {b1, b2, a1, a2, a3} \[Element] Reals]
> 
> is unfortunately containing Root[].
> 
> How do i get my exact solution?
> 

Hello,

1.) Root objects _are_ exact.
2.) To get the redical representation, use ToRadicals:

In[1]:=
rt = Root[1 + #1^2 + #1^3 & , 1];
ToRadicals[rt]
Out[2]=
(1/3)*(-1 - (2/(29 - 3*Sqrt[93]))^(1/3) - ((1/2)*(29 - 3*Sqrt[93]))^(1/3))

but then, the time used by FullSimplify is wasted, because FullSimplify 
uses RootReduce, to get Root[]s:

In[3]:=
eqn = First[rt][x] == 0;
s1 = FullSimplify[Solve[eqn]]
Out[4]=
{{x -> Root[1 + #1^2 + #1^3 & , 1]}, {x -> Root[1 + #1^2 + #1^3 & , 2]},
   {x -> Root[1 + #1^2 + #1^3 & , 3]}}


If you don't like Roots, use Simplify instead:

In[5]:=
s2 = Simplify[Solve[eqn]]
Out[5]=
{{x -> (1/3)*(-1 - (2/(29 - 3*Sqrt[93]))^(1/3) - ((1/2)*(29 - 
3*Sqrt[93]))^(1/3))},
   {x -> (1/12)*(-4 + (2 - 2*I*Sqrt[3])*(2/(29 - 3*Sqrt[93]))^(1/3) +
       2^(2/3)*(1 + I*Sqrt[3])*(29 - 3*Sqrt[93])^(1/3))},
   {x -> (1/12)*(-4 + (2 + 2*I*Sqrt[3])*(2/(29 - 3*Sqrt[93]))^(1/3) +
       2^(2/3)*(1 - I*Sqrt[3])*(29 - 3*Sqrt[93])^(1/3))}}

or block RootReduce:

In[6]:=
<< "Developer`"
ClearCache[]
s3 = Block[{RootReduce}, FullSimplify[Solve[eqn]]]
Out[8]=
<omitted; same as Out[5]>

In this case the result is the same as using Simplify:

In[9]:=
s2 === s3
Out[9]=
True


Hope that helps,

   Peter


  • Prev by Date: Re: benchmark...why don't you send it back?
  • Next by Date: Postscipt fonts in graphics
  • Previous by thread: Re: Cannot solve 3x3 Eigensystem
  • Next by thread: Scientific Notation on Y-axis of ListPlots