1
$\begingroup$

Suppose i have matrix of size 1000*1000 with 70% sparsity. I am performing some multiplication, inverse operations upon it. While making calculations, does MATLAB make checks to see if matrix is sparse and perform operations accordingly(like ignoring multiplications if one of elements is zero) or do we need to explicitly mention it. What are possible ways to do so.

Suppose I have sparse matrix A. I want to get inverse of it. Usually I will use function inv(A). Since matrix is sparse, I might use following operations

sparse_A = sparse(A); inv_sparse_A = inv(sparse_A); inv_A = full(inv_sparse_A); 

1 Answers 1

6

The inverse of a sparse matrix is usually dense (try inverting a tridiagonal matrix sometime...), so forget about hoping that inv(sparse(something)) is sparse. If all you want is to solve a sparse linear system, it might be better to use lu() instead (or chol() if the matrix is symmetric positive definite); it's about as convenient as having an inverse without needing to worry about fill-in.

  • 1
    @Maddy: Matrix multiplication of two sparse matrices does produce a sparse matrix. The sparsity of operations on sparse matrices is fully documented in the Matlab help: http://www.mathworks.com/help/techdoc/math/f6-8856.html2011-04-19