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

Online Help

All Products    Maple    MapleSim


LinearAlgebra[Generic]

  

SmithForm

  

compute the Smith form of a Matrix

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

SmithForm[E](A)

SmithForm[E](A,output=out)

Parameters

E

-

the domain of computation, an Euclidean domain

A

-

m x n Matrix of values in E

out

-

one of S, U, or V, or a list containing one or more of these names

Description

• 

SmithForm[E](A) returns the Smith Normal Form S of A which satisfies:

  

(1) S[i,j] = 0 if i<>j

  

(2) S[i,i] is unit normal in E (implies uniqueness)

  

(3) S[i,i] | S[i+1,i+1] for all 1<=i<min(m,n)

  

(4) prod(S[i,i],i=1..d) = u*gcd(all minors of A of dimension d) where u is a unit

  

(5) S[i,i] = 0 for r < i <= min(m,n) where r is the rank of A

• 

The (indexed) parameter E, which specifies the domain of computation, a Euclidean domain, must be a Maple table/module which has the following values/exports:

  

E[`0`]: a constant for the zero of the ring E

  

E[`1`]: a constant for the (multiplicative) identity of E

  

E[`+`]: a procedure for adding elements of E (nary)

  

E[`-`]: a procedure for negating and subtracting elements of E (unary and binary)

  

E[`*`]: a procedure for multiplying two elements of E (commutative)

  

E[`=`]: a boolean procedure for testing if two elements in F are equal

  

E[Quo]: a procedure which computes the quotient of a / b. E[Quo](a,b,'r') computes the quotient q of a / b and optionally assigns r the remainder satisfying a = b q + r.

  

E[Rem]: a procedure for finding the remainder of a / b. E[Rem(a,b,'q') computes the remainder r of a / b and optionally assigns q the quotient satisfying a = b q + r.

  

E[Gcdex]: a procedure for finding the gcd g of a and b, an element of E. E[Gcdex](a,b,'s','t') computes the gcd of a and b and optionally assigns s and t elements of E satisfying s a + t b = g.

  

E[UnitPart]: a procedure for returning the unit part of an element in E

  

E[EuclideanNorm]: a procedure for computing the Euclidean norm of an element in E, a non-negative integer. For non-zero a,b in E, units u,v in E, the Euclidean norm satisfies

  

EuclideanNorm(a b) >= EuclideanNorm(a)

  

EuclideanNorm(u) = EuclideanNorm(v)

  

EuclideanNorm(u a) = EuclideanNorm(a)

• 

The Smith form is computed by first computing H the Hermite form of A, then computing the Hermite form of the transpose of H. If the resulting matrix is not diagonal, often it is, then the above sequence of computations is repeated, usually once, until it is.

Examples

withLinearAlgebraGeneric&colon;

Z`0`,Z`1`,Z`+`,Z`-`,Z`*`,Z`=`0,1,`+`,`-`,`*`,`=`&colon;

ZGcdexigcdex&colon;

ZQuo,ZRemiquo,irem&colon;

ZUnitPart,ZEuclideanNormsign,abs&colon;

AMatrix1&comma;2&comma;3&comma;4&comma;5&comma;2&comma;3&comma;4&comma;5&comma;6&comma;4&comma;1&comma;2&comma;5&comma;2&comma;1&comma;4&comma;2&comma;1&comma;2

A123452345641−2−5−2−1−4−212

(1)

SSmithFormZA

S10000010000010000060

(2)

U,VSmithFormZA&comma;output=U&comma;V

U,V−32002−100−1512−2110−710,10031011−7−700−2611001−3−500010

(3)

MatrixMatrixMultiplyZMatrixMatrixMultiplyZU&comma;A&comma;V

10000010000010000060

(4)

See Also

Euclidean Norm

LinearAlgebra[Generic]

LinearAlgebra[Generic][HermiteForm]

LinearAlgebra[SmithForm]