From Wed Mar 24 17:10:00 2004
Date: Wed, 24 Mar 2004 17:09:59 -0500 (EST)
From: "Stephen J. Greenfield"
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 1
You 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.