Effacer les filtres
Effacer les filtres

Eigenvectors are not orthogonal for some skew-symmetric matrices, why?

17 vues (au cours des 30 derniers jours)
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?

Réponse acceptée

Roger Stafford
Roger Stafford le 1 Mai 2015
Modifié(e) : Walter Roberson le 20 Sep 2018
Your matrix A is "defective" , meaning that its eigenvalues are not all distinct. In fact, it has only three distinct eigenvalues. Consequently the space of eigenvectors does not fully span six-dimensional vector space. See the Wikipedia article:
What you are seeing is not an error on Matlab's part. It is a mathematical property of such matrices. You cannot achieve what you call "correct eigen-decomposition" for such matrices.
  8 commentaires
Rahul Singh
Rahul Singh le 2 Mai 2015
@Roger and Star: Thanks a lot.
Lorenzo
Lorenzo le 20 Sep 2018
Modifié(e) : Lorenzo le 20 Sep 2018
That matrix is not defective (1i times the matrix is hermitian and so it has a complete set of eigenvectors), it has however degenerate eigenvalues and this is the reason why U fails to be unitary. You should use schur in this case, which always return a unitary matrix

Connectez-vous pour commenter.

Plus de réponses (2)

Rahul Singh
Rahul Singh le 2 Mai 2015
Is there any other way (other than Matlab) of computing orthogonal eigenvectors for this particular skew-symmetric matrix ? I tried NumPy package also, which gave me same results as Matlab.
  4 commentaires
Rahul Singh
Rahul Singh le 3 Mai 2015
Are the eigenvector pairs still orthogonal?
Roger Stafford
Roger Stafford le 3 Mai 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.

Connectez-vous pour commenter.


Christine Tobler
Christine Tobler le 20 Sep 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

Catégories

En savoir plus sur Linear Algebra dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by