This is the second of two papers to describe a matrix sparsification algorithm that takes a general real or complex matrix as input and produces a sparse output matrix of the same size. The first paper presented the original algorithm, its features, and theoretical results.
Since the output of this sparsification algorithm is a matrix rather than a vector, it can be costly in memory and run-time if an implementation does not exploit the structural properties of the algorithm and the matrix. Here we show how to modify the original algorithm to increase its efficiency. This is possible by computing an approximation to the exact result. We introduce extra constraints that are automatically determined based on the input matrix. This addition reduces the number of unknown degrees of freedom but still preserves many matrix subspaces. We also describe our open-source library that implements this sparsification algorithm and has interfaces in C++, C, and MATLAB.
[1]
J. Navarro-Pedreño.
Numerical Methods for Least Squares Problems
,
1996
.
[2]
Chetan Jhurani.
Subspace-preserving sparsification of matrices with minimal perturbation to the near null-space. Part I: Basics
,
2013,
ArXiv.
[3]
Christian H. Bischof,et al.
A BLAS-3 Version of the QR Factorization with Column Pivoting
,
1998,
SIAM J. Sci. Comput..
[4]
Kenneth W. Martin,et al.
Mastering CMake: A Cross-Platform Build System
,
2008
.
[5]
Leszek Demkowicz,et al.
Multiscale modeling using goal-oriented adaptivity and numerical homogenization. Part II: Algorithms for the Moore-Penrose pseudoinverse
,
2012
.
[6]
Thomas A. Manteuffel,et al.
Semi-automatic sparse preconditioners for high-order finite element methods on non-uniform meshes
,
2012,
J. Comput. Phys..
[7]
Stephen P. Boyd,et al.
Convex Optimization
,
2004,
Algorithms and Theory of Computation Handbook.