|
|
|
|
| Category:itl,algorithms |
Component type:function |
|
 |
| Prototype
|
template <class Matrix, class Vector, class VectorB, class Precond1, class Precond2, class Iteration> int qmr(const Matrix &A, Vector &x, const VectorB &b, const Precond1 &M1, const Precond2 &M2, Iteration& iter) ;
|
 |
| Description
|
This routine solves the unsymmetric linear system Ax = b using the
Quasi-Minimal Residual method.
| return value | meaning |
| 0 | convergence within maximum iterations |
| 1 | no convergence after maximum iterations |
| 2 | breakdown in rho |
| 3 | breakdown in beta |
| 4 | breakdown in gamma |
| 5 | breakdown in delta |
| 6 | breakdown in ep |
| 7 | breakdown in xi |
See: R. W. Freund and N. M. Nachtigal, A quasi-minimal residual method for
non-Hermitian linear systems, Numerical Math., 60(1991), pp. 315-339
|
 |
| Definition
|
|
qmr.h
|
 |
| Preconditions
|
|
|
 |
| Complexity
|
|
|
 |
| Example
|
In qmr.cc:
Matrix A(5, 5);
// Fill matrix...
dense1D<Type> x(A.nrows(), Type(0));
dense1D<Type> b(A.ncols());
for (dense1D<Type>::iterator i=b.begin(); i!=b.end(); i++)
*i = 1.;
//SSOR preconditioner
SSOR<Matrix> precond(A);
//iteration
noisy_iteration<double> iter(b, max_iter, 1e-6);
//qmr algorithm
qmr(A, x, b, precond.left(), precond.right(), iter);
|
 |
| Notes
|
|
|
 |
| See also
|
|
|