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.