Welcome to the Quaternions 1.0 for Maple Web Site.
The Quaternions package allows the user to construct and work with quaternions in Maple as naturally as you can work with complex numbers. This requires significant changes to the Maple infrastructure, as Maple assumes that * is commutative. Once you have loaded the Quaternions package, the assumption of the commutativity of * is removed. After this, many other Maple functions have been modified to recognize quaternions.
What is a quaternion? real sets. The operators union and intersect, to name a few, are overloaded to accept fuzzy sets as well as classic Maple sets. For example,
> with( Quaternions ): > I*J;
> with( Quaternions ): > J*I;
As this example shows, multiplication no longer assumes commutativitity.
The five operators +, -, *, /, and ^ have been overloaded to
recognize quaternions and to operate accordingly
> with( Quaternions ):
> (3 + 4*I)*(4 - 5*J);
> with( Quaternions ): > (4 - 5*J)*(3 + 4*I);
The absolute value of the quaternion q = a + b*I + c*J + d*K is abs(q) = sqrt( a^2 + b^2 + c^2 + d^2 ). The real part of the quaternion q, like the definition of the real part of a complex number, is Re(q) = a. The imaginary part is defined as the complement to the real part: Im(q) = b*I + c*J + d*K. This differs from the corresponding complex variable definition. Fortunately, this definition simplifies many standard definitions:
exp(q) = exp(Re(q))*(cos(abs(Im(q))) + Im(q)/abs(Im(q)) * sin(abs(Im(q)))).
Note that for a quaternion of the form q = a + b*I, this is equivalent to the standard definition of the complex exponential function.
The conjugate of a quaternion negates the coefficients of the imaginary components and the property q*conjugate(q) = abs(q)^2 continues to hold. The argument is defined such that q = abs(q)*exp(Im(q)/abs(Im(q)) * argument(q)).
Given any purely-imaginary quaternion u, the space R + uR forms a field, and therefore all functions with series expansions containing only real coefficients are well defined, mapping r + u into R + uR. For exmaple,
> sin( 0.3+0.5*I-0.7*J+0.1*K );
> arcsin( % );
Any value which is a sum of extended numeric values multiplied by the basis elements {1, I, J, K} is recognized as a quaternion. In addition to this type, the following types:
nonreal imaginary embedded_axis embedded_imaginary embedded_real undefined finite infinity `+` `*` `^` radical sqrt atomic function anyfunc
have been overloaded to ensure that they recognize the corresponding equivalent quaternion structures. For example, a quaternion is of type finite if each of the four components is finite. Similarly, a quaternion is of type embedded_real if it is either of type extended numeric or a quaternion with an imaginary component with zero magnitude.
A number of plotting routines are included with the package allowing the user to plot quaterions.
The Quaternions package comes with a worksheet which covers the theory of quaternions in significant detail. Additionally, worksheets describing the use of quaternions with rotation sequences and fractals are also included.
All the references used in the construction of the package are provided, though most useful was a collection of unpublished class notes by Dr. J.A.R. Holbrook from the University of Guelph. Dr. Jack B. Kuipers text Quaternions and Rotation Sequences was an excellent reference for the relationship between quaternions and rotation sequences.
Douglas Wilhelm Harder was a developer in the Math Group at Wateloo Maple Inc. (Maplesoft Inc.) for almost five years. He has worked on many different parts of the Maple library and is the author of a number of packages and routines made available with Maple 6 through Maple 8. His largest single package is the comprehensive Units package. Today he works as a lectuer at the University of Waterloo in the Department of Electrical and Computer Engineering.
The Quaternions package is available through Maplesoft at their Third Party Products site. Technical support for this package is available by emailing the author at dwharder@uwater1**.ca (making the appropriate substitution of loo for 1**).
Questions will be summarized in an FAQ.
This page is Copyright (c) 2004 by Douglas Wilhelm Harder. All rights reserved.