% 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;