Conjugate Gradient Method

Version 1.3.0.0 (1.49 KB) by Yi Cao
Conjugate Gradient Method to solve a system of linear equations
14.5K Downloads
Updated 6 Feb 2014

View License

The conjugate gradient method aims to solve a system of linear equations, Ax=b, where A is symmetric, without calculation of the inverse of A. It only requires a very small amount of membory, hence is particularly suitable for large scale systems.

It is faster than other approach such as Gaussian elimination if A is well-conditioned. For example,

n=1000;
[U,S,V]=svd(randn(n));
s=diag(S);
A=U*diag(s+max(s))*U'; % to make A symmetric, well-contioned
b=randn(1000,1);
tic,x=conjgrad(A,b);toc
tic,x1=A\b;toc
norm(x-x1)
norm(x-A*b)

Conjugate gradient is about two to three times faster than A\b, which uses the Gaissian elimination.

Cite As

Yi Cao (2026). Conjugate Gradient Method (https://uk.mathworks.com/matlabcentral/fileexchange/22494-conjugate-gradient-method), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2013b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Systems of Linear Equations in Help Center and MATLAB Answers
Version Published Release Notes
1.3.0.0

To consider two trival cases.

1.2.0.0

change initial value to x=b. slightly faster.

1.1.0.0

update description

1.0.0.0