JordanReduce[m]
gives the Jordan normal form of a square matrix
.
JordanReduce
JordanReduce[m]
gives the Jordan normal form of a square matrix
.
Details
- The Jordan normal form of a matrix is also known as the "Jordan canonical form" or simply the "Jordan form".
- The Jordan normal form of a matrix is block diagonal with eigenvalues appearing by multiplicity on the main diagonal. The first superdiagonal can contain ones where there are nontrivial Jordan blocks from repeated eigenvalues. All other elements are zero.
- Each eigenvalue determines a block, and eigenvalues with multiplicity always appear together in the same block. They may be split into sub-blocks. A new sub-block is indicated by not having a one above the eigenvalue, that is, in the position of the superdiagonal.
- The length of a block is the algebraic multiplicity of the eigenvalue. The number of sub-blocks is the geometric multiplicity and is the same as the dimension of the subspace spanned by linearly independent eigenvectors for that eigenvalue.
- The Jordan normal form is unique up to ordering of blocks and ordering of sub-blocks within blocks.
- When all eigenvalues have multiplicity 1, the Jordan form is the same up to ordering as the diagonal matrix comprised of those eigenvalues. This holds more generally when there are no ones on the superdiagonal, even if some eigenvalues have nontrivial multiplicity.
- Square matrices m1 and m2 with the same dimensions are said to be similar if there is an invertible matrix s of the same dimension such that m2=s.m1.Inverse[s]. Similar matrices have the same Jordan normal form. »
- The matrix m can be either numerical or symbolic.
- It is often faster to compute the Jordan normal form than the full decomposition. »
Examples
open all close allBasic Examples (1)
Find the Jordan reduction of a 3×3 matrix:
JordanReduce[{{27, 48, 81}, {-6, 0, 0}, {1, 0, 3}}]//MatrixFormThis is the second of the two matrices returned by JordanDecomposition:
% == Last[JordanDecomposition[{{27, 48, 81}, {-6, 0, 0}, {1, 0, 3}}]]Scope (10)
Basic Uses (6)
Jordan form of a machine-precision matrix:
JordanReduce[{{-1.2, 2.7, 3.8}, {4.2, 4.4, 5.3}, {3.5, 7.6, 6.8}}]MatrixForm[%]Jordan form of a complex matrix:
JordanReduce[{{π, .3}, {I, 1 + 1.5 I}}]//MatrixFormJordan form of an exact matrix with a deficient eigenspace:
m = {{-103, -191, -255}, {110, 190, 222}, {9, 9, 33}};
j = JordanReduce[m];
MatrixForm[j]The one in the third column of
indicates that the eigenspace corresponding to 48 is deficient:
Eigensystem[m]Jordan form of an arbitrary-precision matrix:
JordanReduce[RandomReal[4, {3, 3}, WorkingPrecision -> 20]]Jordan form of a rational matrix:
JordanReduce[{{-1 / 2, 2 / 7, 3 / 8}, {4 / 3, 4 / 5, 5 / 3}, {3 / 5, 7 / 6, 6 / 11}}]MatrixForm[%]Jordan form of a symbolic matrix:
JordanReduce[(| | |
| :---- | :---- |
| a1, 1 | a1, 2 |
| a2, 1 | a2, 2 |)]Special Matrices (4)
Jordan reduction of sparse matrices:
SparseArray[{{1, 1} -> 3.1, {1, 2} -> 2, {2, 3} -> 5, {3, 1} -> 3.9}, {3, 3}]JordanReduce[%]//MatrixFormSparseArray[Band[{1, 1}, {-1, -1}] -> {{{1, 2}, {2, 1}}}, {4, 4}]JordanReduce[%]//MatrixFormJordan forms of structured matrices:
SymmetrizedArray[{{1, 1} -> 2.2, {1, 2} -> 1.1, {3, 2} -> 5.7}, {3, 3}, Symmetric[All]]MatrixForm[JordanReduce[%]]IdentityMatrix is a Jordan canonical form:
id = IdentityMatrix[4];
j = JordanReduce[id];j == idJordan form of a HilbertMatrix:
MatrixForm[JordanReduce[HilbertMatrix[2]]]Applications (4)
Determine the algebraic and geometric multiplicities of the eigenvalues of the following matrix:
m = (| | | | |
| ---- | --- | ---- | --- |
| -223 | 602 | -145 | 215 |
| -75 | 218 | -25 | 51 |
| 13 | -66 | 99 | 19 |
| -186 | 368 | -110 | 242 |);From the diagonal elements of the Jordan form, there is a single eigenvalue of algebraic multiplicity 4:
j = JordanReduce[m];
Diagonal[j]As there are 1s all along the superdiagonal, there is a single subblock and thus the geometric multiplicity is 1:
MatrixForm[j]Eigensystem confirms that there is a single linearly independent eigenvector:
Eigensystem[m]The algebraic multiplicity of an eigenvalue equals the length of the diagonal of block of the eigenvalue in the Jordan form, and the geometric multiplicity equals the number of subblocks delineated by a 0 in the superdiagonal in each block. Find the algebraic and geometric multiplicities of the eigenvalues of the following matrix:
m = (1/756)(| | | | | | | |
| ----- | ----- | ----- | ---- | ---- | ----- | ----- |
| 749 | 84 | -189 | 2079 | 1855 | -343 | -1169 |
| -4316 | 816 | -1728 | 3996 | 884 | 3112 | 128 |
| 253 | 2148 | 4779 | -621 | 2075 | -2507 | -2461 |
| -3710 | -1596 | -1134 | 6426 | 1862 | 1918 | -406 |
| -406 | 2604 | 1134 | 378 | 6286 | -3262 | -3542 |
| -153 | 2484 | 1377 | -243 | 1557 | 279 | -2223 |
| -4569 | -2844 | -1971 | 4617 | 1833 | 3351 | 2589 |);From the diagonal elements of the Jordan form, 3 and 4 have algebraic multiplicity 2, and 5 has algebraic multiplicity 3:
j = JordanReduce[m];
Diagonal[j]From the full matrix it can be seen that the 4 has geometric multiplicity 1, and 3 and 5 have multiplicity 2:
j//MatrixFormThe subblocks can also be counted using BlockDiagonalMatrix; 3 has two
bocks, 4 a single
, and 5 a
and a
block:
MatrixForm /@ BlockDiagonalMatrix[j]["Blocks"]A square matrix has a complete set of eigenvectors, and thus is diagonalizable, iff its
matrix is diagonal:
DiagonalizableQ[m_ ? MatrixQ /; Apply[Equal, Dimensions[m]]] :=
DiagonalMatrixQ[JordanReduce[m]];Test if a particular matrix is diagonalizable:
DiagonalizableQ[{{0, 1}, {0, 0}}]Confirm using DiagonalizableMatrixQ:
DiagonalizableMatrixQ[{{0, 1}, {0, 0}}]Estimate the probability that a 4×4 matrix of ones and zeros will be diagonalizable:
Block[{trials = 100, count = 0},
Do[If[DiagonalizableQ[RandomInteger[1, {4, 4}]], count++], {trials}];
N[count / trials]
]A matrix m1 and a random invertible matrix s give a similar matrix m2:
SeedRandom[1234];
m1 = {{9, -7, 3}, {12, -10, 3}, {16, -16, 1}};
s = RandomInteger[{-2, 2}, {3, 3}];
m2 = s.m1.Inverse[s];
MatrixForm /@ {m1, m2}JordanReduce[m1]The similar matrix m2 has the same reduction:
% === JordanReduce[m2]Properties & Relations (9)
JordanReduce[m] is equivalent to the second matrix returned by JordanDecomposition[m]:
m = {{3, 7, -22, -6}, {7, 4, -20, -7}, {0, 0, -3, 0}, {6, 7, -21, -9}};
JordanReduce[m] == JordanDecomposition[m][[2]]m = {{-1.2, 2.7, 3.8}, {4.2, 4.4, 5.3}, {3.5, 7.6, 6.8}};
JordanReduce[m] == JordanDecomposition[m][[2]]Compute the Jordan form of an integer matrix:
Timing[j = JordanReduce[m = RandomInteger[{-10, 10}, {12, 12}]];]It is notably slower to compute the full decomposition:
Timing[{s, j2} = JordanDecomposition[m];]Check that the diagonals agree:
Diagonal[j] == Diagonal[j2]A matrix is diagonalizable iff its Jordan reduction is diagonal:
m = (| | | |
| - | - | - |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
| 0 | 0 | 1 |);
{DiagonalizableMatrixQ[m], DiagonalMatrixQ[JordanReduce[m]]}m = (| | | |
| - | - | - |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| 0 | 1 | 1 |);
{DiagonalizableMatrixQ[m], DiagonalMatrixQ[JordanReduce[m]]}EigenvalueDecomposition[m] exists if and only if m's Jordan reduction is diagonal:
nd = {{27, 48, 81}, {-6, 0, 0}, {1, 0, 3}}
EigenvalueDecomposition[nd]The Jordan form of nd has a 1 above the diagonal:
JordanReduce[nd]//MatrixFormHere the decomposition exists:
d = {{2, 1, 0}, {3, 7, 1}, {5, -1, -4}};
EigenvalueDecomposition[d]As expected, the Jordan matrix is diagonal in this case:
JordanReduce[d]//MatrixFormFor a real symmetric numerical matrix, the Jordan form is diagonal and real valued:
h = {{1.5, .5, -.5}, {.5, 3.2, -1.7}, {-.5, -1.7, 2.2}};
SymmetricMatrixQ[h]j = JordanReduce[h];
DiagonalMatrixQ[j] && j∈RealsFor a real antisymmetric numerical matrix, the Jordan form is diagonal with pure imaginary diagonal entries:
a = N[{{0, 4, -2}, {-4, 0, -3}, {2, 3, 0}}];
AntisymmetricMatrixQ[a]j = JordanReduce[a];
DiagonalMatrixQ[j] && And @@ Thread[ Chop@Re[Diagonal[j]] == 0]For a unitary numerical matrix, the Jordan form is diagonal:
u = N[{{1 / Sqrt[2], I / Sqrt[2]}, {I / Sqrt[2], 1 / Sqrt[2]}}];
UnitaryMatrixQ[u]j = JordanReduce[u];
DiagonalMatrixQ[j]The diagonal entries lie on the unit circle:
Abs[Diagonal[j] ]For a normal numerical matrix, the Jordan form is diagonal:
n = {{1., 3., -1.}, {-1., 1., 3.}, {3., -1., 1.}};
NormalMatrixQ[n]DiagonalMatrixQ[JordanReduce[n]]SchurDecomposition[n,RealBlockDiagonalFormFalse] for a numerical normal matrix
:
n = {{1., 3., -1.}, {-1., 1., 3.}, {3., -1., 1.}};
NormalMatrixQ[n]t = SchurDecomposition[n, RealBlockDiagonalForm -> False][[2]]//ChopThis is the same matrix one constructs from the eigenvalues:
DiagonalMatrix[Eigenvalues[n]]//ChopThis coincides with the Jordan form up to reordering:
j = JordanReduce[n]//ChopPossible Issues (1)
The matrix m has some machine-precision entries:
m = (| | | | |
| -- | - | -- | -- |
| 2. | 4 | -6 | 0 |
| 4 | 6 | -3 | -4 |
| 0 | 0 | 4 | 0 |
| 0 | 4 | -6 | 2 |);Due to numerical rounding, the deficient eigenspace at 2. is split into two separate eigenspaces:
jn = JordanReduce[m];
jn//MatrixFormPerform the computation using exact arithmetic to see that the matrix is not diagonalizable (having a 1 on the superdiagonal from the eigenvalue 2 with multiplicity of two):
j = JordanReduce[Rationalize[m]];
j//MatrixFormExponentiate the numeric Jordan form, with its diagonal entries reordered to match the exact decomposition:
Chop[MatrixExp[DiagonalMatrix[Reverse[Diagonal[jn]]]], 10 ^ (-6)]//MatrixFormComparing numerically to exponentiating the exact Jordan form shows a considerable difference in the second column of the first row:
MatrixExp[j]//N//MatrixFormRelated Guides
History
Text
Wolfram Research (2026), JordanReduce, Wolfram Language function, https://reference.wolfram.com/language/ref/JordanReduce.html.
CMS
Wolfram Language. 2026. "JordanReduce." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/JordanReduce.html.
APA
Wolfram Language. (2026). JordanReduce. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/JordanReduce.html
BibTeX
@misc{reference.wolfram_2026_jordanreduce, author="Wolfram Research", title="{JordanReduce}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/JordanReduce.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_jordanreduce, organization={Wolfram Research}, title={JordanReduce}, year={2026}, url={https://reference.wolfram.com/language/ref/JordanReduce.html}, note=[Accessed: 12-June-2026]}