Click or drag to resize
GenMinRes Class
Linear system solver using the restarted Generalized Minimum Residual (GMRES) method.
Inheritance Hierarchy
SystemObject
  Imsl.MathGenMinRes

Namespace: Imsl.Math
Assembly: ImslCS (in ImslCS.dll) Version: 6.5.2.0
Syntax
[SerializableAttribute]
public class GenMinRes

The GenMinRes type exposes the following members.

Constructors
  NameDescription
Public methodGenMinRes
GMRES linear system solver constructor.
Top
Methods
  NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetGuess
Returns the initial guess of the solution.
Public methodGetHashCode
Serves as a hash function for a particular type.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodGetVectorProducts
Returns the user-supplied functions for the inner product and, optionally, the norm used in the Gram-Schmidt implementations.
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodSetGuess
Sets the initial guess of the solution.
Public methodSetVectorProducts
Sets the user-supplied functions for the inner product and, optionally, the norm to be used in the Gram-Schmidt implementations.
Public methodSolve
Generate an approximate solution to Ax=b using the Generalized Residual Method.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Properties
  NameDescription
Public propertyIterations
The actual number of GMRES iterations used.
Public propertyMaxIterations
The maximum number of iterations allowed.
Public propertyMaxKrylovDim
The maximum Krylov subspace dimension.
Public propertyMethod
The implementation method to be used.
Public propertyPreconditionerSolves
The total number of GMRES right preconditioner solves.
Public propertyProducts
The total number of GMRES matrix-vector products used.
Public propertyRelativeError
The stopping tolerance.
Public propertyResidualNorm
The final residual norm, {\Vert b-Ax \Vert}_2.
Public propertyResidualUpdating
The residual updating method to be used.
Top
Remarks

GenMinRes implements restarted GMRES to generate an approximate solution to  Ax = b . It is based on GMRES by Homer Walker (1988).

The GMRES method begins with an approximate solution x_0 and an initial residual r_0 = b-Ax_0. At iteration m, a correction z_m is determined in the Krylov subspace

 {\kappa}_m (\nu)=\rm{span}(\nu,A\nu,\ldots,A^{m-1}\nu )
\nu = r_0 which solves the least squares problem
\min_{z \in \kappa_m(r_0)}{\Vert b-A(x_0 + z) \Vert}_2
Then at iteration m,  x_m = x_0 + z_m .

There are four distinct GMRES implementations, selectable through property Method. The first Gram-Schmidt implementation is essentially the original algorithm by Saad and Schultz (1986). The second Gram-Schmidt implementation, developed by Homer Walker and Lou Zhou, is simpler than the first implementation. The least squares problem is constructed in upper-triangular form and the residual vector updating at the end of a GMRES cycle is cheaper. The first Householder implementation is algorithm 2.2 of Walker (1988), but with more efficient correction accumulation at the end of each GMRES cycle. The second Householder implementation is algorithm 3.1 of Walker (1988). The products of Householder transformations are expanded as sums, allowing most work to be formulated as large scale matrix-vector operations.

The Gram-Schmidt implementations are less expensive than the Householder, the latter requiring about twice as many computations beyond the coefficient matrix/vector products. However, the Householder implementations may be more reliable near the limits of residual reduction. See Walker (1988) for details. Issues such as the cost of coefficient matrix/vector products, availability of effective preconditioners, and features of particular computing environments may serve to mitigate the extra expense of the Householder implementations.

See Also