Represents a preconditioner that is to be applied to a sparse matrix by an iterative solver.
SystemObject Extreme.Mathematics.LinearAlgebraLinearOperator Extreme.Mathematics.LinearAlgebra.IterativeSolvers.PreconditionersPreconditioner Extreme.Mathematics.LinearAlgebra.IterativeSolvers.PreconditionersIdentityPreconditioner Extreme.Mathematics.LinearAlgebra.IterativeSolvers.PreconditionersIncompleteLUPreconditioner Extreme.Mathematics.LinearAlgebra.IterativeSolvers.PreconditionersJacobiPreconditioner
Extreme.Numerics.Net40 (in Extreme.Numerics.Net40.dll) Version: 6.0.16073.0 (6.0.17114.0)
public abstract class Preconditioner : LinearOperator
Public MustInherit Class Preconditioner
public ref class Preconditioner abstract : public LinearOperator
type Preconditioner =
The Preconditioner type exposes the following members.
The Preconditioner class serves as the abstract base class for classes that implement
preconditioners in the context of iterative sparse solvers.
A preconditioner is am operator that approximates the matrix of the system of equations,
but solving equations with the preconditioner in the left-hand-side is less expensive than solving the original system.
When used with an iterative solver, the result is equivalent to solving a simpler system, often but not always leading to faster convergence.
The Preconditioner class is an abstract base class and cannot be instantiated directly. Instead, either use one of the
built-in preconditioners, or implement your own preconditioner by inheriting from Preconditioner.
The built-in preconditioners are:
|IdentityPreconditioner||The preconditioner is an identity matrix. This is equivalent to not applying a preconditioner at all.|
|JacobiPreconditioner||The preconditioner is a diagonal matrix containing the inverse of the diagonal elements of the matrix.|
|IncompleteLUPreconditioner||The preconditioner is an incomplete LU factorization of the matrix with no fill-in, also known as ILU(0).|
To define your own preconditioner, inherit from Preconditioner and implement the Multiply(Vector) and
MultiplyTranspose(Vector) methods. Note that not all iterative solvers require the transpose solve.
Supported in: 5.x, 4.x