[Scipy-tickets] [SciPy] #385: iterative solver tolerance error

SciPy scipy-tickets@scipy....
Thu Mar 8 15:57:22 CST 2007


#385: iterative solver tolerance error
--------------------------+-------------------------------------------------
 Reporter:  wnbell        |       Owner:  somebody                       
     Type:  defect        |      Status:  new                            
 Priority:  normal        |   Milestone:                                 
Component:  scipy.linalg  |     Version:  devel                          
 Severity:  normal        |    Keywords:  iterative cg residual tolerance
--------------------------+-------------------------------------------------
 In the docs for CG the '''tol''' parameter pertains to the relative
 residual when in practice it seems related to the absolute residual.
 Consider the following test:

 {{{
 import scipy,numpy,scipy.sparse,scipy.linalg

 def poisson_problem(N):
     """
     Return a sparse CSC matrix for the 2d N*N poisson problem
     with standard 5-point finite difference stencil
     """
     D = 4*numpy.ones(N*N)
     T =  -numpy.ones(N*N)
     O =  -numpy.ones(N*N)
     T[N-1::N] = 0
     return scipy.sparse.spdiags([D,O,T,T,O],[0,-N,-1,1,N],N*N,N*N)


 A  = poisson_problem(100)
 b  = numpy.zeros(A.shape[0])
 x0 = 1e3*scipy.rand(A.shape[0])

 print "initial residual",scipy.linalg.norm(b - A*x0)
 x,info = scipy.linalg.iterative.cg(A,b,x0=x0,tol=1e-8)
 print "initial residual",scipy.linalg.norm(b - A*x0)
 print "final residual",scipy.linalg.norm(b - A*x)
 }}}

 Output:

 {{{
 initial residual 128502.741326
 initial residual 9.51887593104e-09
 final residual 9.51887593104e-09
 }}}


 Also, x0 is also overwritten in the process.  Is this the intended
 behavior?

-- 
Ticket URL: <http://projects.scipy.org/scipy/scipy/ticket/385>
SciPy <http://www.scipy.org/>
SciPy is open-source software for mathematics, science, and engineering.


More information about the Scipy-tickets mailing list