9.64 QuaternionΒΆ

The domain constructor Quaternion implements quaternions over commutative rings. For information on related topics see ComplexXmpPage and OctonionXmpPage . You can also issue the system command )show Quaternion to display the full list of operations defined by Quaternion.

The basic operation for creating quaternions is quaternquaternQuaternion. This is a quaternion over the rational numbers.

q := quatern(2/11,-8,3/4,1)
\[\]
211-8i+34j+k

Type: Quaternion Fraction Integer

The four arguments are the real part, the i imaginary part, the j imaginary part, and the k imaginary part, respectively.

[real q, imagI q, imagJ q, imagK q]
\[\]
[211,-8,34,1]

Type: List Fraction Integer

Because q is over the rationals (and nonzero), you can invert it.

inv q
\[\]
352126993+15488126993i-48442331j-1936126993k

Type: Quaternion Fraction Integer

The usual arithmetic (ring) operations are available

q^6
\[\]
-20294907093193457256313856-482516908511288408i+14475507255341229056j+4825169085110307264k

Type: Quaternion Fraction Integer

r := quatern(-2,3,23/9,-89); q + r
\[\]
-2011-5i+11936j-88k

Type: Quaternion Fraction Integer

In general, multiplication is not commutative.

q * r - r * q
\[\]
-249518i-1418j-81718k

Type: Quaternion Fraction Integer

There are no predefined constants for the imaginary i, j, and k parts, but you can easily define them.

i:=quatern(0,1,0,0); j:=quatern(0,0,1,0); k:=quatern(0,0,0,1)
\[\]
k

Type: Quaternion Integer

These satisfy the normal identities.

[i*i, j*j, k*k, i*j, j*k, k*i, q*i]
\[\]
[-1,-1,-1,k,i,j,8+211i+j-34k]

Type: List Quaternion Fraction Integer

The norm is the quaternion times its conjugate.

norm q
\[\]
1269931936

Type: Fraction Integer

conjugate q
\[\]
211+8i-34j-k

Type: Quaternion Fraction Integer

q * %
\[\]
1269931936

Type: Quaternion Fraction Integer