On Sat, Jun 6, 2009 at 1:59 PM, Alan G Isaac <aisaac@american.edu> wrote:
On 6/6/2009 2:58 PM Charles R Harris apparently wrote:
> How about the common expression
> exp((v.t*A*v)/2)
> do you expect a matrix exponential here?


I take your point that there are conveniences
to treating a 1 by 1 matrix as a scalar.
Most matrix programming languages do this, I think.
For sure GAUSS does.  The result of   x' * A * x
is a "matrix" (it has one row and one column) but
it functions like a scalar (and even more,
since right multiplication by it is also allowed).

It's actually an inner product and the notation <x, A*x> would be technically correct. More generally, it is a bilinear function of two vectors. But the correct notation is a bit cumbersome for a student struggling with plain old matrices ;)

Ndarrays are actually closer to the tensor ideal in that M*v would be a contraction removing two indices from a three index tensor product. The "dot" function, aka *, then functions as a contraction. In this case x.T*A*x works just fine because A*x is 1D and x.T=x, so the final result is a scalar (0D array). So making vectors 1D arrays would solve some problems. There remains the construction v*v.T, which should really be treated as a tensor product, or bivector.

Chuck