How can I return real-valued eigenvectors from diagonalization?
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (1)
Christine Tobler
am 23 Okt. 2020
I don't think it's possible: Looking at the eigenvalues and eigenvectors of B,
>> diag(D)
ans =
0.0000 + 2.0000i
0.0000 + 1.0000i
0.0000 + 1.0000i
0.0000 + 1.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 - 1.0000i
0.0000 - 1.0000i
0.0000 - 1.0000i
0.0000 - 2.0000i
>> U(:, 1)
ans =
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.5000i
0.5000 + 0.0000i
0.0000 + 0.0000i
0.5000 + 0.0000i
0.0000 - 0.5000i
0.0000 + 0.0000i
There is just one eigenvalue 2i, and its eigenvector contains both purely real and purely imaginary elements. Since the eigenvalue is not multiple, we can't choose a different basis of the eigenspace, and no scaling will turn a vector real unless its already a real vector with all elements just rotated by the same imaginary number.
But maybe you could go the opposite direction, compute the eigendecomposition of the real symmetric matrix K, and apply those eigenvector matrices to B? That would leave the matrix B real and skew-symmetric.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!