Here we will use the definition of inner product as the values in the geometric product table such that : if gradeof(row)-gradeof(column) != gradeof(entry) then the entry is set to zero otherwise the entry is the same as the geometric product. Where a table entry is the sum of terms then this check is done on each term separately. For more information about the concept of an inner product see this page.
I can think of two ways of calculating the inner product for this null vector basis:
- Generate the geometric table for the null basis (as explained on this page), then set terms to zero depending on the difference of the grades as explained above.
- Start with the inner product of e1,e2 and e3 then rotate the basis vectors to give null basis vectors.
I'm not sure if these methods are equivalent? So we will use the first method but do some tests to see if the second method is equivalent.
table for: Inner Product
a*b | b.1 | b.n0 | b.n∞ | b.n0∞ | b.n1 | b.n01 | b.n∞1 | b.n0∞1 |
a.1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
a.n0 | n0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
a.n∞ | n∞ | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
a.n0∞ | n0∞ | 2n0 | 0 | 0 | 0 | 0 | 0 | 0 |
a.n1 | n1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
a.n01 | n01 | 0 | 0 | 0 | n0 | 0 | 0 | 0 |
a.n∞1 | n∞1 | -4n1 | 0 | 0 | n∞ | -4 | 0 | 0 |
a.n0∞1 | n0∞1 | -2n01 | 0 | 0 | n0∞ | -2n0 | 0 | 0 |
The inner product of two null vectors
Lets take x1 in Euclidean space, this gives,
P=(-n0+ x1² n∞ + 2 x1 n1)
and we want to take the inner product with x2:
Q=(-n0+ x2² n∞ + 2 x2 n1)
So the outer product is the scalar::
P•Q = (-n0+ x1² n∞ + 2 x1 n1)•(-n0+ x2² n∞ + 2 x2 n1)
P•Q = n0n0- x2² n0•n∞ - 2 x2 n0•n1 - x1² n∞•n0+ x2² x1² n∞•n∞ + 2 x2 x1² n∞•n1-2 x1 n1•n0+ x2² 2 x1 n1•n∞ + 2 x2 2 x1 n1•n1
P•Q = 1 - 4 x1² + 2 x2 2 x1
so the inner product of two points is a scalar value.
Join
Two Points
In the above example, if x2 = x1 then:
P•Q = 1 - 4 x1² + 4 x1² = 1
Investigation of alternative way to calculate inner product
There are different ways to extend the dot product from vectors to the inner product of bivectors and all our basis. Here we will use the version represented by the following table:
- e1 and e3 square to positive
- e2 squares to negative
a•b |
b.e | b.e1 | b.e2 | b.e12 | b.e3 | b.e13 | b.e23 | b.e123 |
a.e | 1 | e1 | e2 | e12 | e3 | e13 | e23 | e123 |
a.e1 | e1 | 1 | 0 | e2 | 0 | e3 | 0 | e23 |
a.e2 | e2 | 0 | -1 | e1 | 0 | 0 | -e3 | e13 |
a.e12 | e12 | -e2 | -e1 | 1 | 0 | 0 | 0 | e3 |
a.e3 | e3 | 0 | 0 | 0 | 1 | -e1 | -e2 | e12 |
a.e13 | e13 | -e3 | 0 | 0 | e1 | -1 | 0 | e2 |
a.e23 | e23 | 0 | -e3 | 0 | e2 | 0 | 1 | e1 |
a.e123 | e123 | e23 | e13 | e3 | e12 | e2 | e1 | 1 |
We will then use this to derive the inner product table for our null vector basis.
a•b |
b.n | b.n0 | b.n∞ | b.n0∞ | b.n1 | b.n01 | b.n∞1 | b.n0∞1 |
a.n | 1 | n0 |
n∞ | n0∞ | n1 | n01 | n∞1 | n0∞1 |
a.n0 | n0 | 0 | 1/2 | 0 | 0 | 0 | n1/2 | -n01/2 |
a.n∞ | n∞ | 1/2 | 0 | n∞ | 0 | n1/2 | 0 | n∞1/2 |
a.n0∞ | n0∞ | n0 | 0 | n0∞ | n1/2 | n01/2 | n∞1/2 | n0∞1/2 +n1/4 |
a.n1 | n1 | 0 | 0 | n1/2 | 1 | -n0 | -n∞ | n0∞ |
a.n01 | n01 | -n1/2 | 0 | n01/2 | n0 | 0 | -1/2 | 0 |
a.n∞1 | n∞1 | 0 | -n1/2 | n0∞/2 | n∞ | -1/2 | 0 | n∞/2 |
a.n0∞1 | n0∞1 | -n01/2 | n∞1/2 | n0∞1/2 +n1/4 | n0∞ | -n0 | 0 | n0∞ |
Each term in this table is calculated from:
n0= (e1 + e2)/2
n∞= (e1 - e2)/2
n1= e3
Unlike when we were calculating the geometric product table the bivector and higher terms are not generated by the dot product so we have to assume they have already been generated by the outer product to give:
n0∞ = (1-e12)/2
n01= (e13+e23)/2
n∞1 = (e13-e23)/2
n0∞1= (e3-e123)/2
So we just multiply out each term by converting to 'e' basis, doing inner product, then converting back to 'n' basis (see full working at the end of this page).
The inner product of two null vectors
Lets take x1 in Euclidean space, this gives,
p=(-1,x1²,x1)
and we want to take the inner product with x2:
q=(-1,x2²,x2)
So the inner product is the scalar:
inner product=1-x1²/2 -x2²/2 + x1x2
if p and q represent the same point then:
p•q = 1
Expansion of Inner Product
Note: work in progress ignore the following:
Our multiplcaition is represented by:
c=a•b
Where a, b and c are multivectors which may contain scalar, vector and bivector and trivector components.
so multiplying out all the components gives:
(an an+an0 an0+an∞ an∞+an0 an1+an0∞ an0∞+an01 an01+an∞1 an∞1+an0∞1 an0∞1)•
(bn b n+bn0 bn0+bn∞ bn∞+bn1 bn1+bn0∞ b n0∞+bn01 b n01+bn∞1 b n∞1+bn0∞1 bn0∞1)
The result is:
cn=an*bn + an0*bn1 + an0*bn∞ - an∞1*bn01
cn0=an*bn0 + an0*bn + an0∞*bn0- an0*bn01+ an01*bn1- an0∞1*bn01
cn∞=an*bn∞ + an∞*bn + an∞*bn0∞ - an0*bn∞1+ an∞1*bn1 + an∞1*bn0∞1
cn1=an*bn1 + an0*bn+ an∞*bn01- an∞1*bn0
cn0∞=an*bn0∞+an0*bn∞-an∞*bn0+an0∞*bn+an0∞*bn0∞+an0*bn0∞1-an01*bn∞1+an∞1*bn01+an0∞1*bn1+an0∞1*bn0∞1
cn01=an*bn01+an0*bn1+an0∞*bn01-an0*bn0+an01*bn-an0∞1*bn0
cn∞1=an*bn∞1+an∞*bn1+an∞*bn0∞1-an0*bn∞+an∞1*bn+an∞1*bn0∞
cn0∞1=an*bn0∞1+an0*bn∞1-an∞*bn01+an0∞*bn1+an0*bn0∞-an01*bn∞+an∞1*bn0+an0∞1*bn
Multivector Calculator
The following calculator allows you to calculate the multivector arithmetic of our rotated basis. Enter the values into the top two multivectors and then press "+ - or * " to display the result in the bottom multivector: