A k-form is an alternating k-tensor. In the
package, k-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 a
spray
object and returns a kform
.
as.kform()
also returns a kform
but is a bit more
user-friendly than kform()
.
kform_basis()
is a low-level helper function that
returns a matrix whose rows constitute a basis for the vector space
^k(R^n)L^k(R^n) of k-forms.
kform_general()
returns a kform
object with terms
that span the space of alternating tensors.
is.kform()
returns TRUE
if its argument is a
kform
object.
d()
is an easily-typed synonym for
as.kform()
. The idea is that d(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 k-tensor is a multilinear map from V^k to
the reals, where V=R^n is a vector space. A multilinear
k-tensor T is alternating if it satisfies
T(v_1,...,v_i,...,v_j,...,v_k)=
-T(v_1,...,v_j,...,v_i,...,v_k)
omitted; see latex
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
^k(R^n)L^k(R^n) of k-forms:
=_1 i_1 < < i_k n a_i_1... i_kdx_i_1 dx_i_komitted; see latex
and indeed we have:
a_i_1... i_k=(e_i_1,...,e_i_k)
omitted; see latex
where e_j,1 j ke_j,1<=j<=k is a basis for
V.