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