# Vector Spaces

A vector space over some scalar domain is an Abelian additive group on which the scalar domain has a linear multiplication. This makes it possible to define the vector space's dual, which is the collection of linear maps from the vector space to its scalars; it is then straightforward enough to demonstrate that this collection naturally supports an Abelian addition, under which it forms a group, and a linear multiplication by scalars, making it also a vector space. This is known as the dual of the original vector space.

Given a sub-set of the vector space, we can construct the sub-set's span as its closure under multiplication by scalars and addition among its thus-scaled members. If any member of a sub-set of the vector space is in the span of the rest of the sub-set, the sub-set is said to be linearly dependent; conversely, if no member is in the span of the rest, the sub-set is called linearly independent. In a linearly dependent sub-set, leaving out a member that is in the span of the rest doesn't change the span of the whole; in a finite subset, it is thus always possible to find a linearly independent sub-subset by repeatedly chosing a member to leave out. When a finite subset's span is the entire vector space, a linearly independent sub-subset of it is known as a basis of the vector space. It is possible to show that every basis of a vector space (that has at least one finite basis) has the same number of members: the number in question is known as the dimension of the vector space; a vector space with dimension n is described as n-dimensional. If no finite sub-set of a vector space spans it, the vector space is described as infinite-dimensional.

Vector spaces are widely used in modelling physical systems since, at least to a high degree of accuracy, much of physics conforms to the character of vector spaces. In particular, a computer screen or a page of a book is well-modelled as a finite region of a two-dimensional vector space; the room in which I am sitting, the interior of a single cell and the galaxy we inhabit are all well-modelled as portions of a three-dimensional vector space; and the time-evolution of the contents of each of these regions is well-modelled by a four-dimensional vector space.

## The antisymmetric vector product

In three dimensions, there is a formal multiplication that can be performed which combines two vectors to produce a third. In due course I'll show how this is really something else in a seductively misleading disguise: but first let's see it as it's normally introduced. The easiest three-dimensional vector space to describe is {lists ({scalars}:|3)} = {[x,y,z]: x, y, z are scalars} with addition defined by [x,y,z]+[a,b,c] = [x+a,y+b,z+c] and scalar multiplication by k.[x,y,z] = [k.x,k.y,k.z]. The outer vector product is then defined by

• [x,y,z] ^ [a,b,c] = [y.c−z.b, z.a−x.c, x.b−y.a]

and it will rapidly be apparent that p ^ q = −q ^ p for any vectors p and q in our space: i.e. ^ is anti-symmetric. There is also an inner product defined on vectors which is trivially symmetric, producing a scalar result:

• [x,y,z] * [a,b,c] = a.x +b.y +c.z

and it can readily be shown that there is a somewhat intimate relationship between these two products. [Indeed, it turns out that there is an algebra – the quaternions, similar to the complex numbers only more so – which embraces the two; it was, indeed, the area of study (along with the physics of electromagnetism) which first led mathematicians to formulate the notion of vectors as something transcending their components.] For example, for any vectors p, q and r (feel free to verify that):

• (p^q)*r = p*(q^r)
• (p^q)^r = (p*r).q −(q*r).p

Now, that is all very well for lists of three scalars: but how can it be generalised to other vector spaces ? Clearly, if we have a three-dimensional vector space, V, and a basis (V:b|3) of it, we can use this to establish a linear isomorphism between V and {lists ({scalars}:|3)}, which we can then use to pull back our products into V: however, we are then bound to ask how the result will depend on our choice of b.

Now, * combines two vectors to produce a scalar; it's trivially linear in each of the two vectors combined, so it can be construed as a linear map from the vector space to its dual; it maps the first vector to the linear map which maps the second vector to their inner product,

• (dual(V): ({scalars}: p*q ←q |V) ←p |V)

Any linear map from V to its dual can, likewise, be construed as an inner product; when such a (dual(V): f |V) satisfies f(p,q) = f(q,p) for all p, q in V, it is described as symmetric; when it satisfies f(p,p) > 0 or p = 0 for all p in V, it is described as positive-definite. It can be shown that any positive-definite symmetric linear map (dual(V): f |V) can be encoded, by a suitable choice of basis b of V, as a pull-back of * as defined on {lists ({scalars}: |3)}. In the tensor notation, this is encoded by writing f as sum(: q(i)×q(i) ←i |3) with (dual(V): q |3) being a basis of dual(V) dual to b, defined by q(i)·b(j) being 1 if i = j, otherwise 0; this encodes our isomorphism between V and {lists ({scalars}:|3)} as

• (V: sum(: b(i).h(i) ←i |3) ← ({scalars}:h|3) :), with inverse
• (: (: q(i)·p ←i |3) ←p |V).

Then f(p,r) = sum(: (p·q(i)).(q(i)·r) ←i |3) is exactly the pull-back of * via these isomorphisms, enabling us to write f = sum(: q(i)×q(i) ←i |3), using the tensor product ×. Indeed, * itself can be written in this form using the standard basis [1,0,0]←0, [0,1,0]←1, [0,0,1]←2 of V = {lists ({scalars}:|3)} with dual q = (dual(V): (: p(i) ←p |V) ←i |3).

