Package 'SparseChol'

Title: Sparse Matrix C++ Classes Including Sparse Cholesky LDL Decomposition of Symmetric Matrices
Description: 'C++' classes for sparse matrix methods including implementation of sparse LDL decomposition of symmetric matrices and solvers described by Timothy A. Davis (2016) <https://fossies.org/linux/SuiteSparse/LDL/Doc/ldl_userguide.pdf>. Provides a set of C++ classes for basic sparse matrix specification and linear algebra, and a class to implement sparse LDL decomposition and solvers. See <https://github.com/samuel-watson/SparseChol> for details.
Authors: Sam Watson [aut, cre], Timothy A. Davis [aut, ctb]
Maintainer: Sam Watson <[email protected]>
License: GPL (>= 2)
Version: 0.3.2
Built: 2024-12-09 09:34:33 UTC
Source: CRAN

Help Index


Sparse Matrix C++ Classes Including Sparse Cholesky LDL Decomposition of Symmetric Matrices

Description

'C++' classes for sparse matrix methods including implementation of sparse LDL decomposition of symmetric matrices and solvers described by Timothy A. Davis (2016) <https://fossies.org/linux/SuiteSparse/LDL/Doc/ldl_userguide.pdf>. Provides a set of C++ classes for basic sparse matrix specification and linear algebra, and a class to implement sparse LDL decomposition and solvers. See <https://github.com/samuel-watson/SparseChol> for details.

Package Content

Index of help topics:

LDL_Cholesky            Generate LDL decomposition from Matrix class
                        'dsCMatrix'
LL_Cholesky             Generate Cholesky decomposition from Matrix
                        class 'dsCMatrix'
SparseChol-package      Sparse Matrix C++ Classes Including Sparse
                        Cholesky LDL Decomposition of Symmetric
                        Matrices
amd_order               AMD ordering
dense_to_sparse         Generate sparse matrix representation of a
                        matrix
sparse_D                Generate matrix D from 'sparse_chol' output
sparse_L                Generate matrix L from 'sparse_chol' output
sparse_chol             Sparse Cholesky decomposition
sparse_chol_crs         Sparse Cholesky decomposition with sparse
                        representation

Maintainer

Sam Watson <[email protected]>

Author(s)

Sam Watson [aut, cre], Timothy A. Davis [aut, ctb]


AMD ordering

Description

AMD ordering

Usage

amd_order(mat)

Arguments

mat

A matrix

Details

Generates the approximate minimum degree ordering of the matrix for use in efficient Cholesky decomposition of PAP^T.

Value

A list with the permutation vector and it's inverse.


Generate sparse matrix representation of a matrix

Description

Generate sparse matrix representation of a matrix

Usage

dense_to_sparse(mat)

Arguments

mat

A matrix

Value

A list with the matrix in compressed row storage format.

Examples

M <- diag(10)
#put a few random values in
M[lower.tri(M)][seq(1,45,by=5)] <- c(0.1,0.5,0.9,0.6,0.8,0.9,0.2,0.3,0.1)
M[upper.tri(M)][seq(1,45,by=5)] <- c(0.1,0.5,0.9,0.6,0.8,0.9,0.2,0.3,0.1)
L <- dense_to_sparse(M)

Generate LDL decomposition from Matrix class 'dsCMatrix'

Description

Generates the Cholesky decomposition L as A == LL^T from a sparse matrix

Usage

LDL_Cholesky(mat)

Arguments

mat

A matrix of class 'dsCMatrix'

Value

A list of matrices L and D


Generate Cholesky decomposition from Matrix class 'dsCMatrix'

Description

Generates the Cholesky decomposition L as A == LL^T from a sparse matrix

Usage

LL_Cholesky(mat)

Arguments

mat

A matrix of class 'dsCMatrix'

Value

A matrix of class 'ddiMatrix'


Sparse Cholesky decomposition

Description

Sparse Cholesky decomposition

Usage

sparse_chol(mat)

Arguments

mat

A matrix

Details

Generates the LDL decomposition of a symmetric, sparse matrix using the method described by Timothy Davis (see references). This function accepts a standard matrix, converts to sparse format, generates the LDL decomposition and returns the Cholesky decomposition LD^0.5.

Value

A lower-triangular matrix.

Examples

M <- diag(10)
#put a few random values in
M[lower.tri(M)][seq(1,45,by=5)] <- c(0.1,0.5,0.9,0.6,0.8,0.9,0.2,0.3,0.1)
M[upper.tri(M)][seq(1,45,by=5)] <- c(0.1,0.5,0.9,0.6,0.8,0.9,0.2,0.3,0.1)
L <- sparse_chol(M)

Sparse Cholesky decomposition with sparse representation

Description

Sparse Cholesky decomposition with sparse representation

Usage

sparse_chol_crs(n, Ap, Ai, Ax)

Arguments

n

Integer specifying the dimension of the matrix

Ap

numeric (integer valued) vector of pointers, one for each column (or row), to the initial (zero-based) index of elements in the column (or row).

Ai

Integer vector specifying the row positions of the non-zero values of the matrix

Ax

values of the non-zero matrix entries

Details

Generates the LDL decomposition of a symmetric, sparse matrix using the method described by Timothy Davis (see references). Required input is a matrix in sparse format from the matrix package, see sparseMatrix, or the package function dense_to_sparse. To instead use a matrix directly, see sparse_chol.

Value

A list with elements n, Ai, Ap, Ax (corresponding to above arguments) for matrix L, and element D, which contains the diagonal values of matrix D.

Examples

n <- 10
Ap <- c(0, 1, 2, 3, 4, 6, 7, 9, 11, 15, 19)
Ai <- c(1, 2, 3, 4, 2,5, 6, 5,7, 5,8, 1,5,8,9, 2,5,7,10)
Ax <- c(1.7, 1., 1.5, 1.1, .02,2.6, 1.2, .16,1.3, .09,1.6,
          .13,.52,.11,1.4, .01,.53,.56,3.1)
out <-sparse_chol_crs(n,Ap,Ai,Ax)
sparse_L(out)
sparse_D(out)

Generate matrix D from 'sparse_chol' output

Description

Generates the D matrix of the LDL decomposition from the output of the 'sparse_chol' function

Usage

sparse_D(mat)

Arguments

mat

List returned by 'sparse_chol'

Value

A matrix of class 'ddiMatrix'


Generate matrix L from 'sparse_chol' output

Description

Generates the L matrix of the LDL decomposition from the output of the 'sparse_chol' function

Usage

sparse_L(mat)

Arguments

mat

List returned by 'sparse_chol'

Value

A matrix of class 'dsCMatrix'