compute the Hermite normal form of a Matrix - Maple Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Mathematics : Linear Algebra : LinearAlgebra Package : Solvers : LinearAlgebra/HermiteForm

LinearAlgebra[HermiteForm] - compute the Hermite normal form of a Matrix

Calling Sequence

HermiteForm(A, x, m, out, options, outopts)

Parameters

A

-

Matrix

x

-

(optional) name; specify the variable in which the entries of A are rational polynomials over Q

m

-

(optional) equation of the form method = name where name is one of 'integer' or 'rational'; specify the method to use

out

-

(optional) equation of the form output = obj where obj is one of 'H' or 'U', or a list containing one or more of these names; select result objects to compute

options

-

(optional); constructor options for the result object(s)

outopts

-

(optional) equation(s) of the form outputoptions[o] = list where o is one of 'H' or 'U'; constructor options for the specified result object

Description

• 

The HermiteForm(A) function computes the Hermite normal form (row reduced echelon form) of an m x n rectangular Matrix of univariate polynomials in x over the field of rational numbers Q, or rational expressions over Q.

  

The Hermite normal form H is obtained by doing elementary row operations on A. This includes interchanging rows, multiplying through a row by a unit, and subtracting a polynomial multiple of one row from another.

  

The number of nonzero rows of H is Rank(A). If n = m, i=1nHi,i=normalDeterminantA where normal means unit normal, that is, monic.

• 

If the variable x is specified, or if the option method='rational' is specified, or if the Matrix A is not of type 'Matrix(integer)', computation takes place over the field of rational polynomials. If the option method='integer' is specified, or if an optional variable name is not specified and the Matrix A is of type 'Matrix(integer)', the computation takes place over the integers to supply the integer-only Hermite normal form.

  

If the variable name x is not specified and the Matrix is not of type 'Matrix(integer)', the routine selects the indeterminate if indets(A) has a single member, and returns an error if indets(A) has more than a single member. If indets(A) has no members and A is not of type 'Matrix(integer)', the computation takes place over the field of rational polynomials using a dummy variable.

• 

The output option (out) determines the content of the returned expression sequence.

  

Depending on what is included in the output option, an expression sequence containing one or more of the factors H (the Hermite normal form) or U (the transformation Matrix) are returned. If output is a list, the objects are returned in the same order as specified in the list.

  

The returned Matrix objects have the property that H=U.A.

• 

Specifying the option method='integer[reduced]' causes the integer transformation matrix U to be reduced using lattice basis reduction.  This can result in substantially smaller entries if the input matrix A does not have full row rank, but at an increased running time.

• 

The constructor options provide additional information (readonly, shape, storage, order, datatype, and attributes) to the Matrix constructor that builds the result. These options may also be provided in the form outputoptions[o]=[...], where [...] represents a Maple list.  If a constructor option is provided in both the calling sequence directly and in an outputoptions[o] option, the latter takes precedence (regardless of the order).

  

The following list indicates permissible values for the index [o] of outputoptions with their corresponding meaning.

  

 

 

 

H

Hermite form

U

transformation Matrix

 

 

• 

This function is part of the LinearAlgebra package, and so it can be used in the form HermiteForm(..) only after executing the command with(LinearAlgebra). However, it can always be accessed through the long form of the command by using LinearAlgebra[HermiteForm](..).

Examples

withLinearAlgebra:

A:=3+z,4,z21|1,z,4|4,2,1

A:=3+z144z2z2141

(1)

H,U:=HermiteFormA,output='H','U'

H,U:=10776z2+29304z5315201319z2+3176z373800z3+14z2154z432,7304z29304z+3197304z+373047304z376376z2776z+319376z576376z+41914z3+14z+414z2z13414z2+34z1

(2)

mapexpand,U.A

10776z2+29304z5315201319z2+3176z373800z3+14z2154z432

(3)

mulHi,i,i=1..3

z3+14z2154z432

(4)

DeterminantA

4z3+z215z86

(5)

lcoeff

z3+14z2154z432

(6)

HermiteForm0,2,x|0,2y,xy,x

1y0000

(7)

A:=RandomMatrix5,3

A:=764297227442892326931749967

(8)

HermiteFormA,output='U'

693448982033007353400177773230266846189059901153851494565492258804019947125837194946101657017457122611983093889661

(9)

HermiteFormA,output='U',method='integerreduced'

641641121531635011361859799266195265277271355122129832408629823737

(10)

See Also

indets, LinearAlgebra, LinearAlgebra[Determinant], LinearAlgebra[RowOperation], Matrix, MatrixPolynomialAlgebra[HermiteForm]


Download Help Document

Was this information helpful?



Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam