Table of Contents
Why Inverses, Determinants, and Rank Matter
In basic linear algebra, the inverse, determinant, and rank of a matrix are closely connected concepts that tell you how a matrix behaves. In MATLAB, these quantities are easy to compute, but it is important to know when and how to use the corresponding functions correctly.
This chapter focuses on computing and inspecting inverses, determinants, and ranks of matrices in MATLAB, and on interpreting some of the numerical results at a beginner level. It assumes you are already comfortable with basic matrix creation and multiplication and with solving systems using the backslash operator.
Matrix Inverse in MATLAB
A square matrix $A$ is invertible if there is another matrix $A^{-1}$ so that $A A^{-1} = I$ and $A^{-1} A = I$, where $I$ is the identity matrix. In MATLAB, the inverse of a square matrix is computed with the inv function.
Suppose you have a $2 \times 2$ matrix.
A = [2 1; 5 3];
Ainv = inv(A)
MATLAB returns a $2 \times 2$ matrix Ainv that is the numerical inverse of A. You can check the result by multiplying.
A * Ainv
Ainv * A
Both products should be very close to the identity matrix. You may see small round off differences, such as values like 1.0000 or -0.0000. These are due to floating point arithmetic, not to an error in the algorithm.
If the matrix is not invertible, MATLAB will warn you or return a result that is not numerically meaningful. For example, a matrix with two identical rows is singular in exact mathematics.
B = [1 2; 1 2];
Binv = inv(B)
Here MATLAB will usually issue a warning about a singular or nearly singular matrix and will produce large numbers or Inf values. The real meaning is that you should not use the inverse of this matrix, because mathematically it does not exist.
In practice, beginners often want an inverse in order to solve a linear system $A x = b$. In MATLAB the recommended way to solve such systems is to use the backslash operator, not inv. For example, to solve $A x = b$ you should write:
A = [2 1; 5 3];
b = [1; 4];
x = A \ b
This gives the solution vector x directly, without explicitly forming the inverse. You can think of A \ b as using the inverse conceptually, but implemented in a more accurate and efficient way.
If you still want to confirm the relationship with the inverse, you can compare with:
x_inv = inv(A) * b
You should see that x and x_inv are very close, with tiny numerical differences at most.
Determinants with `det`
The determinant is a single number associated with a square matrix. For a $2 \times 2$ matrix
$$
A = \begin{bmatrix} a & b \\ c & d \end{bmatrix},
$$
its determinant is
$$
\det(A) = ad - bc.
$$
In MATLAB, you compute the determinant using the det function.
A = [2 1; 5 3];
dA = det(A)
Here dA will be a scalar. For the example above, you can check the arithmetic manually and confirm the result.
One common use of the determinant is to detect whether a matrix is singular. In exact mathematics, if $\det(A) = 0$, then $A$ is singular and does not have an inverse. If $\det(A) \neq 0$, the matrix is invertible.
In floating point arithmetic, however, you rarely see an exact zero for matrices that are nearly singular. Instead you may see a very small number, such as 1.0e-15. This suggests that the matrix behaves like a singular matrix from a numerical perspective. For example:
C = [1 1; 1 1 + 1e-12];
detC = det(C)
Here detC is nonzero but very small. The matrix is invertible in exact arithmetic, but solving systems with it can be numerically unstable.
You should be cautious about relying only on det(A) to decide if a matrix is safe to work with. Very small determinants indicate potential numerical issues, even if the value is not exactly zero.
Matrix Rank with `rank`
The rank of a matrix measures how many of its rows or columns carry independent information. For an $m \times n$ matrix $A$, the rank is an integer between $0$ and $\min(m, n)$.
In MATLAB you compute the numerical rank of a matrix with the rank function.
A = [1 2 3; 4 5 6; 7 8 9];
rA = rank(A)
Here rA will be less than 3. This particular matrix has linearly dependent rows, so its rank is lower than the number of its rows and its columns.
The rank function uses a numerical tolerance to decide what counts as zero. That means small floating point perturbations do not usually change the computed rank. You can see this by comparing two similar matrices.
B = [1 2 3; 4 5 6; 7 8 9 + 1e-12];
rB = rank(B)
Even though B is not exactly the same as A, its numerical rank is likely to be the same when computed by MATLAB.
A full rank square matrix has rank equal to its dimension, for example a $3 \times 3$ matrix with rank 3. In that case the matrix is nonsingular and has an inverse. If the rank is less than the dimension, the matrix is singular and the inverse does not exist.
For rectangular matrices, the rank helps describe whether linear systems involving the matrix are underdetermined or overdetermined. In later work, you will see the connection with least squares and other topics. For now, focus on the idea that rank counts the number of independent columns or rows and can help detect singular or nearly singular behavior.
Relationships Between Inverse, Determinant, and Rank
In MATLAB, the functions inv, det, and rank are separate, but they all probe the same underlying properties of a matrix.
If a square matrix $A$ is invertible, then its determinant is nonzero and its rank is full. For a $n \times n$ matrix, that means:
- $A^{-1}$ exists,
- $\det(A) \neq 0$,
rank(A) == n.
You can see this numerically.
A = [2 1; 5 3];
Ainv = inv(A);
dA = det(A);
rA = rank(A)
Here rA equals 2, which is the size of A, and dA is nonzero. Since the matrix is nonsingular, MATLAB does not warn when computing inv(A).
If the matrix is singular, things look different.
S = [1 2; 1 2];
dS = det(S)
rS = rank(S)
Sinv = inv(S)
The determinant will be exactly zero or numerically zero. The rank will be less than 2. The call to inv(S) will produce a warning and a result that you should not trust. The key idea is that determinant, rank, and invertibility are linked, and MATLAB gives you tools to examine all three.
For nearly singular matrices, the determinant will be very small but may not be zero, the rank is typically still full numerically, and inv may emit a warning about being close to singular. In that situation, even though MATLAB can compute an inverse, solutions involving such a matrix can be very sensitive to small changes in the data.
In practical applications, you rarely need to compute determinants or inverses explicitly. Instead you use A \ b to solve systems, and you may use rank(A) to inspect the structure of the problem or to detect degeneracies.
Numerical Considerations and Practical Tips
MATLAB uses floating point arithmetic, so exact algebraic identities hold only approximately. When you work with inverses, determinants, and rank, it is useful to keep some simple checks and habits in mind.
After computing an inverse with inv(A), you can check how close it is to a true inverse with the norm of the residual A * Ainv - eye(n). For a small matrix:
A = [2 1; 5 3];
Ainv = inv(A);
residual = A * Ainv - eye(2);
error_size = norm(residual)
If error_size is small, such as 1.0e-15, then the numerical inverse is accurate relative to the scale of the problem.
For the determinant, be aware that its magnitude can grow or shrink very quickly as the matrix scales. It is not a stable measure of how well conditioned a matrix is. A very large determinant does not always mean a matrix is stable, and a very small determinant does not always mean chaos, but extremely small values compared to typical entries are usually a warning sign.
For rank, MATLAB uses an internal tolerance based on the size and norm of the matrix. You can also supply a custom tolerance if you need more control. For example:
A = [1 2 3; 2 4 6; 3 6 9 + 1e-10];
r_default = rank(A);
r_tight = rank(A, 1e-12)This allows you to see how the choice of tolerance can change the reported rank. As a beginner you can normally rely on the default, and only adjust the tolerance when you have a specific reason.
Finally, keep in mind the earlier recommendation about solving systems: prefer A \ b to inv(A) * b. MATLAB is designed to implement \ in a way that handles singular and nearly singular matrices more robustly, and it can also give you useful warnings when the problem is ill conditioned.
Important things to remember:
- Use
inv(A)only when you truly need the inverse matrix itself. To solve $A x = b$, preferx = A \ b. - A nonzero determinant and full rank indicate an invertible square matrix, but very small determinants suggest numerical trouble.
rank(A)counts the number of independent rows or columns and helps detect singular or nearly singular matrices.- Warnings about singular or close to singular matrices mean that any inverse or solution you compute may be unreliable.