Not showing the right set of linearly independent eigenvectors
2 次查看(过去 30 天)
显示 更早的评论
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)?
采纳的回答
Ari
2017-7-21
编辑:Ari
2017-7-21
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 个评论
更多回答(1 个)
John D'Errico
2017-7-21
编辑:Walter Roberson
2017-7-22
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 个评论
John D'Errico
2017-7-22
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
2017-7-22
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.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!