Expand description
This library provides routines to compute low-rank approximations of matrices.
§Overview
Let be a given matrix. A low-rank approximation is a representation of the form with and , where is sufficiently small for the required application. A frequently used representation is also with a matrix .
The basis of the library is a pivoted QR decomposition of of the form with a permutation matrix, a matrix with orthogonal columns of unit norm, upper triangular, and .
In a pivoted QR decomposition the diagonal elements of are sorted in non-increasing order, that is . We can therefore compress by choosing an index and only keeping the first columns of and the first rows of . The library allows to choose the parameter directly or by a given tolerance such that .
Alternatively, one can also low-rank compress by first computing the Singular Value Decomposition. This is more accurate but also more costly.
From the compressed QR decomposition we can compute a column pivoted interpolative decomposition of the form The matrix is defined as that is a selection of columns of with indices .
The column pivoted interpolative decomposition has the advantage that we are using columns of as low-rank basis, which in applications often have physical meaning as opposed to the columns of .
From the column pivoted interpolative decomposition we can also compute a two-sided decomposition of the form Here, is a matrix, which is the submatrix of formed of the column indices and row indices .
Similarly to a column interpolative decomposition, a corresponding row interpolative decomposition is available that selects rows of for the low rank approximation.
Re-exports§
pub use qr::QR;
pub use qr::LQ;
pub use qr::QRTraits;
pub use qr::LQTraits;
pub use col_interp_decomp::ColumnID;
pub use col_interp_decomp::ColumnIDTraits;
pub use row_interp_decomp::RowID;
pub use row_interp_decomp::RowIDTraits;
pub use two_sided_interp_decomp::TwoSidedID;
pub use two_sided_interp_decomp::TwoSidedIDTraits;
pub use svd::SVD;
pub use svd::SVDTraits;
pub use random_matrix::RandomMatrix;
pub use types::RelDiff;
pub use types::Result;
pub use permutation::*;
pub use random_sampling::*;
Modules§
- col_
interp_ decomp - Data structures for Column Interpolative Decomposition.
- compute_
svd - A simple trait to wrap SVD Computation.
- examples
- Library examples
- permutation
- Traits and functions for permutation vectors.
- qr
- Data Structures and traits for QR Decompositions
- random_
matrix - Generation of random matrices for various types
- random_
sampling - Random sampling of matrices
- row_
interp_ decomp - Data structure for Row Interpolative Decomposition
- svd
- Define an SVD container and conversion tools.
- two_
sided_ interp_ decomp - Implementation of the two sided interpolative decomposition
- types
- This module collects the various traits definitions
Enums§
Traits§
Type Aliases§
- c32
- Alias for a
Complex<f32>
- c64
- Alias for a
Complex<f64>