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
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.

更多回答(1 个)

John D'Errico
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
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
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 CenterFile Exchange 中查找有关 Linear Algebra 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by