Steven D'Aprano wrote:
I'm curious what those applications are, because regular multiplication behaves differently depending on whether you have a 1x1 matrix or a scalar:

[[2]]*[[1, 2, 3], [2, 3, 4]] is not defined

2*[[1, 2, 3], [2, 3, 4]] = [[2, 4, 6], [2, 6, 8]]

I'm curious as to what these applications are, and what they're actually doing. Kronecker multiplication perhaps? Do you have some examples of those applications?

The most obvious example would be the matrix algebra equivalent of the calculation of the dot product, the equivalent of a dot product in normal vector algebra. If you have two 3-vectors (say), u = (u_1, u_2, u_3) and v = (v_1, v_2, v_3), then the dot product is the sum of the pairwise products of these terms, u dot v = sum_i u_i v_i = u_1 v_1 + u_2 v_2 + u_3 v_3.

Nothing revolutionary there. The matrix way of writing this wouldn't obviously work, since multiplying two nx1 or (1xn) matrixes by each other is invalid. But you _can_ multiply a nx1 matrix by an 1xn matrix, and you get the equivalent of the dot product:

        u v^T = ( u dot v ),

where the right hand side of the equation is formally a 1x1 matrix (intended to be indicated by the parentheses), but you can see how it is useful to think of it as just a scalar, because it's really just a matrix version of the same thing as a dot product.

This stretches out to other kinds of applications, where, say, in tensor calculus, you can think of a contravariant vector as being transformed into a covariant vector by the application of the matrix tensor, which is written as lowering an index. The components of the contravariant vector can be thought of as a column vector, while the components of a covariant vector can be represented with a row vector. The application of the metric tensor to a contravariant vector turns it into a row vector, and then contracting over the two vectors gives you the inner product as above. The applications and contractions can all be visualized as matrix multiplications. (Contrary to a popularization, tensors _aren't_ generalizations of matrices, but their components can be.)

It's a bunch of other examples like that where you end up with a 1x1 matrix that really represents a scalar, and since that was intended there really isn't a lot of efficacy to treat it as a separate entity. Especially if you're dealing with a special-purpose language where everything is really a form of an generalized array representation of something _anyway_.

--
Erik Max Francis && m...@alcyone.com && http://www.alcyone.com/max/
 San Jose, CA, USA && 37 18 N 121 57 W && AIM/Y!M/Skype erikmaxfrancis
  Scars are like memories. We do not have them removed.
   -- Chmeee
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to