close all; clc; clear; a_value = 2; b_value = 1; % Problem EPage 45 % for n=100:100:500 A_full = diag( a_value*ones(1,n) ) + diag( b_value*ones(1,n-1), +1 ) + diag( b_value*ones(1,n-1), -1 ); rowpos = [ 1:n, 1:(n-1), 2:n ]; colpos = [ 1:n, 2:n, 1:(n-1) ]; values = [ a_value*ones(1,n), b_value*ones(1,n-1), b_value*ones(1,n-1) ]; A_sparse = sparse( rowpos, colpos, values, n, n ); tic; ev_full = eig(A_full); t_full = toc; tic; ev_sparse = eig(A_sparse); t_sparse = toc; ev_full = sort( ev_full ); ev_sparse = sort( ev_sparse ); ev_exact = a_value + 2 * b_value * cos( pi * (1:n) / (n+1) ); ev_exact = sort( ev_exact ).'; err_full = norm( ev_exact - ev_full ); err_sparse = norm( ev_exact - ev_sparse ); %disp( sprintf('n= %5d, time full= %10.6f (err= %10.6f), time sparse= %10.6f (err= %10.6f)', n, t_full, err_full, t_sparse, err_sparse) ); disp( sprintf('n= %5d, time full= %10.6f, time sparse= %10.6f', n, t_full, t_sparse) ); end