yields the Jordan decomposition of a square matrix m. The result is a list {s,j} where s is a similarity matrix and j is the Jordan canonical form of m.


  • The original matrix m is equal to s.j.Inverse[s]. »
  • The matrix m can be either numerical or symbolic.


open allclose all

Basic Examples  (1)

Find the Jordan decomposition of a 3×3 matrix:

Format the results:

Scope  (10)

Basic Uses  (6)

Jordan decomposition of a machine-precision matrix:

Format the results:

Jordan decomposition of a complex matrix:

Jordan decomposition of an exact matrix with a deficient eigenspace:

The one in the third column of indicates that the eigenspace corresponding to 48 is deficient:

The third column of is therefore a generalized eigenvector where gives rather than :

Jordan decomposition of an arbitrary-precision matrix:

Jordan decomposition of a symbolic matrix:

The Jordan decomposition of large numerical matrices is computed efficiently:

Special Matrices  (4)

Jordan decomposition of sparse matrices:

Eigensystems of structured matrices:

IdentityMatrix is a Jordan canonical form:

The associated similarity matrix is a square root of the identity:

Jordan decomposition of a HilbertMatrix:

Applications  (12)

Generalized Eigenvectors and Diagonalizability  (4)

For the matrix , interpret the columns of the matrix of the Jordan decomposition in terms of true eigenvectors and generalized eigenvectors:

Compute the Jordan decomposition:

Columns of for which there is no above the diagonal in the corresponding of columns 1, 3 and 4are true eigenvectors for which :

The remaining column is a generalized eigenvector for which :

Show that the following matrix only has a single eigenvector, but it has a complete chain of generalized eigenvectors that form a basis for TemplateBox[{}, Reals]^4:

Eigensystem shows 84 is an eigenvalue of multiplicity 4 that has just one independent eigenvector:

The first column of the matrix of JordanDecomposition is the one eigenvector found:

The remaining columns are a chain for which :

Since has an empty NullSpace, its columns form a basis for TemplateBox[{}, Reals]^4:

A square matrix has a complete set of eigenvectors, and thus is diagonalizable, iff its matrix is diagonal:

Test if a particular matrix is diagonalizable:

Confirm using DiagonalizableMatrixQ:

Estimate the probability that a 4×4 matrix of ones and zeros will be diagonalizable:

An × matrix is nilpotent if for some :

Consider a non-diagonalizable matrix :

can be written as a sum of a diagonalizable matrix and a nilpotent matrix using JordanDecomposition:

Let be the matrix formed from and the diagonal part of :

Let be the matrix formed from and the superdiagonal part of :

Then is the sum of and :

The matrix is diagonalizable:

The matrix is nilpotent:

Moreover, the matrices and commute:

Diagonalization  (4)

For a diagonalizable matrix, the Jordan decomposition directly gives a diagonalization as m=s.j.TemplateBox[{s}, Inverse]. Apply this to diagonalize the matrix :

Compute the Jordan decomposition:

Confirm the diagonalization:

Let be the linear transformation whose standard matrix is given by the matrix . Find a basis for TemplateBox[{}, Reals]^4 with the property that the representation of in that basis is diagonal:

Find the Jordan decomposition of :

Let consist of the eigenvectors, i.e the columns of . As converts from -coordinates to standard coordinates, its inverse converts in the reverse direction:

Thus is given by TemplateBox[{s}, Inverse].a.s, which is diagonal:

Note that this is simply the diagonal matrix whose entries are the eigenvalues:

A real-valued symmetric matrix is orthogonally diagonalizable as h=o.d.TemplateBox[{o}, Transpose], with diagonal and real valued and orthogonal. Verify that the following matrix is symmetric and then diagonalize it:

Compute the Jordan decomposition:

Let equal :

Let equal after normalizing its columns:

Confirm that is indeed orthogonal:

Verify that h=o.d.TemplateBox[{o}, Transpose]:

A matrix is called normal if TemplateBox[{n}, ConjugateTranspose].n=n.TemplateBox[{n}, ConjugateTranspose]. Normal matrices are the most general kind of matrix that can be diagonalized by a unitary transformation. All real symmetric matrices are normal because both sides of the equality are simply :

Show that the following matrix is normal, then diagonalize it:

Confirm using NormalMatrixQ:

Compute the Jordan decomposition:

Unlike a real symmetric matrix, the diagonal matrix is complex valued:

Normalizing the columns of gives a unitary matrix:

Confirm the diagonalization n=u.d.TemplateBox[{u}, ConjugateTranspose]:

Matrix Functions and Dynamical Systems  (4)

Use the Jordan decomposition to compute and for the following matrix :

Compute the and matrices:

Confirm the identity m=s.j.TemplateBox[{s}, Inverse]:

