updated Matrix::adjoint() to use LU decomposition