http://www.stanford.edu/group/SOL/software/lsqr.html
LSQR: Sparse Equations and Least Squares
- AUTHORS: Chris Paige, Michael Saunders.
- CONTRIBUTORS: James Howse, Michael Friedlander, John Tomlin, Miha Grcar, Jeffery Kline, Dominique Orban.
- CONTENTS: Implementation of a conjugate-gradient type method for solving sparse linear equations and sparse least-squares problems:where the matrix may be square or rectangular (over-determined or under-determined), and may have any rank. It is represented by a routine for computing and for given vectors and .
The scalar is a damping parameter. If , the solution is "regularized" in the sense that a unique solution always exists, and is bounded.
The method is based on the Golub-Kahan bidiagonalization process. It is algebraically equivalent to applying MINRES to the normal equation but has better numerical properties, especially if is ill-conditioned.
NOTE: LSQR reduces monotonically (where if ). If you are likely to terminate iterations early, LSMR may be preferable because it reduces both and monotonically.
If is symmetric, it should be more efficient to use SYMMLQ, MINRES, or MINRES-QLP.
- REFERENCES:
C. C. Paige and M. A. Saunders, LSQR: An algorithm for sparse linear equations and sparse least squares, TOMS 8(1), 43-71 (1982).
C. C. Paige and M. A. Saunders, Algorithm 583; LSQR: Sparse linear equations and least-squares problems, TOMS 8(2), 195-209 (1982). - RELEASE:
f77 and Matlab files are well tested.
C, f90, C++ versions are Beta.
Windows DLL and .NET (C#) versions are Beta.
- Fortran 77 files
- Matlab files
24 Dec 2010: Function handles supported.
04 Sep 2011: Documentation slightly updated. - C files 1: Contributed Sep 1999 by James Howse (jhowse@lanl.gov), LANL.
An elaborate implementation with memory management. - C files 2: Contributed Aug 2007 by Michael Friedlander, UBC.
A more direct line-by-line translation from f77. - Fortran 90 files: Second-generation f90 implementation. Separate modules are used for LSQR, Check routines, and example Test problems.
Contributed Sep 2007 by Michael Saunders (saunders@stanford.edu).
Revised 24 Oct 2007, 19 Dec 2008. - C++ files: Contributed Oct 2007 by John Tomlin (tomlin@yahoo-inc.com), Yahoo! Research.
C++ translation of C files in lsqr/c/clsqr1.zip. - Windows DLL and .NET files: Contributed Oct 2007 by Miha Grcar (miha.grcar@ijs.si), Jozef Stefan Institute.
Windows DLL and .NET (C#) wrappers for LSQR based on the C++ version of LSQR. - Nov 2009: Python files contributed by Jeffery Kline.
- Python files Contributed by Dominique Orban (dominique.orban@gerad.ca).