back to list

RE: [tuning-math] Digest Number 1328

🔗Yahya Abdal-Aziz <yahya@melbpc.org.au>

7/1/2005 9:39:49 PM

Hi Gene,

How does one effect the reduction to SNF?

Yahya

-----Original Message-----
From: "Gene Ward Smith" <gwsmith@...>
Subject: Smith normal form

I've talked quite a bit about the utility of Hermite normal form,
which is a reduction of an integral matrix which uses elementary row
operations (or the column form, elementary column operations.) Another
normal form, useful for getting at more abstract, group theoretic
properties, is Smith normal form. This allows reduction by elementary
row *and* column operations.

If M is a square integral matrix, then the Smith normal form is a
diagonal matrix S, such that

S = UMV

Here the diagonal elements are nonnegative integers, where aii might
be zero from some point on, but before that aii divides ajj when i<j.
If M is nonsingular, then S has only positive integers along the
diagonal. U and V are unimodular matricies, so the absolute value of
the determinants of S and M are the same. The numbers along the
diagonal are the invariants, also called invariant factors or
elementary divisors.

Here are some examples of the use of Smith normal form. ...
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.7/34 - Release Date: 29/6/05

🔗Gene Ward Smith <gwsmith@svpal.org>

7/1/2005 10:49:52 PM

--- In tuning-math@yahoogroups.com, "Yahya Abdal-Aziz" <yahya@m...> wrote:
>
>
> Hi Gene,
>
> How does one effect the reduction to SNF?

I'd recommend using a program (eg Maple, Mathematicia, etc.) which has
such a reduction function already available. If you want to write your
own, I am sure you can find information on efficient ways to do it,
but you can pretty well see how to do it by knowing what operations
you can perform. The main point is that you use both row *and* column
operations--you can change the sign of either a row or a column,
interchange rows or columns, and mulitply a row (column) times an
integer and add it to another row (column). Try reducing rows first,
and then columns.