As noted in my previous reply, see http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread/thread/3cce53ef897d3368/02264f4f80d81214?hl=en&lnk=gst&q=Lists%3A+Row+Vectors+vs.#02264f4f80d81214
for the full discussion.
(Below my response is an email Fred Simons sent me. I figured I'd include it for the benefit of others; you may want to read it before reading my reply.) If short on time, *at least read point 2 at the end of my post.*
Fred and the rest of the Group:
This discussion has been extremely helpful. Your replies prompted me to review materials on Euclidean spaces; here is a simple explanation to my formerly-confused self:
'Vector' is a term used widely throughout mathematics and does not always have the same *intended* meaning. Ideally, to avoid confusion later on, we should teach matrix algebra by always referring to dimensions; a 1xn matrix, rather than calling it a row vector, and an mx1 matrix, rather than saying it's a 'column vector'.
In general, a vector is just an ordered list of objects in some n space, such as R3, for example. *There's no reason to force such a concept into row or column form!*
Two remaining things I'd like to say:
1. I now feel a sense of frustration at the above lazy language in matrix algebra. It seems like a classic example where trying to make the material easier for a student to understand/visualize, actually ends up paving an intellectual cul-de-sac.
2. I'm still absolutely right about one thing: Mathematica needs to have a consistent way to programmatically create a matrix----that both *looks* like a matrix in StandardForm and *behaves* like one. What I mean is: On screen formatting and behavior just like Insert->Table/Matrix->New->Matrix.
It seems logical that such a function would have the head Matrix, given that it's conveniently available for use in Mathematica. Now, does anyone want to whip up a frontend token to do this, and pass it along to their favorite contact at WRI?
I suppose a variant of Kevin's code would also work---BTW Kevin, thanks for teaching me the $Post trick.
PS - I also think Column should be ColumnForm (looks like there's some back and forth on this) and Row should be RowForm. Or, at the very least, let these definitions shadow one another, along with a hard-to-miss warning in the documentation about the Mathematica convention that xxxxForm is for formatting only. Not including 'Form' in Row
and Column makes it too easy to gloss over their intended use.
----------- Message from Fred Simons to RG------------------------------
Some time ago you asked the above question in mathgroup. It happens to
be a topic which I always treat in my introductory courses on
Mathematica, so I followed the discussion with some interest. Now that
the discussion seems to be at an end, I have the feeling that you did
not get a very clear reply to your question about why Mathematica
behaves like it does.
The answer to that is just mathematics. In mathematics we have the
concept of a vector, often, but by no means always, a list of numbers,
and the concept of a linear mapping of a vector space. Linear mappings
of finite dimensional vector spaces can be described with matrices. So
in mathematics, and therefore in Mathematica, vectors and matrices are
different objects. (Kevin McCann to whom I sent a similar message,
replied to me that he completely disagrees, for him a vector is a one
row matrix. i.e. a row vector. When his definition holds, then the
transposed of a row vector, i.e. a column vector, is not a vector,
because usually it has more than one row. His identification of a
vector with a one row matrix is definitely not standard in
Also the concept of inner product has nothing to do with matrices. For
two vectors in Euclideam space it can be defined as the product of the
two lengths and the cosine of the angle, etc.
So, completely in accordance with mathematics, Mathematica uses single
lists for vectors and double lists (the list of rows) for matrices.
There is a very general function Dot, that has a.o. the following
vector . vector gives a scalar, the inner product.
matrix . vector gives a vector
vector . matrix gives a vector
matrix . matrix gives a matrix, the matrix product
and we can go on to tensors in general.
What has this to do with row and column vectors? Actually, the
question is: what is a row vector and what is a column vector? Again,
mathematically it is simple. When you have a vector in a finite
dimensional space, you might think of this vector as a list of
coordinates. Now you can write down these coordinates in a lot of
ways: horizontally, vertically, diagonally, in a circle, and so on.
These are NOTATIONS for the vector, NOT THE VECTOR ITSELF. When we
write the coordinates horizontally, then we may see this as a matrix
of one row, incorrectly called a row vector. When we write the
coordinates vertically, we may see that notation of a matrix of one
column, incorrectly called a column vector. Obviously, transposing a
vector is impossible (consider the vector (2,5) in the plane, where in
the plane is the transposed vector?), but you can transpose the matrix
notation: the transposed of the row notation for a vector is the
column notation for the vector and conversely. This property enables
us to do a lot of vector computations as matrix computations. For
example, matrix . vector in Mathematica would be the matrix
multplication matrix . columnmatrix; the result is a column notation
for a vector and Mathematica returns the vector itself.
So this is behind it in Mathematica. For me as a professional
mathematician this is very natural. Computing an inner product as
vector . Transposed[vector] is for me absolute nonsense, since I
cannot transpose a vector. But using a row NOTATION for a vector, it
is one of the ways by which we can COMPUTE the inner product.
Therefore, Mathematica does not display a vector as a matrix, but as
long as you realize that a matrix is not a vector, you could define
your own matrix display for a vector.
I hope this is of some interest for you.
Eindhoven University of Technology