jordan-package: A Suite of Routines for Working with Jordan Algebras

jordan-packageR 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:

  1. Real symmetric matrices, class real_symmetric_matrix, abbreviated in the package to rsm

  2. Complex Hermitian matrices, class complex_herm_matrix, abbreviated to chm

  3. Quaternionic Hermitian matrices, class quaternion_herm_matrix, abbreviated to qhm

  4. Albert algebras, the space of 3\times 3 octonionic matrices, class albert

  5. 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


jordan documentation built on July 4, 2024, 5:06 p.m.