# Maths - Inverse

Note: I need to update this page: see this forum discussion with Manfred and Brombo14

Can we use the same trick that we used with complex numbers, that is multiply top and bottom of equation by the conjugate, which will convert the denominator into a scalar making the division possible.

Terminology:

 input result (1/input) scalar a.e e vector a.e1 , a.e2 , a.e3 e1 , e2 , e3 bivector a.e12 , a.e31 , a.e23 e12 , e31 , e23 trivector a.e123 e123

Since I'm not yet sure how to calculate the inverse of a multivector, I'll first try an easier problem, how to calculate the inverse of parts of a multivector (scalar, vector, bivector and trivector).

e-1 = 1/a.e

#### inverse of vector

(e1 + e2 + e3 )-1

use conjugate (-e1 - e2 - e3 )

so multiplying a vector by its conjugate gives:

(e1 + e2 + e3 ) (-e1 -e2 -e3 ) = -e12 -e22 -e32

so (e1 + e2 + e3 )-1 = (-e1 - e2 - e3 )/(-e12 -e22 -e32)

e1 = a.e1/(a.e12 +a.e22 +a.e32)
e2 = a.e2/(a.e12 +a.e22 +a.e32)
e3 = a.e3/(a.e12 +a.e22 +a.e32)

#### inverse of bivector

(e12 + e31 + e23)-1

use conjugate (-e12 - e31 - e23)

so multiplying a bivector by its conjugate gives:

(e12 + e31 + e23) (-e12 - e31 - e23) = e122 + e312 + e232

so (e12 + e31 + e23)-1 = (-e12 - e31 - e23)/(e122 + e312 + e232)

e12 = - a.e12/(a.e12 +a.e22 +a.e32)
e31 = - a.e31/(a.e12 +a.e22 +a.e32)
e23 = - a.e23/(a.e12 +a.e22 +a.e32)

#### inverse of trivector

e123-1 = a.e123 / (a.e123 * a.e123) = -1/a.e123

#### inverse of multivector

If it follows the pattern then it would be:

(e1 + e2 + e3 + e12 + e31 + e23 + e123)-1 = (e -e1 -e2 -e3 - e12 - e31 - e23 + a.e123)/(e2 - ex2 - ey2 - ez2 + e122 + e312 + e232 - e1232)

but is it? this would make the conjugate e -e1 -e2 -e3 - e12 - e31 - e23 + a.e123

so if we multiply a multivector by this possible conjugate we get:

(a.e1 + a.e2 + a.e3 + a.e12 + a.e31 + a.e23 + a.e123)(a.e -a.e1 -a.e2 -a.e3 - a.e12 - a.e31 - a.e23 + a.e123)

which gives:

e = a.e2 - a.e12 - a.e22 - a.e32 + a.e122 + a.e312 + a.e232 - a.e1232
e123 = 2*a.e * a.e123 - 2*a.e1 *a.e23 -2*a.e2*a.e31 - 2*a.e3*a.e12

so due to this extra e123 term this will only work if:

a.e * a.e123 = a.e1 *a.e23 + a.e2*a.e31 + a.e3*a.e12

which would make the extra term zero.

Although not necessary to calculate the inverse, the calculation would be a lot simpler if:

1 = a.e2 - a.e12 - a.e22 - a.e32 + a.e122 + a.e312 + a.e232 - a.e1232

so if,

a.e * a.e123 = a.e1 *a.e23 + a.e2*a.e31 + a.e3*a.e12

and

1 = a.e2 - a.e12 - a.e22 - a.e32 + a.e122 + a.e312 + a.e232 - a.e1232

then,

(e1 + e2 + e3 + e12 + e31 + e23 + e123)-1 = e -e1 -e2 -e3 - e12 - e31 - e23 + a.e123

## Derivations

