IsTotallyNonsingular

From QETLAB
Revision as of 02:25, 14 December 2012 by Nathaniel (talk | contribs) (Examples)
Jump to navigation Jump to search
IsTotallyNonsingular
Determines whether or not a matrix is totally nonsingular

Other toolboxes required opt_args
sporth
Related functions IsTotallyPositive

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 and, if requested, a submatrix that is singular can be returned.

Syntax

  • ITN = IsTotallyNonsingular(X)
  • ITN = IsTotallyNonsingular(X,SUB_SIZES)
  • ITN = IsTotallyNonsingular(X,SUB_SIZES,TOL)
  • [ITN,WIT] = IsTotallyNonsingular(X,SUB_SIZES,TOL)

Argument descriptions

Input arguments

  • 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.

Output arguments

  • 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.

Examples

A well-known result of Cebotarev says that the quantum Fourier matrix is totally nonsingular in prime dimensions[1], which we can verify in the 5-by-5 case as follows:

>> IsTotallyNonsingular(FourierMatrix(5))

ans =

     1

Almost all matrices are totally nonsingular

A randomly-chosen matrix will, with probability 1, be totally nonsingular:

>> IsTotallyNonsingular(randn(10))

ans =

     1

Notes

In practice, this function is practical for matrices of size up to about 15-by-15.

References

  1. M. Newman. On a theorem of Cebotarev. Linear Multilinear Algebra, 3:259–262, 1976.