logo back up home forward   further reading more topics »

Maths - 3D Clifford Algebra - Arithmetic - Derivation of multipication table

Derivation

Each term can be calculated as follows, for example when working out the 5th term in the first multivector a.e12 e1^ e2 multiplied by the 6th term in the second multivector b.e31 e3^ e1 we get the magnitude a.e12*b.e31 and the type e1^ e2 * e3^ e1 which can be calculated as follows:

The type of each term can be calculated by following these rules:

  1. Write down the indices of both terms, the indices of the left hand multiplicand followed immediately by the indices of the right hand multiplicand without a space. If either of the terms is negative then put a negative sign in front, if both terms are negative then the composite is positive.
  2. If this contains any duplicate numbers, then swap any two numbers to make the duplicate numbers adjacent, every swap inverts the sign.
  3. Adjacent duplicate numbers can then be removed, repeat step 2 until all duplicate terms are removed.
  4. If the remaining numbers are not in the same order as the base values then swap any two numbers, as before every swap inverts the sign.
  5. If there are no numbers left the result is e (or -e if negative).

As an example, using 3D vectors, we can use the above rules to calculate a table showing all possible combinations:

In order to make sure we work out all possible combinations of products, I suggest using a table. The entries in the table only shows the type and sign change of the product, it does not show its absolute value. We therefore need to prefix the product by its numerical value which is the real number which is the product of the numbers at the top and left headings.

So we can start by entering the above results in the table, the value to the left of the * is represented by the columns and the value to the right of the * is represented by the rows. So when calculating a^b the column headings are denoted by a.?? and the rows are denoted by b.??

a*b
b.e b.e1 b.e2 b.e3 b.e12 b.e31 b.e23 b.e123
a.e 1 e1 e2 e3 e12 e31 e23 e123
a.e1 e1 e11 = 1 [rule 5] e12 e13 = -e31 [rule 4] e112 = e2 [rule 3] e131 =-e113 [rule 2]
= -e3 [rule 3]
e123 e1123 = e23 [rule 3]
a.e2 e2 a21 = -e12 [rule 4] e22 = 1 [rule 5] e23 e212 = -e221 [rule 2]
= -e1 [rule 3]
e231 = -e132 [rule 4]
e123 [rule 4]
e223 = e3 [rule 3] e2123 = -e2213 [rule 2]
= e31 [rule 4]
a.e3 e3 e31 e32 = -e23 [rule 4] e33 = 1 [rule 5] e312 = -e132 [rule 4]
= e123 [rule 4]
e331 = e1 [rule 3] e323 = -e332 [rule 2]
= -e2 [rule 3]
e3123 = -e3321 [rule 2]
= e12 [rule 4]
a.e12 e12 e121 = -e112 [rule 2]
= -e2 [rule 3]
e122 = e1 [rule 3] e123 e1212 = -e1122 [rule 2]
= -1 [rule 5]
e1231 = -e1132 [rule 2]
= e23 [rule 3 & 4]
e1223 = e13 [rule 3]
-e31 [rule 4]
e12123 =-e11223 [rule 2]
= -e3 [rule 3]
a.e31 e31 e311 = e3 [rule 3] e312 = -e132 [rule 4]
= e123 [rule 4]
e313 = -e331 [rule 2]
= -e1 [rule 3]
e3112 = e32 [rule 3]
= -e23 [rule 4]
e3131 = -e1133 [rule 2]
= -1 [rule 5]
e3123 = -e3321 [rule 2]
= e12 [rule 3&4]
e31123 = e323 [rule 3]
= -e332 = -e2
a.e23 e23 e231 =-e132 [rule 4]
= e123 [rule 4]
e232 = -e223 [rule 2]
= -e3 [rule 3]
e233 = e2 [rule 3] e2312 = -e2213 [rule 2]
= e31 [rule 3&4]
e2331 = e21 [rule 3]
= -e12 [rule 4]
e2323 = -e3322 [rule 2]
= -1 [rule 5]
e23123 = -e22133 [rule 2]
= -e1 [rule 3]
a.e123 e123 e1231 = -e1123 [rule 2]
= e23 [rule 3&4]
e1232 =-e1223 [rule 2]
= e31 [rule 3&4]
e1233 = e12 [rule 3] e12312 = -e11322 [rule 2]
= -e3 [rule 3]
e12331 = e121 [rule 2]
=-e112 = -e2

e12323 = -e12233 [rule 2]

