Eigenvectors are not orthogonal for some skew-symmetric matrices, why?
Mostra commenti meno recenti
0 -0.5000 0 0 0 0.5000
0.5000 0 -0.5000 0 0 0
0 0.5000 0 -0.5000 0 0
A = 0 0 0.5000 0 -0.5000 0
0 0 0 0.5000 0 -0.5000
-0.5000 0 0 0 0.5000 0
The above matrix is skew-symmetric. When I use [U E] = eig(A), to find the eigenvectors of the matrix. These eigenvectors must be orthogonal, i.e., U*U' matix must be Identity matrix. However, I am getting U*U' as
0.9855 -0.0000 0.0410 -0.0000 -0.0265 0.0000
-0.0000 0.9590 0.0000 0.0265 -0.0000 0.0145
0.0410 0.0000 0.9735 -0.0000 -0.0145 0.0000
-0.0000 0.0265 -0.0000 1.0145 0.0000 -0.0410
-0.0265 -0.0000 -0.0145 0.0000 1.0410 -0.0000
0.0000 0.0145 0.0000 -0.0410 -0.0000 1.0265
Here we can observe a substantial error. This happens for some other skew-symmetric matrices also. Why this large error is being observed and how do I get correct eigen-decomposition for all skew-symmetric matrices?
Risposta accettata
Più risposte (2)
Rahul Singh
il 2 Mag 2015
0 voti
4 Commenti
Rahul Singh
il 2 Mag 2015
Modificato: Rahul Singh
il 2 Mag 2015
Roger Stafford
il 2 Mag 2015
The adjusted U'*U and U*U' values using 'orth' are not significantly different on my computer. They differ only from the 6 x 6 identity matrix and from each other out at the 15-th or 16-th decimal place which is what can be expected from round-off errors. Correspondingly tiny imaginary parts are also present, again due to round-off errors. Are you sure you have like eigenvalues matched? Yours may have been given in a different order from mine.
Rahul Singh
il 3 Mag 2015
Roger Stafford
il 3 Mag 2015
Yes, all the eigenvectors come out orthogonal after that adjustment I described. The fact that U'*U gives the identity matrix implies that. You should be able to check that for yourself.
Christine Tobler
il 20 Set 2018
Since, as Lorenzo points out in a comment above, 1i*A is hermitian, you could apply eig to that matrix:
>> [U, D] = eig(1i*A);
>> D = D/1i;
>> norm(U'*U - eye(6))
ans =
1.4373e-15
>> norm(A*U - U*D)
ans =
7.8098e-16
1 Commento
"As of R2021a, eig will now detect if a matrix is skew-symmetric or skew-hermitian, and will return purely imaginary eigenvalues and orthogonal eigenvectors in that case. See the Release Notes. This does require the input to be exactly skew-hermitian, not just up to round-off (you can use ishermitian(A, 'skew') to check this)." Source
A = [ 0 -0.5000 0 0 0 0.5000
0.5000 0 -0.5000 0 0 0
0 0.5000 0 -0.5000 0 0
0 0 0.5000 0 -0.5000 0
0 0 0 0.5000 0 -0.5000
-0.5000 0 0 0 0.5000 0];
[U,D] = eig(A,'vector');
any(real(D))
norm(U'*U - eye(6))
norm(U*U' - eye(6))
Categorie
Scopri di più su Linear Algebra in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!