Algorithm 930, FACTORIZE: an object-oriented linear system solver for MATLAB. The MATLAB TM backslash (x=A∖b) is an elegant and powerful interface to a suite of high-performance factorization methods for the direct solution of the linear system Ax=b and the least-squares problem min x ∥b-Ax∥. It is a meta-algorithm that selects the best factorization method for a particular matrix, whether sparse or dense. However, the simplicity and elegance of its single-character interface prohibits the reuse of its factorization for subsequent systems. Requiring MATLAB users to find the best factorization method on their own can lead to suboptimal choices; even MATLAB experts can make the wrong choice. Furthermore, naive MATLAB users have a tendency to translate mathematical expressions from linear algebra directly into MATLAB, so that x=A -1 b becomes the inferior yet all-to-prevalent x=inv(A)*b. To address these issues, an object-oriented FACTORIZE method is presented. Via simple-to-use operator overloading, solving two linear systems can be written as F=factorize(A); x=F∖b; y=F∖c, where A is factorized only once. The selection of the best factorization method (LU, Cholesky, LDL T , QR, or a complete orthogonal decomposition for rank-deficient matrices) is hidden from the user. The mathematical expression x=A -1 b directly translates into the MATLAB expression x=inverse(A)*b, which does not compute the inverse at all, but does the right thing by factorizing A and solving the corresponding triangular systems.

This software is also peer reviewed by journal TOMS.

Keywords for this software

Anything in here will be replaced on browsers that support the canvas element