def minres(*args, **kwargs): return krylov.minres(*args, **kwargs)
nof += 1 if nof >= nofPrimes: break i = i+2 return primes n = 20000 print 'Generating first %d primes...' % n primes = get_primes(n) print 'Assembling coefficient matrix...' 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] = 1.0 * primes[i] A = A.to_sss() K = precon.ssor(A) print 'Solving linear system...' b = np.zeros(n); b[0] = 1.0 x = np.empty(n) info, iter, relres = minres(A, b, x, 1e-16, n, K) print info, iter, relres print '%.16e' % x[0]
b = np.arange(n).astype(np.Float) x = np.zeros(n, 'd') info, iter, relres = pcg(A, b, x, 1e-6, 1000) print 'pcg, K_none: ', info, iter, relres, resid(A, b, x) x = np.zeros(n, 'd') info, iter, relres = pcg(A, b, x, 1e-6, 1000, K_diag) print 'pcg, K_diag: ', info, iter, relres, resid(A, b, x) x = np.zeros(n, 'd') info, iter, relres = pcg(A, b, x, 1e-6, 1000, K_jac) print 'pcg, K_jac: ', info, iter, relres, resid(A, b, x) x = np.zeros(n, 'd') info, iter, relres = pcg(A, b, x, 1e-6, 1000, K_ssor) print 'pcg, K_ssor: ', info, iter, relres, resid(A, b, x) x = np.zeros(n, 'd') info, iter, relres = minres(A, b, x, 1e-6, 1000) print 'minres, K_none: ', info, iter, relres, resid(A, b, x) x = np.zeros(n, 'd') info, iter, relres = minres(A, b, x, 1e-6, 1000, K_diag) print 'minres, K_diag: ', info, iter, relres, resid(A, b, x) x = np.zeros(n, 'd') info, iter, relres = minres(A, b, x, 1e-6, 1000, K_jac) print 'minres, K_jac: ', info, iter, relres, resid(A, b, x) x = np.zeros(n, 'd') info, iter, relres = minres(A, b, x, 1e-6, 1000, K_ssor) print 'minres, K_ssor: ', info, iter, relres, resid(A, b, x) x = np.zeros(n, 'd') info, iter, relres = qmrs(A, b, x, 1e-6, 1000) print 'qmrs, K_none: ', info, iter, relres, resid(A, b, x) x = np.zeros(n, 'd')
break i = i + 2 return primes n = 20000 print 'Generating first %d primes...' % n primes = get_primes(n) print 'Assembling coefficient matrix...' 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] = 1.0 * primes[i] A = A.to_sss() K = precon.ssor(A) print 'Solving linear system...' b = np.zeros(n) b[0] = 1.0 x = np.empty(n) info, iter, relres = minres(A, b, x, 1e-16, n, K) print info, iter, relres print '%.16e' % x[0]