
16.44 NORMFORM: Computation of matrix normal
forms
This package contains routines for computing the following normal forms of matrices:
- smithex_int
- smithex
- frobenius
- ratjordan
- jordansymbolic
- jordan.
Author: Matt Rebbeck.
16.44.1 Introduction
When are two given matrices similar? Similar matrices have the same trace, determinant,
characteristic polynomial, and eigenvalues, but the matrices
are the same in all four of the above but are not similar. Otherwise there could exist a
nonsingular ๐ฉ∈M2 (the set of all 2 ร 2 matrices) such that ๐ฐ = ๐ฉ๐ฑ๐ฉ−1 = ๐ฉ0๐ฉ−1 = 0 ,
which is a contradiction since ๐ฐ≠0 .
Two matrices can look very di๏ฌerent but still be similar. One approach to determining
whether two given matrices are similar is to compute the normal form of them. If both
matrices reduce to the same normal form they must be similar.
NORMFORM is a package for computing the following normal forms of matrices:
ย -ย smithex
ย
ย -ย smithex_int
ย
ย -ย frobenius
ย
ย -ย ratjordan
ย
ย -ย jordansymbolic
ย
ย -ย jordan
The package is loaded by load_package normform;
By default all calculations are carried out in Q (the rational numbers). For smithex,
frobenius, ratjordan, jordansymbolic, and jordan, this ๏ฌeld can be
extended. Details are given in the respective sections.
The frobenius, ratjordan, and jordansymbolic normal forms can
also be computed in a modular base. Again, details are given in the respective
sections.
The algorithms for each routine are contained in the source code.
NORMFORM has been converted from the normform and Normform packages written by
T.M.L. Mulders and A.H.M. Levelt. These have been implemented in Maple
[4].
16.44.2 Smith normal form
-
Function
smithex(๐,x) computes the Smith normal form ๐ฎ of the matrix ๐.
It returns {๐ฎ,๐ซ,๐ซ−1} where ๐ฎ,๐ซ, and ๐ซ−1 are such that ๐ซ๐ฎ๐ซ−1 = ๐.
๐ is a rectangular matrix of univariate polynomials in x.
x is the variable name.
-
Field extensions
Calculations are performed in Q. To extend this ๏ฌeld the ARNUM package
can be used. For details see subsection 16.44.8.
-
Synopsis:
-
-
Example:
load_package normform;
16.44.3 smithex_int
-
Function
Given an n by m rectangular matrix ๐ that contains only integer entries,
smithex_int(๐) computes the Smith normal form ๐ฎ of ๐.
It returns {๐ฎ,๐ซ,๐ซ−1} where ๐ฎ, ๐ซ, and ๐ซ−1 are such that ๐ซ๐ฎ๐ซ−1 = ๐.
-
Synopsis
-
-
Example
load_package normform;
16.44.4 frobenius
-
Function
frobenius(๐) computes the Frobenius normal form โฑ of the matrix ๐.
It returns {โฑ,๐ซ,๐ซ−1} where โฑ, ๐ซ, and ๐ซ−1 are such that ๐ซโฑ๐ซ−1 = ๐.
๐ is a square matrix.
-
Field extensions
Calculations are performed in ๐ฌ. To extend this ๏ฌeld the ARNUM package
can be used. For details see subsection 16.44.8
-
Modular arithmetic
frobenius can be calculated in a modular base. For details see subsection
16.44.9.
-
Synopsis
-
- โฑ has the following structure:
where the ๐(pi)’s are companion matrices associated with polynomials
p1,p2,…,pk, with the property that pi divides pi+1 for i = 1…k − 1. All
unmarked entries are zero.
- The Frobenius normal form de๏ฌned in this way is unique (ie: if we require
that pi divides pi+1 as above).
-
Example
load_package normform;
16.44.5 ratjordan
-
Function
ratjordan(๐) computes the rational Jordan normal form โ of the matrix
๐.
It returns {โ,๐ซ,๐ซ−1} where โ, ๐ซ, and ๐ซ−1 are such that ๐ซโ๐ซ−1 = ๐.
๐ is a square matrix.
-
Field extensions
Calculations are performed in ๐ฌ. To extend this ๏ฌeld the ARNUM package
can be used. For details see subsection 16.44.8.
-
Modular arithmetic
ratjordan can be calculated in a modular base. For details see subsection
16.44.9.
-
Synopsis
-
- โ has the following structure:
The rij’s have the following shape:
where there are eij times ๐(p) blocks along the diagonal and ๐(p) is the
companion matrix associated with the irreducible polynomial p. All
unmarked entries are zero.
-
Example
load_package normform;
16.44.6 jordansymbolic
-
Function
jordansymbolic(๐) computes the Jordan normal form ๐ฅ of the matrix
๐.
It returns {๐ฅ,โ,๐ซ,๐ซ−1}, where ๐ฅ , ๐ซ, and ๐ซ−1 are such that ๐ซ๐ฅ๐ซ−1 =
๐. โ = {ll,ξ}, where ξ is a name and ll is a list of irreducible factors of
p(ξ).
๐ is a square matrix.
-
Field extensions
Calculations are performed in ๐ฌ. To extend this ๏ฌeld the ARNUM package
can be used. For details see subsection 16.44.8.
-
Modular arithmetic
jordansymbolic can be calculated in a modular base. For details see
subsection 16.44.9.
-
Extras
If using xr, the X interface for REDUCE, the appearance of the output
can be improved by setting the switch looking_good to on. This converts
all lambda to ξ and improves the indexing, e.g., lambda12 ⇒ ξ12. The
example below shows the output when this switch is on.
-
Synopsis
-
- A Jordan block ศทk(λ) is a k by k upper triangular matrix of the
form:
There are k − 1 terms โ+1โ in the superdiagonal; the scalar λ appears k
times on the main diagonal. All other matrix entries are zero, and
ศท1(λ) = (λ).
- A Jordan matrix ๐ฅ ∈ Mn (the set of all n by n matrices) is a direct sum of
jordan blocks
in which the orders ni may not be distinct and the values λi need not be
distinct.
- Here λ is a zero of the characteristic polynomial p of ๐. If p does not split
completely, symbolic names are chosen for the missing zeroes of p. If, by
some means, one knows such missing zeroes, they can be substituted for the
symbolic names. For this, jordansymbolic actually returns
{๐ฅ,โ,๐ซ,๐ซ−1}. ๐ฅ is the Jordan normal form of ๐ (using symbolic names if
necessary). โ = {ll,ξ}, where ξ is a name and ll is a list of irreducible
factors of p(ξ). If symbolic names are used then ξij is a zero of lli. ๐ซ and
๐ซ−1 are as above.
-
Example
load_package normform;
on looking_good;For a similar example ot this in standard REDUCE (ie: not using xr), see the
normform.rlg ๏ฌle.
16.44.7 jordan
-
Function
jordan(๐) computes the Jordan normal form ๐ฅ of the matrix ๐.
It returns {๐ฅ,๐ซ,๐ซ−1}, where ๐ฅ , ๐ซ, and ๐ซ−1 are such that ๐ซ๐ฅ๐ซ−1 = ๐.
๐ is a square matrix.
-
Field extensions
Calculations are performed in ๐ฌ. To extend this ๏ฌeld the ARNUM package
can be used. For details see subsection 16.44.8.
-
Note
In certain polynomial cases the switch fullroots is turned on to compute
the zeroes. This can lead to the calculation taking a long time, as well as the
output being very large. In this case a message
*****ย WARNING:ย fullrootsย turnedย on.ย Mayย takeย aย while.
will be printed. It may be better to kill the calculation and compute
jordansymbolic instead.
-
Synopsis
-
- The Jordan normal form ๐ฅ with entries in an algebraic extension of ๐ฌ
is computed.
- A Jordan block ศทk(λ) is a k by k upper triangular matrix of the
form:
There are k − 1 terms โ+1โ in the superdiagonal; the scalar λ appears k
times on the main diagonal. All other matrix entries are zero, and
ศท1(λ) = (λ).
- A Jordan matrix ๐ฅ ∈ Mn (the set of all n by n matrices) is a direct sum of
jordan blocks.
in which the orders ni may not be distinct and the values λi need not be
distinct.
- Here λ is a zero of the characteristic polynomial p of ๐. The zeroes of the
characteristic polynomial are computed exactly, if possible. Otherwise they
are approximated by ๏ฌoating point numbers.
-
Example
load_package normform;
16.44.8 Algebraic extensions: Using the ARNUM package
The package is loaded by the command load_package arnum;. The algebraic ๏ฌeld
Q can now be extended. For example, defpoly sqrt2**2-2; will extend it to
include
(de๏ฌned here by sqrt2). The ARNUM package was written by Eberhard
Schrรผfer and is described in section 16.3.
16.44.8.1 Example
load_package normform;
load_package arnum;
defpoly sqrt2**2-2;
(sqrt2 now changed to
for looks!)
16.44.9 Modular arithmetic
Calculations can be performed in a modular base by setting the switch modular to on.
The base can then be set by setmod p; (p a prime). The normal form will then have
entries in ๐ตโp๐ต.
By also switching on balanced_mod the output will be shown using a symmetric
modular representation.
Information on this modular manipulation can be found in chapter 9.
16.44.9.1 Example
load_package normform;
on modular;
setmod 23;