This document requires the SYMBOL font (ab).
Clarity will be increased if the Arial Font is installed.
If some symbols are not displayed correctly (such as uparrow [ ↑ ] or times [×]
or half [½] )
, see Browser Issues. Use your browser View|Text Size control
to increase the text size if desired. This document is under continuous revision. Feedback appreciated.
Introduction
Geometric algebra provides a practical alternative to conventional
3D vector methods which extends far more readily to higher dimensions. It also provides a
coordinate independant symbolic geometry (an "algebra of directions") extendable into a geometric calculus of
profound relevance to areas as diverse as quantum physics and computer vision.
Although a notable advantage of geometric algebtra is coordinate independance, we will initially
take a coordinate (basis) based approach here since this is likely to be the most practicable in a
programming context.
The purpose of this section is to provide a concise but comprehensive introduction and
broad reference for geometric algebra for those interested in it as a powerful computational
and theoretical resource that spans and unifies a diverse range of fields. Fuller more formal treatments
exist elsewhere and
this document can serve as a primer for tackling such works. It assumes familiarity with
"conventional" 3D constructs such as vectors and matrices and such basic mathematical functions
as cosq and ex. Mathmatical notations used are defined in the glossary.
This treatment favours
the contractive "computer scientist's" inner product a¿b over the semisymmetric
"physicist's" inner product a.b where possible because this is arguably the more fundamental
and has certain functional advantages.
Any reader who enjoys mathematics but has not encountered multivectors before should prepare themselves for a treat.
When first encountering multivectors they can seem bewildering, with a plethora of products and an overload of operators provided for their manipulation. But familiarity breeds respect. Given that multivectors are the "language" of (dynamic) geometry and by implication of nature itself, a half-dozen new symbols does not seem excessive.
In this chapter we will dscribe the mathematical manipulations of multivectors, their various products and
conjugations and operations such as exponentiation and logarithms, projections, and intersections.
Of necessity some of this will be mathematically intensive and the reader is
is encouraged to "skim" through such material rather than
absorbing every product, conjugation, normalisation technique and exponential computation strategum
on their first pass.
The "point" of multivectors is what you can do with them, and this is addressed in the
later sections
In the Multivectors Programming chapter we describe how to impliment
multivectors of both low and high dimension N in C/C++.
In the Multivectors as Geometric Objects we will see some of the
applications of multivectors in the elegant representation and manipulation of N-dimensional
spheres, planes, lines and conics.
In the Multivectors as Transformations we will see how multivectors can also be used to transform, distort, and displace
such geometric constructs.
In Multivector Arcana we cover some more esoteric mathematical
aspects of multivectors of less general interest.
In later sections we cover Multivector Calculus and the uses of multivectors
in physics, in particular Relativity and Quantum Mechanics.
Multivectors
"And therefore in geometry (which is the only science that it hath pleased God hitherto to bestow
on mankind), men begin at settling the significations of their words;
which settling of significations, they call definitions, and place them in the beginning of their
reckoning."
--- Thomas Hobbes, Leviathan
Geometric algebra is essentially a set of arithmetical techniques for manipulating N-dimensional
vectors and to see how to properly multiply (and divide!) vectors we must first generalise the concept of
vectors and scalars.
Given k linearly independant N-dimensional vectors a1,a2,..,ak from a vector space
UN
[ we are interested initially in UN=ÂN, the space of real coordinate N-D vectors, but will refer to
UN to emphasise applicability to alternate (eg. nonEuclidean) spaces
which are of interest to us, particularly with regard to relativistic physics.
By "linearly independant" we here mean that no one of the a1,a2,..ak can be expressed as a real-wighted sum of the others
]
their outer product ak = a1Ùa2...Ùak
(not to be confused with the 3D vector "cross" product) is known as a blade
of grade (aka. step or degree) k,
or a k-blade.
The fundamental rules for Ù are
antisymmetry: aÙb = -bÙa
( and so aÙa=0) for any vectors a and b ;
linearity: aÙ(b+c) = aÙb + aÙc ; and
associativity:
aÙ(bÙc) = (aÙb)Ùc.
A k-blade ak can be thought of as representing an orientated and scaled k-dimensional
subspace of UN, one in which all the vectors satisfy aÙak = 0.
We say that a1,a2,..,ak are a k-frame for this subspace.
A linear "weighted additive" combination of k-blades is known as a k-vector. An example 4D 3-vector is
½e1Ùe3Ùe4 + (Ö7)e1Ùe2Ùe3 .
A 0-vector is a 0-blade is a scalar.
We refer to a k-blade as proper if k>=1.
A 1-vector is a 1-blade is a conventional vector.
2-blades can be considered geometrically as directed areas (ie. a plane and a signed scalar).
2-vectors
(aka. bivectors) are sums of scaled 2-blades and need not "reduce" to a single 2-blade for N>3.
For N£3, any k-vector is a k-blade. This is true only for k<2 when N > 3 .
[ Proof : ae1Ùe3+be3Ùe1+ge1Ùe2
= (e1+(a/g)e3)Ù(ge2-be3) if g¹0,
(ae2-be1)Ùe3 else .
All 3D 3-vectors are multiples of e1Ùe2Ùe3
.]
Consider the set ÂN (aka. GN and ClN in the literature) of all linear combinations (with real "coefficients" or "wieghtings") of k-vectors for 0£k£N, our 1-vectors being taken from the N-dimensional vector space ÂN. Clearly ÂN Ì ÂN (or, more properly, is represented within ÂN) and infact ÂN has dimension åk=0N NCk = 2k, there being NCk º N! (N-k)!-1 k!-1 distinct k-blades in N-dimensions.
We refer to the elements of ÂN as multivectors
An example Â3 multivector is 3+e1-4e2+½e1Ùe2+(Ö7)e2Ùe3 + pe1Ùe2Ùe3.
We can thus think of a general N-D multivector as an arbitary real-weighted combination of 2N distinct basis blades.
[ Mathematically, one can take the "blade coefficients" from any field or "number space".
It is the utilisation of  - essentially identifying the blade "coefficients" or "coordinates"
with "scalars" (0-vectors) - that
distinguishes "geometric algebra" from more general Clifford algebras of only passing concern here.
If we allow "complex number" blade coeeficients, for example, we obtain a space CN of dimension 2N+1 .
]
Multivectors can thus be represented with 2N dimensional 1-vectors, with respect to
a given set of N linearly independant N-D basis 1-vectors e1,e2,...,eN and this tells us how to add and subtract them,
but not how to multiply and divide them. For that we will need the "geometric product" and its associated "subproducts".
Conflicting Terminologies
Some authors such as Pavsik use the term "k-vector" for what we will call a k-blade
and "multivector" for our k-vector (ie. a single-graded multivector), adopting the term polyvector for our multivector.
Notations and Coordinates
A general N-D multivector is thus the sum of a scalar, a 1-vector, a 2-vector,..., and an N-vector
but we will frequently be interested in pure k-blades or k-vectors and will benefit from a notation that
that distinguishes such from general multivectors.
We will use the following fonts to denote geometric algebra elements
| Font | Represents | Also known as |
| a | Proper blade | |
| a | General multivector | |
| a | 0-vector | Scalar |
| a | 1-vector | Vector |
| a | 2-vector | Bivector |
| a | (N-2)-vector | Pseudovector |
| a | (N-1)-vector | Pseudoscalar |
We are freuwently interested in issues such as whether the square of a multivector is a pure scalar
but in practice this may mean checking that any residual nonzero coordinates are a "negligable"
proportion of the scalar part, which can be problematic if the scalar part is also near zero.
We define the sparsity of a multivector with respect to a given basis
as the number of zero coefficients (coordinates) in its representation in that basis.
Inverse frames
Suppose we have a possibly non-orthonormal linearly independant basis of N N-D 1-vectors
providing a coordinate frame (ie. a set of axies) E=(e1,e2,...,eN) for UN.
We can construct a reciprocal or inverse frame
(e1,e2,...,eN) so that ei.ej = 1 when i=j and 0 else
where . is the traditional scalar ("dot") product of two 1-vectors.
If E is orthogonal then provided no ei2=0 we can set ek º ek-2ek .
More generally we require
ek º
(-1)k-1(e1Ù..ek-1Ùek+1Ù...eN) i-1
where i=e12..N .
However, this may not make much sense to the reader till he is more familiar with Ù and the pseudoscalar i discussed later.
We define a notation
eij..m º eiÙejÙ...em .
If E is orthogonal (ie. ei.ej=0 for i¹j) then
(using the geometric product defined below) we have ekek = 1
(provided ek2¹0) ; but in general
ekek has a non-zero 2-blade component because ekÙek ¹ 0 .
E induces both the coordinate expression
x = åi=1N xiei
[ with xi º ei.x ],
and the reciprocal coordinate expression
x = åi=1N xiei
[ with xi º x.ei ].
ei is the 1-vector geometric multiplier that "seperates" 1-vector x
into xi +
åj ¹ i xjeiÙej
.
In ÂN : (i) an orthonormal frame is self-inverse ( ei = ei ; xi = xi ) ; (ii) a general frame, expressed as an N×N matrix E with respect to a fixed orthonormal frame F=(f1,f2,...fN) in conventional manner via ( ei = åi=1N Ejifj ) has as its reciprocal frame the frame having matrix (E-1)T = (ET)-1 with respect to F, ie. the inverse transpose.
Letting
Eij º ei¿ej and
Eij º ei¿ej ,
we have xj = åi=1N Eijxi ;
xj = åi=1N Eijxi .
The N×N symmetric matrices {Eij} and {Eij}
are related by {Eij} = {Eij}-1 where -1 is the conventional matrix inverse.
Inverse Frame Units
If frame vectors are assigned units, e1 having length 5 m say, then e1 must be regarded as having "length"
5-1 _meteri so that e1¿e1 = 1 m0 is dimensionless. Coordinates
_xui =ei¿x are then unitless while reciprocal coordinates
xi = ei¿x have units m2.
xi
2 the inverse
Extended inverse frames
Given an extended basis {e[.i.] : 0£i<2N }
we can construct an extended pureblade inverse frame
{e[.i.]} which satisfies
e[.i.]* e[.j.]
º (e[.i.]e[.j.])<0>
= 1 Û i=j , 0 else .
The Geometric Product
"He who can propery define and divide is to be considered a god."
--- Plato
To make ÂN a linear space we require a "multiplication"
with the following properties:
a(bc) = (ab)c (associativity)
a(b+c) = ab + ac
; (b+c)a = ba + ca (distributivity)
aa = Sig(a)
where Sig(a) is a scalar for all 1-vector a (contraction).
Of principle interest here is the contraction Sig(a) = e|a|2.
where e (the signature of a) is either ±1 or 0
and |a| is the conventional magnitude ("length") of 1-vector a.
A vector is null if a2=0.
We write Âp,q,r
for a vector space having orthogonal basis {e1,e2,...eN} where
N=p+q+r and
Sig(ei) =
1 for 1£i£p ;
-1 for p<i£p+q ;
0 for p+q<i£N .
We write Âp,q,r for the associated geometric algebra.
We write Âp,q
(aka. Clp,q)
as an abbreviation for Âp,q,0
and ÂN as an abbreviation for ÂN,0,0 .
We define the geometric product of any a by a scalar
b in the obvious "coordinatewise"
commutative manner
(ba)[ij..m] = (ab)[ij..m]
º b(a[ij...m]) .
We define the geometric product of two 1-vectors by
ab º a.b + aÙb where a.b
is the conventional ÂN (or UN) vector "dot" product. We can then extend this definiton
by means of the associativity and contraction rules to higher grade blades and hence
(by distributivity) to multivectors generally.
The geometric product is noncommutative, but this is actually an assett; the "degree" of
noncommutativity of the geometric product of two multivectors being a measure of their orthogonality.
A unit multivector is a multivector satisfying (aa)<0>=±1.
Â2
We can tabulate the geometric product for Â2 with respect to
a basis for Â2 derived
from an orthonormal basis {e1,e2} for Â2.
| ab for Â2 | ||||||
| 1 | e1 | e2 | e12 | |||
| 1 | 1 | e1 | e2 | e12 | ||
| b | e1 | e1 | 1 | e12 | -e2 | |
| e2 | e2 | -e12 | 1 | e1 | ||
| e12 | e12 | e2 | -e1 | -1 | ||
| ab for Â3 | |||||||||
| 1 | e1 | e2 | e3 | e23 | e31 | e12 | e123 | ||
| 1 | 1 | e1 | e2 | e3 | e23 | e31 | e12 | e123 | |
| e1 | e1 | 1 | -e12 | e31 | e123 | e3 | -e2 | e23 | |
| e2 | e2 | e12 | 1 | -e23 | -e3 | e123 | e1 | e31 | |
| b | e3 | e3 | -e31 | e23 | 1 | e2 | -e1 | e123 | e12 |
| e23 | e23 | e123 | e3 | -e2 | -1 | e12 | -e31 | -e1 | |
| e31 | e31 | -e3 | e123 | e1 | -e12 | -1 | e23 | -e2 | |
| e12 | e12 | e2 | -e1 | e123 | e31 | -e23 | -1 | -e3 | |
| e123 | e123 | e23 | e31 | e12 | -e1 | -e2 | -e3 | -1 | |
Writing i º e123 º e1Ùe2Ùe3 = e1e2e3 we see from the above
table that i commutes with all multivectors and satisfies i2 = -1.
We also observe that
aÙb = i(a×b)
= (a×b)i
where a×b is the conventional Â3 vector "cross" product
and that ia spans the plane normal to a.
We also have aÙbÙc = (a.(b×c))i.
We note in passing that the subspace Â3 +
consisting of all
3D multivectors having no odd grade component, ie. the space of multivectors of the
form a + be23 + ge31 + de12
is closed under the geometric product and is isomorphic to the
quaternion space Q, as is Â0,2 .
a + bi + gj + dk.
Biquaternions
We further note that a general Â3 multivector can be uniquely expressed as
(a + a2) + (b + b2)e123
where a,b are scalars and a2,b2
are pure Â3 bivectors.
An alternative biquaternion (aka. complex four-vector aka. Pauli spinor)
representation of Â3 sets
i=i=e123 ,
s1=e1 ,
s2=e2 ,
s3=e3
(satisfying si sj=eijki sk).
The biquaternion
(a0+b0i)
+(a1+b1i)e1
+(a2+b2i)e2
+(a3+b3i)e3
is equivalent to the Â3 multivector
a0 + a1e1+a2e2+a3e3
+ b1e23+b2e31+b3e12
+ b0e123 .
The product of two 3D 1-vectors is usually taken in this context to
be ab º a.b + i(a×b) which is equivalent
to the Â3 geometric product since i(a×b)=aÙb.
Pseudoscalars
The N-vectors from a given UN
are all equivalent apart from magnitude ("scale","volume") and sign ("handedness"). They are
accordingly known as pseudoscalars.
Conversely a nonzero pseudoscalar "spans" (and can be thought of as representing) UN .
We will use the font a to denote a multivector viewed as a pseudoscalar.
Let i º iN be the unit pseudoscalar e12..N for ÂN.
i satisifes i 2 = (-1)½(N-1)N and
commutes with all multivectors if N is odd. For even N we have
iak = (-1)kaki
so that i (anti)commutes with (odd)even blades.
We say a multivector is central if it commutes with all other multivectors.
For even N, only scalars are central but for odd N any <0;N>-multivector (scalar plus pseudoscalar)
is central.
An (N-1)-vector is sometimes refreerd to as a pseudovector but we favour the term hyperblade here.
Taking the geometric product of a multivector with i maps k-blades to (N-k)-blades and vice versa.
In particular it maps scalars to pseudoscalars (and vice versa)
and vectors to pseudovectors (and vice versa).
Note that a k-blade acts as a pseudoscalar when acting upon multivectors wholly contained
within the space it spans. The geometric product of a pseudoscalar i with a blade
ak contained in the subspace spanned by i spans the subspace of i
complimentary (orthogonal) to subspace ak.
In particular, the geometric product of any blade with itself is a scalar.
The signature of a blade bk,
ebk ,
is the sign of bk2
(or zero if bk2 = 0 in which case the blade is said to be null).
Duality
We define the dual of a multivector a with respect to a pseudoscalar i
spanning a space containing a by
a* º ai-1 = a¿i-1
[ Where ¿ is the contractive inner product defined below.
Some authors favour ai, but if i is a unit psuedoscalar the difference is only one of sign.
]
a* spans the subspace of i "perpendicular" to pureblade a.
If b is an unmixed (ie. odd or even) multivector, it will either commute or anticommute with i.
For odd N, the pseudoscalar commutes with everything and we have
(a*)b = a(b*) = (ab)* .
For even N, i (anti)commutes with (odd) even multivectors and we have
(a*)b = a(b#*) = (a(b#))* where # is the grade involution conjugation defined
below.
In the presence of a standard basis for ÂN, computing a* for the unit pseudoscalar i=e123..N is a computationally trivial "shuffling" of coordinates requiring no numeric computations. For the bitwise ordering we have (ai-1)[.i.] = ± a[.(i XOR (2N-1)).] where the actual sign depends upon N and the bitwise parity of i.
The inverse dual or undual is defined by a-* º a*i2 = ai so that
(a-*)* = a.
Matrix representations
Âp.q.r in Â2N×2N
With regard to a particular extended basis, an N-D multivector a can be expressed as a 2N
dimensional real 1-vector. But as a function mapping multivectors to multivectors a(x) = ax ,
ie.. a transform of 2N-D 1-vectors, a can also be represented as a
2N×2N matrix.
Taking a=a0+a1e1+a2e2+a12e12 in Âp,q,r
with p+q+r=2, for example,
we have
(a0+a1e1+a2e2+a12e12)(x0+x1e1+x2e2+x12e12)
= (a0x0+e1a1x1+e2a2x2-e1e2a12x12)
+ (a1x0+a0x1+e2a12x2-e2a2x12)e1
+ (a2x0+a0x2-e1a12x1+e1a1x12)e2
+ (a0x12+a1x2-a2x1+a12)e12
which we can express as
| æ | a0 | e1a1 | e2a2 | -e1e2a12 | ö | æ | x0 | ö | |
| ç | a1 | a0 | e2a12 | -a2 | ÷ | ç | x1 | ÷ | |
| ç | a2 | -e1a12 | a0 | e1a1 | ÷ | ç | x2 | ÷ | |
| è | a12 | -a2 | a1 | a0 | ø | è | x12 | ø |
Far more compact matrix representors for multivectors are typically available. The
following are all "maximally efficient" in that they require
precisely 2N real scalar parameters to hold a general N-D multivector.
Â2 in Â2×2
| 1 | = | æ | 1 | 0 | ö | e1 | = | æ | 1 | 0 | ö | e2 | = | æ | 0 | 1 | ö | e12 | = | æ | 0 | 1 | ö |
| è | 0 | 1 | ø | è | 0 | -1 | ø | è | 1 | 0 | ø | è | -1 | 0 | ø |
| 1 | = | æ | 1 | 0 | ö | e1 | = | æ | 0 | 1 | ö | e2 | = | æ | 0 | -1 | ö | e12 | = | æ | 1 | 0 | ö |
| è | 0 | 1 | ø | è | 1 | 0 | ø | è | 1 | 0 | ø | è | 0 | -1 | ø |
Â3 has a "biquaternian" representation with Hermitian 2×2 complex matrices
| 1=1 | = | æ | 1 | 0 | ö | ; e1= s1 | = | æ | 0 | 1 | ö | ; e2= s2 | = | æ | 0 | -i | ö | ; e3= s3 | = | æ | 1 | 0 | ö |
| è | 0 | 1 | ø | è | 1 | 0 | ø | è | i | 0 | ø | è | 0 | -1 | ø |
| ab | a | ||||
| 1 | s1 | s2 | s3 | ||
| b | 1 | 1 | s1 | s2 | s3 |
| s1 | s1 | 1 | -i s3 | +i s2 | |
| s2 | s2 | +i s3 | 1 | -i s1 | |
| s3 | s3 | -i s2 | +i s1 | 1 | |
The si and 1 act as a basis for the full C2×2 algenra of complex 2×2 matrices since
| æ | a | b | ö | = ½(a+d)1 + ½(b+c) s1 + ½i(b-c) s2 + ½(a-d) s3 |
| è | c | d | ø |
Each element of the special unitary group SU(2) of all C2×2 unitary (AA=1) matrices having unit
positive determinant
can be expressed via U=(½iåj=13 qjej)↑
for three real scalar parameters qj. e1,e2, and e3 are then refered to as the generators of SU(2)
so we can view SU(2) geometrically as the space of exponentiated Â3 bivectors.
SU(2) is isomorphic to the group SO(3) of all orthogonal
(AA_transp=1) Â3×3 matrices, with
æ | x-iy | ö | U-1
| è | z | ø
| |
| 1=1 | = | æ | 1 | 0 | 0 | 0 | ö | ; e1 | = | æ | 1 | 0 | 0 | 0 | ö | ; e2 | = | æ | 0 | 1 | 0 | 0 | ö | ; e3 | = | æ | 0 | 0 | 1 | 0 | ö | ; e4 | = | æ | 0 | 0 | -1 | 0 | ö | |
| ç | 0 | 1 | 0 | 0 | ÷ | ç | 0 | -1 | 0 | 0 | ÷ | ç | 1 | 0 | 0 | 0 | ÷ | ç | 0 | 0 | 0 | -1 | ÷ | ç | 0 | 0 | 0 | 1 | ÷ | |||||||||||
| ç | 0 | 0 | 1 | 0 | ÷ | ç | 0 | 0 | -1 | 0 | ÷ | ç | 0 | 0 | 0 | 1 | ÷ | ç | 1 | 0 | 0 | 0 | ÷ | ç | 1 | 0 | 0 | 0 | ÷ | |||||||||||
| è | 0 | 0 | 0 | 1 | ø | è | 0 | 0 | 0 | 1 | ø | è | 0 | 0 | 1 | 0 | ø | è | 0 | -1 | 0 | 0 | ø | è | 0 | -1 | 0 | 0 | ø |
| 1= | æ | 1 | 0 | 0 | 0 | ö ; | e1= | æ | 0 | 0 | 0 | i | ö ; | e2= | æ | 0 | 0 | 0 | 1 | ö ; | e3= | æ | 0 | 0 | i | 0 | ö ; | e4= | æ | 0 | 0 | 1 | 0 | ö ; | e5= | æ | -i | 0 | 0 | 0 | ö |
| ç | 0 | 1 | 0 | 0 | ÷ | ç | 0 | 0 | i | 0 | ÷ | ç | 0 | 0 | -1 | 0 | ÷ | ç | 0 | 0 | 0 | -i | ÷ | ç | 0 | 0 | 0 | 1 | ÷ | ç | 0 | -i | 0 | 0 | ÷ | ||||||
| ç | 0 | 0 | 1 | 0 | ÷ | ç | 0 | -i | 0 | 0 | ÷ | ç | 0 | -1 | 0 | 0 | ÷ | ç | -i | 0 | 0 | 0 | ÷ | ç | 1 | 0 | 0 | 0 | ÷ | ç | 0 | 0 | i | 0 | ÷ | ||||||
| è | 0 | 0 | 0 | 1 | ø | è | -i | 0 | 0 | 0 | ø | è | 1 | 0 | 0 | 0 | ø | è | 0 | i | 0 | 0 | ø | è | 0 | 1 | 0 | 0 | ø | è | 0 | 0 | 0 | i | ø |
We can construct matrices having 1 in the first to fourth entries of the first column (and zeroes elsewhere) respectively as
| aÙb for Â3 | |||||||||
| 1 | e1 | e2 | e3 | e23 | e31 | e12 | e123 | ||
| 1 | 1 | e1 | e2 | e3 | e23 | e31 | e12 | e123 | |
| e1 | e1 | 0 | -e12 | e31 | e123 | 0 | 0 | 0 | |
| e2 | e2 | e12 | 0 | -e23 | 0 | e123 | 0 | 0 | |
| b | e3 | e3 | -e31 | e23 | 0 | 0 | 0 | e123 | 0 |
| e23 | e23 | e123 | 0 | 0 | 0 | 0 | 0 | 0 | |
| e31 | e31 | 0 | e123 | 0 | 0 | 0 | 0 | 0 | |
| e12 | e12 | 0 | 0 | -e123 | 0 | 0 | 0 | 0 | |
| e123 | e123 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
We define the contractive inner product
(aka. Lounesto inner product)
(¿
or
û
) by
ak¿bl º
( akbl)<l-k>
for l³k
,
0 else
where ak,bl are blades of any grade;
and thence extending over multivectors by insisting on bilinearity.
¿ is neither associative nor commutative (symmetric).
In particular, (a¿a)=a2
so (a¿a)¿b=a2 b
but a¿(a¿b) = 0 .
For k-vectors with k>1, contraction with a 1-vector a corresponds to orthogonal projection
into subspace a* so
a¿b is the "component factor" of blade b perpendicular to 1-vector a .
We have the following properties:
| a¿b for Â3 | |||||||||
| 1 | e1 | e2 | e3 | e23 | e31 | e12 | e123 | ||
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| e1 | e1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | |
| e2 | e2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
| b | e3 | e3 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| e23 | e23 | 0 | e3 | -e2 | -1 | 0 | 0 | 0 | |
| e31 | e31 | -e3 | 0 | e1 | 0 | -1 | 0 | 0 | |
| e12 | e12 | e2 | -e1 | 0 | 0 | 0 | -1 | 0 | |
| e123 | e123 | e23 | e31 | e12 | -e1 | -e2 | -e3 | -1 | |
¿ is sometimes known as left-contraction or onto-contraction as opposed to the
right- or by-contraction defined by
ak ë bm º
( akbm)<k-m> for k³m ; 0 else
or equivalently by aëb = (a§¿b§)§ where §
is the reverse operator defined below.
The semi-commutative inner product
Some authors favour the semi-symmetric
or semi-commutative inner product
(aka. Hestenes inner product) (.) defined by
a.bk º bk.a º 0
where bk is any blade ;
ak.bm º
( akbm)<|k-m|>
where ak,bm are proper (nonscalar) blades;
and thence extending over multivectors by inisiting on bilinearity.
The result is neither associative nor commutative ("symmetric").
It is "semi-symmetric" in that
aj.bk = (-1)j(k-j)bk.aj for pure multivectors aj,bk with j£k.
Note that scalars (0-blades) a,b satisfy aÙb = ab ;
a¿b = a.b = 0 so we can think of scalars as "self-orthogonal".
We obtain the identities
| a.b for Â3 | |||||||||
| 1 | e1 | e2 | e3 | e23 | e31 | e12 | e123 | ||
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| e1 | 0 | 1 | 0 | 0 | 0 | e3 | -e2 | e23 | |
| e2 | 0 | 0 | 1 | 0 | -e3 | 0 | e1 | e31 | |
| b | e3 | 0 | 0 | 0 | 1 | e2 | -e1 | 0 | e12 |
| e23 | 0 | 0 | e3 | -e2 | -1 | 0 | 0 | -e1 | |
| e31 | 0 | -e3 | 0 | e1 | 0 | -1 | 0 | -e2 | |
| e12 | 0 | e2 | -e1 | 0 | 0 | 0 | -1 | -e3 | |
| e123 | 0 | e23 | e31 | e12 | -e1 | -e2 | -e3 | -1 | |
We will use ¿ in preference to . whenever possible here.
a¿b = a.b " 1-vector a if b<0>=0 so in many
equations ¿ and . are interchangeable.
However, only . is dual to Ù in the sense that
a.(bi) = (aÙb)i
; ie.
aÙ(bi) = (a.b)i ;
or equivalently a.(b*) = (aÙb)*
; aÙ(b*) = (a.b)*
;
a.b = (aÙ(bi-1))i
;
aÙb = (a.(bi-1))i
for any 1-vector a and multivector b
.
In particular aÙ(b.c)
= (a.(bÙ(ci-1)))i , ie.
(aÙ(b.c))* = a.(bÙ(c*))
.
We cannot replace . by ¿ in these fundamental duality equatons.
In Â3 we have a×b = (aÙb)i-1
; a×(b×c) = (aÙ((bÙc)i-1))i-1
= (a.c)b - (a.b)c
; and aÙbÙc = (a.(b×c))i where × denotes the traditional Â3 vector product.
The "fatdot" inner product
A variation of the sem-commutative inner product defined by
ak·bm º
( akbm)<|k-m|>
k,m ³ 0.
This is sometimes known as the modified Hestenes or dot product but we will call it the fatdot product
here to avoid confusion with the traditional (Hestenes) inner product .
The multiplication table for · is the same as that for . except with regard to scalars.
The "scalar" row and column are filled as for Ù , ie.
according to 1·a = a·1 = a .
We can think of · as "abrogating" the "scalar handling" from Ù, reducing it
to the "thin" outter product ^. Thus · and ^ provide an alternate "decomposition" of the geometric product
to . and Ù which may be fruitful in some contexts but will not be exploited here.
The forced Euclidean contractive inner product
The forced Euclidean contractive inner product ¿+ "overrides" the signatures of the vectors
on which it operates. In a Euclidean space ÂN ,
¿+ = ¿ . In Âp,q , ¿+ is defined with regard to
an orthonormal basis {ei} .
We take 1¿+a º a and ei¿+ej º |ei¿ej| and extend ¿+ bilinearly.
The tabulation of ¿+ with regard to the extended (multivector) basis for Âp,q
is thus the tabulation for ¿ for Âp+q.
Although frame dependant, ¿+ is a useful product computationally, since one can sometimes simply "lift" a problem
(such as computing meets and joins) in a nonEuclidean space into Euclidean space and solve it there.
We define the frame-dependant
forced Euclidean geometric product by extending a¨+b º a¿+b + aÙb
over Âp,q linearly and asscoiatively so that the tabulation of ¨+ for a given basis for
Âp,q is the tabulation for
¨ for Âp+q.
We will later consider higher dimensional embeddings of UN obtained by adding "extension" dimensions e+ and e-
to a basis and in such cases will often wish to retain the negative signature of the extender
while forcing UN Euclidean. We represent the unextended forced Euclidean contractive product by ¿(+) and the
unextended forced Euclidean geometeric product by ¨(+) .
Commutator product
The antisymmetric commutator or product is defined by
a×b º ½(ab-ba). It is our first non-partial-geometric
product, potentially containing blades not present in ab.
[ aka. , without the ½ factor, as the Lie product ]
× is nonassociative, and often represents the appropriate generalisation of the
_Real3 vector product ×.
We have
If a and b have a^=a and b^=b or a^-a and b^=-b for reversing conjugation ^ then (a×b)^ = -a×b . Thus the commutator product of two same grade blades has grade <2;6;10;...>.
We have 23N frame-dependant commutation coefficients Cij...kl... lm... º eij.. * (ekl..×elm...) which can be regarded as measuring the nonorthogonality of the frame.
With (a×) denoting the operator v ® a×v, we have
(a×)(b×)v =
½(a×)(bv-vb) =
¼(abv +vba - avb - bva) .
Whence
((a×)×(b×))v =
¼((a×b)v + v(b×a))
= ½(a×b)×v .
| a×b for Â3 | |||||||||
| 1 | e1 | e2 | e3 | e23 | e31 | e12 | e123 | ||
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| e1 | 0 | 0 | -e12 | e31 | 0 | e3 | -e2 | 0 | |
| e2 | 0 | e12 | 0 | -e23 | -e3 | 0 | e1 | 0 | |
| b | e3 | 0 | -e31 | e23 | 0 | e2 | -e1 | 0 | 0 |
| e23 | 0 | 0 | e3 | -e2 | 0 | e12 | -e31 | 0 | |
| e31 | 0 | -e3 | 0 | e1 | -e12 | 0 | e23 | 0 | |
| e12 | 0 | e2 | -e1 | 0 | e31 | -e23 | 0 | 0 | |
| e123 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
We extend this definiton of × to give commutator "products" of operators and functions. If ¦(a) and g(a) are multivector-valued functions of multivectors we define (¦×g)(a) º ½(¦(g(a)) - g(¦(a)) º ½(¦g(a) - g¦(a)) .
We also define ¦×(a,b) º ¦(a)צ(b) .
We define the k-fold commutator product
by
a×kb º a×(a×(....(a×(a×b))..))
= (-1)k ((...(b×a)×a)×...)a
where there are k a's and ×'s in the sequence.
a×0b = b ;
a×1b = ½(ab-ba) ;
a×2b = ¼(a2b-2aba+ba2) ;
... ;
a×kb
= 2-kåi=0k
(-1)k kCi
ak-ibai .
AntiCommutator product
The symmetric anticommutator product is defined by
a~b º ½(ab+ba).
The geometric product decomposes naturally as
ab = a×b + a~b .
Provided a2 commutes with b and b2 commutes with a, then
a and b both commute with a~b and anticommute with a×b. Further
a×b commutes with a~b.
We have
The anticommutator product of two same grade blades has grade <4;8;12;...>.
Scalar product
The commutative (symmetric) scalar product is defined by
a*b º (ab)<0> = (ab)¿1 .
It satisfies
ak *bk = ak¿bk .
Taking the scalar product with 1 corresponds to taking the scalar part
a*1 = a<0> = a¿1 .
We have the powerful cyclic scalar rule
(abc)<0> = (cab)<0>
for all multivectors a,b,c
From a programmers' perspective the scalar product can be regarded both as a multivector-valued product returning a 0-grade
(ie. scalar valued) multivector, and as a real-valued function of a multivector. For code efficiency it is frequently preferable to
impliment it returning a real rather than a multivector type.
Scalar-Pseudoscalar product
The commutative scalar-pseudoscalar product is defined by
a*b º (ab)<0,N> = (ab)¿(1+i) .
For N odd we will also refer to * as the central product since it is central-valued
and we have the vastly powerful cyclic scalar-pseudoscalar rule
(abc)<0;N> = (cab)<0;N>
.
For even N, the "central product" coincides with * rather than *.
Inversive product
a*b º (a¿b) / (|a||b|) .
Thus a*b = cos(qÐ(a , b))
where the magnitude |a| is as defined below and qÐ(a,b) denotes "angle subtended by"
1-vectors a and b.
Delta products
The greater delta product D (aka. disjoint) is a nonbilinear restrictive product
returning the highest grade nonvanishing component of the geometric product, or zero if the geometric product is zero.
This can be computed, albeit somewhat inefficiently, by calculating the geometric product keeping track of, or subsequently seeking,
the highest grade attained by the blades in the product, and then restricting the product to only this grade.
It is most commonly applied to blades and spans the "difference" between them, so for example
((e1+e2)Ùe34) D e235 = -e1245. It is profoundly useful in constructing meets
and joins.
Of course, calculating a delta product can present us with dilemas when small coordiante values are encountered. If a product ab has a large scalar part and some comparatively tiny 2-blade coordinates, is the highest nonvanishing" grade zero or two? Are the small 2-vector coordinates a genuine geometrical artifact, or just "failed zeroes" arising from finite precision computations? What magnitides may we discard? Our choice will substantively effect the grade and magnitude of aDb and our computations risk becoming more art than science. Nonetheless, the delta product is profoundly useful since in many cases in can be computed unambiguously and is then fundamental in constructing meets, joints, and disjoints as described later.
We also have the lesser delta product returning the nonzero component of minimal grade
adb = (ab)Min .
Conjugative Products
For every multivector conjugation ^ there are two associated restricted geometric products.
One restricting to the "^-real" blades (b^ = b) , and one to the "^-imaginary"
blades with b^=-b.
Pure Product Rule
akbl = (akbl)<|k-l|>
+ (akbl)<|k-l|+2>
+ .. + (akbl)<k+l>
=
åm=0½(k+l-|k-l|) (akbl)<|k-l|+2m>
hence the geometric product of two pure multivectors is either odd or even
(as defined under Involution below)
according as integer k-l is odd or even.
[ Proof : True for k=1 and then by induction on k for single k-blade ak. Result follows by distributivity.
.]
The Intersective Product
The intersective product is a not a restricted geometric product and is frame dependant.
It picks out the "shared axies" eg. e3Çe123=e3. In programming terms, while the
geometeric product is based on the exclusive or (XOR) of the bitwise ennumeration indices,
the intersective product is based on their logical AND.
We bring in the sign changes due to commutations ( e2Çe12 = -e2) but not the signatures.
We will later encounter the frame-independant meet operation aÇb and while we do have
e[.j.]Ç[.k.])
= e[.j.]Ç[.k.])
= ±e[.j AND k.]
we will see that Ç is not distributive accorss + for same grade blades.
(e1+e2)Çe1 = 0 while
(e1+e2)Çe1 = e1 .
Precedence Conventions
In much of the literature, precendence conventions are adopted for multivector products with
outter products taking precedence over inner products which in turn take precedence over geometric products so that,
for example, a.bcÙd.e denotes
(a.b)((cÙd).e) .
We will not rely on such conventions, favouring explicit brackets with regard to product symbol scope throughout this work,
in acordance with programmer morality.
Multivector Operations
We will define a number of right-operators §, , ^, 2 that act on multivectors to return multivectors.
For all of these, we adopt the precedence convention that they apply leftwards prior to all products.
Thus xy§ denotes x(y§) rather than (xy)§ ;
xy2z denotes x(y2)z ; and so forth.
We introduce and adopt the "Bellian notation"
a^(b) º (a)b(a^) º aba^ .
If a^^=a we can represent (a^)ba by
a^^(b).
To minimise notational ambiguities, if we have a "point-dependant" multivector ap we will sometimes
put the positional suffix to the right of the subscripted operator symbol as, for example,
a§p(b) º (ap)§(b) º apbap§ .
Lifts
For a given e- in Âp,q with q>0 we can define a e--lift
Lifte-: Âp,q ® Âp+1,q-1 taking ae- + b1e1+..
in Âp,q to ae-' + b1e1'+... in Âp+1,q-1
where e-', e1',e2', is a basis for Âp+1,q-1 with ei'¿ej' = ei¿ej
but e-'2 = -e-2. We think of moving to the "same" multivector in a variant alegbra in which e-
has positive signature. When q=1 (or when any other negative signatured basis vectors are
the extendors of a higher dimensional embedding) we refer to a Euclidean Lift. Obviously we
have Lifte--1 : Âp+1,q-1 ® Âp,q moving back again
and we can construct e--dependant operations on Âp,q multivectors by lifting them into
Âp+1,q-1, applying an operation F:
Âp+1,q-1 ® Âp+1,q-1
, and then lifting back to Âp,q. Formally, we compute Lifte--1(F( Lifte-(a))) . Informally,
we simply treat e- as having positive signature throughout our computations.
Conjugations
A conjugation flips the signs of the coefficients of specific blades of a multivector.
For any conjugation ^ we have a^^=a " a which we can write as ^2=1.
We say a conjugation ^ is a reversing conjugation (aka. an anti-automorphism)
if (ab)^ = (b^)(a^) .
We say a conjugation ^ is a nonreversing conjugation (aka. an automorphism)
if (ab)^ = (a^)(b^) .
We say a conjugation is semireversing if it is neither reversing nor nonreversing.
A reversing or nonreversing conjugation is completely specifed by its action on scalars and 1-vectors
and obeys
(ak)^ = (a^)k for integer k and thus
satisfies the "exponent hopping" rule (ea)^ = ea^
or a↑^ = a^↑ " a
where exponentiation is as defined below.
All conjugations of interest here preserve 0-blades (scalars), save the negation conjugation.
Conjugations are often best implemented
by the direct sign flipping of appropriate components in the given basis rather than
a "formal" product evalution.
We will see that there are four fundamental conjugations, one of which is frame-dependant, from which
sixteen composite conjugations may be constructed. These provide 112 distinct bilinear multivector products in addition to ¿, Ù and so forth
such as a§b or a#b . If we also comsider products such as
a§Ùb§ for products ¿, ë, Ù, *, and × as well as geometric product we obtain
6×112 bilinear multivector products!
Identity
The identity conjugation has no effect, leaving all blades unaltered. We can denote it by operator 1
or as conjugations 1 or, better, = .
1(a) º a1 º a= º a " a .
We could represent aba by a1(b) since a1=a but
this is notationally dangerous since we often use 1 as a suffix so
aba º a=(b) is preferable.
Negation
The negation conjugation negates every blade. It is the only conjugation that negates scalars.
We denote the negation of a by -a rather than by a- .
Negation is neither reversing nor nonreversing, with (-a)(-b)=ab.
Reverse Conjugation
We define a to be a k-versor if it is the geometric product of k nonzero 1-vectors
a=a1a2...ak. If k is even we say a is an even versor.
If a1,a2,..ak are mutally orthogonal then
a1a2..ak =
a1Ùa2Ù..ak and so, with regard to vectors known to be orthogonal, versors are equivalent to blades.
We call a§ = ak...a2a1
the reverse conjugation of versor a and to accomodate general multivectors we
define the reverse of k-blade bk=b1Ùb2Ù...bk
by
bk§ º (-1)½ (k-1)kbk
=bkÙ...Ùb2Ùb1
and can extend § to general a as the sum of the reversals of its component blades.
§ thus "reverses" both versors and blades.
Since all k-blades reverse with the same sign change (regardless of signatures), we have
a§ = åk=0N a<k>§
= åk=0N (-1)½ (k-1)ka<k>
making reversals very simple to compute. We avoid, in particular,
the need to factorise.
The sign sequence (-1)½ (k-1)k k³0
= (+,+,-,-, +,+,-,-, +,+,-,- .....)
is fundamental in multivector analysis. For N<6, only 2-vectors and 3-vectors change sign
under reversal. For N=1,4,5,8,9,12,13,... we have i§=i.
We write a<+§> for the components of a unchanged by §,
and a<-§> for the those components which change sign under §.
We then have
a§ = a<+§> - a<-§>
In a Euclidean multivector space ÂN, the reversed multivector a§ corresponds to the transpose AT of the matrix representation of a.
Clearly (ab)§ = b§a§ so § is a reversing conjugation. For any reversing conjugation ^ we have (a§)^ = (a^)§ which we can consider as ^ "commuting" with § and write as ^×§=0 .
In the biquaternian Â3 model, reverse is known as complex conjugation. If b=a0+b0i +(a1+b1i)e1 +(a2+b2i)e2 +(a3+b3i)e3 we have b§ = (a0-b0i) +(a1-b1i)e1 +(a2-b2i)e2 +(a3-b3i)e3 .
b(b§) = (a0+a1e1+a2e2+a3e3)2 + (b0+b1e1+b2e2+b3e3)2 = (a02+a12+a22+a32+ + b02+b12+b22+b32) + e12(a0a1+b0b1) + e2(..) + e3(..)
Rotors
A rotor is an even multivector that satisfies
aa§ = |a|2 ¹ 0
(a unit rotor if |a|=1 ) .
If a rotor is also a 2k-versor we call it a k-rotor.
Involution Conjugation
Somewhat akin to § is the main involution conjugation defined by
a# º åk=0N (-1)ka<k>
or, equivalently,
a# º a<+> - a<->
.
We have (a#)# = a.
We say a multivector a is even if a# = a = a<+>,
odd
if a# = -a = -a<->, and mixed otherwise.
For l-blade bl ,
aÙbl = ½(abl + bl#a)
;
a¿bl = ½(abl - bl#a).
(ab)# = (a#)(b#) so # is a nonreversing conjugation.
Clifford Conjugation
Clifford conjugation © = §# is the combination of reverse and main involution
a© º (a§)# = (a#)§ so that
a<k>©
= (-1)½(k-1)k + ka<k>
= (-1)½(k+1)k + ka<k>
It negates grades 1,2,5,6,9,10,13.... .
We will seldom use the © symbol, favouring the more explicit §#.
In the biquaternian Â3 representation
(a0+b0i)
+(a1+b1i)e1
+(a2+b2i)e2
+(a3+b3i)e3
=
a0 + a1e1+a2e2+a3e3
+ b1e23+b2e31+b3e12
+ b0e123
the Clifford conjuation is
((a0+b0i)
+(a1+b1i)e1
+(a2+b2i)e2
+(a3+b3i)e3)§#
= (a0+b0i)
-(a1+b1i)e1
-(a2+b2i)e2
-(a3+b3i)e3
and is known as vector conjugation.
Since siD=- si while 1D=1 , Â3 Clifford conjugation
corresponds to the conventional matrix adjoint D in the 2×2 complex matrix representation.
Thus b(b§#) =
(a0+b0i)2 -(a1+b1i)2 -(a2+b2i)2 - (a3+b3i)2
is the conventional (complex number) determinant of the 2×2 complex matrix representation of b.
We will here refer to the restrictive products a©+b º (ab)<1,2,5,6,9,10,..>
and a©-b º (ab)<0,3,4,7,8,...> as the real Clifford,
and imaginary Clifford product.
Mitian Conjugation
This nonreversing conjugation is specific to a given orthonormal frame. All our multivector operations
thus far have been coordinate-invarient but, in non-Euclidean cases,
this one is not.
Suppose we have an orthonormal
frame { ei} for Âp,q,0 with ei for p < i £ N having
negative signature. We define (and here name) the nonreversing mitian conjugation of b by
b§ º e(p+1)..N§#(b)
º e(p+1)..N b eN..(p+1)
so that, in particular, 1§ =1 ; ei§ = (-1)qei i£p
; (-1)q-1ei i>p ,
negating only the positive signature basis 1-vectors for odd q; and only the negative signature
basis 1-vectors for even q.
§ of a basis blade thus represents the (anti)commution of that blade with
the particular negative-space spanning pseudoscalar e(p+1)..N.
Unlike other conjugations which flip all ak blades the same way,
a§ ¹ ± a for general 1-vector a.
The mitian conjgation is the identity conjugation in a Eucliean space.
In a nonEucliean space
it is of principle interest in constructing the more commonly seen Hermitian conjugation beloved of physicists.
From a programming perspective, negation, involution, reversion, and mitian conjugation are the four fundamental
conjugations from which all other spacially invarient reversing or nonreversing conjugations may be constructed.
Hermitian Conjugation
Like mitian conjugation, the reversing Hermitian conjugation (aka. conjugation)
is frame-dependant.
b º b§§# = b§#§ = b#§§ =
e(p+1)..N§#(b§#)
º e(p+1)..N b§# eN..(p+1)
so that, in particular,
1 =1 ; ei = (-1)q+1ei i£p
; (-1)qei i>p
is thus a reversing conjugation that negates the basis 1-vectors having negative signature when q is odd,
providing the
inverse frame defined below with ei = ei = ei-1.
A general vector
v = åi=1N viei then has
v = åi=1N viei and hence
(a)¿b = a¿(b) = a¿+b .
aa ³ 0 is then the forced Euclidean length of a (zero only for a=0).
In a Euclidean space, a = §# so Euclidean Hermitian cojugation is Clifford conjugation.
Nullvector e-+e1 where e1¿e-=0 has (e-+e1)(e-+e1)=2 + e1Ùe- for Hermitian conjugation with respect to e-.
Setting unit minussquare 1-vector e-' = (e-±ae2)(1-a2)-½
for aÎ(0,1) we have e- + e1 = (1-a2)½e-' -/+ ae2 + e1
and (e-+e1)'¿(e-+e1) still equals 2 where ' is Hermitian conjugation with respect to e-'.
However, setting minussquare
e-' = (e-±ae1)(1-a2)-½
for aÎ(0,1) we have e- + e1 = (1-a2)½e-' + (1-/+a)e1
and (e-+e1)'(e-+e1)
= 2(1-/+a) + (1-a2)(1-/+a2)e1Ùe-'
= 2(1-/+a) + (1-a2)½(1-/+a2)e1Ùe-
where ' is Hermitian conjugation with respect to e-'.
This shows that by choosing frames appropriately we can make the positive Hermitian magnitude of a given null vector
as close to zero as we like but cannot acheive more than the forced Euclidean magnitude.
Likewise the unit 1-vector v=2e1+e- has frame invariant magnitude
|v| = |v¿v|½ = 3½ but
its e--relative modulus |v|+ =Ö(4+1)=5½ is frame specific . With regard to an alternate frame
{e+'=3-½v , e-'=(e+e-)e+'} v is expressed as 3½e+' and attains
minimal modulus 3½.
Thus the Hermitian modulus |aa|½ is frame dependant even for null a.
In the matrix representations for
Â1,1 and Â3,1 previously described,
Hermitian conjugation
corresponds to matrix transpose .
In the C4×4 representation for Â4,1,
it is provided by the complex conjugated transpose AT^ .
We say a multivector is Hermitian if a = a with regard
to a particular frame of interest. In a Minkowski space ÂN-1,1 this coresponds to
e4¿a =0 where e4 is the negative signatured frame vector.
We say a multivector is unitary if a = a-1 in a given
particular frame of interest.
Given a central (all-commuting) i with i2=-1 and i=-i, any unitary multivector can be expressed as (iH)↑ º
eiH where H is Hermitian.
Modulatory Conjugation
We define the reversing modulatory conjugation a+ of a Âp,q mutivector to be for odd q and
§§ = # for even q so that it always negates the negative signatured basis 1-vectors. In a Euclidean space, + = § is frame-independant reversion.
Our motivation for + is that
ak+ak = 1 for any unit k-blade (ak2=± 1) whose 1-vector components
satisfy a§ = ± a; and (ak+ak)<0> > 0 for all nonzero ak , even when ak2=0 .
[ Proof :
Suppose ak has i component 1-vectors of negative signature and k-i of positive signature.
Then for odd q
akak
= e(p+1)..N ak§# eN..(p+1) ak
= e(p+1)..N (-1)kak§ak§ eN..(p+1)
= e(p+1)..N (-1)k+(k-i)ak§ak eN..(p+1)
= e(p+1)..N (-1)k+(k-i)+i eN..(p+1)
= 1 ;
while even q we have
ak§§ak
= e(p+1)..N ak§ eN..(p+1) ak
= e(p+1)..N (-1)iak§ak eN..(p+1)
= e(p+1)..N (-1)2i eN..(p+1)
= 1 .
.]
Thus (a+a)<0>
= åk=0N ak+ak
= åk=0N |ak§ak|
provides a frame-dependant positive-definite real-valued measure known as the squared modulus of the multivector.
Extension Conjugations
The extension conjugations arise when we embedd UN in a higher dimensional space by extending
a given basis by postulating k further 1-vectors orthogonal to the UN basis, as wil be described later.
Extension conjugation [-] is the nonreversing conjugation that negates only the "new" basis 1-vectors,
[+] is the nonreversing conjugatuion that negates only the new basis vectors of negative signature.
By combining the extension conjuation with involution # we create the unextended involution (#)
that negates blade b if ¯i(b) is of odd grade where ¯ denotes projection into
the UN
Third bit Conjugation
Involution changes the sign of blades of odd grade. Reverse changes the sign of blades whose grade
has the second bit (bit 1) set. Semireversing third bit conjugation negates blades of grade
having the third bit set, ie. blades of grade 4,5,6,7, 12,13,14,15, 20,21,... .
Clearly we have fourth and fifth and higher bit conjugations for suficiently large N.
Dualed Conjuations
Any conjugation ^ induces a dualled conjuation
a^* º (ai-1)^i. Unlike undualled conjuations, the effect
of ^* on a k blade depends on N as well as k, but not, note, on the signature i2.
Conjugation tabulations
| Effect of conjgations and other operations on illustrative blades (e42=-1) | |||||||||||||
| Symbol | Name | 1 | e1 | e12 | e123 | e4 | e14 | e124 | e1234 | e12345 | e123456 | e1234567 | k-blade x |
| § | reverse | + | + | - | - | + | - | - | + | + | - | - | (-1)½k(k-1)x |
| # | involution | + | - | + | - | - | + | - | + | - | + | - | (-1)kx |
| §# | Clifford | + | - | - | + | - | - | + | + | - | - | + | (-1)½k(k+1)x |
| § | mitian | + | - | + | - | + | - | + | - | + | - | + | -e4xe4 |
| | Hermitian | + | + | - | - | - | + | + | - | - | + | + | -e4x§#e4 |
| * | dual (Â3) | -e123 | -e23 | e3 | 1 | . | . | . | . | . | . | . | -xe123 |
| * | dual (Â3,1) | -e1234 | -e234 | -e34 | e4 | -e234 | -e23 | -e3 | 1 | . | . | . | -xe1234 |
| * | dual (Â4,1) | -e12345 | -e2345 | -e345 | e45 | -e2345 | -e235 | -e35 | e5 | 1 | . | . | -xe12345 |
| -1 | inverse | + | + | - | - | - | + | + | - | - | + | + | x-2 x |
| 2 | square | +1 | +1 | -1 | -1 | -1 | +1 | +1 | -1 | -1 | +1 | +1 | x2 |
If we ennumerate the 32 extended basis blades for e1234 then for each
of the four primary conjugations we can construct a 32-bit bitmask with 1 in bit i indicating that
the blade of index i flips sign under the conjugation. For the
1,e1,e2,e12,e3,e13,e23,e123,e4,e14,... basis ordering
with e4 as the only negative signatured basis 1-vector these values are 0xFFFFFFFF for negation,
0x177E7EE8 for reverse, 0x96696996 for involution, and 0x69699696 for mitian. We can construct the flags for composite conjgations by xoring (exclusive-orring)
the flags of the contribuory primaries. Hermitian is accordingly 0xE87E81E8 and Clifford 0x8117177E.
With this ordering, basis blade e[.i.] flips sign under # whenn (i & 1) ¹ 0
and under § whenn (i & 2) ¹ 0
Directation
Directation takes 1-vector a to a if a¿e- < 0 ; to -a
if a¿e- > 0 ; or to 0 if
a¿e- = 0 , for a given e- with e-2 < 0. It is not a conjuation since (a+b)[] ¹ a[] + b[] in general
and it is defined only for 1-vectors . However, [] is frame invarieant in asmuch as any alternate e-' with e-¿e-' < 0 will
give the some directation.
Scalar Measures and Normalising
There are a surprising number of alternate meaningful "size values" for multivectors.
Associated with any conjugation ^ we have a scalar measure a^*a
= (a^a)<0> of a general multivector a and if this is nonzero
we can define ^-normalisation
a^ º a |(a^a)<0>|-½
so that
a^^*a^ = ± 1 .
Unitisation
If a2<0>¹0 we define the
unitised multivector
a= º a
|a2<0>|-½
so that ((a=)2)<0> = ± 1.
A multivector a is said to be unit if (a2)<0> = ± 1.
Magnitude
We define the real positive scalar magnitude or length of k-vector a<k> by
|a<k>| = |a<k>§¿a<k>|½ = |a<k>¿a<k>|½
= |(a<k>2)<0>|½ .
We here follow Hestenes and Sobczyk and extend to general multivector a as
|a| º Ö(åk=0N |a<k>|2) .
Some authors favour
|a| º åk=0N |a<k>| which is a fundamentally different measure
when applied to mixed grade multivectors.
The magnitude of a scalar is thus the absolute (unsigned) value
of the scalar and the modulus of a Euclidean 1-vector is its
length Ö|a2| = Ö|a¿a |
as for conventional vector methods.
In a Euclidean space, only 0 has zero magnitude.
In a non Euclidean space a multivector has zero magnitude iff
a<i>¿a<i> = 0 i=1,2,..N
, ie. a<i> is either 0 or a null i-vector .
For Euclidean space ÂN, a<k> a<k>§ = | a<k>¿a<k> | and we have
| a |2 = a*a§ =
a§*a = åk=1N (a<k>a<k>§)<0>
since a<i>*a<j>§ = 0 for i¹j
To accomodate negative signatures we have the weaker expression
| a |2 = åk=1N |(a<k>a<k>§)<0> |
.
Hence in Euclidean space |aÙb|2 = a2b2 - (a¿b)2
= -(aÙb)2
For N=3, |aÙb| = |a×b|
and |aÙbÙc| = | a.(b×c)| .
|a+be12|2 = ((a+be12)(a+be12§))¿1
= ((a+be12)(a-be12))¿1
= a2 + b2 so modulus in Â2 + is equivalent to
traditional "modulus" of a complex number.
If a or b is null then |aÙb|2 = (aÙb)2 = (a¿b)2
Conjugated Normalisation
If (a^a)-½ exists for a particlar conjuation ^ , then we have
^-normalisation
a ~^ º (a^s)-½a
satisfying (a ~^)^(a ~^) = 1 . If a particular i has
i^i = -1 then provided ^ is reversing or i commutes with a we can form
^-antinormalisation
a ~-^ º -ia ~^)
satisfying (a ~-^)^(a ~-^) = -1 .
We include the negation to make antinormalisation correspond to dual when i=i.
If ^ is reversing, (a^_ma(a))^ = a^a so a^a contains only blades preserved by ^. Thus if i^=-i the a^a has no i component.
Normalisation
If (a§a)<0> ¹0 we define the normalised multivector
a~ º
a§ º
a |(a§a)<0>|-½
so that |a§|=1 and a~§*a = ± 1.
A multivector a is normalised if |a|=1 .
For non Euclidean spaces, normalisation and unitisation of multivectors
are distinct concepts that coincide for pure k-blades.
This definition neglects the pseudocalar component of a§a and would be typically used in
an algebra with i^=-i.
If (a§a)<0> ¹0 we define the normalised multivector
a~ º
a§ º
a |(a§a)<0>|-½
so that |a§|=1 and a~§*a = ± 1.
A multivector a is normalised if |a|=1 .
For non Euclidean spaces, normalisation and unitisation of multivectors
are distinct concepts that coincide for pure k-blades.
This definition
Modulus
We here define the postive real scalar modulus of a multivector as a "forced Euclidean" magnitude.
We can only define the modulus with respect to a given orthonormal frame. The modulus is defined by
|ak|+ º (ak¿+ak)½ º (ak+ak)<0>2
with |a|+ = ( åk=0N |a<k>|+2 )½
.
The modulus is thus computed by adding the squares of each coordinate
|a|+ = Ö åijk..(aijk..)2
when expressed with respect to the favoured extended frame.
In a Euclidean space, the modulus is equivalent to magnitude and so frame independant. Modulus
acts "across grades"
in the same way as does the magnitude so often coincides with
the traditional "complex modulus"
|x+iy|+º
((x+iy)(x-iy))½=(x2+y2)½ .
Geometrically speaking, if we have a multivector of the form a + bbk for some nonnull
k-blade bk with bk2<0
then |a + bbk|+ = a2 + b2|bk2|
= (a+bbk)(a+bbk)^ where ^ is any conjugation satisfying
bk^=-bk.
No multivector has zero modulus except 0, even in a non-Euclidean space.
Selfscale
If a2 = la for central (ie. universally commuting) l
(typically a scalar or a "complex" scalar-pseudoscalar pair)
we say a is
a l-selfscaling multivector.
We refer to l = |a|s as the selfscale of a and note that if real, it may be negative.
Any central multivector is its own selfscale and in particular any scalar a is a selfscaler of selfscale
a.
If a has selfscale l then either a=l or a is non-invertible.
If a and b are (anti)commuting selfscaling then
|ab|s = (-) |a|s|b|s .
If a<0>¹ 0 then
|a|s = a2<0> a<0>-1
and more generally |a|s
= (eij..l¿(a2)) (eij..l¿(a))-1
for any blade eij..l present in a.
All null (a2=0) multivectors are selfscaling with selfscale 0.
Selfscaling multivectors of selfscale (-)1 (a2=(-)a) are known as (anti)idempotents.
[ Proof : a = (a2)a-1 = (la)a-1 Þ a=l so a¹l
Þ ! $ a-1
.]
We can extend the definition of selfscale to invertible multivectors.
Scalar-Normalisation
If a<0>¹0 we define the
scalar-normalised multivector
a~ º a(a2<0>)-1
so that (a~)<0> = 1.
Maximal-Coordinate-Normalisation
An easy basis-specific way of "normalising" a general multivector a is to rescale it by a positive multiplier
so that its maximal-absolute coordinate a[¥] becomes (close to) ±1. This provides a safe and rapid
means of rescaling a multivector to ensure that it is not so large or small as to lead to numerical or stability problems
without relying on a more computationally expensive measure that may vanish for particular a.
It is natural to denote the absolute value of the maximal absolute coordinate |a[¥]|
by |a|¥ and refer to it as the basis-specific infinity norm .
Trace
We here define the frame-invarient scalar real trace of N-D multivector a as 2Na<0> corresponding to the
conventional matrix trace (sum of lead diagonal elements) of the 2N×2N
matrix representation of a . The complex trace is 2N-1 times the
trace of a complex matrix representation. Multiplication by the dimension of the matrix representation
concerned ensures the multivector trace of 1 equals the matrix trace of 1.
Traces thus depend on the dimension of the geometric space
the result is considered to "reside in", making the trace of a multivector a somewhat artificial construct
based on the more fundamental "scalar part" and "scalar-pseudoscalar part" operators <0>
and <0;N>.
Determinant
The determinant of a multivector is the traditional matrix determinant of a particular
2k×2k matrix representation of interest.
Det(ab) = Det(a) Det(b) follows from the corresponding matrix result.
Det(a)= Det(a1)=a2k so
Det(-1)= Det(1)=1 and so Det(lb)=±l2k
for any unit blade b.
A multivector a is said to be unimodular if Det(a)=1.
A unimodular versor has aa§=a§a=1 .
Such square matrix represetations can have  or C or Q elements when k<N
and we accordingly then have  or C or Q valued determinants.
A scalar valued determinant is always provided by the 2N×2N
real matrix representation of a multivector a and it is this determinant that we will usually denote
denote Det(a).
If ¦(x)º Ax(A^) has A^A scalar so thet ¦ is a grade-preserving linear transform then we define scalar Det(¦) º (¦(i))* so Det(¦)2N = (A^A)N
The complex matrix identity Det(A) = eTrace(ln(A)) has corresponding geometric form Det(a) = (2N-1ln(a))<0;N>↑ given odd N and a minussquare pseudoscalar.
One way to compute the invese of a multivector is to
solve ax=1 as 2N simulataneous linear equations in 2N unknowns, which is possibile iff
the determinant of a is non zero.
An immediate consequence of this, using the mathematical result that the determinant of any matrix having
two identical rows is zero, is that mixed multivectors of the form 1+ei are
noninvertible. Furthermore (from standard matrix results of the determinant of a product being the product
of the determinants) we can deduce that if a is noninvertible, so too are ab and ba
for any multivector b.
If a2=la then either a=l or a is noninvertible, so
Det(a)=0 when selfscale |a|s is defined.
Oppositioning
For every restrictive geometric product ¨ we have a frame-dependant oppositional difference
a¨¦b =
åij..
åkl..
¦(aij..,bkl..)
eij..¨ekl..
where ¦ : Â2 ® Â is usually a symmetric function.
Essentially we evalute the restricted geometric product as normal but instead of multiplying the blade weightings
we use an alternate symmetric function ¦ : Â2®Â .
Though looking somewhat like a product (and programmable by generalising a
multivector -product primative) ¨¦ is not usually bilinear.
A particularly useful oppositional difference is provided by ¨=* ;
¦(a,b) = |a-b| if ab<0 , and 0 else .
This yields a measure of how much "sign changing" occurs in the coordinates
when moving from a to b, useful when searching for minima or maxima
of multivector valued functions and when comparing spot gradients in
adaptive refinement integrational techniques.
Inverses and Integer Powers
We now consider some important multivector-valued functions of multivectors.
Inverse
We define the inverse or reciprocal of a Î ÂN by
a-1a = aa-1 = 1 , if such exists.
We say a multivector is noninvertible (aka. singular) if no inverse exists.
We define the extended inverse of a Î ÂN to be a-1
if such exists and a otherwise.
A nonzero 0-vector a has 0-vector inverse a-1 = 1/a.
Zero has extended inverse zero.
A nonnull 1-vector a has 1-vector inverse a-1 = a/a2 .
A null vector usually has a distinct 1-vector inverse, eg. (e++e-)-1 = 2-½(e+-e-).
For k-versor ak=a1a2...ak ,
ak(ak§) = (ak§)ak =
a12a22...ak2
is a 0-vector so we have
ak-1 = ak§ /
a12a22...ak2
provided
a12a22...ak2 ¹ 0.
But ak§ = (-1)½ k(k-1)ak ,
so we have relatively rapid computation of versor inverses via
ak-1 = (-1)½ k(k-1) (a12a22...ak2)-1 ak
In particular, the inverse of versor
a + b(eiÙej) = ei(aei-1 + bej)
is (aei-1 + bej)ei /e12(aei-1 + bej)2
= (a - b(eiÙej)) / (a2 + b2) for Euclidean contraction.
Inverse is somewhat like a reversing conjugation in that acting on a single (unit) blade it will at most
flip its sign, and (ab)-1 = b-1a-1.
However as (a+b)-1 ¹ a-1 + b-1 in general and a-1 may be undefined
inverse is decidely not a conjugation.
If a^a is easily invertible for a particular conjugation ^ then
a-1 = (a^a)-1 a^ provides a comparatively efficient
inverse computation.
Further, if ^ is reversing or nonreversing then the existance of a-1 implies the existantance of
(a^)-1 = (a-1)^ and hence that of (a^a)-1 = a-1(a^)-1 .
Thus we can determine the invertibility of a by examination of a^a
for any reversing or nonreversing conjgation ^ , and may also be able to find a-1 by consideration
of a^a for semireversing ^.
Similar arguments hold for aa^ with a-1 = a^ (aa^)-1
For N=3 (any signatures), Clifford conjugation ^ = §# is suitable since
a(a§#) = (a(a§#))<0;N> is a
scalar-pseudoscalar pair and so easily invertible when nonsingular. This method is known as the
Lounesto Inverse.
An even multivector a has
a§#a = a§a of grade <0,4,8,12,...> so, since
for N£5 any 4-vector is a 4-blade, we can easily invert nonsingular even multivectors
when N£5.
More generally
a^a
= a<^+>2 - a<^->2 + 2a<^->×a<^+>
and we can remove central grades from the commutator product.
Thus for ^ = #§ we have
a#§a
= a<0,3,4,7,8,..>2 - a<1,2,5,6,9...>2 +
2a<1,2,5,6,9..>×a<3,4,7,8,..>
with the commutator product term vanishing for N£3.
For even a and N=5 we have
a#§a
= a§a
= a<0,4>2 - a<2>2 +
2a<2>×a<4> .
If a and b commute then (a+b)(a-b) = a2 - b2 so that (a+b)-1 = (a-b)(a2 - b2)-1 if such exists. If a and b anticommute we have (a+b)2 = a2 + b2 so that (a+b)-1 = (a+b)(a2 + b2)-1 if such exists.
The problem of inverting a multivector can be recast into the problem of finding the matrix inverse of its matrix representation, but while theis may allow exploitation of existing code libraries, it is a brute force approach. Spotting whether a^a for a general exteneded coordinate representation a is itself invertible typically involves deciding whether tiny higher grade components can be safely neglected as "failed zeroes", so calculating inverses of multivectors is often not as numerically unambiguous as we would like.
Conjugated Inverses
Move generally, for a given conjugation ^ each multivector a may have a
^-inverse a-^ defined by
(a-^)^a=1.
Since a left (geometric) inverse is also a right-inverse we also have
a(a-^)=1.
If ^ is reversing or nonreversing we have
a^a-^ =
a-^a^ = 1 .
a^a-^=1 while if ^ is nonreversing
a-^a^ = 1 .
Conjugated Roots
We define the ^- conjugated root a^½ to solve
(a^½ )^(a^½ ) = 1 . The geomtric square root ½ is the
identity-conjugated root. If i^ = -i, we can multiply a^½ by an arbitary
phase factor (qi)↑ .
Exponentials and Logarithms
Integer Powers
The geometric square of multivector a is
a2 º aa .
We can define the kth power of a multivector for integer k
in the obvious way by defining
a0 = 1 ; ak = a(ak-1) k > 0 .
a-k = (ak)-1 k > 0 provided inverse
(ak)-1 exists.
We say a multivector is squarepure if its square is
a pure scalar. We say it is nilpotent or null if
a2=0.
Pure scalars and 1-vectors are squarepure.
General bivectors are squarepure only for N£3. Pure ÂN bivectors
square to negative scalars for N£3 but for N>3
b22 can have 4-vector components.
If ab=ba=0 then (a+b)k = ak + bk for k>0.
Exponential
We define the exponential of multivector a
as ea º åi=0¥ i!-1 ai .
ea is thus the traditional scalar exponential function when acting on scalars.
The notation ea is frequently somewhat awkward for our purposes, the superscripting is
inconvenient and the letter "e" is extensively used to denote frame vectors and electron charges.
We will
here move freely between it and the alternate notation
a↑
, where symbol ↑ acts leftwards as
ab↑c º a(b↑)c
º a(eb)c
like a conjugation or power operator
. Thus we have
a↑ º ea
º åi=0¥ (i!)-1 ai .
[ Note that the symbol [ ↑ ] may not print correctly from some browsers ]
We denote a-↑ º (-a)↑ = (a↑)-1 and observe that if a^=-a then a-↑ = a^↑ = a↑^ .
Regardless of the magnitude of the coordinates of a, the i!-1 becomes small so rapidly with i that the infinite summation is convergent and in practice, typically only a few dozen terms are necessary to compute a↑ within a given error tolerance. Thus the "brute force" summation approach is always avaliable when computing exponentials, if only as a last resort, and a↑ thus exists and is computable to within an arbitary accuracy. This may be compuationally expensive however, since for example K↑ for large positive scalar K requires i > K for i! to dominate Ki. For large |K| , i!-1Ki can become uncomfortably large while i£K.
It is natural to decompose
a↑ = cosh(a) + sinh(a) where
cosh(a) º ½(a↑ + (-a)↑)
= åi=0¥ (2i)!-1 a2i
and
sinh(a) º ½(a↑ - (-a)↑)
= åi=0¥ (2i+1)!-1 a2i+1
If b commutes with a then it also commutes with (la)↑ for any l that commutes
with a and b; while if b anticommutes with a
but commutes with l we have b(la)↑ = (-la)↑b
= ((la)↑)-1b.
The "exponent hopping rule" (ea)^ = ea^ " a
ie.
(a↑)^ = (a^)↑ " a
for a reversing conjugation ^
can be written as ^↑ = ↑^ .
For any puresquare multivector [ a2 = ±|a|2 ]
we have
| a↑ = ea = | cos(|a|) + a~ sin(|a|) | if a2 < 0 ; |
| cosh(|a|) + a~ sinh(|a|) | if a2 > 0 ; | |
| 1+a | if a2 = 0. |
If a and b commute then so do a↑ and b↑ and (a+b)↑ = a↑ b↑ (with the coefficient of aibj given by (i+j)!-1 i+jCi = i!-1 j!-1 ) but this is not generally true (ie. ea+b ¹ eaeb in general ).
If a and b anticommute we have:
More generally we have a2 = a2 for central a giving (la)↑ = ( 1 + a2½l2 + ... ) + (l + a2l33!-1 + ...)a = cosh(al) + a-1 sinh(al)a where cosh(x) º ½(x↑ + (-x)↑) ; sinh(x) º ½(x↑ - (-x)↑) are the traditional complex hyperbolic functions if i2=-1.
In particular, for unit multivector a , (fa)↑ (ya)↑ = ((f+y)a)↑ = (f+y)↑ a↑ for any central y,f.
We have a geometric form of De Moivre's formula ((a)↑)k = (ak)↑ for integer k [ Usually written (eiq)k = e(iqk) ]
(d/df) (laf)↑
= la(laf)↑ .
If a2=-1 then (d/df) (laf)↑ = l(a(lf+p/2))↑ .
Whenever i2 = -1 we have a multivector version of Euler's equation:
(ip)↑ º eip = -1 .
Also eipa=a<+>eip+
a<->e-ip
.
We have (la-1(b))↑ º
(laba-1)↑ = a(lb)↑a-1 º
a-1((lb)↑) " b ,invertible a, and central l
and the operator identity
(la)-1↑ = 1 + (l2↑-1)a-1
.
In ÂN for odd N, scalar and pseudoscalar additive combinations are central (commute with everything)
and so "factor out" in exponentiations.
Â3 multivector b<0,3> acts as a "complex" (aka. part "imaginary")
scalar if we identify i with e123.
We will write it as b<0,3> to emphasise this complex scalar context.
Similarly
Â3 multivector b<1,2> acts as a "complex" (part "imaginary")
3D 1-vector (b1+b23i)e1
+ (b2-b31i)e2
+ (b3+b12i)e3 .
which we denote by b<1,2> to emphasise this complex 3D 1-vector context.
Since b<0,3> commutes with complex b<1,2>, exponential eb factors as
eb = eb<0,3> eb<1,2>
= eb<0,3>(
cosh(|b<1,2>|)
+ sinh(|b<1,2>|)b<1,2>~)
whenever complex scalar
|b<1,2>|ºÖ(
(a1+ib1)2+
(a2+ib2)2+
(a3+ib3)2) is nonzero.
We also then have the useful biquaternian formula
eb =
½(e(b<0,3>+|b<1,2>|)(1+b<1,2>~)
+ e(b<0,3>-|b<1,2>|)(1-b<1,2>~)) ; and
when b<1,2>2=0 we have
eb = eb<0,3>(1+b<1,2>) .
Baker-Campbell-Hausdorf formulae
When a and b do not commute, evaluating (a+b)↑ is more complicated.
Recalling the k-fold commutator a×kb º
a×(a×(....×(a×b))...)
= 2-kåi=0k
(-1)k kCi
ak-ibai ,
we have
a geometric version of the Baker-Campbell-Hausdorf formula
(a↑)b =
(åk=0¥ 2k(k!)-1 a×kb) a↑
[ The 2k factors arise from the ½ in our defintion of × ]
If a×b commutes with both a and b then
a↑b↑
= (a+b)↑ (a×b)↑
= (a×b)↑ (a+b)↑
giving the BCH exponent commuting rule
b↑a↑ = a↑b↑ (2b×a)↑ .
However, a×b is more likely to anticommute with a and b, as it does whenever
a2 commutes with b and b2 commutes with a.
Exponentiating Products
If a2 commutes with b and b2 commutes with a then
a×b commutes with a~b and so
since ab=
a×b + a~b we have
(ab)↑ = (a×b)↑ (a~b)↑
.
Exponentiating Idempotents
If b2 = lb for central l then
(ab)↑ = 1 + l-1((la)↑-1)b
and so when b2=±b we have
(ab)↑ = 1 ± ((±a)↑-1)b .
Inparticular, setting b=½(1±u) with u2=1
so that b2=b, we have
(a½(1±u))↑ =
1 + (a↑-1)½(1±u)
Exponentiating Annihilators
If ab=ba=0 then (a+b)↑ =
a↑b↑ = a↑ + b↑ - 1 .
In particular, if u2=1 so that (1+u)(1-u)=0
and c,d and u commute with eachother we have
(c½(1+u) + d½(1-u))↑
= c↑½(1+u) + d↑½(1+u)
[ Proof :
Exploiting (c½(1±u))↑ =
1 + (c↑-1)½(1±u) we have
(c½(1+u))↑ + (d½(1-u))↑ - 1
= 1 + (c↑-1)½(1+u)
+ 1 + (d↑-1)½(1-u) - 1
.]
Exterior Exponential
We also have the exterior exponential or outter exponential
eÙa º åi=0¥ aÙi (i !)-1
where aÙi º aÙaÙ....Ùa , there being i
terms in the outter product. For any pure (non-scalar) blade aÙi = 0 for i>1
and for mixed multivectors having zero scalar part, eÙa is a strictly finite summation having at most N terms
. For bivector
a decomposing as a sum of j 2-blades
a =
a1+a2+..+aj
we have
eÙa = (1+a1)(1+a2)...(1+aj)
which is invertible if ai ¹ 1 for i=1,2,..j.
Logarithm
The geometric logarithm of a multivector b is a multivector ln(b) º b↓ satisfying
(b↓)↑ = b , when such exists. It is undefined when such does not exist.
Geometric logarithms are not uniquely defined unless we specify a minimisation
of some kind to provide a principle logarithm, and even then an ambiguity may persist.
For any multivector i with i2=-1 that commutes with b we have alternative logarithms
b↓ ±2kpi for any intger k, each of which will generate a different set of "fractional powers" of b.
Thus we must always think of having a logarithm for b rather than
the logarithm of b.
If we have a logarithm of a multivector then we can easily
compute arbitary powers of it (including its unique inverse and particular square roots) via
aa = (a(a↓))↑ , since ↑ is intrinsically computable
via its convergent summation. We have
ln(ab) º (ab)↓ = a↓ + b↓ for any positive scalar a
but (ab)↓ = a↓ + b↓ holds in general only for commuting a and b .
For negative a we require a unit minussquare i commuting with b with which to define
(-b)↓ = pi + b↓ .
(a+a)↓ = cosh-1(a(a2+a2)-1)a~ if a2>0 .
Since (a + 2kpb)↑ = a↑ " kÎZ provided
b commutes with a and has b2=-1 .
If u2=1 then
(a½(1+u) + b½(1-u))↑ =
a↑½(1+u) + b↑½(1-u)
provides
(a½(1+u) + b½(1-u))↓
= a↓½(1+u) + b↓½(1-u)
= ½((ab)↓ + (ab-1)↓u)
provided i commutes with u and has i2=-1.
Thus u↓
= ip½(1-u)
and
(ip½(1±u))↑
= -/+ u.
[ Proof :
u↓
= (½(1+u)-½(1-u))↓
= 1↓½(1+u) + (-1)↓½(1-u) =
ip½(1-u) . Also
(ip½(1±u))↑
= i(±i½pu)↑
= i(±iu) = -/+ u.
.]
More generally (l + mu)↓ = (½(l+m)(1+u) + ½(l-m)(1-u))↓ = ½((l2-m2)↓ + ((l+m)(l-m)-1)↓ u) .
If a2 = a2 for central a then
(la)↑
= cosh(al) + a-1 sinh(al)a
provides
(±½pa-1a)↑
= a-1 sinh(½p)a
= ((a-1 sinh(½p))↓)↑a
yielding two principle a logarithms
±½pa-1a - (a-1 sinh(½p))↓ .
When a=i this is
-/+½pia + (i sinh(½p))↓ .
Hyperbolic Functions
Scalar hyperbolic functions cosh and sinh arise in geometric algebras through exponentiating plussquare blades in similar manner to
trigonometric functions sin and cos arising from the exponentiation of minussquare blades.
coshf º ½(f↑ + (-f)↑) Î [1,¥)
has mimimal value 1 at f=0 and is approximated by ½|f|↑ for large |f|
and by 1 + ½f2 + (4!)-1 f4 + O(f6) for small |f|
cosh-1(m) = ln(m ± (m2-1)½)
providing positve and negative "inverses" of a 0-symmetric function for m³1.
sinhf º ½(f↑ - (-f)↑) Î (-¥,¥) is approximated by Sign(f)½|f|↑ for large |f|
and by f + (1/6)f3 + O(f5) for small |f| .
sinh-1(m) = ln(m + (m2+1)½) for -¥<m<¥ .
cosh'(f) = sinhf ; sinh'(f) = coshf ;
sinh(q±f) = sinhq coshf ± coshq sinhf ;
cosh(q±f) = coshq coshf ± sinhq sinhf .
We can generalise to multivector hyperbolic functions
cosh(a) º ½(a↑ + (-a)↑)
and sinh(a) º ½(a↑ - (-a)↑)
which are both well definied and intrinsically computable via the summation definition of ↑.
Central Powers
If u2=1 and i commutes with u and has i2=-1 then
we have
k2 distinct kth roots of u given by
(2pik-1i)↑½(1+u) +
(pjk-1i)↑½(1-u) for i,j Î {1,..,k}
and more generally we have k2 kth roots of
a½(1+u) + b½(1-u) provided by
ak-1½(1+u) + bk-1½(1-u) for any "complex" a, b
formed from 1 and i.
Thus, for example, we have four "square roots" for e1 in Â3, specifically
±½(1+e1) ±e23½(1-e1) ,
and many more when N is large.
In defining a "principle" kth root it is natural to favour i
for i when the psuedoscalar is central and of negative signature, and to favour i=j=1 so
if i commutes with u we define four "principle square roots" of u
u½
= ±(½(1+u) ± i½(1-u))
= ±½(1±i) + (1-/+i)u)
, with inverses
±½(½(1+u) -/+ i½(1-u)).
If a has a well defined principle logarithm a↓ we can generalise fractional powers of a to
aa = (a(a↓))↑ º ea ln(a)
for any central a, and indeed ac = (c(a↓))↑ for any c commuting with
a.
Complex Numbers
Complex numbers z = x + yi = r(qi)↑
with (x + yi)↑ = x↑(yi)↑ and
(r(qi)↑)↓ = r↓ + qi are well understood.
All are loggable but zero, however if we take the principle logaritm with qÎ(-p,p]
there is a discontinuity in (z)↓ when crossing y=0 for negative x.
For qÎ(-p,½p) one can use
z_logncj = r↓ + (q+2p)i but this merely moves the discontinuity to when crossing x=0 for negative y.
It is consequently impossible to use the multivalued power zq=(q(z)↓)↑ to define
zq continuous in z over all zÎC.
1↓ = 0 and i↓ = ½pi provide
i½ = (¼pi)↑= 2-½(1+i)
and ii = (i(i↓))↑ = (-½p)↑ .
Hyperbolic Numbers
Before discussing computation of multivector logarithms, we must generalise "complex numbers" x+yi to allow for i2=1 and i2=0.
If i2=1 we denote i by h and have hyperbolic numbers ,isomorphic to the Â1,1 + algebra
generated by 1 and e-Ùe+. These are less well studied that complex numbers and rarely implimented in standard libraries.
The hyperbolic number
x+yh has inverse (x2-y2)-1(x-yh) provided x ¹ ±y
but unlike the complex imaginary i, which has i↓ = ½pi, the hyperbolic imaginary h has no
pure hyperbolic logarithm. We require an i commuting with h with i2=-1 in order to form
h↓ = ip½(1-h) ;
h½ = ½(1+h) + i½½(1-h)
; and
h-½ = ½(½(1+h) - i½(1-h)) .
If pseudoscalar i has i2=-1 and commutes with h then i=i is possible, but we normally
favour an i that (anti)commutes with blades spanned by h in like manner to h,
so the dual i=hi-1 is preferable.
Similarly -1 has no hyperbolic log.
More generally, any hyperbolic number z in the (1)-quadrant { (x,y) : x³0 ; |x| > |y| } has a hyperbolic
logarithm z↓ , but -z (in the (-1)-quadrant) and ±hz
(in the (h)- and (-h)-quadrants) do not.
We must rely on
(-z)↓ = pi + z↓ ;
(hz)↓ = ip½(1-h) + z↓ ; and
(-hz)↓ = ip½(2-h) + z↓
to provide logarithms over the entire "hyperbolic plane" except along the
|x|=|y| "diagonals".
Again i=hi-1 or i=hi are the natural choices
if i2=-1. If N is even and h is odd a suitable i may not exist.
Nullic Numbers
We form nullic numbers with a null imaginary n with n2=0.
Exponentials and logs are trivial since (x + yn)↑ = x↑(1+yn) provides
(x + yn)↓ = x↓ + x-1yn for x>0
while (x+yn)-1 = x-2(x-yn) for x¹0.
(x+yn)½ = x½(1 + ½x-1yn) for x>0 and
i|x|½(1 + ½x-1yn) for x<0 .
Since (x+yn)k = xk+kxk-1yn the exponentials and logs are easy
with (x+yn)↑ = x↑(1+yn) ; and
(x+yn)↓ = x↓ + x-1yn provided x¹0.
Bi-imaginary numbers
The introduction of an i commuting with h moves us into the imaginary hyperbolic algebra generated by
{1,h,i} @ {1,e+Ùe-,e1Ùe+Ùe-} within Â1,2 @ Â0,1%
and enables logs to be taken of all hyperbolic numbers apart from
the nonivertibles on the x=±y quadrant boundaries.
If i2=-1 we can decompose
a = a + bb where a is a hyperbolic number and b is a complex hyperbolic number
involving commuting elements 1, h, i, and hi .
We can take i to be i,
hi, or hi-1 according to choice. If we take
i=i then (-1)½ has mixed grade <0;k;N>. If we take i=
hi-1 then
(-1)½
has grade <0;k,N-k>.
Since 1, h, and i commute we have (a+b)↑ = a↑b↑ and
(l+xh+yi+zhi)↑ =
l↑ (xh)↑ (yi)↑ (zhi)↑ provides a factored exponential
but logarithm (l+xh+yi+zhi)↓
= (l+xh+yi+zhi)↓
= (a+bh)↓
= (a(1+ba-1h))↓
= a↓ + (1+ba-1h)↓
is more problematic.
Setting a =a1+a2i ; b = a3+a4i we have
a = a1+a2h+a3i + a4hi = a + bh
= g½(1+h) + d½(1-h)
where g=a+b=a1+a3+(a2+a4)i ; d = a-b = a1-a3+(a2-a4)i
provides the most natural decomposition of a bi-imaginary number into two complex numbers
weightings for annihilating idempotents ½(1±h). We then have
a↓ = g↓½(1+h) + d↓½(1-h)
al = gl½(1+h) + dl½(1-h)
and ab = ag½(1+h) + bd½(1-h) .
We can also form bi-imaginaries with i and n. These lack an idempotised formulation and are best represented as
a + bn for complex a,b Î Algebra(1,i)
Computing Exponentials and Logarithms
We have seen that if u2=1 so that 1±u annihilate eachother, then
provided c and d commute with u and eachother we have
(c½(1+u) + d½(1-u))↑
= c↑½(1+u) + b↑½(1-u) .
More generally, if we can express a multivector as a "weighted" sum of K idempotents that annihilate eachother
then, provided all the weights commute with the idempotents and eachother, we can reduce an exponential or logarithm
computation to the seperate exponentials or logs of the k weightings. We will here refer to such a decomposition into
real-weighted mutually annihilating idempotents as an k-idempotised formulation
and a complex-weighted sum of k mutually annihilating idempotents as a k-idempotised complex formulation.
We can thus compute exponentions and logs of such forms without resorting to multivector summations. We have "relegated" all the "summationness"
into the exponentiations and logs of complex or hyperbolic or nullic or bi-imaginary weightings. These exponents and logs may well
themselves involve summations to evaluate (or approximate), but are of a simpler kind and, in the complex case,
are well studied and well implimented in many math libraries.
First observe that we can decompose a into <0;N> and remaining grades as a = a + b where a = a+a and b has zero <0;N> component. If b2 is central then, setting b = (b2)½ (which may require an i) , we have 2-idempotised formulation a = a + bb~ = (a+b)½(1+b~) + (a-b)½(1-b~) with b~2 = 1.
More generally, if we can decompose a as a = a1 + a2A +
b where b2 = (b1+b2A)2 for real
a1,a2, b1, b2 and some unit or null multivector A
that commutes with a then we have
a = a + bb~ where b~ = (b2)-½b has
b~2=1 ; a is in algebra { 1, A } ; b is in algebra { 1,A,i} .
This fails when (b2)-½ does not exist, which includes when b2=0,
but for a nonzero invertible b2 we have
a-1 = (a2-b2)-1 (a - bb~)
provided a2 ¹ b2 ;
and
a↑ = (a+b)↑ ½(1+b~) + (a-b)↑ ½(1-b~)
We will refer to a blade A "factored out" in this manner as a decentralisation blade for a.
Blade A is "central" in that it commutes with all the blades of interest (the blades comprising a).
If A2=-1 we have no need of an additional i and have a "decomplexification" in which the geometric essence of a is distilled into two "complex" [1,A] numbers (ie. an unnormalised qubit) and a unit or null multivector b. We can think of a multivector of this form as being a unit or null multivector b that has "aquired some A-clutter". It has not only been rescaled and added to a scalar multiple of bi; a scalar and a multiple of A have also been added.
For non-null A we can replace minussquared A with -Ai if necessary
to esnure A2=1 whereupon the
4-idempotised complex form
a = (a+b)½(1+b~) + (a-b)½(1-b~)
is available where the a±b factors are themeslevs expressed
as complex-weighted combinations of ½(1±A).
We can regard this as the natural form for
multivectors in the commutative algebra [ 1,A,b,i ]
= [ 1,½(1±A)½(1±b),i ] .
If A2=1 we thus have the 4-idempotent complex decomposition
a = (x1½(1+A)+x2½(1-A))½(1+b) + (x3½(1+A)+x4½(1-A))½(1-b)
representing a with four complex (ie. [1,i]) numbers x1,x2,x3,x4 ;
unit blades A and i; and unit multivector b. We can then compute
logs, exponentials and powers of a simply by computing the corresponding logs, exponentials, or powers of the four x1,x2,x3 and x4 complex weights.
These will exist provided only that all four complex weights are nonzero.
For null A we have the 1-idempotised nullic bi-imaginary form (a + b)½(1+b~) + (a - b)½b~ .
We can form a logarithm for any nonzero complex number; and given a negative signature i commuting with h (or n) we can form a logarithm for any hyperbolic x+yh provided |x|¹y (or nonzero x+yn).
We must also address the case a = a + bb where b2=0 .
It can then be easily verified that
a↑ = a↑(1+bb) and when a-1 exists we have
a↓ = a↓ + a-1bb so that
ac = ac(1+ca-1bb)
for any c commuting with a. In particular
a-1 = a-2(a - bb)
.
[ Proof :
al = (la↓)↑
= (l(a↓ + a-1b))↑
= al(la-1b)↑
= al(1+la-1b) and l=1 gives result
.]
This approach fails when a-1 does not exist, such as when a2=0.
If A is null we decompose as a = a + bA and exploit (a + bA)↓ = a↓ + a-1bA for a¹0.
This approach generalises to supposing a =
a0 + a1a1 + a2a2 + ... +akak
where a1,a2,..ak are k commuting (rather than the stricter mutually annihilating) multivectors with aj2=1
and the aj are either real or complex with an i commuting with the aj.
a =
(a0 + ak + a1a1 + .. +ak-1ak-1)
½(1+ak)
+ (a0 - ak + a1a1 + .. +ak-1ak-1) )
½(1-ak)
=
(a0 + ak + ak-1 + a1a1 + .. +ak-2ak-2)½(1+ak-1)
(a0 + ak - ak-1 + a1a1 + .. +ak-2ak-2)½(1-ak-1))
½(1+ak)
+
(a0 - ak + ak-1 + a1a1 + .. +ak-2ak-2)½(1+ak-1)
(a0 - ak - ak-1 + a1a1 + .. +ak-2ak-2)½(1-ak-1))
½(1-ak)
=
åi=02k-1 bibi
where the bi are the 2k mutually annihilating idempotents
2-k(1±a1)(1±a2)...(1±ak)
and the 2k complex bi = a0 ± a1 ± ...
± ak with the ± associated with aj and aj being
determined by the jth binary bit of the ennumerator i.
We then have
a↓ = åi=02k-1 bi↓bi
and
a↑ = åi=02k-1 bi↑bi
and have reduced the geometric logarithm to 2k seperate complex logarithms.
The condition of logability and invertibility is that all 2k complex weights are nonzero .
More generally still, we assume a given multivector exists in the algebra generated by k+l+1 commuting blades one of which (i) has negative unit square, k has positive unit square, with the remaining l null. We can represent such a multivector with 2k nullic (l+1)-imaginary numbers, each of which comprises 2l complex numbers, for the 2k idempotents ½(1±b1)½(1±b2)... ½(1±bk) where the bi are the k plussquare blades. This is representable with k+l+1 blades (including i) and 2k+1+1 real values divided into 2k seperately exponentiated and logged nullic (l+1)-imginaries of the form q = a + åi=1l bini åi.j=1l bi.jninj + .... for commuting null ni .
Example: (a1a2)↓
Suppose, for example, that we require product logarithm (a1a2)↓ where a1 and a2 are noncommuting k-blades.
The delta product a1Da2 is a blade of
even grade d £ 2k that commutes with a1a2. It is thus natural to set A = (a1Da2)~
and seperate a1a2 into a "complex" <0;d> component and a <2;4;..;d-2> component and see whether the latter has a
<0;d> grade square. If it does, then (a1Da2)~ provides a decentralisation blade
for a1a2.
For a more general a not the product of two known blades, it is sometimes worth seperating out the maximal grade and checking (by squaring it) whether it is a pure
blade, and then checking for commutation with a.
This is discussed more fully in Transforming k-blades.
Example : (l(w+e¥d))↓
As a second example, consider the spinor (l(w+e¥d))↑ for 2-blade w with
w2=-1 and nonunit 1-vector d both in UN and orthogonal null GHC extendor e¥ as defined in a later chapter.
For ^w(d) ¹ 0, the obvious decentraliser is null 4-blade e¥(dÙb)
and if ^w(d)2>0 we can use e¥0(dÙw) as an i.
Thus
(e12 + de¥3 + fe¥1)
= e¥0e123(1 - de¥e123)(e¥0e3 - fe¥e23)
= i(1-dA)B
= (i+de¥)B
= i(1-dA) ½(1+B) - i(1-dA) ½(1-B)
where i=e¥0e123
; A = e¥e123 (or e¥) ; and
B = e¥03 - fe¥e23
= e¥Ù(e0-fe2)Ùe3
all commmute and have squares -1,0, and +1 respectively. More generally, these are
A = e¥Ù(dÙw)~ (or it's (N-2)-blade dual if prefered);
B = w* + (e¥¯w(d))* for duality in i=e¥0e123.
We deduce
(l(e12 + de¥3 + fe¥1))↑
= cos(l) + sin(l)lde¥e123
+ cos(l)lde¥3
+ sin(l)(e12 + fe¥1)
(l(e12 + de¥3 + fe¥1))↓
= l↓ - de¥e123 + ½p(e12 - fe¥1)
expressible as 1-idempotised forms with nullic bi-imaginary
Algebra{e¥, e¥0e123} wieghts
(±li)↑(1±lde¥)
and
½l↓ ± ½pi-de¥e123
respectively for idempotents ½(1±(e¥03-fe¥23)) where i=e¥0e123.
[ Proof :
(l(e12+de¥3+fe¥1))↑
= (li(1-dA))↑ ½(1+b) +(-li(1-dA))↑ ½(1-b)
= (li)↑(1-ldiA))½(1+b) +
((-li)↑(1+ldiA))½(1-b)
= cos(l) + sin(l)ldA
- cos(l)ldiAB
+ sin(l)iB
= cos(l) + sin(l)lde¥e123
- cos(l)ldie¥12
+ sin(l)(e12 + fe¥1)
(e12+de¥3+fe¥1)↓
= (i(1-dA))↓½(1+B) +(-i(1-dA))↓½(1-B)
= (i↓-i-1idA)½(1+B)
+((-i)↓-i-1idA)½(1-B)
= (½pi-dA)½(1+B)
+(-½pi-dA)½(1-B)
= -dA + ½piB
= -de¥e123
+ ½pe¥0e123e¥0e3
+ ½pe¥0e123e¥e23
exploiting AB = e¥12 ; iAB = -e¥3
; iA = e¥0e123e¥e123 = -e¥
; iB
= e¥0e123(e¥03 - fe¥e23)
= e12 + fe¥1
.]
To allow for timelike ^w(d) we move to Â4,1% and set i=e¥0e12345. A remains e¥Ù(dÙw)~ but B becomes 5-vector B = e¥0e345 - fe¥e2345 = w* + (e¥¯w(d))* (dualing in e¥0e12345) although this has i§=-i.
To recover the spinor form (l(w+e¥d))↑ from an extended basis coordinate form a
we can exploit
a<0> = cos(l)
e¥¿(e¥a) = cos(l) + ^e¥0(a<2>) = cos(l) + sin(l)w
a<4> = sin(l)le¥ÙdÙw
Þ (e¥w)¿(a<4>) = sin(l)l^w(d)
e¥¿a = cos(l)l^w(d) + sin(l)¯w(d)
where e¥=-e0.
Example : (l(w+e¥d + ge¥0))↓
e12+e¥(de3+fe1) + ge¥0
= (g+Ai)B
where unit A =
e3 + dg-1e¥ (so Ai=e¥0e12+dg-1e¥e123) and
B = e¥Ùb
= e¥Ù(e0+b)
commute, providing idempotised form
(g+i)½(1+A)½(1+B)
+ (g-i)½(1-A)½(1+B)
- (g+i)½(1+A)½(1-B)
- (g-i)½(1-A)½(1-B)
; so long as we set
b
= f(1+g2)-1(ge1-e2) + dg-1e3
= f(ge1-e2)~ + dg-1e3 .
Hence (l(e12+e¥(de3+fe1) + ge¥0)↓
= l↓ + (1+g2)↓
+ (½p + tan-1(g-1)A - ½pB)i
[ Expression not numerically confirmed ]
[ Proof : l↓ + (g+iA)↓ + B↓
= l↓ + (1+g2)↓ + tan-1(g-1)iA + i½p(1-B)
.]
(l(e12+fe1+de3+ge¥0))↑ = cosh(lg) cos(l) + sinh(lg) sin(l)Ai + sinh(lg) cos(l)B + ((lg)↑ sin(l) + (-lg)↑ cos(l))ABi
With AB = e¥Ù(e0+b)Ùe3 ; ABi = e¥Ùb' + e12 where b' = f(e1 + ge2)~ = ¯w(b)w .
For e12+e¥(de4+fe1) + ge¥0 and i = e¥0e12345 we have 3-blade A = e345 + dg-1e¥e35 (so Ai= e¥0e12 + dg-1e¥e124) and 2-blade B = e¥Ùb where b=f(ge1 - e2)~ + dg-1e4. so that AB = e¥ÙbÙe345 and ABi remains the same.
For the general l(w+e¥d+ge¥0) we have
Ai = e¥0w + g-1e¥(wÙd)
= (e¥0 + g-1e¥^w(d))w
;
B = e¥Ù(e0+b) where
b = (1+g2)-1(g+w)¯w(d) + g-1^w(d) ;
ABi = (1 + e¥¯w(b))w .
Projections and Perpendiculars
Projection
We follow Dorst IPGA in defining the projection of multivector a into nonnull k-blade b by
¯b a º
¯b(a) º (a¿b)b-1
= (a¿b)¿b-1
.
The symbol ¯ used in this context should not be confused with ↓ used for logrithm.
[ Hestenes & Sobczyk favour
¯..b(a) º (a.b).b-1
but this
requires specific exemptions when acting on scalars and same-grade blades
]
¯b(a) = a
provides ¯1(a) = 1*a as an alternate left operator notation
for the scalar component a<0> .
¯ak(ak) = (ak2)ak-1 = ak .
¯b
rejects blades "containing" b
so that, for example, ¯b(i) = b<N> and
¯ba = a<0> .
¯bc(a)=¯c(a) for nonzero b .
Projection into a nonnull pseudoscalar has no effect ie. ¯i = 1 .
We will adopt the notation a Î b as a shorthand for ¯b(a) = a
(ie. a "lies within" b) but will use it only when a<0>=0 .
¯b is grade preserving and an "outtermorphism" in that
¯b(cÙd) = ¯b(c) Ù ¯b(d)
for pureblades c and d
[ Proof : For c,d,b of pure grades r, s, and t respectively with
r+s£t
¯b(cÙd)b =
(cÙd)¿b = c.(d.b)
= c¿(¯b(d)b)
= c¿(¯b(d)¿b)
= (cÙ¯b(d))¿b
= (-1)rs(¯b(d)Ùc)¿b
= (-1)rs(¯b(d)Ù¯b(c))¿b
= (¯b(c)Ù¯b(d))¿b
.]
¯bÙc(a) = ¯b(a) + ¯c(a)
for pureblades b and c with bÙc¹0.
¯b1Ù...br(a1Ù...ak) = ¯b1Ù..br(a1)
Ù¯b1Ù..br(a2)...Ù¯b1Ù..br(ak)
= (¯b1(a1)+...¯br(a1))Ù
(¯b1(a2)+...¯br(a2))Ù
(¯b1(ak)+...¯br(ak)) .
¯b(¯b(c)d) = ¯b(c) ¯b(d) which we
will call the projected product rule. [ HS 1-2.13e ]
[ Proof : Trivial for scalar c. For 1-vector c=¯b(c) so that cÙb=0
we have
¯b(cd) =
¯b(c¿d) + ¯b(cÙd)
= ((c¿d)¿b)b-1 + ¯b(c)Ù¯b(d)
= (cÙ(d¿b))b-1 + cÙ¯b(d)
= (cÙ(¯b(d)b))b-1 + cÙ¯b(d)
= (cÙ(¯b(d)¿b)b-1 + cÙ¯b(d)
= ((c¿¯b(d))¿b)b-1 + cÙ¯b(d)
= ((c¿¯b(d))b)b-1 + cÙ¯b(d)
= c¿¯b(d) + cÙ¯b(d)
= c¯b(d) as required. Result follows for general c by induction on grade
.]
¯b(¯b(c).d) = ¯b(c).¯b(d) which we will call the projected dot product rule.
¯b(¯b(c)×d2) = ¯b(c)ׯb(d2) which we
will call the projected bivector commutation rule.
[ Proof : Let c=¯b(c) .
¯b(c×d2)
= ¯b(cd2 - d2¿c - cÙd2)
= c¯b(d2) - ¯b(d2)¿c - cÙ¯b(d2)
= cׯb(d2)
.]
Rejection
The rejection or perpendicular of a into b is defined by means of the projection as
^b(a) º a - ¯b(a)
which we can write as ^b = 1 - ¯b .
We then have the decomposition
a = ^b(a) + ¯b(a)   where
^b(a).b = 0   and
¯b(a)Ùb = 0.
For blades a,b and nonnull i we have ^b(a) = ¯(b*)(a) .
^b(c).b Þ ^b(c).d=0 for any d within b, so we have ^b(c).¯b(d) = 0 " c,d which provides the symmetry ¯b(c).d = c.¯b(d) = ¯b(c).¯b(d) .
For 1-vector a we have ^b(a) = (aÙb)b-1 and ^b(a) = ¯b*(a) but this is not true general genal a.
In Âp,q we have a+
= ¯e1..p(a) - ^e1..p(a)
= a - 2^e1..p(a) for 1-vector (and scalar) a so we can regard
Modulatory conjugation as 1-2^e1..p acting on scalars and 1-vectors, extended as a reversing conjugation.
We have
^b(a)b
= aÙb and
b^b(a) = bÙa and so
^b(a) = (aÙb)b-1
= b-1(bÙa)
for invertible b
.
[ Proof :
^b(a)b
= ^b(a).b + ^(a,b)Ùb
= ^b(a)Ùb
= ^b(a)Ùb + ¯b(a)Ùb
= aÙb and similarly for b^b(a) .
.]
Note that a2×(a2×b2) = - ^a2(b2) for bivectors a2,b2.
If k is odd then ¯bk(a) commutes with bk, but ^bk(a) may contain both commuting and anticommuting components. If k is even then ¯bk(a)<+> commutes with bk while ¯bk(a)<-> anticommutes, while ^bk(a) is variable.
¯b and ^b are idempotent (selfsquare) operators in that
¯b(¯b(a)) = ¯b(a) " a,b
which we can express as ¯b2 = ¯b ; ^b2 = ^b .
Further ¯b^b = ^b¯b = 0 .
Projection via anticommution
For any unit multivector b with b2=1 , the operator
(½(1+b))=(a) º ½(1+b)a½(1+b)
annihilates all blades which anticommute with b, while sending those which commute with b
to ½(1+b)a .
When k=N-1, ^bk(aj) (anti)commutes oppositely to ¯bk(aj)
with bk
for odd N , and identitically
to ¯bk(aj) for even N.
Thus for odd N ,
¯bN-1(a)<+>
and ^bN-1(a)<-> commute with bN-1
while ¯bN-1(a)<->
and ^bN-1(a)<+> anticommute with bN-1 which we can express as
bN-1¯bN-1(a) = ¯bN-1(a#)bN-1 ;
bN-1^bN-1(a) = -^bN-1(a#)bN-1 .
Hence for odd N we have ¯bN-1(a) = ½(a-bN-1abN-1-1) =
½(1-(bN-1)-1)(a)
If b2 is a positive signature unit 2-blade then b2=(a)=
¯b2(a) when acting on 1-vector a.
If b2=-1 we require (1+b)^
where ^ is a conjugation with b^ = -b .
The subspace of multivectors that commute with b is closed under the geometric product
and so forms a geometric subalgebra. (1+b)= projects general multivectors into this subalgebra.
Scaled Projections
Also of interest is the scaled projection
¯°b(a) º |b| ¯b(a) = |b| (a¿b)b-1
which, unlike ¯b, is dependant on the magnitude of b but remains linear in a.
Normalised Projections
Also of interest is the normalised projection
¯~b(a) º |a| ¯b(a)~ = |a||b||a¿b|-1 (a¿b)b-1
which preserves magnitude and is generally nonlinear in a.
Orthogonal Frames
Let (a1,a2,..,ak) be a nondegenerate nonorthonormal k-frame with all ai nonnull.
Let ai = a1Ù....Ùai .
An orthogonal frame (basis) for ak
can be constructed as
bi = ^(ai, ai-1)
= ai-1-1(ai-1Ùai)
= ai-1-1ai
= ai-1§ai/(a12...ai-12)
which satisfies b1b2..bk
=
b1Ùb2...Ùbk =
ak
|a1|
2|a2|
2...!ak-1|
2 .
Intersections and Unions
When we come to represent geometric entities like k-planes and k-spheres with blades, the multivector meet and join
operations will provide the desired geometric intersections and unions. They are thus of fundamental interest.
Different authors vary in their precise defintions of meet and join but the differences are essentially
matters of scale and sign.
Let ak,bl be nondegenerate (possibly null) proper blades:
Join
We will here define their join akÈbl as follows:
If akÙbl ¹ 0 then ak È bl º (akÙbl)~ [ note the (unit square) normalisation ] ;
otherwise $ a nonzero vector c : akÙc = cÙbl = 0.
Define akÈbl = ak'Èbl where ak = ak'Ùc = ak'c. Define bl' by
bl=cÙbl' .
We are essentially expressing akÈbl as ak'ÙCÙbl'
where ak' has grade k'<k, bl' has grade l'<l, and C is a "common" blade of grade
k+l-(k'+l') . We "factor out" the common C via succesive 1-vector extractions and are left with
akÈbl
= ak'ÙCÙbl'
= ak'Cbl'
= ak'Ùbl
= ak'bl
= akÙbl' = akbl' .
akÈbl is thus a unit pseudoscalar spanning the minimal-grade ("smallest") subspace spanning
both ak and bl ; though there is an arbitarity of sign
when akÙbl = 0 . The join can be informally viewed as a "geometric OR".
This procedural definition suggests an implimentation in which "common" 1-vectors are succesively "sought then factored out"
but such should be regarded as a last resort as we can often do better.
The condition akÙc = cÙbl = 0 is independant of the signatures of a given
orthonormal basis so we can compute the join as though in a Euclidean space provided we
finally normalise with the true signatures.
[ Dorst reverses the order with ak È bl º (blÙak) when nonvanishing,
]
By defining (nonnull) joins to be unit (square to ±1) (unorthodox in the literature)
we resolve the scale ambiguity but retain an ambiguity of sign .
From a programming perspective, it is sensible to sign the join consistantly so that, for example
akÈbl = blÈak even when akÙbk ¹ 0.
This can be done by negating the computed join when necessary to
ensure that the maximal-modulus coordinate
(akÈbk)[¥]
with regard to a given extended-basis is positive.
When akÙbl is nonzero but null, we define ak È bl º akÙbl without normalisation and
suffer an ambiguity of scale.
Meet
The meet of ak and bl spans the largest common subspace of ak and bl and corresponds to the
blade C formed by the outter (or equivalently geometric) product of the c's "factored out" when forming the join.
It can be viewed as a "geometric AND" and is independent of the basis signatures apart from scale.
For nonnull join, we can define the meet by
akÇbl º (ak(akÈbl)-1).bl
= (ak¿(akÈbl)-1)¿bl
.
In the particular case akÈbl = i we have
ak Ç bl = (ak*)¿bl
[ j+k³N allowing ¿ instead of . ]
.
When akÙbl ¹ 0 (ie. when they they have no common subspace) we have
(akÇbl)<0> = ±|akÙbl| .
This is a wonderfully useful result: rather than vanishing, the meet of distinct spaces
is a scalar measure of the minimal seperation between them. The magnitude
of the meet and join becoming particularly relevant . The scalar meet is an example
of the the square of the meet providing a real scalar measure of the "minimal seperation" of two point sets.
[ Proof :
akÇbl = (ak(akÙbl)~-1)¿bl
= ±(ak(blÙak)~-1)¿bl
= ±|blÙak| (ak(blÙak)-1)¿bl
= ±|blÙak| (ak(ak-1Ùbl-1))¿bl
.]
We can alternatively define the meet of ak and bl with regard to a given pseudoscalar i containing
akÈbl as
akÇbk º
(aki-1 ).bl
= ak*.bl
= ak*.(bl*i)
= (ak*Ùbl*).i
whence the DeMorgan rule
(akÇibl)* = (ak*) Ù (bl*) .
If the pseudoscalar i is "broader" than the join then
ak* and bl* contain a common subblade and
akÇibl vanishes.
Çi is thus a bilinear anti-symmetric multivector product "i-dual" to Ù and
some authors consequently favour a V-like in inverted Ù notational product symbol for it
[ typographically unavailable here ] .
A rapid first attempt at computing the meet of two blades ak and bk is provided by
( (ak*) Ù (bl*) )i . If this is nonzero then it is
akÇbl and we can deduce that akÈbl = i .
The meet and join are thus independant of the scales of nonzero ak and bl and (with our particular definitions
of È and Ç) we have
akÈbl
= (bl(akÇbl)-1)Ùak
= ±(ak(blÇak)-1)Ùbl .
(ak(akÈbl)-1)¿(bl(akÇbl)-1) = (bl(akÇbl)-1)¿(ak(akÈbl)-1) = 1.
Similar but differing equations arise for variant definitions.
[ Mann et al favour
akÇbl º (bl(akÈbl)-1)¿ak
]
(ak*)Ç(bl*) = (akDbl)* for duality in any blade i spanning a space containing ak and bl and in particular (a*)Ç(b*) = (aÙb)* for distinct 1-vectors a¹b.
See Multivector Programming
for the author's algorithm for simultaneously computing the meet and join of two blades.
Union
The union of K multivectors a,b,...,f is the unordered set
a È b È ... f = {a,b,...,f} . Thus, for example,
we have vector summation e1 + e2 + (e2+e3) = e1+2e2+e3 ;
3-blade join
e1 È e2 È (e2+e3) = e1Ùe2Ùe3 ; and
nonorthogonal unordered 3-frame union e1 È e2 È (e2+e3) =
{e1,e2,e2+e3}. For finite K, we can in principle specify a union
with at most K2N coordinates as a 1-D array of multivectors. However,
we are more interested in infinite unions such as pointsets of particular curves or surfaces.
Disjoint
The disjoint of ak and bl is
ak'Ùbl' where akÈbl = ak' Ù (akÇbl) Ù bl' .
Bouma et al demonstrate that for nunnull meet, the disjoint is spanned by the
delta product
akDbl º (akbl)<Max>
which acts like a "geometric XOR" . It is useful when computing the meet and join since it is directly evaluable
(although care must be taken deciding whether very small high-grade coordinates are genuine nonzero values or
errors arising from finite precision computational "noise")
and corresponds
(bar sign) to the dual of the meet in the join with akDbl = (akÇbl)(akÈbl) .
To see that the delta product is blade-valued note that akbl
= (ak'C)(Cbl')
= C2(ak'bl') and ak'Ùbl' ¹ 0 so
akDbl = C2 ak'Ùbl'.
If the meet is null, ie. if blades ak and bl have a common null 1-vector factor, then the delta product
vanishes while the disjoint persists. By constructing our meet and join using forced Euclidean signatures
via the forced Euclidean delta product, we can deftly avoid this problem.
We will follow
Fontinje et al and define the meet via the delta product as
akÇbl º
(akDbl)(akÈbl)-1 =
(akDbl)¿(akÈbl)-1 .
This provides perhaps the most efficiently computable definition and is equivalent to
the (ak(akÈbk)-1)¿bl definition.
If we only require the scalar part of the meet, it may be efficiently computed as
(akDbl)*(akÈbl)-1 .
For unit join, the square of the meet is directly evaluable as (akÇbl)2 = ± (akDbl)2
where the sign arises from commuting (akDbl) across the pseudoscalar join and the signature of the join.
Let d = <akDbl>Grd = <ak'>Grd+<bl'>Grd
= k+l - 2<akÇbl>Grd be the grade of the disjoint.
We have
m = <akÇbl>Grd = ½(k+l-d) ; and
j = <akÈbl>Grd = <akDbk>Grd + <akÇbl>Grd
= ½(k+l+d) , so the disjoint provides rapid computation of the
grades of the meet and join.
The scalar meet occurs when d=k+l , ie. when
akDbl = akÙbl ¹ 0.
If k=l, then d is even and akDbl commutes with 1-vectors from the meet and anticommutes with 1-vectors in the disjoint. Hence akDbl (anti)commutes with ak and bl according as ½d is odd or even.
Bouma et al show that for 1-vector operands
¯akÇbl =
½( ¯ak - ¯akDbl + ¯(akDbl)bl-1 )
¯akÈbl =
½( ¯ak + ¯akDbl + ¯(akDbl)bl-1 )
Note that k-blade (akDbl)bl-1 is not in general proportionate to ak.
Consider for example a2=(e1-e3)e2 ; b1=e1 ;
a2Db1 = a2Èb1 = e123 ; a2Çb1 = 1 ;
(a2Db1)b1-1 = e23.
We show below that for 1-vector operands
¯akÇbl = ¯ak ^akDbl
= ¯bl ^akDbl
and
^akÈbl
= ^ak ^akDbl
= ^bl ^akDbl .
Plunge
Dorst et al refer to
(cj-1)Ù(bj-1)Ù(aj-1) where j=aÈbÈc
as the plunge of blades a,b and c (note order reversal).
The plunge of a set of blades is thus the outter product of their duals in their join and provides
the highest-grade blade x perpendicular to all of them (ie. satisfying x¿a=c¿b=...= 0).
A simpler equivalent (up to scale) definition of the plunge is the dual of the meet in the join.
Null Blades
Defining the join to be unit fails when it is null as may arise in a nonEuclidean space, as does defining the meet via the inverted join.
The delta product vanishes if the meet is null which is also problematic.
However there is an elegant solution.
Because the spaces spanned by the meet and join are independant of basis signatures, we can calculate
them in Âp+q+r rather than Âp,q,r by forcing
Euclidean basis signatures when calculating akDbl and constructing akÈbl,
so avoiding difficulties arising from projecting into null blades.
A case can then be made for "normalising" the join
in Âp,q,r as though in Âp+q+r (ie. modulatory normalisation)
even when nonnull.
This is preferable in practice to using the extended inverse which is problematic and discontinuous for nearnull
joins.
In the case when akDbl = akÙbl¹0 , using the forced Euclidean inverse
of the join yields a scalar meet having magnitude the forced Euclidean seperation.
Next : Multivector Programming