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.