% script: lec40alt.m % description: performs some preconditioning experiments with CG % using the preconditioned CG algorithm m = 1000 % try n = 5, 10, 50 n =5 x = zeros(m,1); x(2) = 1; x(101) = 1; A = toeplitz(x) + diag(0.5+(1:m).^2); condA = cond(A) b = ones(m,1); x = A\b; M = diag(diag(A)); condMinvA = cond(M\A) X = pcg(M,A,b,n); R = A*X - ones(m,n); r = zeros(n,1); s = r; for ii = 1:n, r(ii) = norm(R(:, ii)); end figure(1); plot(r); grid title('Residual Errors') normx = norm(x); relxerr = norm(X(:,n) - x)/normx E = (X - repmat(x,1,n))/normx; for ii = 1:n, r(ii) = norm(E(:, ii)); end figure(2); plot(r); title('Solution Errors')