Starting diary file diary-23-Apr-2018.txt A = grid5(10); spy(A) A A = (1,1) 4 (2,1) -1 (11,1) -1 (1,2) -1 (2,2) 4 (3,2) -1 ... (100,100) 4 n = length(A) n = 100 condest(A) ans = 69.8634 help eig ... [V,D] = eig(full(A)); d = diag(D) d = 0.1620 0.3985 0.3985 0.6350 0.7713 0.7713 1.0078 ... 7.6015 7.8380 d(n)/d(1) ans = 48.3742 size(A) ans = 100 100 b = rand(n,1); size(b) ans = 100 1 xx = A \ b; norm(A*xx - b) ans = 1.8217e-14 norm(A*xx - b) / norm(A,'fro') ans = 4.1149e-16 help pcg pcg Preconditioned Conjugate Gradients Method. ... [x,flag,relres,iter,resvec] = pcg(A,b,1e-8,2*n); norm(A*x-b) ans = 4.3046e-08 iter iter = 32 flag flag = 0 resvec resvec = 6.5469 10.5379 9.7603 7.2655 5.7331 ... 0.0000 semilogy(resvec / resvec(1)) lambda = linspace(.1,1,100); plot(lambda) length(lambda) ans = 100 A = randspd(lambda); size(A) ans = 100 100 condest(A) ans = 60.5807 cond(full(A)) ans = 10.0000 [x,flag,relres,iter,resvec] = pcg(A,b,1e-8,2*n); iter iter = 28 semilogy(resvec / resvec(1)) lambda = [.1 1 .5+randn(1,98)/100]; figure, plot(lambda) figure, hist(lambda,100) A = randspd(lambda); [x,flag,relres,iter,resvec] = pcg(A,b,1e-8,2*n); iter iter = 8 figure(1) hold on semilogy(resvec / resvec(1), 'r') load bcsstk08 A = BCSSTK08; n = length(A) n = 1074 b = rand(n,1); hold off [x,flag,relres,iter,resvec] = pcg(A,b,1e-8,2*n); iter iter = 2019 figure semilogy(resvec / resvec(1)) flag flag = 1 [x,flag,relres,iter,resvec] = pcg(A,b,1e-8,50000); semilogy(resvec / resvec(1)) condest(A) ans = 4.7262e+07 norm(A*x-b) ans = 1.5332e-07 xx = A \ b; norm(A*xx-b) ans = 1.0262e-11