signature | R Documentation |
Getting and setting the signature of the Clifford algebra
signature(p,q=0) is_ok_sig(s) showsig(s) ## S3 method for class 'sigobj' print(x,...)
s,p,q |
Integers, specifying number of positive elements on the
diagonal of the quadratic form, with |
x |
Object of class |
... |
Further arguments, currently ignored |
The signature functionality is modelled on lorentz::sol()
which
gets and sets the speed of light.
Clifford algebras require a bilinear form on \mjteqnR^n\mathbbR^nR^n \mjeqn\left\langle\cdot,\cdot\right\rangle<.,.>, usually written
\mjdeqn\left\langle\mathbfx,\mathbf x\right\rangle=x_1^2+x_2^2+\cdots +x_p^2-x_p+1^2-\cdots -x_p+q^2 <x,x>=x_1^2+...+x_p^2-x_p+1^2-...-x_p+q^2
where \mjeqnp+q=np+q=n. With this quadratic form the vector space is denoted \mjteqnR^p,q\mathbbR^p,qR^p,q and we say that \mjseqn(p,q) is the signature of the bilinear form \mjeqn\left\langle\cdot,\cdot\right\rangle<.,.>. This gives rise to the Clifford algebra \mjeqnC_p,qC_p,q.
If the signature is \mjseqn(p,q), then we have
\mjdeqne_i e_i = +1\, (\mboxif 1\leq i\leq p), -1\, (\mboxif p+1\leq i\leq p+q), 0\, (\mboxif i>p+q). omitted
Note that \mjseqn(p,0) corresponds to a positive-semidefinite quadratic form in which \mjeqne_ie_i=+1omitted for all \mjeqni\leq pi<=p and \mjeqne_ie_i=0omitted for all \mjseqni > p. Similarly, \mjseqn(0,q) corresponds to a negative-semidefinite quadratic form in which \mjeqne_ie_i=-1omitted for all \mjeqni\leq qi<=q and \mjeqne_ie_i=0omitted for all \mjseqni > q.
Package idiom for a strictly positive-definite quadratic form would be to specify infinite \mjseqnp [in which case \mjseqnq is irrelevant] and for a strictly negative-definite quadratic form we would need \mjeqnp=0,q=\inftyomitted.
If we specify \mjeqne_ie_i=0omitted for all \mjseqni, then the operation reduces to the wedge product of a Grassman algebra. Package idiom for this is to set \mjseqnp=q=0, but this is not recommended: use the stokes package for Grassman algebras, which is much more efficient and uses nicer idiom.
Function signature(p,q)
returns the signature silently; but
setting option show_signature
to TRUE
makes
signature()
have the side-effect of calling showsig()
,
which changes the default prompt to display the signature, much like
showSOL
in the lorentz
package. There is special
dispensation for “infinite” \mjseqnp or \mjseqnq.
Calling signature()
[that is, with no arguments] returns an
object of class sigobj
with elements corresponding to p and
q. The sigobj
class ensures that a near-infinite integer
such as .Machine$integer.max
will be printed as
“Inf
” rather than, for example,
“2147483647
”.
Function is_ok_sig()
is a helper function that checks for a
proper signature.
Robin K. S. Hankin
signature() e(1)^2 e(2)^2 signature(1) e(1)^2 e(2)^2 # note sign signature(3,4) sapply(1:10,function(i){drop(e(i)^2)}) signature(Inf) # restore default # Nice mapping from Cl(0,2) to the quaternions (loading clifford and # onion simultaneously is discouraged): # library("onion") # signature(0,2) # Q1 <- rquat(1) # Q2 <- rquat(1) # f <- function(H){Re(H)+i(H)*e(1)+j(H)*e(2)+k(H)*e(1:2)} # f(Q1)*f(Q2) - f(Q1*Q2) # zero to numerical precision # signature(Inf)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.