This document will not display correctly in Firefox. View in MSIE or Chrome instead.
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.
The purpose of this work 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 mathematical 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 cos(q) and ex. Mathmatical notations used are defined in the glossary.
Multivectors, the "elements" of Geometric Algbera, are a generalisation of traditional vectors that provide a far richer mathematical structure than vectors alone. Many programmers will have encountered particular multivectors before in the form of complex numbers and quaternians and the closest analogy for the generalisation of vectors to multivectors is perhaps complex numbers as a generalisation of real numbers. Regarding real numbers as a special case of the more general "class" or "field" of complex numbers allows logarithms of negative numbers and additional functions such as "complex conjugation". By generalising vectors to a particular subset of multivectors not only can vectors be multiplied and divided by eachother, but we obtain a multitude of useful conjugations and bilinear products and can usefully define logarithmic and trigonometric functions of them. Since particular N+2 dimensional multivectors can represent arbitary N-dimesional lines, circles, planes, and spheres we can, for example, speak of taking the log of a sphere. Geometric objects become algebra elements ameniable to both purely symbolic and computational (numerical) manipulation.
The notion of multiplying two 3D vectors together is familiar to programmers as the so called vector cross product
a×b being a vector of direction perpendicular to vectors a and b with magnitude
|a||b| sin(q) where q is the angle subtended by a and b.
However, this only works in 3D. The fundamental essence of geometric algebra
is the geometric vector product ab = a.b + aÙb where . is the traditional
scalar-valued vector dot product and "2-blade" aÙb is the wedge or outter product
described later. Everything else follows from this.
This section describes what multivectors are mathematically and lists the many operations and products
that can be usefully applied to them
in considerable detail. Of necessity some of this material is mathematically intensive and the reader is
is encouraged to "skim" rather than
absorbing every product, conjugation, normalisation technique and logarithmic 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 once the basics of the symbolic and computational manipulations are covered.
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 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, displace, and morph
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.
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.
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
Although a notable advantage of geometric algebra is coordinate independance, we will initially take an orthonormal coordinate (basis) based approach here since this is likely to be the most practicable in a programming context.
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
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.
[ 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
]
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.
A 2-vector
(aka. bivector) is a sum of scaled 2-blades and need not "reduce" to a single 2-blade for N>3.
2-blades can be considered geometrically as directed areas (ie. a plane and a signed scalar).
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
.]
This makes N=3 a fundamentally simpler case than N³4 to the extent that "geometric intuitions"
founded in 3D can be actively misleading for N³4.
Because of this, the reader is here advised to initally consider
multivectors as algebraic rather than geometric entitiesto be manipulated symbolicsllyand numerically using grammar rules
rather than pertaining to geoemetric constructions.
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, albeit one unlikely to arise in practice,
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
the "extended basis" generated by a given set of N linearly independant N-D basis 1-vectors e1,e2,...,eN and this tells us how to add and subtract multivectors,
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.
The term k-vector is sometimes used in the literature to refer to a k-dimensional 1-vector. However
it is more common to spell the number so that, for example, four-vector typically denotes a 1-vector in a 4D spacetime; three-vector denotes a
1-vector in Â3 and so on, and we will adopt this convention here.
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, 1-blade |
a | 2-blade | |
a | 2-vector | Bivector |
a | 3-blade | |
a | 3-vector | Trivector |
a | (N-1)-vector | Hyperblade, Pseudovector |
a | N-vector | Pseudoscalar |
a | <0;N>-vector | Scalar-pseudoscalar pair. |
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 small.
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 ,
though 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 matrix.
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
We discuss the mathematically ticklish issue of inverse frames here because we are discussing coordinate representations.
If frame vectors are assigned units, e1 having length 5 m say, then e1 must be regarded as having "length"
5-1 m-1 so that e1¿e1 = 1 m0 is dimensionless. Coordinates
xi =ei¿x are then unitless while reciprocal coordinates
xi = ei¿x have units m2.
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 when i=j and 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 (ab¹ba in general), 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.
More generally we have ab= a¿b + aÙb where a is a 1-vector and b
is a general multivector.
abc=a¿((b¿c)+bÙc) + aÙ((b¿c)+bÙc)
= a¿(bÙc) + a(b¿c) +aÙbÙc)
abcd=
= a¿(b¿(cÙd) + b(c¿d) +bÙcÙd))
+ aÙ(b¿(cÙd) + b(c¿d) +bÙcÙd))
= aÙ(b¿(cÙd) + (aÙb)(c¿d) + aÙ(bÙcÙd))
Â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 = (aÙb)e123-1 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.
Overview
Given an orthonormal 1-vector basis e1,e2,..,eN we can regard multivectors as complex weighted sums of the
2N basis blades and such a "coordinates form" makes addition and multiplication particularly straightforward.
As an example computation consider
(1+2e13)(_3e1+4e1234)
= _3e1+4e1234 + 6e13e1 + 8e13e1234
= _3e1+4e1234 + 6e13e1 + 8e13e1234
= _3e1+4e1234 + 6e1e3e1 + 8e1e3e1e2e3e4
= _3e1+4e1234 - 6(e1)2e3 - 8e3(e1)2e2e3e4
= _3e1+4e1234 - 6e3 - 8e3e2e3e4
= _3e1+4e1234 - 6e3 + 8(e3)2e2e4
= _3e1+4e1234 - 6e3 + 8e24 where we have assumed e12=e32=+1.
The "geometric product" can thus be viewed as a purely computational construct
in which we can think of sliding basis 1-vectors across eachother, introducing a sign flip for every basis 1-vector crossed,
until another instance of the same base 1-vector is encountered whereupon the two 1-vectors "condense"
into their ±1 scalar signature. The grade of the product of an orthonormal basis k-blade with an l-blade from the same basis
is thus £k+l.
Though we constructed our extended basis and defined the geometric product using the outter product Ù, we could have assumed only the
traditional scalar vector dot product to define basis orthonormality condition ei.ej =
ei dij where dij=1 i=j and 0 else
; defined the extended basis elemnets by incorporating 1 and unordered pairs, triples, ... ,and N-tuples of
the ei
into the basis written as eij..m; and finally defined the geometric product of two
basis elements
eij..meno..r logically in this "index hoping with sign tracking" manner.
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 blade 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 refered 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 pseudoscalar 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.
Centrality
Any multivector a defines an algebra _Cent(a) known as the centralizer of a
consisting of all multivectors that commute with a.
Bivectors
For N£4 the squares of bivectors commute with even multivectors while
for N=4 the pseudoscalar part of w2 is negated on commutaion with odd multivectors.
Left multiplication by a bivector ( a ® b2a ) casts scalars into b2.
If b2 is a 2-blade It rotates directions within b2 (by b2),
while casting directions perpendicular to b2 into trivectors. For N=3, it casts bivectors in b2 to scalars
while bivectors normal to b2 are rotated by b2 and the pseudoscalar is cast to 1-vector b2*.
Right multiplication by a bivector has similar effects. Indeed a 2-blade commutes with all multivectors
in its dual space , which is not the case for a 1-vector. Consequently, it is occasionally advantageous
to represent 3D 1-vectors by their bivector duals.
Let b be a multivector having only bivector and scalar components.
a¿b = a.b while
b¿a = b.a + b0a
b2×a sends ^(a,b2) to 0 and rotates ¯(a,b2) in b2 by ½p, scaling it by |b2|.
The operation a ® (ba).a for nonnull b is interesting, casting ¯(a,b) to 0 and
^(a,b) into
|^(a,b)|2b
= |aÙb|2(b-2)b
= |aÙb~|2b
.
Matrix representations
Multivectors can be represented with matrices (physicists have done so, largely unknowingly, for decades)
with the geometric product corresponding to the traditonal matrix product) but
matrices are seldom the best way to impliment multivectors computationally and tend to obscure the underlying geometries.
Nonetheless, we will describe some matrix representations here: partly to convince the more skeptical reader that
multivectors do actually "exist", and also to
provide an alternate model for those who have philosophical difficulties
with the concept of adding "different grade" blades to form a composite "entity". Geometric (multivector) algebra becomes
the algebra of a particular "form" of matrix, requiring only standard matrix multiply and inversion techniques. Such
an approach is computationally profligate, but can sometimes provide alternative insights as well as quick-and-dirty
programming applications exploiting existing matrix suites.
Â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+e+1a1x1+e+2a2x2-e+1e+2a12x12)
+ (a1x0+a0x1+e+2a12x2-e+2a2x12)e1
+ (a2x0+a0x2-e+1a12x1+e+1a1x12)e2
+ (a0x12+a1x2-a2x1+a12)e12
which we can express as
æ | a0 | e+1a1 | e+2a2 | -e+1e+2a12 | ö | æ | x0 | ö | |
ç | a1 | a0 | e+2a12 | -a2 | ÷ | ç | x1 | ÷ | |
ç | a2 | -e+1a12 | a0 | e+1a1 | ÷ | ç | x2 | ÷ | |
è | a12 | -a2 | a1 | a0 | ø | è | x12 | ø |
Far more compact matrix representors for multivectors are typically available. The
following are all "maximally compact" 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 algebra 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ºA(A^T)=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 1-vectors.
SU(2) is isomorphic to the group SO(3) of all orthogonal
(AAT=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
We can keep repeating this trick to create C16×16 representations of an orthogonal
1-vector basis for Â8.1@Â6,3@...@Â0,7 ;
C32×32 representations for
Â11@Â9.2@...@Â1,10 ;
C64×64 representations for Â12,1@...@Â0,13
and so on.
Other matrix representations
It can be shown that Â0,4 @ Â4,0 @ Q2×2 ;
Â0,6 @ Â8×8 ;
Â6,0 @ Q4×4 ;
Â7,0 @ Â5,2 @ C8×8 ;
Â0,8 @ Â8,0 @ Â16×16
[
where Q2×2 denotes the space of 2×2 quaternion matrices etc.
]
but we do not provide example basies here. More generally, for even p+q, Âp,q
is isomorphic to either
a real, complex, or quaternion matrix algbera. For odd p+q we sometimes have a sum (ordered pair) of two such
matrix algebras.
Adding Blades
Expressing multivectors in coordinate or matrix forms induces a natural addition of multivectors
and provides a potent computational technique, but regarding
multivector a as being the real weighted sum of the 2N outter product progency
of N elemental "generators" e1,e2,...eN or a particular real matrix risks loosing sight of duality.
All the "information" in a blade b is also "encoded" in its dual bi-1 and we
might equally naturally regard a as bb +gc + ..
where b = b1 + b2i etc. as a sum of "complex"-weighted
blades, particularly for odd N when i is central and (when i2=-1) we have
Âp,q @ Cp-1,q @ Cp,q-1.
Because we can express a in terms of an extended basis we know that any multivector a
can be expressed as a complex-weighted sum of 2N-1 blades but it is the minimal number of blades necessasry
that best "classifies" the multivector. We define the positive integer spread of a multivector a to be the
number of blades
in its "irreducible" real weighted summation. The spreads of 1 and of e13 + e23 = (e1+e2)Ùe3 are 1, for example.
However the spread does not fully categorise the "complexity" of a because we don;t know how many blades
appear with their duals.
We will refer to the
Expression of a multivector a suach as bb +gc of reduced spread 2
in coordinate form "smears" b and c together. The spread and reduced spreads are not apparent.
Though the addition of multivectors is well defined and frame-independant, it is in many
cases of somewhat dubious merit, particularly when adding high glade blades. Though the coordinate approach
facilitates and encourages multivector additions and we will do so freely throughout this work,
the strict mathmatical purist is nonetheless correct to maintain an element of unease.
Informally, multivectors are made for multiplying, not adding.
Multivector Products
Restricted products
Given the geometric product we can define a large variety of partial-geometric or
restricted products
by evaluating ab and then throwing away (zeroing the "coordinate" of) one or more particular
blades. We might zero all the odd blades,
for example, but more useful restricted products arise when the blades we zero are determined by the blades we multiply. The outter product is an example,
with akÙbl = (akbl)<k+l> . Though all these products can in principle be implimented using a geometric product primative,
this is frequently grossly computationally inefficient and we will later see that one should generalise
our encoded multivector product to "streamline" the evaluation of the more useful restricted products.
There are two "outer" products and a plethora of potential "inner" products,
most of which have something to commend them. All are restrictions of the geometric
product in that their result for two extended basis blades is either the same as that of the geometric product or zero.
From a programmer's perspective, the contractive
inner product ¿ (defined below) is the most fundamental inner product. The reader should accordingly familiarise himself
with ¿ , and also the Hestenes (.) product since it is ubiquitous in much of the literature, often required
in this work, and (unlike ¿) is "dual" to the outter product . The other inner produts (·, ë, ¿+) are not used here and seldom
seen elsewhere. They may have their place in a particular application, however, and are defined here for completeness.
The outer product
Given the geometric product, we can fully define the outer or exterior product
(aka. wedge product)
by defining
akÙbl º
(akbl)<k+l>
where ak,bl are blades of any grade;
and thence extending over multivectors by insisting on associativity and multilinearity.
From this definition it follows that:
aÙb = bÙa = ab ;
akÙbl = (-1)klblÙak ;
aÙb = ½(ab - ba) º a×b ;
aÙbk = ½(abk + (-1)kbka)
= ½(abk + bk#a)
;
bkÙa = (-1)kaÙbk
a1Ùa2Ù...ak = k!-1 åij..meij..m
ai
aj...
am
summing over all k! permutations of {1,2,..k} .
(aÙb)2 = (a¿b)2 - (a2)(b2)
= -a2b2 sin(q) where q is angle subtended by a and b
[ Proof : (aÙb)2 = -(aÙb)(bÙa)
= -(ab-a.b)(ba-b.a)
= -abba+(a.b)(ab+ba)-(a.b)2
= -a2b2 + 2(a.b)2 - (a.b)2 .]
(a1Ùa2Ù...ak)2
= (-1)½k(k-1) (k! Volume(k-simplex of points 0,a1,a2,...ak))2
= (-1)½k(k-1) (Volume(parallelepiped with edge vectors a1,a2,...ak))2
akÙak=0 is true for single proper blade ak but not for general k-vectors when k>1.
Note that 0-blades (scalars) have aÙa=a2 .
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 j and k-vectors 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 trhoughout this work.
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 equations.
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
Â3 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 bilinear function of two multivectors. 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 the "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 coordinate 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 magnitudes 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.
Rescaled Product
The recaled product is defined by a§b º (a_rsccb_rscc)_rscc where
x_rscc is an arbitary, potentially frame dependant, computationally convenient rescaling normalisation of x
such as division by the maximal absolute coordinate, or the sum of absolute coordinates, of x.in a particvular frame..
a§b is equivalent to a¨b apart from scale.
The recalsed product is particularly useful when evaluating sandwich rotor products such as
(½qa)↑ x (-½qa)↑ for large q when intermediary coordinates can aquire collosal magnitudes
and rounding errors become significant.
The evaluation of (½qa)↑ § x § (-½qa)↑.is usually far better behaved ;
and the correct scale can easily be recovered for non null x from
,
((½qa)↑ x (-½qa)↑)2
= x2
whenver x2 commutes with a .
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 across + for same grade blades.
(e1+e2)Çe1 = 0 while
(e1+e2)Çe1 = e1 .
Precedence Conventions
In much of the GA 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 an automorphic conjugation (aka. an automorphism or nonreversing)
if (ab)^ = (a^)(b^) .
We say a conjugation is semireversing if it is neither reversing nor automorphic.
A reversing or automorphic 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 automorphic, 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 mutually orthogonal then
a1a2..ak =
a1Ùa2Ù..ak and so, with regard to vectors known to be orthogonal, versors are equivalent to blades.
Any k-blade a1Ùa2Ù...Ùak can be expressed as a k-versor a1'a2'...ak'
where a1'=a1 , a2' = ^a1'(a2) ,...
ai'= ^a1Ùa2Ù...Ùai(ai) ,...
is but one suitable choice of 1-vector factors.
[ ^ denotes the rejection operator defined later. ]
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§ =
(aa§)<0> º
±|a|§2 ¹ 0
and is a unit rotor if |a|§=1 .
If a rotor is also a 2k-versor we call it a k-rotor.
Any k-versor of nonnull 1-vectors is a rotor but not all rotors are versors,
eg. a+be123 is a rotor (with |a+be123|2 = a2-b2)
that has no versor form.
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 as for all conjugations.
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 automorphic 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 automorphic 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 automorphic 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 k-blades the same way,
a§ ¹ ± a for general 1-vector a.
The mitian conjugation 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 automorphic conjugations may be constructed.
Hermitian Conjugation
Like mitian conjugation, the reversing Hermitian conjugation (aka. conjugation or modulatoruy conjugation
is frame-dependant.
b º b§[-]
where [-] denotes the frame-dependant negation of the negative signatured basis 1-vectors corresponds for odd N
when i2=-1 to matrix Hermitian conjugation (B º BT^) of the matrix representation.
For odd N, =§#§ with the # serving to negate the effects of the § on the basis 1-vectors.
For even N we have _hm=§§.
In Âp,q we can define =§#§ for odd q and
§§ = # for even q so that it always negates the negative signatured basis 1-vectors. In a Euclidean space, _mdl = § is frame-independant reversion.
Our motivation for _htm is that
akak = 1 for any unit k-blade (ak2=± 1) whose 1-vector components
satisfy a = ± a; and (akak)<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
ak§§#ak
= 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 (aa)<0>
= åk=0N akak
= åk=0N |ak§ak|
provides a frame-dependant positive-definite real-valued measure known as the squared modulus of the multivector.
provides the
inverse frame defined below with ei = ei = ei-1 for unit ei.
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, hrm = § so Euclidean Hermitian cojugation is reverse.
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.
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
particular frame of interest.
Given a central (all-commuting) i with i2=-1 and i=-i,
any unitary (a^T=a-1 ; a=a-1) multivector can be expressed as (iH)↑ º
eiH where H is Hermitian (H^T=H ; h=h).
e-negating Conjugation
We define frame-dependant e4-negating conjugation to be the automorphic
( ((ab)=(a)(b) )
conjuation negating only basis blades containing basis 1-vector e, irrespective of grade.
Typically e=e4 of negative (timelike) signature.
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 automorphic conjugation that negates only the "new" basis 1-vectors,
[+] is the automorphic 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 conjugations 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,... bitwise basis ordering
these values are 0xFFFFFFFF for negation,
0x177E7EE8 for reverse, 0x96696996 for involution, and 0x69699696 for mitian, the latter value
assuming e4 to be the only minussquare basis 1-vector.
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 .
We define sclar |a|^ º |(a^a)<0>|½ .
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)½ º (akak)<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 .
Dorst/Valkenburg Normalisation
Dorst-Valkenburg define for even Â4,1 multivector x a "new norm"
|x|DV º
|(x§x<0>)2 - (x§x<4>)2|¼
without the || modulus added here (unnecessary since (apparently)
x§x<0>2 ³ (x§x<4>)2 , but prudent to avoid negative compution noise).
For bivector x we can write this as
|x|DV =
|(x*x)2 - (xÙx)2|¼ .
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 simultaneous 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 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-).
A nonnull 2-vector a usually has inverse (a2)-1 a but this fails for N=4 with i2=1 if
a2=b+±bi .
More generally
a2 is invertible provided (a¿a)2 - (aÙa)2 is invertible
.
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 automorphic then the existance of a-1 implies the existance 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 automorphic conjugation ^ , 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 extended coordinate representation a
is itself invertible typically involves deciding whether higher
grade components lie within an acceptable error tolerance of zero.
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) for k > 0 ;
ak = (a-k)-1 for k < 0 provided inverse
(a-k)-1 exists.
We say a multivector is squarepure or scalar squared if its square is
a pure scalar. We say a 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.
If a and b commute we binomial theorem (a+b)k = åj=0k kCjajbk-j .
If a and b anticommute then we have (by induction on k):
(a±b)2k = (a2+b2)k
and (a±b)2k+1 = (a±b)(a2+b2)k
with a2 and b2 commuting,
Square Roots
A square root of a multivector x is any multivector x½ satisfying (x½)2 = x .
If we seek an x½ which we have reason to believe
(perhaps because x satisfies x^x = a2)
will satisfy
(((x½)^)(x½) = a
for some conjugation ^ and a known simpler multivector a with a^ = a
then since
x½ y = a + x
where y = (x½)^ + x½ satisfies y^ = y and is typically of fewer nonzero grades than
x and x½, we can look for a square root for x of the form (a+x)y-1 where
y satisfies y^ = y and y2 = 2a + x^ +x = 2(a + x<^>) .
Then we have
x½
= (a+x) ( 2a + x + x^)-½
= 2-½ (a+x) (a + x<^>)-½ .
reducing the squareroot to one of a known ^ invariant multivector 2a + x + x^ .
This can be seen as normalising a+x in that we are seeking an y-1 such that
((a+x)y-1)^ ((a+x)y-1) = a^a = a2.
For example, if x and x½ satisfy x§x = x½§x½ = 1 ,
then we have y restricted to grades <1,4,5,8,9,12,13...>. If x and so y are also even this reduces to <1,4,8,12,...> .
For N£7 we have the Dorst-Valkenburg rotor square root
x½ = 2-½(1+x)(1+x<0> + x<4>)-½
and for N£5 the (1+x<0> + x<4>)-½ inverse square root can be coinsidered
as of a complex, hyperbolic, or nullic number according to the signature of 4-blade
x<4> .
Exponentials and Logarithms
Introduction
Multivector logarithms and exponentials facilitate the interpolation (parameterisation) of continuous
geometric transforms such as rotations and translations. Their exponentition a↑ º ea
is simply defined and easy to compute inefficiently, given the geoemetric product, via a brute force summation.
We will here discuss strategums for computationally efficient implimentations requiring
greater mathematical sophistication.
Exponential
We define the exponential of a multivector
a as
a↑ º exp(a) º ea
º åi=0¥ i!-1 ai
with ea 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
so we will here move freely between ea and the alternate notation
a↑
, where symbol ↑ acts leftwards as
ab↑c º a(b↑)c
º a(eb)c
as for conjugations and powers.
[ Note that the uparrow symbol [ ↑ ] may not print correctly from some browsers ]
For integer k³0 a↑+k = ak(a)↑ but otherwise we only have
a↑k = ak(a)↑ when ak exists.
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.
One can exploit a↑ = ((k-1a)↑)k where real scalar k is a
numericallty covenient value such as a power of 2 of similar magnitude to |a| .
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 )
butin general (a+b)↑ ¹ (a↑)(b↑) .
If we can express a multivector a as the sum of commuting parts than we can simply the computatiuon by
forming the product of the exponentials of those parts. This is true for bivector a for N£
If a and b anticommute we have (by induction on k): (a±b)2k = (a2+b2)k and (a±b)2k+1 = (a±b)(a2+b2)k so that
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)↑ .
If blades a and b are are both negated or both preserved by reversing conjugation ^
we have
(a×b)^ =
-(a×b) while
(a~b)^ =
(a~b) .
Conversely, if one is preserved and the other is negated by ^ we have
(a×b)^ =
(a×b) while
(a~b)^ =
-(a~b) .
Either way we obtain
(ab)↑ = (ab)<^->↑ (ab)<^+>↑
More generally, when faced with a↑ for mixed multivector a we can check
for a<^+>×a<^-> nontrivially vanishing
for ^=§ or §# and if so, reduce the exponention to the prodct of two sparser exponentiations, decomposing a into
<0;1;4;5;8;9;..> and <2;3;6;7;10;11;...> components for § or
<0;3;4;7;8;..> and <1;2;5;6;9;10;..> components for §#.
Since for odd N the <0;N> component of a is bound to commute with everything else in a, then for N£7
the §# commutation check reduces to
a<3;4>×a<1;2;5;6>=0 while for N£5 the §
commutation check reduces to
a<1;4>×a<2;3>=0
and the §# to
a<3;4>×a<1;5>=0
.
Though we are of course free to decompose a into any two nonzero components (into odd and even parts, say)
and check them for commutativity, splitting as <§±> or <§#±>
is guaranteed to produce commuting or vanishing components when a is the product of two blades.
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.
More generally (a + 2kpb)↑ = a↑ " kÎZ provided
b commutes with a and has b2=-1 .
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 .
If u2=-1 then (±u)↓ = ±½pu.
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.
In particular,
u↓
= ½pi(1-u)
and
(ip½(1±u))↑
= -/+ u provide logs for plussquare unit blades u2=1 .
[ 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 v2=-1 then (±½pv)↑ = ±v gives us
(lv)↓ = l↓ + ½pv.
If s2=0 then s has no logarithm.
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
a↓ =
-/+½pia + (i sinh(½p))↓
= -/+½pia + ½pi + ( sinh(½p))_lognj .
Real constant ( sinh(½p))↓ = (½(½p↑-(-½p)↑))↓ » 0.83347370310
= 0.D55E885816 is thus important when constructing logarithms.
For odd (even) N a general (even) multivector a with invertible a=a<0;N> decomposes into commuting factors a=a(1+a) where a=a<0;N> and a=a-1a-1 has zero <0;N> component. We have a↓ = a↓ + (1+a)↓ , reducing the logaritm to "complex" logarithm a↓ and a log of a mutivector having unit scalar and zero pseudoscalar components.
A result from complex matrix theory holds that any unitary (mat(U)=U-1 where _htm=T^) matrix
can be expressed as U=(Hi)↑ where H is Hermitian (H=H) so
for odd N geometric algebras for which a C2½(N-1)_mult2½(N-1)
matrix representation exists and
i=-i , any multivector A with
A§[-]A=1 has a logarithm a=A↓ with
a*§[-]=a* .
In a Euclidean space =§ so in Â3 any versor has a logarithm of grade <0;1> and in Â7
any versor has a logarithm of grade <0;1;4;5>.
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.
cosh(f) º ½(f↑ + (-f)↑) Î [1,¥)
attains mimimal value 1 only 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)↑)
= åk=0¥ (2k)!-1a2k
and
sinh(a) º ½(a↑ - (-a)↑)
= åk=0¥ (2k+1)!-1a2k+1
which are both well definied and intrinsically computable via the summation definitions.
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↓ = r↓ + (q+2p)i but this merely moves the discontinuity to crossing x=0 for negative y.
It is consequently impossible to use the multivalued power zq=(q(z)↓)↑ to define
zq continuously over all zÎC.
1↓ = 0 and i↓ = ½pi provide i½ = (¼pi)↑= 2-½(1+i) and ii = (i(i↓))↑ = (-½p)↑ .
We can compute the square root of a complex number x+iy either
via the polar form as ±r½(½qi)↑ or as
(x+iy)½ =
±2-½((r+x)½ + i(r-x)½) when y³0 ;
and ±2-½((r+x)½ - i(r-x)½) when y<0 ;
hence r=(x2+y2)½ must be calculated along with two other real squareroots,
but q(x,y) is unnecessary and the result is cartesian rather than polar.
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 noninvertible
|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 [aka. dual 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 .
Because (x + n)k = xk + kxk-1 , Taylor's Theorem provides
Automatic Differentiation
¦(g(x)+g'(x)n) = ¦(g(x)) + ¦'(g(x))g'(x)n = (¦g)(x) + (¦g)'(x)n .
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(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" Algebra[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;
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 any nonzero nullic 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¥
orthogonal to d and w . In the GHC embedding described later
this represents a simultaneous rotation in 2-plane w by angle 2l and translation by 2ld.
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 negative signatured ^w(d) we move to Â4,1% and set i=e¥0e12345 with i§=-i. We then have A = e¥Ù(dÙw)~ as before but B becomes 5-vector B = e¥0e345 - fe¥e2345 = w* + (e¥¯w(d))* (dualing in e¥0e12345).
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))↓
Null 1-vector e¥ and unit 2-blade e¥0 orthogonal to w and d are as described in the
Generalised Homogenous Coordinates
section. This corresponds to simultaneous rotation by angle 2l in 2-plane w, translation by 2ld and dilation by factor
(2lg)↑.
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
with b2=f2+d2g-2 .
Hence (l(e12+e¥(de3+fe1) + ge¥0)↓
= l↓ + (1+g2)↓
+ (½p + tan-1(g-1)A - ½pB)i
[ Proof : l↓ + (g+iA)↓ + B↓
= l↓ + (1+g2)↓ + tan-1(g-1)iA + i½p(1-B) .
Expression not numerically verfied.
.]
(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) with w2=-1 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 .
Logarithm of bivector exponentiation
A logarihm b of a given bivector exponentiation
a=b↑ can be recovered via the
canonical decomposition
into the sum of at most ½N commuting 2-blades
of a<2>.
Consider for example the logarithm of the <0;2;4>-vector exponentitiation a=b↑ of
Â4,1 2-vector b = lb1 + mb2 where b1 and b2 are commuting null or unit 2-blades so that
(b2)<4> = bÙb = 2lmb1Ùb2 = 2lmb1b2 .
Then
b↑ = (lb1 + mb2)↑
= (lb1)↑ (mb2)↑
= (cob1(l) + sib1(l)b1)(cob2(m) + sib2(m)b2)
= cob1(l) cob2(m) + sib1(l) cob2(m) b1 + cob1(l) sib2(m) b2 + sib1(l) sib2(m) b1Ùb2
where
cob(x) º cos(x) if b2=-1 ; cosh(x) if
b2=1 ; 1 if b2=0 ;
sib(x) º sin(x) if b2=-1 ; sinh(x) if
b2=1 ; x if b2=0 .
tab(x) º tan(x) if b2=-1 ; tanh(x) if
b2=1 ; x if b2=0 are the usual trigonometric or hyperbolic functions according as the sign of b2.
For unit b1 and b2 we have four simultaneous scalar equations for l and m:
cob1(l) cob2(m) = a<0>
sib1(l) cob2(m) = b1-2 b1¿a
cob1(l) sib2(m) = b2-2 b2¿a
sib1(l) sib2(m) = (b1Ùb2)-2 (b1Ùb2)¿a
yielding for non zero a<0> solution
l = tab1-1( a<0>-1 b1-2 b1¿a ) ;
m = tab1-1( a<0>-1 b2-2 b2¿a )
with trigonometric quadrant ambiguities resolvable through the scalar and 4-blade equations.
For N>5 we have a similar approach canonically decomposing a<2> into a weighted sum of
½N commuting unit or null 2-blades.bi
and seeking li such that b = åi=1½N libi.
If a has nonzero scalar part we have ½N equations
li = tabi-1(
a<0>-1 bi-2bi¿a )
with ambiguities resolvable through the <0;4;6;...> components of a.
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 logarithm.
[ 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)
.]
¯b is self adjoint (symmetric) in that
a¿¯b(c) = ¯b(a)¿c
= ¯b(a)¿¯b(c) .
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 for general 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 but 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.
Dorst reverses the order with ak È bl º (blÙak) when nonvanishing.
]
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.
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 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 blade j containing
akÈbl as
akÇbl º
(akj-1 ).bl
= ak*.bl
= ak*.(bl*j)
= (ak*Ùbl*).j
whence the DeMorgan rule
(akÇibl)* = (ak*) Ù (bl*)
where * denotes dualing in j, a* º aj-1 .
If j is either "broader" or "narrower" than the join akÈbl then
ak* and bl* contain a common subblade and
akÇjbl vanishes.
Çj is thus a bilinear anti-symmetric multivector product "j-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 bl is provided by
( (akj-1) Ù (blj-1) )j where j is a guess of the join.
If this is nonzero then it is
akÇbl and we can deduce that our
j=akÈbl
guess was correct . Obvious guesses for j are i when k+l³N
and (akÙbl)~ when k+l<N , the latter case providing
the join when nonvanishing.
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'
= 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 of the meet when the join is known
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 either inside the meet or outise the join, whilke anticommuting 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 also have (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 each of them (ie. satisfying x¿a = x¿b = x¿c = 0).
An alternative equivalent (up to scale) definition of the plunge is
(aÇbÇc)(aÈbÈc)-1 ; ie. 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.
Multivectors expressed as summed commuters
Since multivector inversese are both left and right inverses, any multivector a can be split into commuting parts
a = a+ + a- where a± º ½(a ± ka-1) for any k commuting with a chosen
pershaps to ensure a desirable property of the a±.
Consider a±a±§ = ¼(aa§ ± 2k + k2a-2) . For even a± this has grade
<0;4;8;12;...> so for N£7 we should seek k giving scalar a±a±§ .
If aa§ is nonsingular, we have a-1 = a§ (aa§))-1 and the easier compuation
a± º ½(a ± ka§ (aa§)-1 )
with
a±2 = ¼(a2 ± 2k + k2(a§)2 (aa§)-2)
having 4-vector component
¼a0a4(1 + k2 (aa§)-2) .
Hence if we set k2 = -(aa§)2 we attain scalar a±2 .
Bivectors expressed as sum of commuting 2-blades
Any Euclidean N-D 2-vector b can be represented as the scalar-weighted sum of at most ½N
orthogonal (by which we mean geometrically commuting and, further, vanishing contractive product) unit 2-blades.
Such a decomposition is unique except in cases where two or more distinct bladse have the same magnitude.
Thus, 2D and 3D rotations occurr in a single 2-blade, in 3D the dual of this 2-blade is the fixed axis 1-vector;
4D and 5D rotations have two planes ; 6D and 7D rotations have three 2-blade "axies"in 2D and 3D;
"Decomposing" a given bivector b in this way is nontrivial.
Hestenes & Sobczyk (3-4) provide a computational algorithm
analagous to diagonalising a skew symmetric matrix which we outline here.
Given a 2-blade b we seek m 2-blades a1,a2..,am for m £ ½N with
aiaj=aiÙaj=ajai so that ai¿aj=0 and b=a1+a2+..+am .
Since (bk)<2k> = bÙ...Ùb
= k!Sr<s<..<varÙas..Ùav
= k!Sr<s<..<varas..av
where there are k terms in each product and k suffices r,s,..v ,
we have
(bk-1)<2k-2> ¿
(bk)<2k> =
k!(k-1)! åi=1m ai (
Sr<s<..<u ¹ i
ar2as2..au2 )
for 1£k<m ,
providing m linear NC2-dimensional equations, solvable for ai
(provided the scalar ai2 are known and distinct) by conventional numerical methods.
For m=2, we compute 2 and 4-vectors C1 = b ; C2 = ½(b2)<4> = a1^a2 as b is known,
and then seek to solve C1 = a1+a2 ; C2 = a1^a2 for a1,a2 by considering characteristic scalar polynomial
(a12-l)(a22-l) = a12a22 - l(a12+a22) + l2
= C2*C2 - lC1*C1 + l2 to find l1 = a12 , l2 = a22 .
We then have two simultaneous bivector equations
C1 = a1+a2 ; C1¿C2 = (a1+a2)¿(a1^a2) = l2a1 + l1a2
with l1,l2,C1,C2 known, yielding, provided l1¹l2,
a1 = (l2-l1)-1(C1C2-l1C1) and hence a2 = b-a1 .
For m>2 we compute 2k-vector Ck º k!-1(bk)<2k> as the known sum
a1Ùa2Ù...Ùak + ....
of ordered outter products of k of the m ai.
The scalar li = ai2 are the m roots of the mth order scalar polynomial
åk=0m (-l)m-k(Ck*Ck)=0 and we have m linear bivector equations
Ck-1.Ck = åi=0m ai åj1 < j2 < ... < jk-1 excluding i.
lj1
lj2...
ljk-1
Thus for m=3, we compute 2, 4 and 6-vectors
C1 = a1+a2+a3 ; C2 = ½(a1^a2 + a1^a3 + a2^a3);
C3 º 6!-1(b3)<6>
= 6-1 a1^a2^a3 .
When N=7 , C3 is a psuedovector and so a blade.
Characteristic cubic
(a12-l)(a22-l)(a32-l)
= a12a22a32
- l(a12a22 + a12a32+a22a32)
+ l2(a12 + a22 +a32)
- l3
= 62C32 - l2C2*C2
+ l2C1*C1 - l3 is solved for l1,l2,l3.
We then have simultaneous 21-D bivector equations. C1 = a1+a2+a3 ; C1¿C2 = (l2+l3)a1+(l1+l3)a2 +(l1+l2)a3 ; C2¿C3 = l2l3a1 + l1l3a2 + l1l2a3.
æ | 1 | 1 | 1 | ö | æ | a1 | ö | = | æ | C1 | ö |
ç | l2+l3 | l1+l3 | l2+l3 | ÷ | ç | a2 | ÷ | ç | C1¿C2 | ÷ | |
è | l2l3 | l1l3 | l1l2 | ø | è | a3 | ø | è | C2¿C3 | ø |
For N=5, Dorst-Valkenburg advocate the easier computation a1 = ½b(1-|b|DV2b-2)
with a12 £ 0;
and a2 = b - a1 = ½b(1+|b|DV2b-2) which may have a22 > 0. |x|DV is the
Dorst-Valkenburg Norm.
If b2=0, then b is already a (null) 2-blade so we can set a1=b. If b2¹0 but |b|DV=0 we have
the problematic "isoclinic" a12=a22 case again, with a nonunique commuting 2-blade seperation.
Dorst-Valkenburg suggest adding a small random bivector to b prior to seperation in this case.
A significant advantage of the Hestenes & Sobczyk approach
is that for odd N we can generalise to seperating <2;N-2>-vectors into £½N commuting <2;N-2>-vectors by expressing
them as 2-vectors in a Clifford Algebra having complex (or hyperbolic or nullic depending on the signature of the pseudoscalar) rather than real coordinates.
We seek commuting Clifford 2-blades a1,a2,...,am with complex squares, which provide commuting Geometric <2;N-2>-vectors with <0;N> squares,
by proceeding as above, seeking complex rather than real solutions to the characteristic polynomial.
For N=5, this allows us to seek the log of a general Â4,1 multivector by treating it as an even C4,1 Clifford multivector.
Conclusion
We have described multivectors as elements of a geometric algebra, expressible as wieghted blade summations.
From a Programmers's perspective, they are generalised vectors.
While the above math may appear intimidatory, and we are just getting started, we hope to show here that multivectors
are a tremendously expressive and liberating tool, far easier used than not in geometric programming.
Still today, tragically few recognise this.
Next : Multivectors as Geometric Objects