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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear Algebra 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!