For a repeated eigenvalue only one eigenvctor is being returned

for my matrix
A = [1 1 4 0; 1 1 1 -1; 0 0 3 1; 0 0 3 1], it is showing there is a repeated eigenvalue of 0, which is correct however the eigenvectors from when i do [V,D] = eig(A) for the 0's are both [-1; 1; 0; 0] when i have calculated there is a second one of [4/3; 0; -1/3; 1] just confused to why it is not outputting the eigenvectors.

 Accepted Answer

Another approach, which gives the additional eigenvector that you calculated, is to obtain the eigenvector(s), x, for eigenvalue v as solutions of (A-v*I)*x = 0:
format rational
A = [1 1 4 0; 1 1 1 -1; 0 0 3 1; 0 0 3 1];
display_eigenvectors(A)
eigenvalue: 0.000000 eigenvector(s): -1 4/3 1 0 0 -1/3 0 1 eigenvalue: 2.000000 eigenvector(s): 1 1 0 0 eigenvalue: 4.000000 eigenvector(s): 3/2 1/2 1 1
function display_eigenvectors(A)
%DISPLAY_EIGENVECTORS Display eigenvectors for square matrix A.
% The eigenvector(s), x, for each eigenvalue, v, are obtained as
% a rational orthnormal basis of the null space of (A-v*I), where
% I is the unit matrix with the same size as A. The eigenvectors
% are then solutions of (A-v*I)*x = 0.
I = eye(size(A));
for v=unique(eig(A))'
fprintf(1,'\neigenvalue: %f\n eigenvector(s):\n',v)
disp(null(A-v*I,'rational'))
end
end

More Answers (2)

Indeed in case of eigenvalue with multiplicity > 1; the problemie is numerical challenging and MATLAB might fail to find the correct eigen vectors as with your case.

1 Comment

The issue is that MATLAB numerical error will make matrix reduces to Jordan form and think that 0 has incorrectly 1-dimentional eigenspace and not 2 due to tiny numerical error.
Symbolic eig would work since there is no roundoff error
A = [1 1 4 0; 1 1 1 -1; 0 0 3 1; 0 0 3 1];
[V,D] = eig(sym(A))
V = 
D = 

Sign in to comment.

UPDATE: From the discussion here using EIG with 2 arguments can do the trick and overcome the issue and return an independent eigen vector associate with 0
A = [1 1 4 0; 1 1 1 -1; 0 0 3 1; 0 0 3 1];
[V,D] = eig(A,eye(size(A)));
V4 = V(:,4)
V4 = 4x1
0.6667 0.6667 -0.3333 1.0000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
A*V4
ans = 4x1
0 0 0 0
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

Categories

Find more on Linear Algebra in Help Center and File Exchange

Products

Release

R2023b

Asked:

on 17 Mar 2024

Moved:

on 14 Apr 2024

Community Treasure Hunt

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

Start Hunting!