% Copyright The Numerical Algorithms Group Limited 1992-94. All rights reserved. % !! DO NOT MODIFY THIS FILE BY HAND !! Created by ht.awk. \newcommand{\OctonionXmpTitle}{Octonion} \newcommand{\OctonionXmpNumber}{9.56} % % ===================================================================== \begin{page}{OctonionXmpPage}{9.56 Octonion} % ===================================================================== \beginscroll The Octonions, also called the Cayley-Dixon algebra, defined over a commutative ring are an eight-dimensional non-associative algebra. Their construction from quaternions is similar to the construction of quaternions from complex numbers (see \downlink{`Quaternion'}{QuaternionXmpPage}\ignore{Quaternion}). %-% \HDexptypeindex{Quaternion}{OctonionXmpPage}{9.56}{Octonion} % \xtc{ As \spadtype{Octonion} creates an eight-dimensional algebra, you have to give eight components to construct an octonion. }{ \spadpaste{oci1 := octon(1,2,3,4,5,6,7,8) \bound{oci1}} } \xtc{ }{ \spadpaste{oci2 := octon(7,2,3,-4,5,6,-7,0) \bound{oci2}} } % % \xtc{ Or you can use two quaternions to create an octonion. }{ \spadpaste{oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0)) \bound{oci3}} } % % \xtc{ You can easily demonstrate the non-associativity of multiplication. }{ \spadpaste{(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3) \free{oci1 oci2 oci3}} } % As with the quaternions, we have a real part, the imaginary parts \spad{i}, \spad{j}, \spad{k}, and four additional imaginary parts \spad{E}, \spad{I}, \spad{J} and \spad{K}. These parts correspond to the canonical basis \spad{(1,i,j,k,E,I,J,K)}. \xtc{ For each basis element there is a component operation to extract the coefficient of the basis element for a given octonion. %\spadfunFrom{real}{Octonion}, %\spadfunFrom{imagi}{Octonion}, %\spadfunFrom{imagj}{Octonion}, %\spadfunFrom{imagk}{Octonion}, %\spadfunFrom{imagE}{Octonion}, %\spadfunFrom{imagI}{Octonion}, %\spadfunFrom{imagJ}{Octonion}, and %\spadfunFrom{imagK}{Octonion}. }{ \spadpaste{[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1, imagJ oci1, imagK oci1] \free{oci1}} } % A basis with respect to the quaternions is given by \spad{(1,E)}. However, you might ask, what then are the commuting rules? To answer this, we create some generic elements. % \xtc{ We do this in \Language{} by simply changing the ground ring from \spadtype{Integer} to \spadtype{Polynomial Integer}. }{ \spadpaste{q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk) \bound{q}} } \xtc{ }{ \spadpaste{E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0) \bound{E}} } % \xtc{ Note that quaternions are automatically converted to octonions in the obvious way. }{ \spadpaste{q * E \free{q E}} } \xtc{ }{ \spadpaste{E * q \free{E q}} } \xtc{ }{ \spadpaste{q * 1\$(Octonion Polynomial Integer) \free{q}} } \xtc{ }{ \spadpaste{1\$(Octonion Polynomial Integer) * q \free{q}} } \xtc{ Finally, we check that the \spadfunFrom{norm}{Octonion}, defined as the sum of the squares of the coefficients, is a multiplicative map. }{ \spadpaste{o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK) \bound{o}} } \xtc{ }{ \spadpaste{norm o \free{o}} } \xtc{ }{ \spadpaste{p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK) \bound{p}} } \xtc{ Since the result is \spad{0}, the norm is multiplicative. }{ \spadpaste{norm(o*p)-norm(p)*norm(p)\free{o p} } } \showBlurb{Octonion} \endscroll \autobuttons \end{page} %