SmithForm - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


LinearAlgebra

  

SmithForm

  

reduce a Matrix to Smith normal form

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

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

Parameters

A

-

Matrix

x

-

(optional) variable; specifies 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'; method to use

out

-

(optional) equation of the form output = obj where obj is one of 'S', 'U', or 'V', or a list containing one or more of these names; selects 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 'S', 'U', or 'V'; constructor options for the specified result object

Description

• 

The SmithForm(A) function returns the Smith normal form S of a Matrix A with univariate polynomial entries in x over the field of rational numbers Q, or rational expressions over Q.

  

The Smith normal form of a Matrix is a diagonal Matrix S obtained by doing elementary row and column operations. The diagonal entries satisfy the property that for all n <= Rank(A), product(S[i, i], i=1..n) is equal to the (monic) greatest common divisor of all n x n (determinant) minors of A.

• 

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

  

Floating point entries in A are converted to rationals before the Smith form is computed.

  

If the variable name x is not supplied and the Matrix is not of type 'Matrix(integer)', then the routine selects the indeterminate in the case that indets(A) has a single member, and returns an error in the case that indets(A) has more than a single member. In the case that indets(A) has no members and A is not of type 'Matrix(integer)', then 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 S (the Smith normal form), U (the left-reducing Matrix ), or V (the right-reducing Matrix) can be 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 S = U . A . V.

• 

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 index [o] of outputoptions with their corresponding meaning.

  

 

S

Smith form

U

left-reducing Matrix

V

right-reducing Matrix

 

 

• 

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

Examples

withLinearAlgebra&colon;

AMatrix1&comma;2x&comma;2x2+2x&comma;1&comma;6x&comma;6x2+6x&comma;1&comma;3&comma;x

A12x2x2+2x16x6x2+6x13x

(1)

SSmithFormA

S10001000x2+32x

(2)

DeterminantA

8x212x

(3)

lcoeff

x2+32x

(4)

U,VSmithFormA&comma;x&comma;output=U&comma;V&colon;

mapexpand&comma;U·A·V

10001000x2+32x

(5)

See Also

indets

LinearAlgebra[HermiteForm]

LinearAlgebra[Minor]

LinearAlgebra[Rank]

LinearAlgebra[RowOperation]

Matrix

Vector