Date: Wed, 24 Mar 2004 17:09:59 -0500 (EST)

From: "Stephen J. Greenfield"

To: ivanov@eden.rutgers.edu

Subject: an overly long answer to your short question

Here is the explanation I implicitly suggested that I would give you last night, when you asked about how Maple computed a certain symbolic inverse. I will try to tell you what I think is correct. I will not supply all details, but almost surely the message will be long enough. Maple and probably Mathematica and other large symbolic programs do linear algebra over a FIELD. I capitalized that word because I am using it in a technical sense. Let me explain what I mean and then I will try to give examples.

Suppose you have a collection of "things" which you can add and multiply. Suppose also that the "standard" rules hold: addition and multiplication are commutative and associative, there are additive and multiplicative inverses with the expected properties, and that multiplication distributes over addition. This list of properties are the rules for a mathematical structure called a filed (rather a different idea from the technical use of the word in physics, of course!). The important thing for the question you asked is that the rules for a field are all one needs to do linear algebra. If you can add and multiply and subtract and divide (when non-zero!) then everything we have done, all of the algorithms and all of the definitions, will work quite satisfactorily. Let me give you some examples of fields:

Example 1:

This is a ridiculously simple, small, and very important example. Here
is the addition table and the multiplication table:

+ | 0 1 x | 0 1 ------- ------- 0 | 0 1 0 | 0 0 1 | 1 0 1 | 0 1You may well have seen this before. This is addition and and multiplication "mod 2" and 0 can be thought of as "even" and 1 can be thought of as "odd". Or you could have met these people in logic or c.s., and 0 is false and 1 is true and + is, I guess, "exclusive or" and multiplication is "and". All the filed rules hold. So one can do linear algebra with just 0 and 1.

It is also possible to make other "finite fields", and, in particular, linear algebra using these finite fields has very useful applications in, say, digital signal processing and data analysis, where the finite Fourier transform is used.

Example 2:

Just the rational numbers, the quotients of integers. Addition and
multiplication are the usual operations. So numbers like 2/3 and
-982/10005 etc. Notice that just integers alone won't work because we
can't get multiplicative inverse. But rational numbers are fine.

Example 3:

Of course, the "real" numbers and the "complex" numbers are each
examples of fields, and you can do linear algebra with them.

Example 4:

Here is a rather weird example. Look at numbers which can be written
as rational+rational(sqrt(2)). One number of this type is is, say,
3/7-4/5(sqrt(2)). It is certainly easy to add and subtract these
numbers and get another of the same type. What about multiplication?
A little thought should convince you that if X=a+b*sqrt(2) and
Y=c+d*sqrt(2), then X times Y is (ac+2bd)+(ad+bc)sqrt(2), and
cd+2bd and ad+bc are both rational. And multiplicative inverse:
let's see: 1/(a+b*sqrt(2))=(a-b*sqrt(2))/(a^2-2b^2)=p+q*sqrt(2) where
p=a/(a^2-2b^2) and q=b/(a^2-2b^2) are both rational.
Comment: why the heck would a self-respecting physicist be interested
in such useless things? Well, golly, it turns out that these things
are connected to different kinds of lattices, regular distributions of
points in, say, a crystal, and understanding the lattices is easier
with different kinds of arithmetic.

Example 5:

The things involved are quotients of polynomials (called, usually,
"rational functions"). So 1/x is one of them, and so it 44x^56 and
(3x^7-9x^2)/(x^6-2) etc. These FUNCTIONS can be added and multiplied
and subtracted and divided. I don't even worry about it. We in fact
did linear algebra using this "field" in one of the problems involving
Lagrange multipliers on the first exam.

*******

So what's the point of all this? Well, the point is that Maple and, I
think, Mathematica, and other programs can be told to "do linear
algebra with these coefficients". You can see, I hope, how this would
be implemented. Any time an "operation" involving the coefficients
occurs, the program looks up (?) how to add or multiply or subtract
or divide. And things proceed appropriately. In the case of symbolic
coefficients (such as polynomials or whatever) I believe Maple is
programmed to automatically extend function operations from constants
to the field operations of example 5 (this may be called "overloading"
in some c.s. jargon). Maple doesn't "think" or worry about these
extensions of meaning. And everything works really well.

Of course, if one has a matrix entry, as we did for A^{-1}, involving -1/(x-1), then we may run into some difficulties if we plug in, say, 1 for x, but that's not Maple's responsibility. It will return a divide by 0 error or something like it. But while the entries are symbolic, Maple will just act as if everything is part of example 5.

I know this message is too darn long, but I hope it helps a bit.