if i%p <> 0: primes[nof] = i nof += 1 if nof >= nofPrimes: break i = i+2 return primes n = 20000 primes = get_primes(n) A = spmatrix.ll_mat_sym(n, n*8) d = 1 while d < n: for i in range(d, n): A[i,i-d] = 1.0 d *= 2 for i in range(n): A[i,i] = primes[i] A = A.to_sss() K = precon.ssor(A) b = Numeric.zeros(n, 'd'); b[0] = 1.0 x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.minres(A, b, x, 1e-16, n, K) print info, iter, relres print '%.16e' % x[0]
nof += 1 if nof >= nofPrimes: break i = i + 2 return primes n = 20000 primes = get_primes(n) A = spmatrix.ll_mat_sym(n, n * 8) d = 1 while d < n: for i in range(d, n): A[i, i - d] = 1.0 d *= 2 for i in range(n): A[i, i] = primes[i] A = A.to_sss() K = precon.ssor(A) b = Numeric.zeros(n, 'd') b[0] = 1.0 x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.minres(A, b, x, 1e-16, n, K) print info, iter, relres print '%.16e' % x[0]
b = Numeric.arange(n).astype(Numeric.Float) x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.pcg(A, b, x, 1e-6, 1000) print 'pcg, K_none: ', info, iter, relres, resid(A, b, x) x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.pcg(A, b, x, 1e-6, 1000, K_diag) print 'pcg, K_diag: ', info, iter, relres, resid(A, b, x) x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.pcg(A, b, x, 1e-6, 1000, K_jac) print 'pcg, K_jac: ', info, iter, relres, resid(A, b, x) x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.pcg(A, b, x, 1e-6, 1000, K_ssor) print 'pcg, K_ssor: ', info, iter, relres, resid(A, b, x) x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.minres(A, b, x, 1e-6, 1000) print 'minres, K_none: ', info, iter, relres, resid(A, b, x) x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.minres(A, b, x, 1e-6, 1000, K_diag) print 'minres, K_diag: ', info, iter, relres, resid(A, b, x) x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.minres(A, b, x, 1e-6, 1000, K_jac) print 'minres, K_jac: ', info, iter, relres, resid(A, b, x) x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.minres(A, b, x, 1e-6, 1000, K_ssor) print 'minres, K_ssor: ', info, iter, relres, resid(A, b, x) x = Numeric.zeros(n, 'd') info, iter, relres = itsolvers.qmrs(A, b, x, 1e-6, 1000) print 'qmrs, K_none: ', info, iter, relres, resid(A, b, x) x = Numeric.zeros(n, 'd')