Minimal polynomial of a matrix
This functionality does not run in MATLAB.
linalg::minpoly(A
, x
)
linalg::minpoly(A, x)
computes the minimal
polynomial of the square matrix A in x,
i.e., the monic polynomial of lowest degree annihilating the matrix A.
The minimal polynomial of A
divides the characteristic
polynomial of A
, by CayleyHamilton theorem.
If the matrix is defined over Dom::Float
, then due to
numerical errors the computed polynomial can have a degree higher
than the dimension of the matrix. In such cases, linalg::minpoly
returns
the value FAIL
.
See Example 3.
The component ring of A
must be a field,
i.e., a domain of category Cat::Field
.
We define the following matrix over the rational numbers:
A := Dom::Matrix(Dom::Rational)( [[0, 2, 0], [0, 0, 2], [2, 0, 0]] )
The minimal polynomial of the matrix A in the variable x is then given by:
delete x: linalg::minpoly(A, x)
In this case, the minimal polynomial is in fact equal to the characteristic polynomial of A:
linalg::charpoly(A, x)
The minimal polynomial of the matrix:
B := matrix([[0, 1, 0], [0, 0, 0], [0, 0, 0]])
is a polynomial of degree 2:
m := linalg::minpoly(B, x)
The characteristic polynomial of B has degree 3 and is divided by the minimal polynomial of B:
p := linalg::charpoly(B, x)
p / m
For the following example, MuPAD^{®} is not able to compute
the minimal polynomial, and thus FAIL
is returned:
C := Dom::Matrix(Dom::Float)([ [7, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 2, 0, 0, 0], [1, 2, 3, 0, 0], [1, 2, 3, 4, 7] ])
delete x: linalg::minpoly(C, x)
Warning: Cannot compute the minimal polynomial. [linalg::minpoly]
In fact, for this example MuPAD is not able to check for zero equivalence during Gaussian elimination and therefore chose a wrong pivot element.
If you perform the computation over the coefficient domainDom::ExpressionField
(normal)
instead,
then in most cases the minimal polynomial can be computed:
C := matrix([ [7, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 2, 0, 0, 0], [1, 2, 3, 0, 0], [1, 2, 3, 4, 7] ])
linalg::minpoly(C, x)
However, in general this problem regarding zero recognition cannot be avoided.

A square matrix of a domain of category 

An indeterminate 
Polynomial of the domain Dom::DistributedPolynomial([x],R)
,
where R
is the component ring of A
,
or the value FAIL
.