In this light, let's look at what ^ pulls back to. Given its intimate relationship with *, we must allow that it may depend on our choice of basis, i.e. of inner product. It is not hard to identify ^ with the tensor

• w = sum(: sign([i,j,k]).q(i)×b(j)×q(k) ←[i,j,k] :{permutations of [0,1,2]}), with
• p^q = p·w·q

but it is not so easy to see what significance we should attach to this. Now, it happens that we've diagonalised *'s pull-back as f = sum(:q×q:), so its determinant will be the linear map from 3-way antisymmetrised V⊗V⊗V, to its dual, obtained by linear extension from q(0)×q(1)×q(2) = f(b(0))×f(b(1))×f(b(2)) ← b(0)×b(1)×b(2). Since b and q are dual, this makes it possible to write det(f) as

• det(f) = wedge×wedge, with
• wedge = sum(: sign([i,j,k]).q(i)×q(j)×q(k) ←[i,j,k] :{permutations of [0,1,2]})

which we can use to re-express p^q as the result of applying f's inverse to f(p^q) = p·wedge·q. Given def(f) = wedge×wedge, we can describe wedge as a square root of det(f); given that the 3-way antisymmetrised V⊗V⊗V is one-dimensional, this square root is unique up to sign; so (aside from its sign) it won't depend on our choice of basis, and it fully determines the action of ^.

The tensor algebra allows us to form an antisymmetric product of two members of V; this gives us an antisymmetric member of V⊗V. As a whole, V⊗V is 9-dimensional, since V is 3-dimensional; but its antisymmetric sub-space has dimension 3; in effect, wedge provides us with an isomorphism between this sub-space and dual(V), while f is an isomorphism between V and dual(V). Composing wedge with f's inverse, we obtain an antisymmetric product which combines two members of V and yields a member of V.

### A two-dimensional aside

It is interesting to note that, in two dimensions, an iso (dual(V):f|V) gives us det(f) as an iso between antisymmetrised V⊗V and antisymmetrised dual(V)⊗dual(V); its square root will give us an antisymmetric member of dua(V)⊗dual(V); and f itself is a member of dual(V)⊗dual(V). In even dimension, an iso (dual(V):f|V) can indeed be antisymmetric, so it's meaningful to ask whether there's an f for which f×f = det(f).

In general, an antisymmetric iso (dual(V):f|V) with V two-dimensional is just u×v −v×u for some basis [u,v] of dual(V). If [m,n] is the basis of V dual to this, so v(n) = 1 = u(m) and v(m) = 0 = u(n), we have f(n) = u and f(m) = −v. Then det(f) maps m×n −n×m to −v×u +u×v = f, so det(f) = f×f; every antisymmetric 2nd rank tensor in two dimensions is a square root of its own determinant. The space of such tensors is, of course, one dimensional.

## Trigonometry and the two vector products

Geometry describes any two vectors in terms of a triangle, of which each is a side, in the two-dimensional plane they span. The third side is the difference between the two vectors. It is now time to consider how the two vector products, inner and outer, relate to the standard geometric properties of this triangle; its area and the angles in its corners. We already have the metric telling us the lengths of the sides; each vector v has length √(v*v). On the other hand, for two vectors, u and v, what geometric significance should we attach to v*u and v^u ?

Since our two vectors span a two-dimensional plane, and we have plenty of liberty in chosing an isomorphism between V and {lists ({reals}:|3)}, it suffices to look at a sufficiently general pair of vectors in two dimensions. Both * and ^ are bilinear, i.e. scaling either u or v merely scales v*u or v^u by the same factor, so we can divide each by its length without losing any information about geometric significance. Our choice of isomorphism can use one of our two (by now unit) vectors as a basis member; and taking one other basis member in the span of our two vectors ensures that our two vectors have no component in the direction of the remaining basis vector. Thus we can suppose one of our vectors is [1,0,0] and the other, making an angle t with it, is [Cos(t),Sin(t),0]. We can even presume that t is between zero and a half turn (otherwise, replace the third basis member with its negation). Thus it suffices to see that

• [1,0,0] * [Cos(t),Sin(t),0] = Cos(t)
• [1,0,0] ^ [Cos(t),Sin(t),0] = [0,0,Sin(t)]

From the latter (and some basic trigonometry) we can infer that (in general, even when their lengths aren't 1) the length of v^u is, give or take a sign, the area of a parallelogram whose sides are v and u; this is twice the area of the triangle I first introduced, with v and u as sides. The direction of v^u is perpendicular both to u and to v. Note that ^ is sensitive to orientation; [1,0,0]^[0,1,0] = [0,0,1] but the other Cos(t) = 0 case, [1,0,0]^[0,−1,0] = [0,0,−1], is in the opposite direction; if you're looking at a the two vectors from such a position that the first is on the right and the second on the left of an angle less than a half turn, then their outer product is pointing at you, rather than away from you.

It is of interest, at least to me, that none of this depends, in the least, on our choice of unit of angle.

Written by Eddy.