Effacer les filtres
Effacer les filtres

Not showing the right set of linearly independent eigenvectors

2 vues (au cours des 30 derniers jours)
G0pie
G0pie le 21 Juil 2017
Commenté : Matt J le 22 Juil 2017
I am using matlab R2013a.
Consider the matrix
A = [0 1 1 1 0;
0 0 0 0 1;
0 0 0 0 0;
0 0 0 0 0;
0 0 0 0 0];
Clearly, it's rank is 2; so nulity is 3. But while computing all its eigenvectors, it's showing as if it has only one linearly independent eigenvector. Theoretically, it has [1;0;0;0;0],[0;1;-1;0;0],[0;1;0;-1;0] as three linearly independent eigenvectors corresponding to the 0 eigenvalue.
So why is it so with the command [vA,d]=eig(A)?
  1 commentaire
Matt J
Matt J le 21 Juil 2017
Modifié(e) : Matt J le 21 Juil 2017
Most intriguing!

Connectez-vous pour commenter.

Réponse acceptée

Ari
Ari le 21 Juil 2017
Modifié(e) : Ari le 21 Juil 2017
To compute eigenvalues, the eig function tries to minimize A*V - V*D to numerical precision of double. Since eig uses floating point computation this can only approach zero, and not exactly zero (try printing A*V-V*D). In case of defective matrices this behavior is expected. You can try using Symbolic Math as a workaround as below
B = sym(A);
[V,D] = eig(B);
This will give you correct eigenvalues and eigenvectors but it will come with a computational penalty for large matrices. MATLAB documentation on eigenvalues of defective matrices can be found here.

Plus de réponses (1)

John D'Errico
John D'Errico le 21 Juil 2017
Modifié(e) : Walter Roberson le 22 Juil 2017
Commonly known as a...
Your matrix lacks a complete set of eigenvectors.
The classic example is:
[v,d] = eig([1 1;0 1])
v =
1 -1
0 2.22044604925031e-16
d =
1 0
0 1
The good news is with these defective matrices, you can send it back to the person you bought it from for a full refund, if this is done within 90 days, and you have a valid sales receipt. Did you get the extended warranty? :)
  4 commentaires
John D'Errico
John D'Errico le 22 Juil 2017
Lets see. It is clerly a defective matrix.
syms lambda
det(A-eye(5)*lambda)
ans =
-lambda^5
So det tells us the matrix has only zero eigenvalues, with apparent multiplicity 5, even though there are only 3 eigenvectors. null will give us the correct eigenvectors.
null(A - 0*eye(5))
ans =
0 0 1
0.57735 -0.57735 0
-0.78868 -0.21132 0
0.21132 0.78868 0
0 0 0
The eig algorithm gets hung up though.
Matt J
Matt J le 22 Juil 2017
It is strange that eig() gets hung up when, in other cases, it handles eigenvalue multiplicity very gracefully. For a symmetric matrix with multiple eigenvalues, for example, all the independent eigenvectors are always found.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by