For a repeated eigenvalue only one eigenvctor is being returned
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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.
0 Kommentare
Akzeptierte Antwort
Karl
am 17 Mär. 2024
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)
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
0 Kommentare
Weitere Antworten (2)
Bruno Luong
am 17 Mär. 2024
Bearbeitet: Bruno Luong
am 17 Mär. 2024
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 Kommentar
Bruno Luong
am 17 Mär. 2024
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))
Bruno Luong
am 14 Apr. 2024
Verschoben: Bruno Luong
am 14 Apr. 2024
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)
A*V4
0 Kommentare
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!