Deal with terms
term.Rd
By basis vector, I mean one of the basis vectors of the underlying vector space \(R^n\), that is, an element of the set \(\left\lbrace e_1,\ldots,e_n\right\rbrace\). A term is a wedge product of basis vectors (or a geometric product of linearly independent basis vectors), something like \(e_{12}\) or \(e_{12569}\). Sometimes I use the word “term” to mean a wedge product of basis vectors together with its associated coefficient: so \(7e_{12}\) would be described as a term.
From Perwass: a blade is the outer product of a number of 1-vectors (or, equivalently, the wedge product of linearly independent 1-vectors). Thus \(e_{12}=e_1\wedge e_2\) and \(e_{12} + e_{13}=e_1\wedge(e_2+e_3)\) are blades, but \(e_{12} + e_{34}\) is not.
Function rblade()
, documented at rcliff.Rd
, returns a
random blade.
Function is.blade()
is not currently implemented: there is no
easy way to detect whether a Clifford object is a product of 1-vectors.
Details
Functions
terms()
andcoeffs()
are the extraction methods. These are unordered vectors but the ordering is consistent between them (an extended discussion of this phenomenon is presented in themvp
package).Function
term()
returns a clifford object that comprises a single term with unit coefficient.Function
is.basisterm()
returnsTRUE
if its argument has only a single term, or is a nonzero scalar; the zero clifford object is not considered to be a basis term.
Examples
x <- rcliff()
terms(x)
#> A disord object with hash 7626c66c33b83172f7fd824a9fa20059caa7ca2c and elements
#> [[1]]
#> integer(0)
#>
#> [[2]]
#> [1] 1
#>
#> [[3]]
#> [1] 2
#>
#> [[4]]
#> [1] 4
#>
#> [[5]]
#> [1] 3 4 5
#>
#> [[6]]
#> [1] 1 3 4 5
#>
#> [[7]]
#> [1] 6
#>
#> [[8]]
#> [1] 1 2 3 6
#>
#> [[9]]
#> [1] 1 3 5 6
#>
#> (in some order)
is.basisblade(x)
#> [1] FALSE
a <- as.1vector(1:3)
b <- as.1vector(c(0,0,0,12,13))
a %^% b # a blade
#> Element of a Clifford algebra, equal to
#> + 12e_14 + 24e_24 + 36e_34 + 13e_15 + 26e_25 + 39e_35