The recent thread A crossprod problem, although not directly related, inspired me to write this blog entry about bilinear cross products and their noticable property [see for instance P. Lounesto, Clifford Algebras and Spinors, 2nd ed. (Cambridge University Press, Cambridge, 2001)]:

Theorem: A bilinear cross product obeying the orthogonality property and the Pythagorean property, see below, exists only in 3 or 7 (real or complex) dimensions.

No proof of this fact will be given, only the explicit construction of the seven-dimensional cross product will be given: Define a function CrossProd7D by

CrossProd7D := proc(a::'Vector'(7,algebraic),b::'Vector'(7,algebraic))
end proc:

Then, define three seven-dimensional vectors u, v, and w by:

u := Vector(7,(i) -> u||i):
v := Vector(7,(i) -> v||i):
w := CrossProd7D(u,v);

Now, the crucial properties are the orthogonality property and the Pythagorean property, respectively (the LinearAlgebra package is assumed loaded from here on):

simplify(DotProduct(w,u,conjugate = false)),
simplify(DotProduct(w,v,conjugate = false)),
simplify(DotProduct(w,w,conjugate = false) - (
	+ DotProduct(u,u,conjugate = false)
	* DotProduct(v,v,conjugate = false)
	- DotProduct(u,v,conjugate = false)
	* DotProduct(v,u,conjugate = false)
                            0, 0, 0

The seven-dimensional cross product may, of course, be used also as a three-dimensional cross product:

u := Vector([u1,u2,u3,0,0,0,0]):
v := Vector([v1,v2,v3,0,0,0,0]):

The reason for the existence of these bilinear cross products is closely related to the existence of the division algebras the quaternions and the octonions. These bilinear cross products deals with the imaginary (the vector) part of these algebras. For full blown, including also the real part (scalar part), quaternions or octonions there is a similar theorem to the one above: Only in 4 or 8 (real or complex) dimensions does a trilinear cross product obeying the orthogonality property and the Gram-Schmidt determinantal property (generalization of the Pythagorean property above) exist.

PS: I have been forced to leave out some relevant output because the maple tag still seems to be malfunctioning.

Please Wait...