reduce a Matrix to Smith normal form - Maple Help

Online Help

All Products    Maple    MapleSim

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

LinearAlgebra[SmithForm] - reduce a Matrix to Smith normal form

Calling Sequence

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







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



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



(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



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



(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



The SmithForm(A) function returns the Smith normal form S of a Matrix A with univariate polynomial entries in x over a field F. Thus, the polynomials are regarded as elements of the Euclidean domain F[x].


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.




Smith form


left-reducing Matrix


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](..).



















See Also

indets, LinearAlgebra[HermiteForm], LinearAlgebra[Minor], LinearAlgebra[Rank], LinearAlgebra[RowOperation], Matrix, Vector

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