74 views (last 30 days)

Show older comments

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?

Roger Stafford
on 1 May 2015

Edited: Walter Roberson
on 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.

Lorenzo
on 20 Sep 2018

Rahul Singh
on 2 May 2015

Roger Stafford
on 3 May 2015

Christine Tobler
on 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

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

Start Hunting!