gives True if m is diagonalizable, and False otherwise.

Details and Options

  • A matrix m is diagonalizable if it is similar to a diagonal matrix. That is, if there is a nonsingular matrix such that is diagonal.
  • DiagonalizableMatrixQ works for symbolic as well as numerical matrices.
  • For approximate matrices, the option Tolerance->t can be used to indicate that the determinant of eigenvectors v of the matrix m satisfying Abs[Det[v]]t is taken to be zero, which means that the eigenvectors v are linearly dependent and the matrix m is not diagonalizable.
  • The option Tolerance has Automatic as its default value.


open allclose all

Basic Examples  (1)

Test if a matrix is diagonalizable:

Scope  (6)

A real matrix:

A complex matrix:

A sparse matrix:

An approximate MachinePrecision matrix:

An approximate arbitrary-precision matrix:

A matrix with exact numeric entries:

A matrix with symbolic entries:

Options  (1)

Tolerance  (1)

Generate a real-valued non-diagonalizable Jordan block matrix with some random perturbation of order :

q is diagonalizable:

But the eigenvectors v are numerically linearly dependent:

Adjust the option Tolerance so that the linear dependence of the eigenvectors is detected:

Applications  (1)

If a matrix is diagonalizable, it can be decomposed as , where is nonsingular and is diagonal. This can be used to compute a matrix function by using its power series represention as . Use this method to compute several different matrix functions:

Compute MatrixExp of m:

Compute matrix Cosh[x] function of m:

Properties & Relations  (7)

Any symmetric matrix is diagonalizable:

Any Hermitian matrix is diagonalizable:

Any normal matrix is diagonalizable:

A Jordan matrix with × Jordan blocks, , is defective (non-diagonalizable):

Any diagonalizable matrix can be represented as , where is diagonal:

The decomposition is given by Eigensystem:

Check the relation:

A diagonalizable matrix has no Jordan blocks:

An × matrix is nilpotent if for some :

Any non-diagonalizable matrix m can be decomposed into a sum of a diagonalizable matrix d and nilpotent matrix q:

Additionally, the matrices d and q commute:

Wolfram Research (2014), DiagonalizableMatrixQ, Wolfram Language function, https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html.


Wolfram Research (2014), DiagonalizableMatrixQ, Wolfram Language function, https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html.


@misc{reference.wolfram_2021_diagonalizablematrixq, author="Wolfram Research", title="{DiagonalizableMatrixQ}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html}", note=[Accessed: 17-October-2021 ]}


@online{reference.wolfram_2021_diagonalizablematrixq, organization={Wolfram Research}, title={DiagonalizableMatrixQ}, year={2014}, url={https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html}, note=[Accessed: 17-October-2021 ]}


Wolfram Language. 2014. "DiagonalizableMatrixQ." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html.


Wolfram Language. (2014). DiagonalizableMatrixQ. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html