Then m^k=s.j.TemplateBox[{s}, Inverse].s.j.TemplateBox[{s}, Inverse].....s.j.TemplateBox[{s}, Inverse]=s.j^k.TemplateBox[{s}, Inverse]. Since is upper triangular and nearly diagonal, the diagonal entries are raised to the power , and the entry becomes :

Thus, the expression for is:

Confirm with direct computation by MatrixPower:

Applying the power series for the exponential, the diagonal entries obviously become , and the off-diagonal term is merely a re-indexed exponential sum. Thus, it too becomes :

Thus, the expression for is:

Confirm using a direction computation by MatrixExp:

Confirm the formula for a Jordan matrix consisting of a single chain for the following matrix and the functions , and :

First compute the formula for :

Verify the computation using MatrixFunction:

The computation for is analogous:

MatrixFunction confirms the result:

As has a parameter, it is necessary to use D instead of Derivative and substitute in :

Again, MatrixFunction confirms the result when is entered using Function:

Solve the system of ODEs , , . First, construct the coefficient matrix for the right-hand side:

Compute the Jordan decomposition of :

Using the formula of the previous example, is given by:

The general solution is exp(ta).{c_1,c_2,c_3}=s.exp(tj).TemplateBox[{s}, Inverse].{TemplateBox[{1}, CTraditional],TemplateBox[{2}, CTraditional],TemplateBox[{3}, CTraditional]}, for three arbitrary starting values:

Verify the solution using DSolveValue:

Produce the general solution of the dynamical system when is the following stochastic matrix:

Compute the Jordan decomposition of :

Since the is diagonal, consists of merely raising the diagonal entries to the power :

The general solution is A^k.{c_1,c_2.c_3}=s.j^k.TemplateBox[{s}, Inverse].{c_1,c_2.c_3}:

Verify that satisfies the dynamical equation:

Properties & Relations  (10)

JordanDecomposition[m] gives a matrix factorization of m as s.j.Inverse[s]:

Find the Jordan decomposition:

m is equal to s.j.Inverse[s]:

The eigenvalues of m are on the diagonal of j:

A matrix is diagonalizable iff the j matrix of its Jordan decomposition is diagonal:

If m is diagonalizable, the Jordan decomposition is effectively the same as Eigensystem:

The ordering is different:

The eigenvalues are on the diagonal of j:

The eigenvectors are the columns of s:

For a diagonalizable matrix, JordanDecomposition reduces function application to application to eigenvalues:

Compute the matrix exponential using diagonalization, exponentiating only the diagonal entries:

Compute the matrix exponential using MatrixExp:

Note that this is not simply the exponential of each entry:

For a non-diagonalizable matrix, the Jordan decomposition restricts function application to each generalized eigenvector chain:

The j matrix is not diagonal, so m is not diagonalizable:

The function application only extends above the diagonal for columns for which j had a 1 above the diagonal:

Confirm that f(m)=s.f(j).TemplateBox[{s}, Inverse]:

For a real symmetric numerical matrix, the matrix is orthogonal:

The matrix is diagonal and real valued:

For a real antisymmetric numerical matrix, the matrix is unitary:

The matrix is diagonal with pure imaginary diagonal entries:

For a real unitary numerical matrix, the matrix is unitary:

The matrix is diagonal:

The diagonal entries lie on the unit circle:

For a normal numerical matrix, the matrix is unitary:

The matrix is diagonal:

SchurDecomposition[n,RealBlockDiagonalFormFalse] for a numerical normal matrix n:

Up to phase, this coincides with the Jordan decomposition:

The t and j matrices are equal:

To verify that q has eigenvectors as columns, set the first entry of each column to 1. to eliminate phase differences between q and s:

Possible Issues  (2)

m is a 4×4 matrix with some entries differing by a small amount:

Find the Jordan decomposition using exact arithmetic:

This shows that m is diagonalizable:

Find the Jordan decomposition with machinenumber arithmetic:

Computation with machine-number arithmetic indicates that the matrix is not diagonalizable:

To machine precision, m is indistinguishable from a nearby non-diagonalizable matrix:

The matrix m has some machine-precision entries:

Due to numerical rounding, the deficient eigenspace at 2. is split into two separate eigenspaces:

Perform the computation using exact arithmetic to determine if the matrix is diagonalizable:

Wolfram Research (1996), JordanDecomposition, Wolfram Language function, (updated 2010).


Wolfram Research (1996), JordanDecomposition, Wolfram Language function, (updated 2010).


Wolfram Language. 1996. "JordanDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2010.


Wolfram Language. (1996). JordanDecomposition. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2022_jordandecomposition, author="Wolfram Research", title="{JordanDecomposition}", year="2010", howpublished="\url{}", note=[Accessed: 08-August-2022 ]}


@online{reference.wolfram_2022_jordandecomposition, organization={Wolfram Research}, title={JordanDecomposition}, year={2010}, url={}, note=[Accessed: 08-August-2022 ]}