% test_Gershgorin.m
%
% function iflag_main = test_Gershgorin(A);
%
% This MATLAB m-file tests Gershgorin's theorem
% for an input real square matrix A.
%
% K. Beers. MIT ChE. 6/27/2002
function iflag_main = test_Gershgorin(A);
iflag_main = 0;

if(size(A,1) ~= size(A,2))
    error('A is not square');
end

% First, make the figure for the complex
% domain, and add the points for the diagonal
% components.
figure;
hold on;
for k=1:size(A,1)
    plot(A(k,k),0,'o');
end

% Now, add the circles for the off-diagonal elements.
theta = linspace(0,2*pi,100);
theta_cos = cos(theta);
theta_sin = sin(theta);
for k=1:size(A,1)
    row_k_abs = abs(A(k,:));
    rk = sum(row_k_abs) - abs(A(k,k));
    x = A(k,k) + rk*theta_cos;
    y = rk*theta_sin;
    plot(x,y,'--');
end
axis equal;
xlabel('Re(\lambda)');
ylabel('Im(\lambda)');
title('Test of Gershgorin''s theorem');
 
% Now, calculate the eigenvalues.
iflag_main = 1;
eig_val = eig(A);
for k=1:length(eig_val)
    plot(real(eig_val(k)),imag(eig_val(k)),'d');
end
gtext('O are diagonal elements, diamonds are eigenvalues');

return;
