`dx`

, `dy`

,
and `dz`

in the `stokes`

packageTo cite the `stokes`

package in publications, please use
Hankin (2022). Convenience objects
`dx`

, `dy`

, and `dz`

, corresponding to
elementary differential forms, are discussed here (basis vectors \(e_1\), \(e_2\), \(e_2\) are discussed in
`ex.Rmd`

). Spivak (1965), in a
memorable passage, states:

**Fields and forms**

If \(f\colon\mathbb{R}^n\longrightarrow\mathbb{R}\) is differentiable, then \(Df(p)\in\Lambda^1(\mathbb{R}^n)\). By a minor modification we therefore obtain a \(1\)-form \(\mathrm{d}f\), defined by

\[\mathrm{d}f(p)(v_p)=Df(p)(v).\]

Let us consider in particular the \(1\)-forms \(\mathrm{d}\pi^i\) ^{1}. It is customary to
let \(x^i\) denote the
*function* \(\pi^i\) (on \(\mathbb{R}^3\) we often denote \(x^1\), \(x^2\), and \(x^3\) by \(x\), \(y\), and \(z\)) \(\ldots\) Since \(\mathrm{d}x^i(p)(v_p)=\mathrm{d}\pi^i(p)(v_p)=D\pi^i(p)(v)=v^i\),
we see that \(\mathrm{d}x^1(p),\ldots,\mathrm{d}x^n(p)\)
is just the dual basis to \((e_1)_p,\ldots,
(e_n)_p\).

**- Michael Spivak, 1969** *(Calculus on Manifolds, Perseus books).
Page 89*

Spivak goes on to observe that every \(k\)-form \(\omega\) can be written \(\omega=\sum_{i_1 < \cdots <
i_k}\omega_{i_1,\ldots
i_k}\mathrm{d}x^{i_1}\wedge\cdots\wedge\mathrm{d}x^{i_k}\). If
working in \(\mathbb{R}^3\), we have
three elementary forms \(\mathrm{d}x\),
\(\mathrm{d}y\), and \(\mathrm{d}z\); in the package we have the
pre-defined objects `dx`

, `dy`

, and
`dz`

. These are convenient for reproducing textbook results.
We start with some illustrations of the package print method.

```
## An alternating linear map from V^1 to R with V=R^1:
## val
## 1 = 1
```

This is somewhat opaque and difficult to understand. It is easier to start with a more complicated example: take \(\mathrm{d}x\wedge\mathrm{d}y -7\mathrm{d}x\wedge\mathrm{d}z + 3\mathrm{d}y\wedge\mathrm{d}z\):

```
## An alternating linear map from V^2 to R with V=R^3:
## val
## 1 3 = -7
## 2 3 = 3
## 1 2 = 1
```

We see three rows for the three elementary components. Taking the row with coefficient \(-7\) [which would be \(-7\mathrm{d}x\wedge\mathrm{d}z\)], this maps \(\left(\mathbb{R}^3\right)^2\) to \(\mathbb{R}\) and we have

\[(-7\mathrm{d}x\wedge\mathrm{d}z)\left(\begin{pmatrix} u_1\\u_2\\u_3\end{pmatrix}, \begin{pmatrix}v_1\\v_2\\v_3\end{pmatrix}\right)= -7\det\begin{pmatrix}u_1&v_1\\u_3&v_3\end{pmatrix}\]

Armed with this familiar fact, we can interpret \(dx\) as a map from \(\left(\mathbb{R}^3\right)^1\) to \(\mathbb{R}\) with

\[\mathrm{d}x\left(\begin{pmatrix} u_1\\u_2\\u_3\end{pmatrix} \right)= \det\begin{pmatrix}u_1\end{pmatrix}=u_1\]

or, in other words, \(\mathrm{d}x\) picks out the first component of its vector (as the print method gives, albeit obscurely). This is easily shown in the package:

`## [1] 113`

We might want to verify that \(\mathrm{d}x\wedge\mathrm{d}y=-\mathrm{d}y\wedge\mathrm{d}x\):

`## [1] TRUE`

The print method is configurable and can display kforms in symbolic
form. For working with `dx dy dz`

we may set option
`kform_symbolic_print`

to `dx`

:

Then the results of calculations are more natural:

```
## An alternating linear map from V^1 to R with V=R^1:
## + dx
```

```
## An alternating linear map from V^2 to R with V=R^3:
## + dx^dy +56 dy^dz
```

However, this setting can be confusing if we work with \(\mathrm{d}x^i,i>3\), for the print method runs out of alphabet:

```
## An alternating linear map from V^3 to R with V=R^7:
## +6 dy^dNA^dNA +5 dy^dNA^dNA -9 dNA^dNA^dNA +4 dx^dz^dNA +7 dx^dNA^dNA -3 dy^dz^dNA -8 dx^dNA^dNA +2 dx^dy^dNA + dx^dNA^dNA
```

Above, we see the use of `NA`

because there is no defined
symbol.

Function `hodge()`

returns the Hodge dual:

```
## An alternating linear map from V^1 to R with V=R^3:
## +13 dx + dz
```

Note that calling `hodge(dx)`

can be confusing:

`## [1] 1`

This returns a scalar because `dx`

is interpreted as a
one-form on one-dimensional space, which is a scalar form. One usually
wants the result in three dimensions:

```
## An alternating linear map from V^2 to R with V=R^3:
## + dy^dz
```

This is further discussed in the `dovs`

vignette.

It is possible to create these objects using package idiom:

`## [1] TRUE`

Hankin, R. K. S. 2022. “Stokes’s Theorem in
R.” arXiv. https://doi.org/10.48550/ARXIV.2210.17008.

Spivak, M. 1965. *Calculus on Manifolds*. Addison-Wesley.

Spivak introduces the \(\pi^i\) notation on page 11: “if \(\pi\colon\mathbb{R}^n\longrightarrow\mathbb{R}^n\) is the identity function, \(\pi(x)=x\), then [its components are] \(\pi^i(x)=x^i\); the function \(\pi^i\) is called the \(i^\mathrm{th}\)

*projection function*”↩︎