function exercise_1_6_4() % % % Written by: % -- % John L. Weatherwax 2006-12-11 % % email: wax@alum.mit.edu % % Please send comments and especially bug reports to the % above email address. % %----- close all; m = 32; A = delsq(numgrid('S',m)); issparse(A) size(A) fprintf( 'The size of delsq = (%d,%d)\n', size(A,1), size(A,2) ); fprintf( 'Number of non zeros of the matrix delsq = %d (=%f percent)\n', nnz(A), nnz(A)/prod(size(A)) ); % Part (a): % figure; spy(A); title( 'delsq' ); tic, R = chol(A); t=toc; fprintf('Time to directly Cholesky factor delsq = %f\n', t ); fprintf( 'Number of non zeros of the Cholesky factor of delsq = %d (=%f percent)\n', nnz(R), nnz(R)/prod(size(A)) ); figure; spy(R); title( 'Cholesky factor of delsq' ); pause; close all; % Part (b): % p = randperm(size(A,1)); arnd = A(p,p); figure; spy(arnd); title( 'Randomized version of delsq' ); tic, R = chol(arnd); t=toc; fprintf('Time to factor randomly Cholesky factor delsq = %f\n', t ); fprintf( 'Number of non zeros of the Cholesky factor of delsq = %d (=%f percent)\n', nnz(R), nnz(R)/prod(size(A)) ); figure; spy(R); title( 'Cholesky factor of randomized delsq' ); pause; close all; % Part (c): % p = symrcm(A); arcm = A(p,p); figure; spy(arcm); title( 'Reverse Cuthill-McKee ordered version of delsq' ); tic, R = chol(arcm); t=toc; fprintf('Time to factor the reverse Cuthill-McKee ordered Cholesky factor delsq = %f\n', t ); fprintf( 'Number of non zeros of the Cholesky factor of delsq = %d (=%f percent)\n', nnz(R), nnz(R)/prod(size(A)) ); figure; spy(R); title( 'Cholesky factor of reverse cuthill-McKee ordered delsq' ); pause; close all; % Part (d): % %p = symmmd(A); p = symamd(A); ammd = A(p,p); figure; spy(ammd); title( 'Minimum degree ordering of delsq' ); tic, R = chol(ammd); t=toc; fprintf('Time to factor the minimum degree ordering Cholesky factor delsq = %f\n', t ); fprintf( 'Number of non zeros of the Cholesky factor of delsq = %d (=%f percent)\n', nnz(R), nnz(R)/prod(size(A)) ); figure; spy(R); title( 'Cholesky factor of the minimum degree ordering of delsq' ); pause; close all; % Part (e): % Anest = delsq(numgrid('N',m)); issparse(Anest) size(Anest) fprintf( 'The size of delsq(nested diss.) = (%d,%d)\n', size(Anest,1), size(Anest,2) ); fprintf( 'Number of non zeros of the matrix delsq(nested diss.) = %d (=%f percent)\n', nnz(Anest), nnz(Anest)/prod(size(Anest)) ); figure; spy(Anest); title( 'delsq(nested diss.)' ); tic, R = chol(Anest); t=toc; fprintf('Time to directly Cholesky factor delsq(nested diss.)= %f\n', t ); fprintf( 'Number of non zeros of the Cholesky factor of delsq(nested diss.) = %d (=%f percent)\n', nnz(R), nnz(R)/prod(size(Anest)) ); figure; spy(R); title( 'Cholesky factor of delsq(nested diss.)' ); return;