=-e1 [rule 3]

e123123 = -e113223 [rule 2]
= -1 [rule 5]

So the finished table is:

a*b
b.e b.e1 b.e2 b.e3 b.e12 b.e31 b.e23 b.e123
a.e 1 e1 e2 e3 e12 e31 e23 e123
a.e1 e1 1 e12 -e31 e2 -e3 e123 e23
a.e2 e2 -e12 1 e23 -e1 e123 e3 e31
a.e3 e3 e31 -e23 1 e123 e1 -e2 e12
a.e12 e12 -e2 e1 e123 -1 e23 -e31 -e3
a.e31 e31 e3 e123 -e1 -e23 -1 e12 -e2
a.e23 e23 e123 -e3 e2 e31 -e12 -1 -e1
a.e123 e123 e23 e31 e12 -e3 -e2 -e1 -1

In the above table we can see that some entries are commutative and some are anti-commutative, that is, if we swap rows and columns (or reflect in leading diagonal) some values remain the same and the others have their sign changed. We can also see that (A * B)† = B†* A† because if we rotate the whole table by 90 degrees then the entry will become its reversal.

I guess what we really need to know is that, given a multivector with numerical values: a.e, a.e1, a.e2, a.e3, a.e12, a.e31, a.e23 and a.e123 multiplied by a second multivector with numerical values: b.e, b.e1, b.e2, b.e3, b.e12, b.e31, b.e23 and b.e123 then what are the resulting numerical values. Multiplying out each term gives the following result:

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

alternative method

Some programs implement multiplication by using Eddington Basis

Eddington Basis for aMonad
E Number 1 : 0, 0, 0, *0
E Number 2 : 0, 0, 1, *1
E Number 3 : 0, 0, 2, *2
E Number 4 : 0, 0, 3, *3
E Number 5 : 0, 1, 2, *6
E Number 6 : 0, 1, 3, *7
E Number 7 : 0, 2, 3, *11
E Number 8 : 1, 2, 3, *27


Basis products for aMonad
E Number 1 : 1, 2, 3, 4, 5, 6, 7, 8, *0
E Number 2 : 2, 1, 5, 6, 3, 4, 8, 7, *1
E Number 3 : 3, -5, 1, 7, -2, -8, 4, -6, *2
E Number 4 : 4, -6, -7, 1, 8, -2, -3, 5, *3
E Number 5 : 5, -3, 2, 8, -1, -7, 6, -4, *6
E Number 6 : 6, -4, -8, 2, 7, -1, -5, 3, *7
E Number 7 : 7, 8, -4, 3, -6, 5, -1, -2, *11
E Number 8 : 8, 7, -6, 5, -4, 3, -2, -1, *27


Basis products for aMonad
E Number 1 : 1, 2, 3, 4, 5, 6, 7, 8, *0
E Number 2 : 2, -1, 5, 6, -3, -4, 8, -7, *1
E Number 3 : 3, -5, -1, 7, 2, -8, -4, 6, *2
E Number 4 : 4, -6, -7, -1, 8, 2, 3, -5, *3
E Number 5 : 5, 3, -2, 8, -1, 7, -6, -4, *6
E Number 6 : 6, 4, -8, -2, -7, -1, 5, 3, *7
E Number 7 : 7, 8, 4, -3, 6, -5, -1, -2, *11
E Number 8 : 8, -7, 6, -5, -4, 3, -2, 1, *27

metadata block
see also:

 

Correspondence about this page

Book Shop - Further reading.

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.

cover 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.

cover New Foundations for Classical Mechanics (Fundamental Theories of Physics). This is very good on the geometric interpretation of this algebra. It has lots of insights into the mechanics of solid bodies. I still cant work out if the position, velocity, etc. of solid bodies can be represented by a 3D multivector or if 4 or 5D multivectors are required to represent translation and rotation.

Commercial Software Shop

Where I can, I have put links to Amazon for commercial software, not directly related to the software project, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.

cover Mathmatica

Can you help?

Please send me any improvements to here. I would appreciate ideas to make the pages more useful including error correction, ideas for new pages, improvements to wording. It helps if you quote the full URL of the page.

 

Terminology and Notation

Specific to this page here:

 

program

I am working on a project which uses these principles, if you would like to help me with this you are welcome to join in, here:

http://sourceforge.net/projects/mjbworld/

This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2008 Martin John Baker - All rights reserved - privacy policy.