methods for calculating and caching the inverse of a matrix