SmithDemo

Adriano Pascoletti
Dipartimento di Matematica e Informatica, Università di Udine
Via delle Scienze, 206, I-33100 Udine (Italy)

This is a demonstration notebook for the Mathematica package SmithFormV6. 
The packagedeals with the computation of  the Smith form and the invariant factors of integer and polynomial matrices. 
The package is installable under Mathematica 6.0, and is fully compatible with Mathematica 5.2.

After installation, i.e. File>Install>Package SmithFormV6:

<<SmithFormV6`

The package defines the following symbols:

?SmithFormV6`*

Polynomial matrices

If A a is matrix of polynomials in x its extended Smith form is computed by 

PolynomialSmithForm[A, x], and by  
PolynomialSmithForm[A, x, ExtendedForm -> True]. 

In both cases the output has the form {S,{U,V}}, where S is the Smith form, and U, V unimodular matrices satisfying S=U A V.

A={{2,-2+x-(x^3),-1+2 x-(x^2),-x+(x^3)},{-2+x-(x^3),-x+((x^2)/2)+2 (x^3)-(x^4)+((x^6)/2),-1-((3 x)/2)+2 (x^2)-(x^4)+((x^5)/2),2-((x^2)/2)-(x^3)+(x^4)-((x^6)/2)},{-1+2 x-(x^2),-1-((3 x)/2)+2 (x^2)-(x^4)+((x^5)/2),(15/2)-((23 x)/2)+7 (x^2)-((5 (x^3))/2)+((x^4)/2),-1+2 x-((3 (x^2))/2)+(x^4)-((x^5)/2)}};A//MatrixForm

{S,{U,V}}=PolynomialSmithForm[A,x];

{U//MatrixForm,V//MatrixForm}

S//MatrixForm

U.A.V-S//Expand

The option ExtendedForm -> False

The computation of S, skipping U and V, is performed by 
PolynomialSmithForm[A, x,  ExtendedForm -> False]:

MatrixForm[PolynomialSmithForm[A,x,ExtendedForm->False]]

Invariant Factors

The invariant polynomials of A are given by PolynomialInvariantFactors[A,x].

PolynomialInvariantFactors[A,x]

Integer Matrices

If A is an integer matrix its extended Smith form is computed by 

IntegerSmithForm[A] and  
IntegerSmithForm[A,ExtendedForm -> True]. 

In both cases the output has the form {S,{U,V}} where S is the Smith form, and U, V unimodular matrices satisfying S=U A V.

{S,{U,V}}=IntegerSmithForm[A={{-9,27,-16,12},{8,0,-4,-2},{22,-6,1,0},{213,-1,-5,1}}];

{U//MatrixForm,V//MatrixForm}

S//MatrixForm

The option ExtendedForm -> False

The computation of S, skipping U and V, is performed by 
IntegerSmithForm[A,ExtendedForm -> False]:

MatrixForm[IntegerSmithForm[A,ExtendedForm->False]]

Invariant Factors

The invariant factors of A are given by 
IntegerInvariantFactors[A,x].

IntegerInvariantFactors[A]