The inverse and determinant of a given square matrix can be computed by applying iteration routine involved simultaneously matrix order expansion and condensation process. At the conclusion of iterations process, the expansion routine results in the inverse (iA) of the given matrix (A), and the condensation routine generates an array (p) of elements (Schur components), which gives the determinant (dA)of the given matrix.
[iA,dA,p] = inv_det_0.(A).
The routine code is very compact, and works for fairly large order matrices such as A = randn(99). The total number of multiplication/division operations is about N^3, which is need for the product of two NxN matrices.
The routine involves simple arithmatic division, and will fail if the divider becomes zeros. In such cases, we must interchange among rows and columns of the given matrix, before running the routine.
In the routine [iA,dA,p] = inv_det_0(A), the locations of array p are fixed along the diagonal of the given matrix A. This routine will fail if A is a singular matrix or P(k)->0 at the k-th iteration step.
Therefore, if p(k) is picked at absolute maximum among possible locations, the routine will not fail. I will present it soon.
Combine order expansion and condensation routines into a simple compact routine
Submitted files det_inv_0.m and det_0.m must be independently separated.
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.