Not showing the right set of linearly independent eigenvectors
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentar
Akzeptierte Antwort
Ari
am 21 Jul. 2017
Bearbeitet: Ari
am 21 Jul. 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.
0 Kommentare
Weitere Antworten (1)
John D'Errico
am 21 Jul. 2017
Bearbeitet: Walter Roberson
am 22 Jul. 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 Kommentare
John D'Errico
am 22 Jul. 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
am 22 Jul. 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.
Siehe auch
Kategorien
Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!