Skip to content

MGroup.LinearAlgebra.Iterative.Preconditioning

Dimitris Tsapetis edited this page Apr 17, 2019 · 1 revision

IdentityPreconditioner

Implements the null object pattern in the contect of preconditioning. Use this class if you want to pass an MGroup.LinearAlgebra.Iterative.Preconditioning.IPreconditioner object without actually applying any preconditioning, e.g. for benchmarking an iterative algorithm. Using this preconditioner with PCG is equivalent to using CG, however the computational cost will be higher, since the operation z = inv(M) * r cannot be safely avoided; it just reduces to a vector copy. Authors: Serafeim Bakalakos

public class MGroup.LinearAlgebra.Iterative.Preconditioning.IdentityPreconditioner
    : IPreconditioner

Methods

Type Name Summary
void SolveLinearSystem(IVectorView rhsVector, IVector lhsVector) See .

IPreconditioner

Represents a matrix M such that inverse(M) is close to inverse(A) and inverse(M) * A has a smaller condition number than A, where A is the original matrix of the linear system A*x=b. Authors: Serafeim Bakalakos

public interface MGroup.LinearAlgebra.Iterative.Preconditioning.IPreconditioner

Methods

Type Name Summary
void SolveLinearSystem(IVectorView rhsVector, IVector lhsVector) Applies the preconditioner by solving the system: M * v = w during the preconditioning step of an iterative algorithm, where M is the preconditioner and the definition of the vectors v, w depends on the iterative algorithm. This is equivalent to evaluating: inverse(M) * w.

IPreconditionerFactory

Classes implementing this interface are responsible for the creation of MGroup.LinearAlgebra.Iterative.Preconditioning.IPreconditioner instances. Authors: Serafeim Bakalakos

public interface MGroup.LinearAlgebra.Iterative.Preconditioning.IPreconditionerFactory

Methods

Type Name Summary
IPreconditioner CreatePreconditionerFor(IMatrixView matrix) Initializes and returns an MGroup.LinearAlgebra.Iterative.Preconditioning.IPreconditioner for the provided ``.

JacobiPreconditioner

Implements the Jacobi or diagonal preconditioner for a square matrix. If A is the original matrix, the Jacobi preconditioner is a matrix M, such that it oncly contains the diagonal of A and inverse(M) is also diagonal with entries: 1/A[0,0], 1/A[1,1], ... The Jacobi preconditioner is cheapest to build and apply, but doesn't improve convergence as much as other preconditioners. Authors: Serafeim Bakalakos

public class MGroup.LinearAlgebra.Iterative.Preconditioning.JacobiPreconditioner
    : IPreconditioner

Properties

Type Name Summary
Int32 Order The number of rows/columns of the preconditioner and the original matrix

Methods

Type Name Summary
void SolveLinearSystem(IVectorView rhsVector, IVector lhsVector) See

Static Fields

Type Name Summary
Double DefaultTolerance