File Exchange

image thumbnail

pcg.m with 'null' and 'flex' options

version 1.1 (5.42 KB) by Andrew Knyazev
Preconditioned Conjugate Gradients handles homogeneous equations and nonsymmetric preconditioning

2 Downloads

Updated 15 May 2015

View Version History

View License

PCG Preconditioned Conjugate Gradients Method is a replacement of the standard built-in PCG code. Two new options are implemented: 'flex' and 'null'. The 'flex' option changes the standard PCG algorithm into the flexible one. It allows using sophisticated preconditioning, not limited to the traditional fixed SPD preconditioners, as required by the standard PCG.
With the 'null' option, the code attempts to compute a nontrivial solution X of the homogeneous system of linear equations A*X=0. Here, the coefficient matrix A must be Hermitian and positive semi-definite. If the null-space of A is more than one dimensional, i.e. A*X=0 allows multiple linear independent solutions, the code still converges to one solution, namely, the projection of the initial guess to the null-space.

Without the new options, the new PCG code works exactly the same way as the latest revision of the built-in PCG.

Cite As

Andrew Knyazev (2021). pcg.m with 'null' and 'flex' options (https://www.mathworks.com/matlabcentral/fileexchange/50-pcg-m-with-null-and-flex-options), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (4)

Andrew Knyazev

Retta Moges Ashagrie: what is pcgNull on line 213?

Re: Sorry, it is a typo. Please substitute "nullPCG" for "pcgNull"

Andrew Knyazev

The 'flex' option allows non-symmetric preconditioning in PCG, as justified and tested in https://doi.org/10.1016/j.procs.2015.05.241

Retta Moges Ashagrie

what is pcgNull on line 213?
Undefined function or variable 'pcgNull'.

Error in pcg (line 213)
elseif norm(x0)==0 && pcgNull

Justin Nyenyezi

MATLAB Release Compatibility
Created with R11
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!