gives True if m is an explicitly normal matrix, and False otherwise.

Details and Options

  • A matrix m is normal if m.ConjugateTranspose[m]ConjugateTranspose[m].m.
  • NormalMatrixQ works for symbolic as well as numerical matrices.
  • The following options can be given:
  • SameTestAutomaticfunction to test equality of expressions
    ToleranceAutomatictolerance for approximate numbers
  • For exact and symbolic matrices, the option SameTest->f indicates that two entries aij and bij are taken to be equal if f[aij,bij] gives True where a=m.m and b=m.m.
  • For approximate matrices, the option Tolerance->t can be used to indicate that the norm γ=m.m-m.m satisfying γt γ is taken to be zero where γ is the infinity norm of the matrix m.


open allclose all

Basic Examples  (1)

Test if a matrix is normal:

Scope  (5)

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  (2)

SameTest  (1)

This matrix is normal for a positive real , but NormalMatrixQ gives False:

Use the option SameTest to get the correct answer:

Tolerance  (1)

Generate a normal complex-valued matrix with some random perturbation of order :

m.m-m.m is not exactly zero outside the main diagonal:

Adjust the option Tolerance for accepting a matrix as normal:

Tolerance is applied to the following value:

Applications  (2)

Generate a normal matrix by using the fact that any normal matrix can be represented in the form p.d.TemplateBox[{p}, ConjugateTranspose] with unitary and diagonal:

In general, the matrix is not Hermitian, antihermitian, or unitary:

SchurDecomposition for normal matrices is always equivalent to Eigensystem:

The triangular matrix t is effectively diagonal, although it may contain roundoff errors:

The off-diagonal elements of t are roundoff errors:

The eigenvalues on the diagonal of t are not sorted:

Properties & Relations  (9)

NormalMatrixQ[m] is effectively equivalent to

Any symmetric matrix is normal:

Any Hermitian matrix is normal:

Any antisymmetric matrix is normal:

Any antihermitian matrix is normal:

For any normal matrix, where are eigenvalues of :

Absolute values of eigenvalues of a normal matrix are equal to singular values of the matrix:

A normal matrix has a full set of eigenvectors:

The eigenvectors are often complex valued for real-valued matrices:

The eigenvectors v are orthogonal/unitary and therefore linearly independent:

A normal matrix is always diagonalizable as tested with DiagonalizableMatrixQ:

Wolfram Research (2014), NormalMatrixQ, Wolfram Language function,


Wolfram Research (2014), NormalMatrixQ, Wolfram Language function,


@misc{reference.wolfram_2021_normalmatrixq, author="Wolfram Research", title="{NormalMatrixQ}", year="2014", howpublished="\url{}", note=[Accessed: 24-October-2021 ]}


@online{reference.wolfram_2021_normalmatrixq, organization={Wolfram Research}, title={NormalMatrixQ}, year={2014}, url={}, note=[Accessed: 24-October-2021 ]}


Wolfram Language. 2014. "NormalMatrixQ." Wolfram Language & System Documentation Center. Wolfram Research.


Wolfram Language. (2014). NormalMatrixQ. Wolfram Language & System Documentation Center. Retrieved from