XDistributedPolynomialFunctions(VAR, F)

xdpolyf.spad line 5 [edit on github]

Using the Hankel matrix of a noncommutative polynomial one can determine the rank (Matrices de Hankel by Fliess). The extended Ho-Algorithmus (Fornasini+Marchesini) is used to create a minimal linear representation. Another approach is implemented in NonCommutativeRationalFunctions.

display : Record(rows : List(FreeMonoid(VAR)), cols : List(FreeMonoid(VAR)), H : Matrix(F)) -> OutputForm

display(sys) prints the Hankel matrix in an extended form with row-indices as column 0 and column-indices as row 0.

findNonZeroEntry : (Matrix(F), NonNegativeInteger, NonNegativeInteger) -> List(NonNegativeInteger)

findNonZeroEntry(A,i,j) returns the indices [k,l] with i<=k<=m and j<=l<=n such that A(k,l) is non-zero and [0,0] otherwise. A is of size m x n.

hankelIndices : XDistributedPolynomial(VAR, F) -> List(FreeMonoid(VAR))

hankelIndices(p) returns a list of all left and right factors of the monomials of a given multivariate noncommutative polynomial. Factorization: w = u*v

hankelMatrix : XDistributedPolynomial(VAR, F) -> Matrix(F)

hankelMatrix(p) returns the Hankel matrix H(p) of given polynomial p, i.e. the entries at (u,v) are the coefficients of the monomials w = u*v. Rows and columns are indexed by words.

hankelMatrix : (XDistributedPolynomial(VAR, F), VAR) -> Matrix(F)

hankelMatrix(p,x) returns a matrix with the entries of the coefficients of p at (u,v) where the monomials factorizes through w = u*x*v. This matrix is indexed by all words of the Hankel matrix.

hankelSystem : XDistributedPolynomial(VAR, F) -> Record(rows : List(FreeMonoid(VAR)), cols : List(FreeMonoid(VAR)), H : Matrix(F))

hankelSystem(p) creates a Hankel-matrix for the polynomial p with respect to the basis of all factors in p. Row- and column-indices can be different.

minimalMatrix : (Matrix(F), NonNegativeInteger) -> Matrix(F)

minimalMatrix(A,r) returns the minimal (upper-left) submatrix of A such that the rank corresponds to the given.

minimalRepresentation : XDistributedPolynomial(VAR, F) -> Record(alpha : Matrix(F), mu : List(Matrix(F)), var : List(VAR), beta : Matrix(F))

minimalRepresentation(p) returns a minimal representation using the generalized Ho algorithm [Fornasini, 1978] p = sum_w alpha*mu(w)*beta*w [Theorem 3.3, Salomaa--Soittola 1978]

transformationMatrices : Matrix(F) -> List(Matrix(F))

transformationMatrices(A) returns a list of two matrices P and Q such that P*A*Q = J where the upper diagonal block of J is I_k for k = rank(A).