Extracting eigenvectors of symbolic matrices
- To: mathgroup at smc.vnet.net
- Subject: [mg111952] Extracting eigenvectors of symbolic matrices
- From: carlos at colorado.edu
- Date: Sat, 21 Aug 2010 04:18:10 -0400 (EDT)
For a research project in progress I need to find eigenvalues
and eigenvectors of real symbolic matrices of moderate size:
3 through 12. These matrices are what I have labeled
"S-orthogonal": they are similar to orthogonal matrices
so all of their eigenvalues are on the unit circle. Here is a
simple example. Given =F6 (angle in radians)
c2=Cos[2*=F6]; s2=Sin[2*=F6];
T={{1+c2,1-c2,s2},{1-c2,1+c2,-s2},
{-2*s2,2*s2,2*c2}}/2;
(This one is actually orthogonal).
Eigenvalues: ev={1,c2-I*s2,c2+I*s2}. Spectral decomposition:
T=X D YT, where D=DiagonalMatrix[ev] and
YT={{1,1,0},{-I,I,1},{I,-I,1}}; X={{2,I,-I},{2,-I,I},{0,2,2}}/4;
are left (transposed) and right eigenvectors. For this kind of n x n
matrices I was able to get symbolic eigenvalues and eigenvectors
up to n=8. It failed for this one (n=10)
c=Cos[=F6]; s=Sin[=F6]; c3=Cos[3*=F6];
s3=Sin[3*=F6]; c5=Cos[5*=F6]; s5=Sin[5*=F6];
f1=10*c +5*c3+c5; f2=2*c -c3-c5; f3=2*c -3*c3+c5; f4=c +2*c3+c5;
f5=c -c5; f6=2*c -c3-c5; f7=c3 -c5; f8=2*c +3*c3+3*c5;
f9=6*c +7*c3+3*c5; f10=c3 -c5; f11=2*c -5*c3+3*c5; f12=c -3*c3+2*=
c5;
f13=4*c +3*c3+c5; g1=2*s +3*s3+s5; g2=2*s +s3-s5; g3=10*s -5*s3+s=
5;
g4=s3+s5; g5=s-s5; g6=s-2*s3+s5; g7=2*s-3*s3+3*s5; g8=6*s-7*s3+=
3*s5;
g9=2*s+5*s3+3*s5; g10=s+3*s3+2*s5; g11=4*s-3*s3+s5;
T={{f1, g1, 2*f6, 4*g2, 4*f6, 2*g2, f3, g3, g1, f3},
{-3*g1, f9, 6*g4, 12*f5, -12*g5, 6*f10, -g8, 3*f3,-3*f6,
3*g2},
{ 3*f6, -g9, 2*f8, 12*g4,-12*f10, 2*g7, -f11, 3*g2, 3*g2,
3*f6},
{ -g2, f6, -2*g4, 4*f4, -4*g6,-2*f10, -g2, f6, -f3,
g1},
{ f6, g2,-2*f10, 4*g6, 4*f4, 2*g4, f6, g2, -g1, -
f3},
{-3*g2, -f11, -2*g7,-12*f10, -12*g4, 2*f8, g9, 3*f6,
3*f6,-3*g2},
{ 3*f3, g8, 6*f10, 12*g5, 12*f5, -6*g4, f9,
3*g1,-3*g2,-3*f6},
{ -g3, f3, -2*g2, 4*f6, -4*g2, 2*f6, -g1, f1, f3, -
g1},
{-2*g1,-2*f6, -4*g5, -4*f12, 4*g10, 4*f5, 2*g2,
2*f3,2*f13,-2*g11},
{ 2*f3,-2*g2, 4*f5, -4*g10, -4*f12, 4*g5,-2*f6, 2*g1,2*g11,
2*f13}}/16;
Its characteristic polynomial is
C(=EB)=((1+=EB^2-2*=EB*Cos[=F6])^2*(1+=EB^2-2*=EB*Cos[3*=F6])^2*(1+=EB^2-=
2*=EB*Cos[5*=F6]);
so Eigenvalues should be able to extract the eigenvalues in
closed form, but it didnt.
Here is the question: suppose I get the 10 eigenvalues directly by
solving C(=EB)=0 with Solve. Is there an "eigenvector capturer"
in Mathematica that given the original symbolic matrix and
one root at a time, returns a right eigenvector?
(For left eigenvectors, transpose the matrix). Note: I tried
a "perturbed" inverse iteration using LinearSolve and
Series, but it seems hopelessly slow.