Skip to content

MGroup.LinearAlgebra.Iterative.Termination

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

FixedMaxIterationsProvider

A MGroup.LinearAlgebra.Iterative.Termination.IMaxIterationsProvider implementation that will use a fixed number of iterations, regardless of the matrix order. Authors: Serafeim Bakalakos

public class MGroup.LinearAlgebra.Iterative.Termination.FixedMaxIterationsProvider
    : IMaxIterationsProvider

Methods

Type Name Summary
Int32 GetMaxIterationsForMatrix(ILinearTransformation matrix) See MGroup.LinearAlgebra.Iterative.Termination.IMaxIterationsProvider.GetMaxIterationsForMatrix(MGroup.LinearAlgebra.Iterative.ILinearTransformation).

IMaxIterationsProvider

Determines the maximum number of iterations that will be run by an iterative algorithm. Authors: Serafeim Bakalakos

public interface MGroup.LinearAlgebra.Iterative.Termination.IMaxIterationsProvider

Methods

Type Name Summary
Int32 GetMaxIterationsForMatrix(ILinearTransformation matrix) Returns the max number of iterations appropriate for the specified `` of the linear system.

IResidualConvergence

Checks if the residual vector has reached the required tolerance. It may also correct the residual vector and its dot product with the vector specified by the iterative algorithm that uses this MGroup.LinearAlgebra.Iterative.Termination.IResidualConvergence, in order to avoid numerical complications. The correct residual vector is calculated as r = b - A * x. Authors: Serafeim Bakalakos

public interface MGroup.LinearAlgebra.Iterative.Termination.IResidualConvergence

Methods

Type Name Summary
Boolean HasConverged(IVectorView solutionVector, IVector residualVector, Double& residualDotProduct, Boolean isResidualCorrected, Func<IVectorView, Double> residualDotCalculation) Checks if the residual vector has reached the required tolerance. It may also correct the residual vector and its dot product with the vector specified by the iterative algorithm.
void Initialize(ILinearTransformation matrix, IVectorView rhsVector, Double residualTolerance, Double initialResidualDotProduct) Initializes the internal state of this MGroup.LinearAlgebra.Iterative.Termination.IResidualConvergence instance. Has to be called before each linear system solution.

PercentageMaxIterationsProvider

A MGroup.LinearAlgebra.Iterative.Termination.IMaxIterationsProvider implementation that will use a percentage of the matrix order as the max number of iterations. Authors: Serafeim Bakalakos

public class MGroup.LinearAlgebra.Iterative.Termination.PercentageMaxIterationsProvider
    : IMaxIterationsProvider

Methods

Type Name Summary
Int32 GetMaxIterationsForMatrix(ILinearTransformation matrix) See MGroup.LinearAlgebra.Iterative.Termination.IMaxIterationsProvider.GetMaxIterationsForMatrix(MGroup.LinearAlgebra.Iterative.ILinearTransformation)

SimpleConvergence

Checks if the residual vector has reached the required tolerance, without performing corrections. Authors: Serafeim Bakalakos

public class MGroup.LinearAlgebra.Iterative.Termination.SimpleConvergence
    : IResidualConvergence

Methods

Type Name Summary
Boolean HasConverged(IVectorView solutionVector, IVector residualVector, Double& residualDotProduct, Boolean isResidualCorrected, Func<IVectorView, Double> residualDotCalculation) See MGroup.LinearAlgebra.Iterative.Termination.IResidualConvergence.HasConverged(MGroup.LinearAlgebra.Vectors.IVectorView,MGroup.LinearAlgebra.Vectors.IVector,System.Double@,System.Boolean,System.Func{MGroup.LinearAlgebra.Vectors.IVectorView,System.Double}).
void Initialize(ILinearTransformation matrix, IVectorView rhsVector, Double residualTolerance, Double initialResidualDotProduct) See MGroup.LinearAlgebra.Iterative.Termination.IResidualConvergence.Initialize(MGroup.LinearAlgebra.Iterative.ILinearTransformation,MGroup.LinearAlgebra.Vectors.IVectorView,System.Double,System.Double).

SmallToleranceConvergence

Checks if the residual vector has reached the required tolerance. In addition corrects the residual vector, in order to avoid premature convergence, if the tolerance is close to the limits of the machine's floating point precision, as described in section B1 of "An Introduction to the Conjugate Gradient Method Without the Agonizing Pain", Jonathan Richard Shewchuk, 1994. Authors: Serafeim Bakalakos

public class MGroup.LinearAlgebra.Iterative.Termination.SmallToleranceConvergence
    : IResidualConvergence

Methods

Type Name Summary
Boolean HasConverged(IVectorView solutionVector, IVector residualVector, Double& residualDotProduct, Boolean isResidualCorrected, Func<IVectorView, Double> residualDotCalculation) See MGroup.LinearAlgebra.Iterative.Termination.IResidualConvergence.HasConverged(MGroup.LinearAlgebra.Vectors.IVectorView,MGroup.LinearAlgebra.Vectors.IVector,System.Double@,System.Boolean,System.Func{MGroup.LinearAlgebra.Vectors.IVectorView,System.Double}).
void Initialize(ILinearTransformation matrix, IVectorView rhsVector, Double residualTolerance, Double initialResidualDotProduct) See MGroup.LinearAlgebra.Iterative.Termination.IResidualConvergence.Initialize(MGroup.LinearAlgebra.Iterative.ILinearTransformation,MGroup.LinearAlgebra.Vectors.IVectorView,System.Double,System.Double).

Clone this wiki locally