|
Boost : |
From: Jeremy Siek (jsiek_at_[hidden])
Date: 2002-01-23 15:38:33
On Sat, 19 Jan 2002, jhrwalter wrote:
walter>
walter> The 'Teubner Taschenbuch der Mathematik' defines a vector space and a
walter> linear operator in the following way:
walter>
walter> Vector space
walter>
walter> F is a field. G is a additive Abelian group. * is a function: (F, G) -
walter> > G. The following laws hold:
walter> a) distributive
walter> For all alpha in F, a, b in G: alpha * (a + b) = alpha * a + alpha * b
walter> For all alpha, beta in F, a in G: (alpha + beta) * a = alpha * a +
walter> beta * a
walter> b) associative
walter> For all alpha, beta in F, a in G: (alpha * beta) * a = alpha * (beta
walter> * a)
walter> c) identity
walter> For all a in G: 1 * a = a
walter>
walter> Sorry, I do not see any right multiplication with a scalar here.
I wouldn't worry to much about precisely following the above definitions
because there are slighly conflicting definitions in the literature.
For example, in van der Waerden's classic "Algebra" volume 1, he refers to
the above as a left vector space. He also defines right vector spaces
(with multiplication on the right) and uses just plain "vector space" as a
synonym for right vector space, not left. Also, he says that when the
field is communtative, then there is no need to distinguish between left
and right vector spaces, which makes sense to me.
Since the fields we typically deal with (like floats) are commutative,
then I don't see a good reason for only providing left multiplication. It
is just going to confuse people (like it already has) when they get a
compiler error. The performance pessimization in some situations is an
issue, but experienced programmers can deal with this and learn how to
order things. I'd rather make sure that things work in an intuitive way
for beginners.
Cheers,
Jeremy
----------------------------------------------------------------------
Jeremy Siek http://php.indiana.edu/~jsiek/
Ph.D. Student, Indiana Univ. B'ton email: jsiek_at_[hidden]
C++ Booster (http://www.boost.org) office phone: (812) 855-3608
----------------------------------------------------------------------
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk