Matrix determinant
collapse all in page
Syntax
d = det(A)
Description
example
d = det(A)
returns the determinant of square matrix A
.
Examples
collapse all
Calculate Determinant of Matrix
Open Live Script
Create a 3-by-3 square matrix, A
.
A = [1 -2 4; -5 2 0; 1 0 3]
A = 3×3 1 -2 4 -5 2 0 1 0 3
Calculate the determinant of A
.
d = -32
Determine if Matrix Is Singular
Open Live Script
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.
A = eye(10)*0.0001;
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
.
d = det(A)
d = 1.0000e-40
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
.
c = cond(A)
c = 1
The result confirms that A
is not ill conditioned.
Find Determinant of Singular Matrix
Open Live Script
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 17-by-17 diagonally dominant singular matrix A
and view the pattern of nonzero elements.
A = diag([36 54 24 46 64 78 88 94 96 94 88 78 64 46 24 54 36]);S = diag([-27 -12 -13 -24 -33 -40 -45 -48 -49 -48 -45 -40 -33 -12 -27 -36],1);A = A + S + rot90(S,2);spy(A)
A
is singular because the rows are linearly dependent. For instance, sum(A)
produces a vector of zeros.
Calculate the determinant of A
.
d = det(A)
d = 2.6698e+10
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.
Input Arguments
collapse all
A
— Input matrix
square numeric matrix
Input matrix, specified as a square numeric matrix.
Data Types: single
| double
Complex Number Support: Yes
Limitations
Avoid using det
to examine if a matrix issingular because of the following limitations. Use cond
or rcond
instead.
Limitation | Result |
---|---|
The magnitude of the determinant is typically unrelatedto the condition number of a matrix. | The determinant of a matrix can be arbitrarily largeor small without changing the condition number. |
| The determinant calculation is sometimes numericallyunstable. For example, |
Algorithms
det
computes the determinant from the triangularfactors obtained by Gaussian elimination with the lu
function.
[L,U] = lu(X)s = det(L) % This is always +1 or -1 det(X) = s*prod(diag(U))
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
Code generation does not support sparse matrix inputs for this function.
GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.
Usage notes and limitations:
Code generation does not support sparse matrix inputs for this function.
Thread-Based Environment
Run code in the background using MATLAB® backgroundPool
or accelerate code with Parallel Computing Toolbox™ ThreadPool
.
This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
This function fully supports GPU arrays. For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Version History
Introduced before R2006a
See Also
cond | rcond | condest | inv | lu | rref | mldivide
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本 (日本語)
- 한국 (한국어)
Contact your local office