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 |
'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.
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
Sam Watson <[email protected]>
Sam Watson [aut, cre], Timothy A. Davis [aut, ctb]
AMD ordering
amd_order(mat)
amd_order(mat)
mat |
A matrix |
Generates the approximate minimum degree ordering of the matrix for use in efficient Cholesky decomposition of PAP^T.
A list with the permutation vector and it's inverse.
Generate sparse matrix representation of a matrix
dense_to_sparse(mat)
dense_to_sparse(mat)
mat |
A matrix |
A list with the matrix in compressed row storage format.
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)
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)
Generates the Cholesky decomposition L as A == LL^T from a sparse matrix
LDL_Cholesky(mat)
LDL_Cholesky(mat)
mat |
A matrix of class 'dsCMatrix' |
A list of matrices L and D
Generates the Cholesky decomposition L as A == LL^T from a sparse matrix
LL_Cholesky(mat)
LL_Cholesky(mat)
mat |
A matrix of class 'dsCMatrix' |
A matrix of class 'ddiMatrix'
Sparse Cholesky decomposition
sparse_chol(mat)
sparse_chol(mat)
mat |
A matrix |
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.
A lower-triangular matrix.
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)
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
sparse_chol_crs(n, Ap, Ai, Ax)
sparse_chol_crs(n, Ap, Ai, Ax)
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 |
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.
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.
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)
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)
Generates the D matrix of the LDL decomposition from the output of the 'sparse_chol' function
sparse_D(mat)
sparse_D(mat)
mat |
List returned by 'sparse_chol' |
A matrix of class 'ddiMatrix'
Generates the L matrix of the LDL decomposition from the output of the 'sparse_chol' function
sparse_L(mat)
sparse_L(mat)
mat |
List returned by 'sparse_chol' |
A matrix of class 'dsCMatrix'