How to show a matrix is full rank?

Stefan's suggestions for calculating rank are good for small matrices, or matrices that can be manipulated by hand. Even then, I'd use Gaussian elimination and reduce the matrix to row-echelon form; the number of nonzero rows will be the rank of the matrix. This algorithm will be faster than computing determinants for any matrix larger than 3 by 3, and it is similar to his suggestion to solve the linear equation $Ax = 0$.

If you have a sufficiently large matrix where this would be infeasible, you could determine the rank of the matrix numerically using a singular value decomposition (SVD) or a rank-revealing QR decomposition. If the matrix $A$ is $n$ by $m$, and its rank is equal to $\min(n,m)$, then it is full rank. If you can calculate the rank, then you can determine if the matrix is full rank.

If you were to use the SVD, the numerical rank of your matrix would be equal to the number of singular values greater than a certain numerical cutoff (usually set to be something small, like $10^{-12}$; a little discretion needs to be used here). MATLAB's rank function uses this algorithm.

If you were to use the rank-revealing QR decomposition, the numerical rank of your matrix would be equal to the number of values on the diagonal of the $R$ matrix whose magnitude is greater than a numerical cutoff (again, chosen like the SVD). This method is considered slightly less reliable than the SVD algorithm, but it is faster.

You can also use a rank-revealing QR decomposition to determine the linearly independent columns of your matrix. If the rank of your matrix is $k$ (as calculated from the $R$ matrix), the first $k$ entries of the permutation vector returned by the rank-revealing QR decomposition correspond to the linearly independent columns.

The problem with calculating the matrix rank using determinants is that calculation of determinants is expensive numerically, and in the context of numerical linear algebra, gives you less useful information. Calculating the matrix rank is possible using Gaussian elimination (i.e., LU decomposition) by hand, but using LU decomposition for determination of the rank of a matrix in floating point arithmetic is unreliable.


If you are talking about square matrices, just compute the determinant. If that is non-zero, the matrix is of full rank.

If the matrix $A$ is $n$ by $m$, assume wlog that $m\leq n$ and compute all determinants of $m$ by $m$ submatrices. If one of them is non-zero, the matrix has full rank.

Also, you can solve the linear equation $Ax=0$ and figure out what dimension the space of solutions has. If the dimension of that space is $n-m$, then the matrix is of full rank.

Note that a matrix has the same rank as its transpose.