Preconditioner<T> Class

Represents a preconditioner that is to be applied to a sparse matrix by an iterative solver.

Definition

Namespace: Extreme.Mathematics.LinearAlgebra.IterativeSolvers.Preconditioners
Assembly: Extreme.Numerics (in Extreme.Numerics.dll) Version: 8.1.23
C#
public abstract class Preconditioner<T> : LinearOperator<T>
Inheritance
Object  →  LinearOperator<T>  →  Preconditioner<T>
Derived

Type Parameters

T

Remarks

The Preconditioner<T> 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<T> 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<T>. The built-in preconditioners are:

ClassDescription
IdentityPreconditioner<T>The preconditioner is an identity matrix. This is equivalent to not applying a preconditioner at all.
JacobiPreconditioner<T>The preconditioner is a diagonal matrix containing the inverse of the diagonal elements of the matrix.
IncompleteLUPreconditioner<T>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<T> and implement the SolveInto(TransposeOperation, Vector<T>, Vector<T>) method. Note that not all iterative solvers require the transpose solve.

Constructors

Preconditioner<T> Constructs a new Preconditioner<T>.

Properties

ColumnCount Gets the number of columns in the matrix.
(Inherited from LinearOperator<T>)
ColumnIndex Gets or sets the index of labels for the columns of the matrix.
(Inherited from LinearOperator<T>)
Preliminary
ElementType Gets the element type of the matrix.
(Inherited from LinearOperator<T>)
LinearOperator Gets the linear operator to which the Preconditioner<T> applies.
RowCount Gets the number of rows in the matrix.
(Inherited from LinearOperator<T>)
RowIndex Gets or sets the index of labels for the rows of the matrix.
(Inherited from LinearOperator<T>)
Preliminary

Methods

AddProductToVector Multiplies a Vector<T> by this instance and stores the result in a second vector of type DenseVector<T>.
(Inherited from LinearOperator<T>)
Obsolete.
EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
EstimateConditionNumber Calculates an estimate for the condition number of a matrix.
(Inherited from LinearOperator<T>)
FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object)
GetDeterminant Calculates the determinant of a matrix.
(Inherited from LinearOperator<T>)
GetHashCodeServes as the default hash function.
(Inherited from Object)
GetInverse() Calculates the inverse matrix..
(Inherited from LinearOperator<T>)
GetInverse(Boolean) Calculates the inverse of the factorized matrix.
(Inherited from LinearOperator<T>)
GetObjectData Populates a SerializationInfo with the data needed to serialize the target object.
(Inherited from LinearOperator<T>)
GetTypeGets the Type of the current instance.
(Inherited from Object)
IsSingular Gets a value indicating whether the matrix is singular.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(Matrix<T>) Solves the system of linear equations for the specified right-hand side matrix in the least squares sense.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(Vector<T>) Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(DenseMatrix<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense matrix in the least squares sense and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(DenseVector<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense vector in the least squares sense and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
LeastSquaresSolveInto(Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides in the least squares sense.
(Inherited from LinearOperator<T>)
LeastSquaresSolveInto(Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side in the least squares sense.
(Overrides LinearOperator<T>.LeastSquaresSolveInto(Vector<T>, Vector<T>))
MemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
Multiply(Matrix<T>)Applies the linear operator to a matrix.
(Inherited from LinearOperator<T>)
Multiply(Vector<T>)Applies the linear operator to a vector.
(Inherited from LinearOperator<T>)
Multiply(TransposeOperation, Matrix<T>) Multiplies a matrix on the left by this matrix.
(Inherited from LinearOperator<T>)
Obsolete.
Multiply(TransposeOperation, Vector<T>) Multiplies a vector on the left by this vector.
(Inherited from LinearOperator<T>)
Obsolete.
MultiplyAndAddAsLeftFactorCore Multiplies the matrix with a vector, adds the scaled result to another scaled vector, and returns the result.
(Overrides LinearOperator<T>.MultiplyAndAddAsLeftFactorCore(T, Vector<T>, T, TransposeOperation, Vector<T>, Vector<T>))
MultiplyAsLeftCore(TransposeOperation, Vector<T>, Vector<T>) Multiplies a vector by the linear operator and returns the result.
(Overrides LinearOperator<T>.MultiplyAsLeftCore(TransposeOperation, Vector<T>, Vector<T>))
MultiplyAsLeftCore(TransposeOperation, Matrix<T>, Matrix<T>) Multiplies a matrix by the linear operator and returns the result.
(Inherited from LinearOperator<T>)
MultiplyTranspose(Matrix<T>)Applies the transpose of the linear operator to a matrix.
(Inherited from LinearOperator<T>)
MultiplyTranspose(Vector<T>)Applies the (conjugate) transpose of the linear operator to a vector.
(Inherited from LinearOperator<T>)
Rank() Returns the numerical rank of a matrix.
(Inherited from LinearOperator<T>)
Rank(T) Returns the numerical rank of a matrix using the specified tolerance.
(Overrides LinearOperator<T>.Rank(T))
Solve(Matrix<T>) Solves the system of linear equations for the specified right-hand side matrix.
(Inherited from LinearOperator<T>)
Solve(Vector<T>) Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperator<T>)
Solve(DenseMatrix<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense matrix and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
Solve(DenseVector<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense vector and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
SolveInto(Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperator<T>)
SolveInto(Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side.
(Inherited from LinearOperator<T>)
SolveInto(TransposeOperation, Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side.
(Overrides LinearOperator<T>.SolveInto(TransposeOperation, Vector<T>, Vector<T>))
SolveInto(TransposeOperation, Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperator<T>)
SolveTranspose(Matrix<T>) Solves the transposed system of linear equations for the specified right-hand side matrix.
(Inherited from LinearOperator<T>)
SolveTranspose(Vector<T>) Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperator<T>)
SolveTranspose(DenseMatrix<T>, Boolean) Solves the transposed system of linear equations for the specified right-hand side dense matrix and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
SolveTranspose(DenseVector<T>, Boolean) Solves the transposed system of linear equations for the specified right-hand side dense vector and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
SolveTransposeInto(Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperator<T>)
SolveTransposeInto(Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side.
(Inherited from LinearOperator<T>)
ToStringReturns a string that represents the current object.
(Inherited from Object)

See Also