The minimal polynomial of a matrix is the monic polynomial in
of smallest degree
such that
|
(1)
|
The minimal polynomial divides any polynomial with
and, in particular, it divides the characteristic
polynomial.
If the characteristic polynomial factors as
|
(2)
|
then its minimal polynomial is given by
|
(3)
|
for some positive integers , where the
satisfy
.
For example, the characteristic polynomial of the zero matrix is
, whiles its minimal polynomial is
. However, the characteristic
polynomial and minimal polynomial of
|
(4)
|
are both .
The following Wolfram Language code will find the minimal polynomial for the square matrix
in the variable
.
MatrixMinimalPolynomial[a_List?MatrixQ,x_]:=Module[
{
i,
n=1,
qu={},
mnm={Flatten[IdentityMatrix[Length[a]]]}
},
While[Length[qu]==0,
AppendTo[mnm,Flatten[MatrixPower[a,n]]];
qu=NullSpace[Transpose[mnm]];
n++
];
First[qu].Table[x^i,{i,0,n-1}]
]