In order to establish the conditions for A A† = 1 then I will try multiplying out each term for the 3D case, this is a brute force approach, can anyone think of a better approach?. A A† gives the following result:

 e = -a.e * a.e123 - a.e1 * a.e23 - a.e2 * a.e31 - a.e3 * a.e12 - a.e12 * a.e3 - a.e31 * a.e2 - a.e23 * a.e1 - a.e123 * a.e e1 = -a.e1 * a.e123 - a.e * a.e23 + a.e12 * a.e31 - a.e31 * a.e12 + a.e2 * a.e3 - a.e3 * a.e2 - a.e123 * a.e1 - a.e23 * a.e e2 = -a.e2 * a.e123 - a.e12 * a.e23 - a.e * a.e31 + a.e23 * a.e12 - a.e1 * a.e3 - a.e123 * a.e2 + a.e3 * a.e1 - a.e31 * a.e e3 = -a.e3 * a.e123 + a.e31 * a.e23 - a.e23 * a.e31 - a.e * a.e12 - a.e123 * a.e3 + a.e1 * a.e2 - a.e2 * a.e1 - a.e12 * a.e e12 = -a.e12 * a.e123 - a.e2 * a.e23 + a.e1 * a.e31 - a.e123 * a.e12 + a.e * a.e3 + a.e23 * a.e2 - a.e31 * a.e1 + a.e3 * a.e e31 = -a.e31 * a.e123 + a.e3 * a.e23 - a.e123 * a.e31 - a.e1 * a.e12 - a.e23 * a.e3 + a.e * a.e2 + a.e12 * a.e1 + a.e2 * a.e e23 = -a.e23 * a.e123 - a.e123 * a.e23 - a.e3 * a.e31 + a.e2 * a.e12 + a.e31 * a.e3 - a.e12 * a.e2 + a.e * a.e1 + a.e1 * a.e e123 = -a.e123 * a.e123 - a.e23 * a.e23 - a.e31 * a.e31 - a.e12 * a.e12 + a.e3 * a.e3 + a.e2 * a.e2 + a.e1 * a.e1 + a.e * a.e

canceling out positive and negative terms and adding equal terms gives:

 e = -2*a.e * a.e123 -2* a.e1 * a.e23 -2* a.e2 * a.e31 -2* a.e3 * a.e12 e1 = -2*a.e1 * a.e123 -2* a.e * a.e23 e2 = -2*a.e2 * a.e123 -2* a.e * a.e31 e3 = -2*a.e3 * a.e123 - 2*a.e * a.e12 e12 = -2*a.e12 * a.e123 + 2*a.e * a.e3 e31 = -2*a.e31 * a.e123 +2* a.e * a.e2 e23 = -2*a.e23 * a.e123 + 2*a.e * a.e1 e123 = -a.e1232 - a.e232 - a.e312 - a.e122 + a.e32 + a.e22 + a.e12 + a.e2

setting these terms to equal a scalar value of 1 (all other components = 0) and rearranging these terms gives:

• a.e * a.e123+ a.e1 * a.e23 + a.e2 * a.e31 + a.e3 * a.e12 = -0.5
• a.e1 * a.e123 = - a.e * a.e23
• a.e2 * a.e123 = - a.e * a.e31
• a.e3 * a.e123 = - a.e * a.e12
• a.e12 * a.e123 = a.e * a.e3
• a.e31 * a.e123 = a.e * a.e2
• a.e23 * a.e123 = a.e * a.e1
• a.e1232+ a.e232+ a.e312+ a.e122= a.e32+ a.e22+ a.e12+ a.e2

We have 8 unknowns and 8 equations, so if they are all independent we should be able to solve, however I suspect they are not independent. For instance if we take the 2nd and 7th equation:

• a.e1 * a.e123 = - a.e * a.e23
• a.e23 * a.e123 = a.e * a.e1

we get:

a.e123/a.e = - a.e23 / a.e1 = a.e1 / a.e23

so

- a.e232= a.e12

which is true for both:

a.e23= a.e1
and a.e23= -a.e1

One condition that might satisfy simplify things is if:

• a.e123= a.e
• a.e23= a.e1
• a.e31= a.e2
• a.e12= a.e3

This would then reduce us to 4 variables and then this type of 3D multivector would then have the same properties as quaternions and so would be equivalent to quaternions.

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.

 Clifford Algebra to Geometric Calculus: A Unified Language for Mathematics and Physics (Fundamental Theories of Physics). This book is intended for mathematicians and physicists rather than programmers, it is very theoretical. It covers the algebra and calculus of multivectors of any dimension and is not specific to 3D modelling.