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}] ]