**petsc-master 2019-07-18**

# KSPLSQR

This implements LSQR
### Options Database Keys

### Notes

Supports non-square (rectangular) matrices.
This varient, when applied with no preconditioning is identical to the original algorithm in exact arithematic; however, in practice, with no preconditioning
due to inexact arithematic, it can converge differently. Hence when no preconditioner is used (PCType PCNONE) it automatically reverts to the original algorithm.

With the PETSc built-in preconditioners, such as ICC, one should call KSPSetOperators(ksp,A,A'*A)) since the preconditioner needs to work
for the normal equations A'*A.

Supports only left preconditioning.

For least squares problems wit nonzero residual A*x - b, there are additional convergence tests for the residual of the normal equations, A'*(b - Ax), see KSPLSQRConvergedDefault().

### References

**1. ** -The original unpreconditioned algorithm can be found in Paige and Saunders, ACM Transactions on Mathematical Software, Vol 8, 1982.

In exact arithmetic the LSQR method (with no preconditioning) is identical to the KSPCG algorithm applied to the normal equations.
The preconditioned variant was implemented by Bas van't Hof and is essentially a left preconditioning for the Normal Equations. It appears the implementation with preconditioner
track the true norm of the residual and uses that in the convergence test.

### Developer Notes

How is this related to the KSPCGNE implementation? One difference is that KSPCGNE applies
the preconditioner transpose times the preconditioner, so one does not need to pass A'*A as the third argument to KSPSetOperators().

### See Also

KSPCreate(), KSPSetType(), KSPType (for list of available types), KSP, KSPSolve(), KSPLSQRConvergedDefault(), KSPLSQRSetComputeStandardErrorVec(), KSPLSQRGetStandardErrorVec(), KSPLSQRSetExactMatNorm()

### Level

beginner

### Location

src/ksp/ksp/impls/lsqr/lsqr.c
### Examples

src/ksp/ksp/examples/tutorials/ex27.c.html

Index of all KSP routines

Table of Contents for all manual pages

Index of all manual pages