The adjugate of an matrix is defined by

where denotes the submatrix of obtained by deleting row and column . It is the transposed matrix of cofactors. The adjugate is sometimes called the (classical) adjoint and is sometimes written as .

For nonsingular ,

and this equation is often used to give a formula for in terms of determinants.

Since the adjugate is a scalar multiple of the inverse, we would expect it to share some properties of the inverse. Indeed we have

These properties can be proved by first assuming the matrices are nonsingular—in which case they follow from properties of the determinant and the inverse—and then using continuity of the entries of and the fact that every matrix is the limit of a sequence of nonsingular matrices. Another property that can be proved in a similar way is

If has rank or less then is just the zero matrix. Indeed in this case every submatrix of is singular, so in the definition of . In particular, and for any rank-1 matrix

Less obviously, if then has rank 1. This can be seen from the formula below that expresses the adjugate in terms of the singular value decomposition (SVD).

If , then for nonsingular ,

Again it follows by continuity that for any ,

This expression is useful when we need to deal with a rank-1 perturbation to a singular matrix. A related identity is

Let be an SVD, where and are unitary and , with . Then

It is easy to see that is diagonal, with

Since and are unitary and hence nonsingular,

If then and so

where has modulus and and are the last columns of and , respectively.

The definition of does not provide a good means for computing it, because the determinant computations are prohibitively expensive. The following MATLAB function (which is very similar to the function `adjoint`

in the Symbolic Math Toolbox) uses the SVD formula.

function X = adj(A) %ADJ Adjugate of a matrix. % X = ADJ(A) computes the adjugate of the square matrix A via % the singular value decomposition. n = length(A); [U,S,V] = svd(A); D = zeros(n); for i=1:n d = diag(S); d(i) = 1; D(i,i) = prod(d); end X = conj(det(V))*det(U)*V*D*U';

Note that, in common with most SVD codes, the `svd`

function does not return and , so we must compute them. This function is numerically stable, as shown by Stewart (1998).

Finally, we note that Richter (1954) and Mirsky (1956) obtained the Frobenius norm bound

## References

This is a minimal set of references, which contain further useful references within.

- Roger A. Horn and Charles R. Johnson, Matrix Analysis, second edition, Cambridge University Press, 2013. Section 0.8.2.
- L. Mirsky, The Norms of Adjugate and Inverse Matrices, Archiv der Mathematik 7(4), 276–277, 1956.
- Hans Richter, Bemerkung zur Norm der Inversen einer Matrix, Archiv der Mathematik 5, 447–448, 1954.
- G. W. Stewart, On the Adjugate Matrix, Linear Algebra Appl. 283, 151–164, 1998.

This article is part of the “What Is” series, available from https://nhigham.com/category/what-is and in PDF form from the GitHub repository https://github.com/higham/what-is.

Thanks for the post! A minor typo: in the sentence “If rank(A)=n-1 then the only nonzero singular value is \sigma_n”, “nonzero” should read “zero”.

Thanks – corrected.