The grade of a clifford object
grade.Rd
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)
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 \(A\subseteq\left\lbrace 1,\ldots,p+q\right\rbrace\), then
$$ \mathrm{gr}(e_A) = \left|\left\lbrace a\in A\colon 1\leq a\leq p+q\right\rbrace\right| $$
$$ \mathrm{gr}_{+}(e_A) = \left|\left\lbrace a\in A\colon 1\leq a\leq p\right\rbrace\right| $$
$$ \mathrm{gr}_{-}(e_A) = \left|\left\lbrace a\in 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
Grassmann 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.
Examples
a <- clifford(sapply(seq_len(7),seq_len),seq_len(7))
a
#> Element of a Clifford algebra, equal to
#> + 1e_1 + 2e_12 + 3e_123 + 4e_1234 + 5e_12345 + 6e_123456 + 7e_1234567
grades(a)
#> A disord object with hash 185ca524fb71fa2ae28566b137978e475c1aa00f and elements
#> [1] 1 2 3 4 5 6 7
#> (in some order)
grade(a,5)
#> Element of a Clifford algebra, equal to
#> + 5e_12345
signature(2,2)
x <- rcliff()
drop(gradesplus(x) + gradesminus(x) + gradeszero(x) - grades(x))
#> [1] 0 0 0 0 0 0 0 0 0 0
a <- rcliff()
a == Reduce(`+`,sapply(unique(grades(a)),function(g){grade(a,g)}))
#> [1] TRUE