# cg

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.

### Languages:

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).

### Reference:

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.