gives the Frobenius normal form of a square matrix
.
FrobeniusReduce
gives the Frobenius normal form of a square matrix
.
Details and Options
- FrobeniusReduce is also known as rational canonical form or Frobenius canonical form. Sometimes the word "normal" is used in place of "canonical".
- The Frobenius form is a block diagonal matrix. Each block is a companion matrix.
- FrobeniusReduce uses only rational operations on the input, so is often a more efficient choice than JordanReduce. Both produce a block diagonal structure related to the input by similarity transformations.
- The coefficients of the companion matrices correspond to the invariant factors of the characteristic polynomial of the matrix. These matrices are ordered so that each such polynomial divides the next, and their product is the characteristic polynomial. The polynomial corresponding to the final companion matrix is the minimal polynomial for the matrix.
- It is often faster to compute the Frobenius normal form than the full decomposition.
Examples
open all close allBasic Examples (2)
Compute the Frobenius reduction of an integer matrix:
FrobeniusReduce[{{1, 0, 0, 0}, {0, 1, 0, 0}, {-2, -2, 0, 1}, {-2, 0, -1, 2}}]//MatrixFormCompute the Frobenius reduction of a rational matrix:
FrobeniusReduce[{{1 / 2, -1 / 3, 5 / 2, 6 / 7}, {0, 3 / 5, 0, -2 / 7}, {-2 / 3, -2 / 5, 0, 1 / 9}, {4 / 3, 9 / 4, -1 / 4, 2}}]//MatrixFormScope (2)
Options (1)
Modulus (1)
FrobeniusReduce can work modulo a prime:
m = {{-11, 5, -7}, {9, -19, -6}, {-2, 1, 5}};
f = FrobeniusReduce[m, Modulus -> 19]Properties & Relations (3)
FrobeniusReduce[m] gives the same result as FrobeniusDecomposition[m][[2]]:
m = (| | | | | | | | |
| -- | -- | -- | -- | -- | --- | -- | -- |
| 4 | -1 | -4 | 9 | -2 | -3 | 6 | 1 |
| -5 | 1 | 0 | -2 | 2 | 2 | -3 | 0 |
| 8 | -2 | -5 | 14 | -4 | -6 | 10 | 2 |
| 4 | -1 | -4 | 8 | -2 | -3 | 5 | 1 |
| 7 | -1 | -4 | 15 | -4 | -6 | 10 | 1 |
| 5 | -1 | -4 | 7 | -3 | -3 | 4 | 1 |
| -3 | 1 | 4 | -7 | 1 | 2 | -5 | -1 |
| 15 | -3 | -8 | 27 | -8 | -11 | 20 | 4 |);
FrobeniusReduce[m] == FrobeniusDecomposition[m][[2]]SeedRandom[11111];
dim = 24;
mat = RandomInteger[{-10, 10}, {dim, dim}];Computing the Frobenius form directly is notably faster than extracting it from the full decomposition:
{AbsoluteTiming[fd2 = FrobeniusDecomposition[mat][[2]];], AbsoluteTiming[fr = FrobeniusReduce[mat];]}fd2 === frThe polynomial Smith reduction can be used to compute the rational canonical form of a matrix:
m = (| | | | | | | | |
| -- | -- | -- | -- | -- | --- | -- | -- |
| 4 | -1 | -4 | 9 | -2 | -3 | 6 | 1 |
| -5 | 1 | 0 | -2 | 2 | 2 | -3 | 0 |
| 8 | -2 | -5 | 14 | -4 | -6 | 10 | 2 |
| 4 | -1 | -4 | 8 | -2 | -3 | 5 | 1 |
| 7 | -1 | -4 | 15 | -4 | -6 | 10 | 1 |
| 5 | -1 | -4 | 7 | -3 | -3 | 4 | 1 |
| -3 | 1 | 4 | -7 | 1 | 2 | -5 | -1 |
| 15 | -3 | -8 | 27 | -8 | -11 | 20 | 4 |);Compute the Smith form of a characteristic matrix and extract the diagonal:
s = PolynomialSmithReduce[m - x * IdentityMatrix[Length[m]], x];
diag = Diagonal[s]Obtain the diagonal elements of positive degree, corresponding to companion matrix polynomials:
polys = Select[diag, (Exponent[#, x] > 0)&]Check the last one is the matrix minimal polynomial:
Last[polys] == Expand[MatrixMinimalPolynomial[m, x]]Check that their product is the matrix characteristic polynomial:
Expand[Times@@polys] == Expand[CharacteristicPolynomial[m, x]]Use these to create companion matrix blocks:
companionMatrix[poly_, x_] := Module[
{clist = CoefficientList[poly, x], len = Exponent[poly, x], cmat},
cmat = ConstantArray[0, {len, len}];
Do[cmat[[i, i - 1]] = 1, {i, 2, len}];
cmat[[All, -1]] = -Most[clist] / Last[clist];
cmat
]
compmats = Map[companionMatrix[#, x]&, polys]Use SparseArray and Band to reconstruct the companion matrix for m as a diagonal block matrix:
compmat = Normal[SparseArray[Band[{1, 1}] -> (compmats)]]compmat == FrobeniusReduce[m]Related Guides
History
Text
Wolfram Research (2026), FrobeniusReduce, Wolfram Language function, https://reference.wolfram.com/language/ref/FrobeniusReduce.html.
CMS
Wolfram Language. 2026. "FrobeniusReduce." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FrobeniusReduce.html.
APA
Wolfram Language. (2026). FrobeniusReduce. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FrobeniusReduce.html
BibTeX
@misc{reference.wolfram_2026_frobeniusreduce, author="Wolfram Research", title="{FrobeniusReduce}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/FrobeniusReduce.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_frobeniusreduce, organization={Wolfram Research}, title={FrobeniusReduce}, year={2026}, url={https://reference.wolfram.com/language/ref/FrobeniusReduce.html}, note=[Accessed: 12-June-2026]}