function Gerschgorin(A)

%GERSCHGORIN berechnet die Gerschgorin-Kreise einer Matrix
%
%  GERSCHGORIN(A) berechnet fuer eine gegebene Matrix A
%  die Eigenwerte und Gerschgorin-Kreise nach Spalten
%  und stellt diese graphisch dar.
%
%  See also: eig

% (p)+(c) 2008 Jens-Peter M. Zemke / Anleitung LAII

[n,k] = size(A);
circle = exp(linspace(0,2*pi,300)*i);
hold off;

% Berechnung und Plot der Eigenwerte von A
eigA = eig(A);
plot(real(eigA),imag(eigA),'r+');
hold on;

% Berechnung des Vektors der Diagonalelemente
m = diag(A);
% Berechnung der Radien
r = sum(abs(A-diag(m)));

for j = 1:n
  % Berechnung des jten Gerschgorin-Kreises
  Sj = m(j)+r(j)*circle;
  % Plot des jten Gerschgorin-Kreises
  plot(real(Sj),imag(Sj),'b-');
end

% Beschriftung des Plots
title('Gerschgorin-Kreise')
xlabel('Realteil der Eigenwerte')
ylabel('Imaginaerteil der Eigenwerte')
legend('Eigenwerte','Gerschgorin-Kreise')

% Kreise sollten als solche erkennbar sein ;-)
axis equal
