How can I return real-valued eigenvectors from diagonalization?
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (1)
Christine Tobler
il 23 Ott 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 Commenti
Vedere anche
Categorie
Scopri di più su Linear Algebra in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!