Preconditioners

GaussianMarkovRandomFields.AbstractPreconditionerType
AbstractPreconditioner

Abstract type for preconditioners. Should implement the following methods:

  • ldiv!(y, P::AbstractPreconditioner, x::AbstractVector)
  • ldiv!(P::AbstractPreconditioner, x::AbstractVector)
  • \(P::AbstractPreconditioner, x::AbstractVector)
  • size(P::AbstractPreconditioner)
source
GaussianMarkovRandomFields.FullCholeskyPreconditionerType
FullCholeskyPreconditioner

A preconditioner that uses a full Cholesky factorization of the matrix, i.e. P = A, so P⁻¹ = A⁻¹. Does not make sense to use on its own, but can be used as a building block for more complex preconditioners.

source
GaussianMarkovRandomFields.TridiagonalBlockGaussSeidelPreconditionerType
TridiagonalBlockGaussSeidelPreconditioner{T}(D_blocks, L_blocks)
TridiagonalBlockGaussSeidelPreconditioner{T}(D⁻¹_blocks, L_blocks)

Block Gauss-Seidel preconditioner for block tridiagonal matrices. For a matrix given by

\[A = \begin{bmatrix} D₁ & L₁ᵀ & 0 & \cdots & 0 \\ L₁ & D₂ & L₂ᵀ & 0 & \cdots \\ 0 & L₂ & D₃ & L₃ᵀ & \cdots \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & \cdots & 0 & Lₙ₋₁ & Lₙ \end{bmatrix}\]

this preconditioner is given by

\[P = \begin{bmatrix} D₁ & 0 & \cdots & 0 \\ L₁ & D₂ & 0 & \cdots \\ 0 & L₂ & D₃ & \cdots \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & \cdots & 0 & Lₙ₋₁ & Dₙ \end{bmatrix}\]

Solving linear systems with the preconditioner is made efficient through block forward / backward substitution. The diagonal blocks must be inverted. As such, they may be specified

  1. directly as matrices: in this case they will be transformed into FullCholeskyPreconditioners.
  2. in terms of their invertible preconditioners
source
GaussianMarkovRandomFields.TridiagSymmetricBlockGaussSeidelPreconditionerType
TridiagSymmetricBlockGaussSeidelPreconditioner{T}(D_blocks, L_blocks)
TridiagSymmetricBlockGaussSeidelPreconditioner{T}(D⁻¹_blocks, L_blocks)

Symmetric Block Gauss-Seidel preconditioner for symmetric block tridiagonal matrices. For a symmetric matrix given by the block decomposition A = L + D + Lᵀ, where L is strictly lower triangular and D is diagonal, this preconditioner is given by P = (L + D) D⁻¹ (L + D)ᵀ ≈ A.

Solving linear systems with the preconditioner is made efficient through block forward / backward substitution. The diagonal blocks must be inverted. As such, they may be specified

  1. directly as matrices: in this case they will be transformed into FullCholeskyPreconditioners.
  2. in terms of their invertible preconditioners
source