qmr(5)
NAME
qmr -- quasi-minimal residual algoritm
SYNOPSIS
template <class Matrix, class Vector, class Preconditioner1,
class Preconditioner2, class Real>
int qmr (const Matrix &A, Vector &x, const Vector &b,
const Preconditioner1 &M1, const Preconditioner2 &M2,
int &max_iter, Real &tol);
EXAMPLE
- The simplest call to 'qmr' has the folling form:
- int status = qmr(a, x, b, EYE, EYE, 100, 1e-7);
DESCRIPTION
qmr solves the unsymmetric linear system Ax = b using the the quasiminimal residual method.
The return value indicates convergence within max_iter (input) iterations (0), or no convergence within max_iter iterations (1). Upon successful return, output arguments have the following values:
x approximate solution to Ax = b
- max_iter
- the number of iterations performed before the tolerance was reached
- tol the residual after the final iteration
- A return value of 1 indicates that the method did not reach the specified convergence tolerance in the maximum numbefr of iterations. A return value of 2 indicates that a breackdown associated with rho occurred. A return value of 3 indicates that a breackdown associated with beta occurred. A return value of 4 indicates that a breackdown associated with gamma occurred. A return value of 5 indicates that a breackdown associated with delta occurred. A return value of 6 indicates that a breackdown associated with epsilon occurred. A return value of 7 indicates that a breackdown associated with xi occurred.
NOTE
qmr is an iterative template routine.
qmr follows the algorithm described on p. 24 in @quotation Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods, 2nd Edition, R. Barrett, M. Berry, T. F. Chan, J. Demmel, J. Donato, J. Dongarra, V. Eijkhout, R. Pozo, C. Romine, H. Van der Vorst, SIAM, 1994, ftp.netlib.org/templates/templates.ps. @end quotation
- The present implementation is inspired from IML++ 1.2 iterative method library, http://math.nist.gov/iml++.