jordan-package {jordan} | R Documentation |
A Suite of Routines for Working with Jordan Algebras
Description
A Jordan algebra is an algebraic object originally designed to study observables in quantum mechanics. Jordan algebras are commutative but non-associative; they satisfy the Jordan identity. The package follows the ideas and notation of K. McCrimmon (2004, ISBN:0-387-95447-3) "A Taste of Jordan Algebras". To cite the package in publications, please use Hankin (2023) <doi:10.48550/arXiv.2303.06062>.
Details
A Jordan algebra is a non-associative algebra over the reals with a multiplication that satisfies the following identities:
xy=yx
(xy)(xx) = x(y(xx))
(the second identity is known as the Jordan identity). In literature
one usually indicates multiplication by juxtaposition but one
sometimes sees x\circ y
. Package idiom is to use an
asterisk, as in x*y
. There are five types of Jordan algebras:
Real symmetric matrices, class
real_symmetric_matrix
, abbreviated in the package torsm
Complex Hermitian matrices, class
complex_herm_matrix
, abbreviated tochm
Quaternionic Hermitian matrices, class
quaternion_herm_matrix
, abbreviated toqhm
Albert algebras, the space of
3\times 3
octonionic matrices, classalbert
Spin factors, class
spin
(of course, the first two are special cases of the next). The
jordan
package provides functionality to manipulate jordan
objects using natural R idiom.
Objects of all these classes are stored in dataframe (technically, a matrix) form with columns being elements of the jordan algebra.
The first four classes are matrix-based in the sense that the
algebraic objects are symmetric or Hermitian matrices (the S4
class is “jordan_matrix
”). The fifth class, spin
factors, is not matrix based.
One can extract the symmetric or Hermitian matrix from objects of
class jordan_matrix
using as.list()
, which will return a
list of symmetric or Hermitian matrices. A function name preceded by
a “1” (for example as.1matrix()
or vec_to_qhm1()
)
means that it deals with a single (symmetric or Hermitian) matrix.
Algebraically, the matrix form of jordan_matrix
objects is
redundant (for example, a real_symmetric_matrix
of size
n\times n
has only n(n+1)/2
independent entries,
corresponding to the upper triangular elements).
Author(s)
Robin K. S. Hankin [aut, cre] (<https://orcid.org/0000-0001-5982-0415>)
Maintainer: Robin K. S. Hankin <hankin.robin@gmail.com>
References
K. McCrimmon 1978. “Jordan algebras and their applications”. Bulletin of the American Mathematical Society, Volume 84, Number 4.
Examples
rrsm() # Random Real Symmetric matrices
rchm() # Random Complex Hermitian matrices
rqhm() # Random Quaternionic Hermitian matrices
ralbert() # Random Albert algebra
rspin() # Random spin factor
x <- rqhm(n=1)
y <- rqhm(n=1)
z <- rqhm(n=1)
x/1.2 + 0.3*x*y # Arithmetic works as expected ...
x*(y*z) -(x*y)*z # ... but '*' is not associative
## Verify the Jordan identity for type 3 algebras:
LHS <- (x*y)*(x*x)
RHS <- x*(y*(x*x))
diff <- LHS-RHS # zero to numerical precision
diff[1,drop=TRUE] # result in matrix form