%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