format short e n = 200; A = randn(n); f = randn(n,1); m = 20; k = 6; % % uncomment one and only one of the following selections % which = 'LR'; % select largest real part % which = 'SR'; % select smallest real part % which = 'LM'; % select largest magnitude % A = A+A'; which = 'LA'; % select largest algebraic % A = A+A'; which = 'SA'; % select smallest algebraic t = eig(A); [V,R,ritz] = Iram_Cnv(A,t,which,k,m,f); Resid__Ritz = [norm(A*V - V*R) norm(ritz)] tr = eig(R); k1 = length(tr); % switch which case {'LR', 'LA'} % sort for largest real part % [s,ii] = sort(-real(t)); t = t(ii); [s,ii] = sort(-real(tr)); tr = tr(ii); case {'SR', 'SA'} % sort for smallest real part % [s,ii] = sort(real(t)); t = t(ii); [s,ii] = sort(real(tr)); tr = tr(ii); case {'LM'} % sort for largest magnitude % [s,ii] = sort(-abs(t)); t = t(ii); [s,ii] = sort(-abs(tr)); tr = tr(ii); end eigA__eigR__diff = [ t(1:k1) tr abs(abs(t(1:k1)) - abs(tr))]