|Determines whether or not a matrix is totally nonsingular|
|Other toolboxes required||none|
IsTotallyNonsingular is a function that determines whether or not a given matrix is totally nonsingular (i.e., all of its square submatrices are nonsingular). The input matrix can be either full or sparse.
- ITN = IsTotallyNonsingular(X)
- ITN = IsTotallyNonsingular(X,SUB_SIZES)
- ITN = IsTotallyNonsingular(X,SUB_SIZES,TOL)
- [ITN,WIT] = IsTotallyNonsingular(X,SUB_SIZES,TOL)
- X: A matrix.
- SUB_SIZES (optional, default 1:min(size(X))): A vector specifying the sizes of submatrices to be checked for nonsingularity.
- TOL (optional, default length(X)*eps(norm(X,'fro'))): The numerical tolerance used when determining nonsingularity.
- ITN: A flag (either 1 or 0) indicating that X is or is not totally nonsingular.
- WIT (optional): If ITN = 0 then WIT specifies a submatrix of X that is singular. More specifically, WIT is a matrix with 2 rows such that X(WIT(1,:),WIT(2,:)) is singular.
The Fourier matrix
>> IsTotallyNonsingular(FourierMatrix(5)) ans = 1
When the dimension is composite, the Fourier matrix is not totally nonsingular. For example, the following code shows in the 6-dimensional case a 2-by-2 submatrix of the Fourier matrix that is singular:
>> F = FourierMatrix(6); >> [itn,wit] = IsTotallyNonsingular(F) itn = 0 wit = 1 3 1 4 >> F([1,3],[1,4]) ans = 0.4082 0.4082 0.4082 0.4082
Almost all matrices are totally nonsingular
A randomly-chosen matrix will, with probability 1, be totally nonsingular:
>> IsTotallyNonsingular(randn(10)) ans = 1
In practice, this function is practical for matrices of size up to about 15-by-15.
Click here to view this function's source code on github.
- M. Newman. On a theorem of Cebotarev. Linear Multilinear Algebra, 3:259–262, 1976.