Learn R Programming

clifford (version 1.0-8)

grade: 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

Author

Robin K. S. Hankin

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_2344e_123 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_1e1 is 1, and the grade of e_125=e_1e_2e_5e_125=e1 e2 e5 is 3. The grade operator _r<.>_r is used to extract terms of a particular grade, with

A= A_0 + A_1 + A_2 + = _r A_r

A = <A>_0 + <A>_1 + <A>_2 +... = sum <A>_r

for any Clifford object \(A\). Thus A_r<A>_r is said to be homogenous of grade \(r\). Hestenes sometimes writes subscripts that specify grades using an overbar as in A_romitted. It is conventional to denote the zero-grade object A_0<A>_0 as simply A<A>.

We have

A+B_r= A_r + B_r A_r= A_r A_r_s= A_r_rs.

omitted; see PDF

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

x, x=x_1^2+x_2^2+ +x_p^2-x_p+1^2- -x_p+q^2

<x,x>=x_1^2+...+x_p^2-x_p+1^2-...-x_p+q^2

and a basis blade e_Ae_Ae_A with A 1,...,p+qA 1,...,p+qomitted, then

gr(e_A) = | a A 1 a p+q|

gr(e_A) = | aA 1 a p+q|

omitted

gr_+(e_A) = | a A 1 a p|

gr_+(e_A) = | aA 1 a p|

omitted

gr_-(e_A) = | a A p < a p+q|

gr_-(e_A) = | aA p < a p+q|

omitted

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.

References

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

See Also

signature, const

Examples

Run this code

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)}))

Run the code above in your browser using DataLab