kform {stokes} | R Documentation |
k-forms
Description
Functionality for dealing with -forms
Usage
kform(S)
as.kform(M,coeffs,lose=TRUE)
kform_basis(n, k)
kform_general(W,k,coeffs,lose=TRUE)
is.kform(x)
d(i)
e(i,n)
## S3 method for class 'kform'
as.function(x,...)
Arguments
n |
Dimension of the vector space |
i |
Integer |
k |
A |
W |
Integer vector of dimensions |
M , coeffs |
Index matrix and coefficients for a |
S |
Object of class |
lose |
Boolean, with default |
x |
Object of class |
... |
Further arguments, currently ignored |
Details
A -form is an alternating
-tensor. In the
package,
-forms are represented as sparse arrays
(
spray
objects), but with a class of c("kform",
"spray")
. The constructor function kform()
takes a
spray
object and returns a kform
object: it ensures that
rows of the index matrix are strictly nonnegative integers, have no
repeated entries, and are strictly increasing. Function
as.kform()
is more user-friendly.
kform()
is the constructor function. It takes aspray
object and returns akform
.as.kform()
also returns akform
but is a bit more user-friendly thankform()
.kform_basis()
is a low-level helper function that returns a matrix whose rows constitute a basis for the vector spaceof
-forms.
kform_general()
returns akform
object with terms that span the space of alternating tensors.is.kform()
returnsTRUE
if its argument is akform
object.d()
is an easily-typed synonym foras.kform()
. The idea is thatd(1) = dx
,d(2)=dy
,d(5)=dx^5
, etc. Also note that, for example,d(1:3)=dx^dy^dz
, the volume form.
Recall that a -tensor is a multilinear map from
to the reals, where
is a vector space.
A multilinear
-tensor
is alternating if it
satisfies
In the package, an object of class kform
is an efficient
representation of an alternating tensor.
Function kform_basis()
is a low-level helper function that
returns a matrix whose rows constitute a basis for the vector space
of
-forms:
and indeed we have:
where is a basis for
.
Value
All functions documented here return a kform
object except
as.function.kform()
, which returns a function, and
is.kform()
, which returns a Boolean, and e()
, which
returns a conjugate basis to that of d()
.
Note
Hubbard and Hubbard use the term “-form”, but Spivak
does not.
Author(s)
Robin K. S. Hankin
References
Hubbard and Hubbard; Spivak
See Also
Examples
as.kform(cbind(1:5,2:6),rnorm(5))
kform_general(1:4,2,coeffs=1:6) # used in electromagnetism
K1 <- as.kform(cbind(1:5,2:6),rnorm(5))
K2 <- kform_general(5:8,2,1:6)
K1^K2 # or wedge(K1,K2)
d(1:3)
dx^dy^dz # same thing
d(sample(9)) # coeff is +/-1 depending on even/odd permutation of 1:9
f <- as.function(wedge(K1,K2))
E <- matrix(rnorm(32),8,4)
f(E) + f(E[,c(1,3,2,4)]) # should be zero by alternating property
options(kform_symbolic_print = 'd')
(d(5)+d(7)) ^ (d(2)^d(5) + 6*d(4)^d(7))
options(kform_symbolic_print = NULL) # revert to default