[SciPy-User] preconditioned conjugate gradient

Dominique Orban dominique.orban at gmail.com
Thu Feb 25 12:53:37 EST 2010


On Thu, Feb 25, 2010 at 5:38 PM, <scipy-user-request at scipy.org> wrote:

>
> ---------- Forwarded message ----------
> From: Jake VanderPlas <jakevdp at gmail.com>
> To: scipy-user at scipy.org
> Date: Tue, 23 Feb 2010 11:14:53 -0800
> Subject: [SciPy-User] preconditioned conjugate gradient
> Hello,
> I'm looking for a method to solve a sparse linear equation A*x=b,
> where A is a NxN symmetric scipy.sparse.LinearOperator object, and b
> is a 1D numpy vector.  The obvious choice would be something like
> scipy.sparse.linalg.cg.  The problem is, the condition number of A is
> very large - on order of 10^26.  From a search through relevant
> literature, I know that matlab's preconditioned conjugate gradient
> (pcg) routine works well for the type of problem I'm dealing with.  Is
> there any similar routine in scipy?
> I've looked at scipy.sparse.linalg.eigen.lobpcg, which seems to be
> along the lines of what I need.  I could use this to find the inverse,
> but that would involve computing an NxN dense matrix of eigenvectors,
> which will cause memory problems in my case.  Any help would be
> appreciated!
>   -Jake
>

Note that your matrix A must also be (positive or negative) definite, or the
conjugate gradient method may break down. If A is indefinite, you will
probably be safer with MINRES, CRAIG or SYMMLQ. As another reader pointed
out, you still need to supply a good preconditioner. Often, the application
suggests the kind of preconditioner that works well.

-- 
Dominique
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20100225/24f9c32b/attachment.html>


More information about the SciPy-User mailing list