function GersgorinKorok(A)
  %{
  GersgorinKorok(A)
  
  Kiírja a megadott A mátrix Gersgorin-köreinek középpontjait és sugarait, 
  majd véletlen szinezéssel föl is rajzolja õket. Mivel a középpontok vagy a
  körvonalak fedhetik egymást, az ábrán néha a vártnál (n darab) kevesebbet látunk.
  
  Ha A nem négyzetes, vagy nem numerikus típusú mátrix, a függvény
  hibajezéssel leáll.
  
  Bemenõ paraméter
  
      A:      négyzetes, numerikus típusú mátrix 
  %}
  [nA,mA] = size(A);
  if nA ~= mA || !isnumeric(A)
    error('Az A mátrix nem négyzetes!');
  endif
  
  Kozeppontok = zeros(nA,2); 
  Sugarak     = zeros(nA,1);
  for k = 1:nA
    Kozeppontok(k,1) = real(A(k,k));
    Kozeppontok(k,2) = imag(A(k,k));  % Így komplex mátrixokra is mûködik
    Sugarak(k)       = sum(abs(A(k,:))) - abs(A(k,k));
  endfor
  Kozeppontok
  Sugarak  
  
  % Véletlen szinezés a körökhöz
  mycolors = zeros(nA,3);     
  for k= 1:nA
    mycolors(k,1) = rand();
    mycolors(k,2) = rand();
    mycolors(k,3) = rand();
  endfor

  %% A Gersgorin körök és középpontjaik kirajzolása
  hold on;
  
  X_LO = min(Kozeppontok(:,1) - Sugarak(:)) - 1;
  X_HI = max(Kozeppontok(:,1) + Sugarak(:)) + 1;
  Y_LO = min(Kozeppontok(:,2) - Sugarak(:)) - 1;
  Y_HI = max(Kozeppontok(:,2) + Sugarak(:)) + 1;
  xlim([X_LO X_HI]);
  ylim([X_LO X_HI]);
  plot(X_LO:X_HI,zeros(1,length(X_LO:X_HI)),'k-');
  for k =1:nA
    t = 0:pi/100:2*pi;    % Így már elég sima körvonalat kapunk
    x = Sugarak(k)*cos(t) + Kozeppontok(k,1);
    y = Sugarak(k)*sin(t) + Kozeppontok(k,2);
    % a körök fedhetik egymást, ekkor csak egy látszik!
    plot(x,y, 'color', mycolors(k,:), 'linewidth',3);
    % a középpontok fedhetik egymást, ekkor csak egy látszik!
    plot(Kozeppontok(k,1),Kozeppontok(k,2),'linewidth',4,'color',mycolors(k,:),'+');
    pause(1)
  endfor

endfunction