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