from Extra-diagonal modifications of eigenvalues by Emanuele Natale
The program plots the trajectories of eigenvalues of a matrix from its diagonal

ploteig(A,T)
%author: Emanuele Natale
%email: natema89@gmail.com
%date: 6 febrary 2011
%Version number: 1.0

%Ispirandta alla dimostrazione del secondo teorema di Gershgorin,
%otteniamo la seguente funzione "ploteig" che ci disegna le traiettorie
%degli autovalori sul piano complesso al variare del peso dei coefficienti
%extradiagonali.

%(Il parametro T in imput definisce la finezza del calcolo della
%traiettoria)
function ploteig(A,T)

%Eseguiamo un test preliminare sulla correttezza dell'input

error(nargchk(nargin,2,2));

if size(A,1) ~= size(A,2)
    error('Matrix should be square');
    return;
end

%Decomponiamo A nelle matrici B dei coefficienti diagonali e C dei
%coefficienti extradiagonali

n=size(A,1);

B=zeros(n);
C=zeros(n);

for i=1:n
    B(i,i)=A(i,i);
end

for i=1:n
    
    for j=1:n
        if i ~= j
        C(i,j)=A(i,j);
        end
    end
        
end

%Grafichiamo la traiettoria degli autovalori, segnando con 'ro'
%gli autovalori di B e con '+' gli autovalori di A

eigens=eig(B);
for i=1:n
    plot(real(eigens(i)),imag(eigens(i)),'ro');
    hold on;  
end

for k=1:(T-1)
    
    eigens=eig(B+(k/T)*C);
    for i=1:n
        plot(real(eigens(i)),imag(eigens(i)),'-');
    hold on;
    end
end

graph=plot(real(eig(A)),imag(eig(A)),'+');

legend(graph,'Final Eigenvalues');
grid;
hold off;
axis equal;
end

Contact us