For a repeated eigenvalue only one eigenvctor is being returned
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Karl
il 17 Mar 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 Commenti
Più risposte (2)
Bruno Luong
il 17 Mar 2024
Modificato: Bruno Luong
il 17 Mar 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 Commento
Bruno Luong
il 17 Mar 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
il 14 Apr 2024
Spostato: Bruno Luong
il 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 Commenti
Vedere anche
Categorie
Scopri di più su Linear Algebra in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!