grade {clifford}R Documentation

The grade of a clifford object

Description

The grade of a term is the number of basis vectors in it.

Usage

grade(C, n, drop=TRUE)
grade(C,n) <- value
grades(x)
gradesplus(x)
gradesminus(x)
gradeszero(x)

Arguments

C, x

Clifford object

n

Integer vector specifying grades to extract

value

Replacement value, a numeric vector

drop

Boolean, with default TRUE meaning to coerce a constant Clifford object to numeric, and FALSE meaning not to

Details

A term is a single expression in a Clifford object. It has a coefficient and is described by the basis vectors it comprises. Thus \(4e_{234}\) is a term but \(e_3 + e_5\) is not.

The grade of a term is the number of basis vectors in it. Thus the grade of \(e_1\) is 1, and the grade of \(e_{125}=e_1e_2e_5\) is 3. The grade operator \(\left\langle\cdot\right\rangle_r\) is used to extract terms of a particular grade, with

\[ A=\left\langle A\right\rangle_0 + \left\langle A\right\rangle_1 + \left\langle A\right\rangle_2 + \cdots = \sum_r\left\langle A\right\rangle_r \]

for any Clifford object A. Thus \(\left\langle A\right\rangle_r\) is said to be homogenous of grade r. Hestenes sometimes writes subscripts that specify grades using an overbar as in \(\left\langle A\right\rangle_{\overline{r}}\). It is conventional to denote the zero-grade object \(\left\langle A\right\rangle_0\) as simply \(\left\langle A\right\rangle\).

We have

\[ \left\langle A+B\right\rangle_r=\left\langle A\right\rangle_r + \left\langle B\right\rangle_r\qquad \left\langle\lambda A\right\rangle_r=\lambda\left\langle A\right\rangle_r\qquad \left\langle\left\langle A\right\rangle_r\right\rangle_s=\left\langle A\right\rangle_r\delta_{rs}. \]

Function grades() returns an (unordered) vector specifying the grades of the constituent terms. Function grades<-() allows idiom such as grade(x,1:2) <- 7 to operate as expected [here to set all coefficients of terms with grades 1 or 2 to value 7].

Function gradesplus() returns the same but counting only basis vectors that square to +1, and gradesminus() counts only basis vectors that square to -1. Function signature() controls which basis vectors square to +1 and which to -1.

From Perwass, page 57, given a bilinear form

\[\left\langle{\mathbf x},{\mathbf x}\right\rangle=x_1^2+x_2^2+\cdots +x_p^2-x_{p+1}^2-\cdots -x_{p+q}^2 \]

and a basis blade \(e_\mathbb{A}\) with \(\mathbb{A}\subseteq\left\lbrace 1,\ldots,p+q\right\rbrace\), then

\[ \mathrm{gr}(e_\mathbb{A}) = \left|\left\lbrace a\in\mathbb{A}\colon 1\leq a\leq p+q\right\rbrace\right| \] \[ \mathrm{gr}_{+}(e_\mathbb{A}) = \left|\left\lbrace a\in\mathbb{A}\colon 1\leq a\leq p\right\rbrace\right| \] \[ \mathrm{gr}_{-}(e_\mathbb{A}) = \left|\left\lbrace a\in\mathbb{A}\colon p < a\leq p+q\right\rbrace\right| \]

Function gradeszero() counts only the basis vectors squaring to zero (I have not seen this anywhere else, but it is a logical suggestion).

If the signature is zero, then the Clifford algebra reduces to a Grassman algebra and products match the wedge product of exterior calculus. In this case, functions gradesplus() and gradesminus() return NA.

Function grade(C,n) returns a clifford object with just the elements of grade g, where g %in% n.

The zero grade term, grade(C,0), is given more naturally by const(C).

Function c_grade() is a helper function that is documented at Ops.clifford.Rd.

Note

In the C code, “term” has a slightly different meaning, referring to the vectors without the associated coefficient.

Author(s)

Robin K. S. Hankin

References

C. Perwass 2009. “Geometric algebra with applications in engineering”. Springer.

See Also

signature, const

Examples


a <- clifford(sapply(seq_len(7),seq_len),seq_len(7))
a
grades(a)
grade(a,5)


signature(2,2)
x <- rcliff()
drop(gradesplus(x) + gradesminus(x) + gradeszero(x) - grades(x))

a <- rcliff()
a == Reduce(`+`,sapply(unique(grades(a)),function(g){grade(a,g)}))


[Package clifford version 1.0-8 Index]