cg, a Python code which implements a simple version of the conjugate gradient (CG) method for solving a system of linear equations of the form A*x=b, suitable for situations in which the matrix A is positive definite (only real, positive eigenvalues) and symmetric.


The computer code and data files made available on this web page are distributed under the MIT license


cg is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

cg_rc, a Python code which implements the conjugate gradient (CG) method for solving a positive definite sparse linear system A*x=b, using reverse communication (RC).

gmgsolve, a Python code which can apply one step of the V-cycle of the geometric multigrid method, by Mike Sussman.

jacobi, a Python code which implements the Jacobi iteration for solving symmetric positive definite (SPD) systems of linear equations.

solve, a Python code which demonstrates how Gauss elimination can be used to solve a simple system of linear equations A*x=b.

test_mat, a Python code which defines test matrices, some of which have known determinants, eigenvalues and eigenvectors, inverses and so on.

wathen, a Python code which compares storage schemes (full, banded, sparse triplet, sparse) and solution strategies (A\x, Linpack, conjugate gradient) for linear systems involving the Wathen matrix, which can arise when solving a problem using the finite element method (FEM).


  1. Frank Beckman,
    The Solution of Linear Equations by the Conjugate Gradient Method,
    in Mathematical Methods for Digital Computers,
    edited by John Ralston, Herbert Wilf,
    Wiley, 1967,
    ISBN: 0471706892,
    LC: QA76.5.R3.
  2. Jonathan Shewchuk,
    An introduction to the conjugate gradient method without the agonizing pain, Edition 1.25, August 1994.

Source Code:

Last revised on 20 January 2020.