Create a 3-by-3 square matrix, `A`

.

Calculate the determinant of `A`

.

The determinant of `A`

is -32.

Examine why the determinant is not an accurate
measure of singularity.

Create a 10-by-10 matrix by multiplying an identity matrix, `eye(10)`

,
by a small number.

The matrix `A`

has very small entries along
the main diagonal. However, `A`

is *not* singular,
because it is a multiple of the identity matrix.

Calculate the determinant of `A`

.

The determinant is extremely small. A tolerance test of the
form `abs(det(A)) < tol`

is likely to flag this
matrix as singular. Although the determinant of the matrix is close
to zero, `A`

is actually not ill conditioned. Therefore, `A`

is
not close to being singular. The determinant of a matrix can be arbitrarily
close to zero without conveying information about singularity.

To investigate if `A`

is singular, use either
the `cond`

or `rcond`

functions.

Calculate the condition number of `A`

.

The result confirms that `A`

is not ill conditioned.

Examine how to calculate the determinant of
the matrix inverse `A^(-1)`

, for an ill-conditioned
matrix `A`

, without explicitly calculating `A^(-1)`

.

Create a 10-by-10 Hilbert matrix, `A`

.

Find the condition number of `A`

.

The large condition number suggests that `A`

is
close to being singular, so calculating `inv(A)`

might
produce inaccurate results. Therefore, the inverse determinant calculation `det(inv(A))`

is
also inaccurate.

Calculate the determinant of the inverse of `A`

by
exploiting the fact that $$\text{det}\left({A}^{-1}\right)\text{\hspace{0.17em}}=\frac{1}{\mathrm{det}(A)}\text{\hspace{0.17em}}\text{\hspace{0.17em}}.$$

This method avoids computing the inverse of the matrix, `A`

.

Calculate the determinant of the exact inverse of the
Hilbert matrix, `A`

, using `invhilb`

.
Compare the result to `d1`

to find the relative error
in `d1`

.

The relative error in `d1`

is reasonably small.
Avoiding the explicit computation of the inverse of `A`

minimizes
it.

For comparison, also calculate the determinant of the
inverse of `A`

by explicitly calculating the inverse.
Compare the result to `d`

to see the relative error.

The relative error in the calculation of `d2`

is
many orders of magnitude larger than that of `d1`

.

Examine a matrix that is exactly singular,
but which has a large nonzero determinant. In theory, the determinant
of any singular matrix is zero, but because of the nature of floating-point
computation, this ideal is not always achievable.

Create a 13-by-13 diagonally dominant singular matrix, `A`

.

A =
24 -13 0 0 0 0 0 0 0 0 0 0 0
-24 46 -24 0 0 0 0 0 0 0 0 0 0
0 -33 64 -33 0 0 0 0 0 0 0 0 0
0 0 -40 78 -40 0 0 0 0 0 0 0 0
0 0 0 -45 88 -45 0 0 0 0 0 0 0
0 0 0 0 -48 94 -48 0 0 0 0 0 0
0 0 0 0 0 -49 96 -49 0 0 0 0 0
0 0 0 0 0 0 -48 94 -48 0 0 0 0
0 0 0 0 0 0 0 -45 88 -45 0 0 0
0 0 0 0 0 0 0 0 -40 78 -40 0 0
0 0 0 0 0 0 0 0 0 -33 64 -33 0
0 0 0 0 0 0 0 0 0 0 -24 46 -24
0 0 0 0 0 0 0 0 0 0 0 -13 24

`A`

is singular because the rows are linearly
dependent. For instance, `sum(A)`

produces a vector
of zeros.

Calculate the determinant of `A`

.

d =
1.059686712222177e+05

The determinant of `A`

is quite large despite
the fact that `A`

is singular. In fact, the determinant
of `A`

should be exactly zero! The inaccuracy of `d`

is
due to an aggregation of round-off errors in the MATLAB^{®} implementation
of the LU decomposition, which `det`

uses to calculate
the determinant. This result demonstrates a few important aspects
of calculating numeric determinants. See the Limitations section for more details.