This question is a follow-up on my earlier question regarding the diagonalization of skew-symmetric matrices. I am interested in diagonalizing a skew-symmetric matrix, having elements that are only real-valued. Is there a way to ensure that the eigenvectors returned are themselves real-valued? I am wanting to use these eigenvectors to diagonalize a separate matrix that commutes with my skew-symmetric one. This separate matrix, let's call it K, is purely real valued, and I want to keep the problem within a real vector space. My skew-symmetric matrix,
B = [ ...
0 0 -1 0 0 0 0 0 0 0 0 0; ...
0 0 0 -1 0 0 0 0 0 0 0 0; ...
1 0 0 0 0 0 0 0 0 0 0 0; ...
0 1 0 0 0 0 0 0 0 0 0 0; ...
0 0 0 0 0 0 0 0 0 0 0 0; ...
0 0 0 0 0 0 0 0 0 0 0 0; ...
0 0 0 0 0 0 0 -1 0 -1 0 0; ...
0 0 0 0 0 0 1 0 0 0 -1 0; ...
0 0 0 0 0 0 0 0 0 0 0 -1; ...
0 0 0 0 0 0 1 0 0 0 -1 0; ...
0 0 0 0 0 0 0 1 0 1 0 0; ...
0 0 0 0 0 0 0 0 1 0 0 0];
and when I use the techniques described in the linked post, I get eigenvectors,
>> sym(round(U_B,2))
ans =
[ 0, 71i/100, 0, 0, 0, 0, 0, 0, 71i/100, 0, 0, 0]
[ 0, 0, -71/100, 0, 0, 0, 0, 0, 0, 0, -71/100, 0]
[ 0, 71/100, 0, 0, 0, 0, 0, 0, -71/100, 0, 0, 0]
[ 0, 0, 71i/100, 0, 0, 0, 0, 0, 0, 0, -71i/100, 0]
[ 0, 0, 0, 0, 0, 0, 0, -1i, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, -1i, 0, 0, 0, 0, 0, 0]
[ 1/2, 0, 0, 0, 0, 0, -71i/100, 0, 0, 0, 0, -1/2]
[-1i/2, 0, 0, 0, 71i/100, 0, 0, 0, 0, 0, 0, -1i/2]
[ 0, 0, 0, -71/100, 0, 0, 0, 0, 0, -71/100, 0, 0]
[-1i/2, 0, 0, 0, -71i/100, 0, 0, 0, 0, 0, 0, -1i/2]
[ -1/2, 0, 0, 0, 0, 0, -71i/100, 0, 0, 0, 0, 1/2]
[ 0, 0, 0, 71i/100, 0, 0, 0, 0, 0, -71i/100, 0, 0]
But this is no good for my purposes, because I want to use these to block-diagonalize the matrix real-valued K:
>> sym(round(K,2))
ans =
[-3/2, -1/2, 0, 0, 0, 0, 0, 0, -1/2, 0, 0, -1/2]
[-1/2, -3/2, 0, 0, 0, 0, 0, 0, 1/2, 0, 0, 1/2]
[ 0, 0, -3/2, -1/2, 0, 0, 0, 0, 1/2, 0, 0, -1/2]
[ 0, 0, -1/2, -3/2, 0, 0, 0, 0, -1/2, 0, 0, 1/2]
[ 0, 0, 0, 0, -1, -1, 1, -1, 0, 1, 1, 0]
[ 0, 0, 0, 0, -1, -1, -1, 1, 0, -1, -1, 0]
[ 0, 0, 0, 0, 1, -1, -1/2, -1/2, 0, 1/2, 3/2, 0]
[ 0, 0, 0, 0, -1, 1, -1/2, -1/2, 0, -3/2, -1/2, 0]
[-1/2, 1/2, 1/2, -1/2, 0, 0, 0, 0, -1, 0, 0, 0]
[ 0, 0, 0, 0, 1, -1, 1/2, -3/2, 0, -1/2, 1/2, 0]
[ 0, 0, 0, 0, 1, -1, 3/2, -1/2, 0, 1/2, -1/2, 0]
[-1/2, 1/2, -1/2, 1/2, 0, 0, 0, 0, 0, 0, 0, -1]
but I don't want this to make K complex, as it does:
>> sym(round(U_B'*K*U_B,2))
ans =
[-2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, -3/2, -1i/2, - 1/2 - 1i/2, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 1i/2, -3/2, 1/2 - 1i/2, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, - 1/2 + 1i/2, 1/2 + 1i/2, -1, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 1, -141/100, 1, 141/100, 0, 0, 0, 0]
[ 0, 0, 0, 0, -141/100, -1, -141/100, -1, 0, 0, 0, 0]
[ 0, 0, 0, 0, 1, -141/100, 1, 141/100, 0, 0, 0, 0]
[ 0, 0, 0, 0, 141/100, -1, 141/100, -1, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, -3/2, 1/2 - 1i/2, -1i/2, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 1/2 + 1i/2, -1, 1/2 - 1i/2, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 1i/2, 1/2 + 1i/2, -3/2, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2]
0 Comments
Sign in to comment.