Learn R Programming

clifford (version 1.0-2)

rcliff: Random clifford objects

Description

Random Clifford algebra elements, intended as quick “get you going” examples of clifford objects

Usage

rcliff(n=9, d=6, g=4, include.fewer=TRUE)
rblade(d=9, g=4)

Arguments

n

Number of terms

d

Dimensionality of underlying vector space

g

Maximum grade of any term

include.fewer

Boolean, with FALSE meaning to return a clifford object comprisig only terms of grade g, and default TRUE meaning to include terms with grades less than g

Details

Perwass gives the following lemma:

Given blades \(A_{\langle r\rangle}, B_{\langle s\rangle}, C_{\langle t\rangle}\), then

$$ \langle A_{\langle r\rangle} B_{\langle s\rangle} C_{\langle t\rangle} \rangle_0 = \langle C_{\langle t\rangle} A_{\langle r\rangle} B_{\langle s\rangle} \rangle_0 $$

In the proof he notes in an intermediate step that

$$ \langle A_{\langle r\rangle} B_{\langle s\rangle} \rangle_t * C_{\langle t\rangle} = C_{\langle t\rangle} * \langle A_{\langle r\rangle} B_{\langle s\rangle} \rangle_t = \langle C_{\langle t\rangle} A_{\langle r\rangle} B_{\langle s\rangle} \rangle_0. $$

Package idiom is shown in the examples.

Examples

Run this code
# NOT RUN {
rcliff()
rcliff(d=3,g=2)
rcliff(3,10,7)
rcliff(3,10,7,include=TRUE)

x1 <- rcliff()
x2 <- rcliff()
x3 <- rcliff()

x1*(x2*x3) == (x1*x2)*x3  # should be TRUE


rblade()

# We can invert blades easily:
a <- rblade()
ainv <- rev(a)/scalprod(a)

zap(a*ainv)  # should be = 1
zap(ainv*a)  # should be = 1

# Perwass 2009, lemma 3.9:


A <- rblade(g=4)  # r=4
B <- rblade(g=5)  # s=5
C <- rblade(g=6)  # t=6

grade(A*B*C,0)-grade(C*A*B,0)   # geometric product uses '*'

# Intermediate step

x1 <- grade(A*B,7) %star% C
x2 <- C %star% grade(A*B,7)
x3 <- grade(C*A*B,0)

max(x1,x2,x3) - min(x1,x2,x3)   # should be small

# }

Run the code above in your browser using DataLab