Skip to content

Commit

Permalink
$ → `` for math, \mathbb R → ℝ
Browse files Browse the repository at this point in the history
  • Loading branch information
kellertuer committed Jan 20, 2024
1 parent 1e9da05 commit 22717df
Show file tree
Hide file tree
Showing 40 changed files with 149 additions and 149 deletions.
2 changes: 1 addition & 1 deletion docs/src/features/atlases.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# [Atlases and charts](@id atlases_and_charts)

Atlases on an ``n``-dimensional manifold $\mathcal M$ are collections of charts ``\mathcal A = \{(U_i, φ_i) \colon i \in I\}``, where ``I`` is a (finite or infinte) index family, such that ``U_i \subseteq \mathcal M`` is an open set and each chart ``φ_i: U_i → ℝ^n`` is a homeomorphism. This means, that ``φ_i`` is bijective – sometimes also called one-to-one and onto - and continuous, and its inverse ``φ_i^{-1}`` is continuous as well.
Atlases on an ``n``-dimensional manifold ``mathcal M``are collections of charts ``\mathcal A = \{(U_i, φ_i) \colon i \in I\}``, where ``I`` is a (finite or infinte) index family, such that ``U_i \subseteq \mathcal M`` is an open set and each chart ``φ_i: U_i → ℝ^n`` is a homeomorphism. This means, that ``φ_i`` is bijective – sometimes also called one-to-one and onto - and continuous, and its inverse ``φ_i^{-1}`` is continuous as well.
The inverse ``φ_i^{-1}`` is called (local) parametrization.
The resulting _parameters_ ``a=φ(p)`` of ``p`` (with respect to the chart ``φ``) are in the literature also called “(local) coordinates”. To distinguish the parameter ``a`` from [`get_coordinates`](@ref) in a basis, we use the terminology parameter in this package.

Expand Down
2 changes: 1 addition & 1 deletion docs/src/features/utilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Ease of notation

The following terms introduce a nicer notation for some operations, for example using the ∈ operator, $p ∈ \mathcal M$, to determine whether $p$ is a point on the [`AbstractManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#ManifoldsBase.AbstractManifold) $\mathcal M$.
The following terms introduce a nicer notation for some operations, for example using the ∈ operator, `` ∈ \mathcal M`` to determine whether ``p`` is a point on the [`AbstractManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#ManifoldsBase.AbstractManifold) ``\mathcal M``.

````@docs
in
Expand Down
2 changes: 1 addition & 1 deletion docs/src/manifolds/connection.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# [Connection manifold](@id ConnectionSection)

A connection manifold always consists of a [topological manifold](https://en.wikipedia.org/wiki/Topological_manifold) together with a [connection](https://en.wikipedia.org/wiki/Connection_(mathematics)) $\Gamma$.
A connection manifold always consists of a [topological manifold](https://en.wikipedia.org/wiki/Topological_manifold) together with a [connection](https://en.wikipedia.org/wiki/Connection_(mathematics)) ``\Gamma``.

However, often there is an implicitly assumed (default) connection, like the [`LeviCivitaConnection`](@ref) connection on a Riemannian manifold.
It is not necessary to use this decorator if you implement just one (or the first) connection.
Expand Down
2 changes: 1 addition & 1 deletion docs/src/manifolds/essentialmanifold.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Essential Manifold
The essential manifold is modeled as an [`AbstractPowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractPowerManifold) of the $3×3$ [`Rotations`](@ref) and uses [`NestedPowerRepresentation`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.NestedPowerRepresentation).
The essential manifold is modeled as an [`AbstractPowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractPowerManifold) of the ``3×3`` [`Rotations`](@ref) and uses [`NestedPowerRepresentation`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.NestedPowerRepresentation).

```@autodocs
Modules = [Manifolds]
Expand Down
4 changes: 2 additions & 2 deletions docs/src/manifolds/euclidean.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# [Euclidean space](@id EuclideanSection)

The Euclidean space $ℝ^n$ is a simple model space, since it has curvature constantly zero everywhere; hence, nearly all operations simplify.
The easiest way to generate an Euclidean space is to use a field, i.e. [`AbstractNumbers`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#number-system), e.g. to create the $ℝ^n$ or $ℝ^{n×n}$ you can simply type `M = ℝ^n` or `ℝ^(n,n)`, respectively.
The Euclidean space ``ℝ^n`` is a simple model space, since it has curvature constantly zero everywhere; hence, nearly all operations simplify.
The easiest way to generate an Euclidean space is to use a field, i.e. [`AbstractNumbers`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#number-system), e.g. to create the ``ℝ^n`` or ``ℝ^{n×n}`` you can simply type `M = ℝ^n` or `ℝ^(n,n)`, respectively.

```@autodocs
Modules = [Manifolds]
Expand Down
6 changes: 3 additions & 3 deletions docs/src/manifolds/fiber_bundle.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# [Fiber bundles](@id FiberBundleSection)

Fiber bundle $E$ is a manifold that is built on top of another manifold $\mathcal M$ (base space).
It is characterized by a continuous function $Π : E → \mathcal M$. For each point $p ∈ \mathcal M$ the preimage of $p$ by $Π$, $Π^{-1}(\{p\})$ is called a fiber $F$.
Fiber bundle ``E`` is a manifold that is built on top of another manifold ``\mathcal M`` (base space).
It is characterized by a continuous function ``Π : E → \mathcal M``. For each point ``p ∈ \mathcal M`` the preimage of ``p`` by ``Π``, ``Π^{-1}(\{p\})`` is called a fiber ``F``.
Bundle projection can be performed using function [`bundle_projection`](@ref).

`Manifolds.jl` primarily deals with the case of trivial bundles, where $E$ can be topologically identified with a product $M×F$.
`Manifolds.jl` primarily deals with the case of trivial bundles, where ``E`` can be topologically identified with a product ``M×F``.

[Vector bundles](@ref VectorBundleSection) is a special case of a fiber bundle. Other examples include unit tangent bundle. Note that in general fiber bundles don't have a canonical Riemannian structure but can at least be equipped with an [Ehresmann connection](https://en.wikipedia.org/wiki/Ehresmann_connection), providing notions of parallel transport and curvature.

Expand Down
6 changes: 3 additions & 3 deletions docs/src/manifolds/graph.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Graph manifold

For a given graph $G(V,E)$ implemented using [`Graphs.jl`](https://juliagraphs.github.io/Graphs.jl/latest/), the [`GraphManifold`](@ref) models a [`PowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.PowerManifold) either on the nodes or edges of the graph, depending on the [`GraphManifoldType`](@ref).
i.e., it's either a $\mathcal M^{\lvert V \rvert}$ for the case of a vertex manifold or a $\mathcal M^{\lvert E \rvert}$ for the case of a edge manifold.
For a given graph ``G(V,E)`` implemented using [`Graphs.jl`](https://juliagraphs.github.io/Graphs.jl/latest/), the [`GraphManifold`](@ref) models a [`PowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.PowerManifold) either on the nodes or edges of the graph, depending on the [`GraphManifoldType`](@ref).
i.e., it's either a ``\mathcal M^{\lvert V \rvert}`` for the case of a vertex manifold or a ``\mathcal M^{\lvert E \rvert}`` for the case of a edge manifold.

## Example

To make a graph manifold over $ℝ^2$ with three vertices and two edges, one can use
To make a graph manifold over ``ℝ^2`` with three vertices and two edges, one can use

```@example
using Manifolds
Expand Down
4 changes: 2 additions & 2 deletions docs/src/manifolds/metric.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Metric manifold

A Riemannian manifold always consists of a [topological manifold](https://en.wikipedia.org/wiki/Topological_manifold) together with a smoothly varying metric $g$.
A Riemannian manifold always consists of a [topological manifold](https://en.wikipedia.org/wiki/Topological_manifold) together with a smoothly varying metric ``g``.

However, often there is an implicitly assumed (default) metric, like the usual inner product on [`Euclidean`](@ref) space.
This decorator takes this into account.
Expand All @@ -17,7 +17,7 @@ Pages = ["metric.md"]
Depth = 2
```

Note that a metric manifold is has a [`IsConnectionManifold`](@ref) trait referring to the [`LeviCivitaConnection`](@ref) of the metric $g$, and thus a large part of metric manifold's functionality relies on this.
Note that a metric manifold is has a [`IsConnectionManifold`](@ref) trait referring to the [`LeviCivitaConnection`](@ref) of the metric ``g``, and thus a large part of metric manifold's functionality relies on this.

Let's first look at the provided types.

Expand Down
4 changes: 2 additions & 2 deletions docs/src/manifolds/oblique.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Oblique manifold

The oblique manifold $\mathcal{OB}(n,m)$ is modeled as an [`AbstractPowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractPowerManifold) of the (real-valued) [`Sphere`](@ref) and uses [`ArrayPowerRepresentation`](@ref).
Points on the torus are hence matrices, $x ∈ ℝ^{n,m}$.
The oblique manifold ``\mathcal{OB}(n,m)`` is modeled as an [`AbstractPowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractPowerManifold) of the (real-valued) [`Sphere`](@ref) and uses [`ArrayPowerRepresentation`](@ref).
Points on the torus are hence matrices, ``x ∈ ℝ^{n,m}``.

```@autodocs
Modules = [Manifolds]
Expand Down
8 changes: 4 additions & 4 deletions docs/src/manifolds/power.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# [Power manifold](@id PowerManifoldSection)

A power manifold is based on a [`AbstractManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#ManifoldsBase.AbstractManifold) $\mathcal M$ to build a $\mathcal M^{n_1×n_2 ×⋯×n_m}$.
In the case where $m=1$ we can represent a manifold-valued vector of data of length $n_1$, for example a time series.
The case where $m=2$ is useful for representing manifold-valued matrices of data of size $n_1×n_2$, for example certain types of images.
A power manifold is based on a [`AbstractManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#ManifoldsBase.AbstractManifold) ``\mathcal M`` to build a ``\mathcal M^{n_1×n_2 ×⋯×n_m}``.
In the case where ``m=1`` we can represent a manifold-valued vector of data of length ``n_1``, for example a time series.
The case where ``m=2`` is useful for representing manifold-valued matrices of data of size ``n_1×n_2``, for example certain types of images.

There are three available representations for points and vectors on a power manifold:

Expand All @@ -17,7 +17,7 @@ Below are some examples of usage of these representations.
There are two ways to store the data: in a multidimensional array or in a nested array.

Let's look at an example for both.
Let $\mathcal M$ be `Sphere(2)` the 2-sphere and we want to look at vectors of length 4.
Let ``\mathcal M`` be `Sphere(2)` the 2-sphere and we want to look at vectors of length 4.

### `ArrayPowerRepresentation`

Expand Down
4 changes: 2 additions & 2 deletions docs/src/manifolds/product.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# [Product manifold](@id ProductManifoldSection)

Product manifold $\mathcal M = \mathcal{M}_1 × \mathcal{M}_2 × … × \mathcal{M}_n$ of manifolds $\mathcal{M}_1, \mathcal{M}_2, …, \mathcal{M}_n$.
Points on the product manifold can be constructed using `ArrayPartition` (from `RecursiveArrayTools.jl`) with canonical projections $Π_i : \mathcal{M} → \mathcal{M}_i$ for $i ∈ 1, 2, …, n$ provided by [`submanifold_component`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/metamanifolds/#ManifoldsBase.submanifold_component-Tuple).
Product manifold ``\mathcal M = \mathcal{M}_1 × \mathcal{M}_2 × … × \mathcal{M}_n`` of manifolds ``\mathcal{M}_1, \mathcal{M}_2, …, \mathcal{M}_n``.
Points on the product manifold can be constructed using `ArrayPartition` (from `RecursiveArrayTools.jl`) with canonical projections ``Π_i : \mathcal{M} → \mathcal{M}_i`` for ``i ∈ 1, 2, …, n`` provided by [`submanifold_component`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/metamanifolds/#ManifoldsBase.submanifold_component-Tuple).

```@autodocs
Modules = [Manifolds]
Expand Down
12 changes: 6 additions & 6 deletions docs/src/manifolds/rotations.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Rotations

The manifold $\mathrm{SO}(n)$ of orthogonal matrices with determinant $+1$ in $ℝ^{n×n}$, i.e.
The manifold ``\mathrm{SO}(n)`` of orthogonal matrices with determinant ``+1`` in ``ℝ^{n×n}``, i.e.

$\mathrm{SO}(n) = \bigl\{R ∈ ℝ^{n×n} \big| R R^{\mathrm{T}} =
``\mathrm{SO}(n) = \bigl\{R ∈ ℝ^{n×n} \big| R R^{\mathrm{T}} =
R^{\mathrm{T}}R = I_n, \det(R) = 1 \bigr\}$

The Lie group $\mathrm{SO}(n)$ is a subgroup of the orthogonal group $\mathrm{O}(n)$ and also known as the special orthogonal group or the set of rotations group.
The Lie group ``\mathrm{SO}(n)`` is a subgroup of the orthogonal group ``\mathrm{O}(n)`` and also known as the special orthogonal group or the set of rotations group.
See also [`SpecialOrthogonal`](@ref), which is this manifold equipped with the group operation.

The tangent space to a point ``p ∈ \mathrm{SO}(n)`` is given by
Expand All @@ -23,9 +23,9 @@ In the notation above, this means we just store the component ``Y`` of ``X``.
This convention allows for more efficient operations on tangent vectors.
Tangent spaces at different points are different vector spaces.

Let $L_R: \mathrm{SO}(n) → \mathrm{SO}(n)$ where $R ∈ \mathrm{SO}(n)$ be the left-multiplication by $R$, that is $L_R(S) = RS$.
The tangent space at rotation $R$, $T_R \mathrm{SO}(n)$, is related to the tangent space at the identity rotation $I_n$ by the differential of $L_R$ at identity, $(\mathrm{d}L_R)_{I_n} : T_{I_n} \mathrm{SO}(n) → T_R \mathrm{SO}(n)$.
To convert the tangent vector representation at the identity rotation $X ∈ T_{I_n} \mathrm{SO}(n)$ (i.e., the default) to the matrix representation of the corresponding tangent vector $Y$ at a rotation $R$ use the [`embed`](@ref embed(::Manifolds.Rotations, :Any...)) which implements the following multiplication: $Y = RX ∈ T_R \mathrm{SO}(n)$.
Let ``L_R: \mathrm{SO}(n) → \mathrm{SO}(n)`` where ``R ∈ \mathrm{SO}(n)`` be the left-multiplication by ``R``, that is ``L_R(S) = RS``.
The tangent space at rotation ``R``, ``T_R \mathrm{SO}(n)``, is related to the tangent space at the identity rotation ``I_n`` by the differential of ``L_R`` at identity, $(\mathrm{d}L_R)_{I_n} : T_{I_n} \mathrm{SO}(n) → T_R \mathrm{SO}(n)``.
To convert the tangent vector representation at the identity rotation ``X ∈ T_{I_n} \mathrm{SO}(n)`` (i.e., the default) to the matrix representation of the corresponding tangent vector ``Y`` at a rotation ``R`` use the [`embed`](@ref embed(::Manifolds.Rotations, :Any...)) which implements the following multiplication: ``Y = RX ∈ T_R \mathrm{SO}(n)``.
You can compare the functions [`log`](@ref log(::Manifolds.Rotations, :Any...)) and [`exp`](@ref exp(::Manifolds.Rotations, ::Any...)) to see how it works in practice.

Several common functions are also implemented together with [orthogonal and unitary matrices](@ref generalunitarymatrices).
Expand Down
4 changes: 2 additions & 2 deletions docs/src/manifolds/sphere.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
AbstractSphere
```

The classical sphere, i.e. unit norm (real- or complex-valued) vectors can be generated as usual: to create the 2-dimensional sphere (in $ℝ^3$), use `Sphere(2)` and `Sphere(2,ℂ)`, respectively.
The classical sphere, i.e. unit norm (real- or complex-valued) vectors can be generated as usual: to create the 2-dimensional sphere (in ``ℝ^3``), use `Sphere(2)` and `Sphere(2,ℂ)`, respectively.

```@docs
Sphere
```

For the higher-dimensional arrays, for example unit (Frobenius) norm matrices, the manifold is generated using the size of the matrix.
To create the unit sphere of $3×2$ real-valued matrices, write `ArraySphere(3,2)` and the complex case is done – as for the [`Euclidean`](@ref) case – with an keyword argument `ArraySphere(3,2; field=ℂ)`. This case also covers the classical sphere as a special case, but you specify the size of the vectors/embedding instead: The 2-sphere can here be generated `ArraySphere(3)`.
To create the unit sphere of ``3×2`` real-valued matrices, write `ArraySphere(3,2)` and the complex case is done – as for the [`Euclidean`](@ref) case – with an keyword argument `ArraySphere(3,2; field=ℂ)`. This case also covers the classical sphere as a special case, but you specify the size of the vectors/embedding instead: The 2-sphere can here be generated `ArraySphere(3)`.

```@docs
ArraySphere
Expand Down
24 changes: 12 additions & 12 deletions docs/src/manifolds/symplectic.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
# Symplectic matrices

The [`SymplecticMatrices`](@ref) manifold, denoted $\operatorname{Sp}(2n, 𝔽)$, is a closed, embedded, submanifold of
$𝔽^{2n×2n}$ that represents transformations into symplectic subspaces which keep the
canonical symplectic form over $𝔽^{2n×2n}$ invariant under the standard embedding inner product.
The [`SymplecticMatrices`](@ref) manifold, denoted ``\operatorname{Sp}(2n, 𝔽)``, is a closed, embedded, submanifold of
``𝔽^{2n×2n}`` that represents transformations into symplectic subspaces which keep the
canonical symplectic form over ``𝔽^{2n×2n}`` invariant under the standard embedding inner product.
The canonical symplectic form is a non-degenerate bilinear and skew symmetric map
$\omega\colon 𝔽 𝔽^{2n}×𝔽^{2n}
→ 𝔽$, given by
$\omega(x, y) = x^T Q_{2n} y$ for elements $x, y \in 𝔽^{2n}$, with
``\omega\colon 𝔽 𝔽^{2n}×𝔽^{2n}
→ 𝔽``, given by
``\omega(x, y) = x^T Q_{2n} y`` for elements ``x, y \in 𝔽^{2n}``, with
````math
Q_{2n} =
\begin{bmatrix}
0_n & I_n \\
-I_n & 0_n
\end{bmatrix}.
````
That means that an element $p \in \operatorname{Sp}(2n)$ must fulfill the requirement that
That means that an element ``p \in \operatorname{Sp}(2n)`` must fulfill the requirement that
````math
\omega (p x, p y) = x^T(p^TQp)y = x^TQy = \omega(x, y),
````
leading to the requirement on $p$ that $p^TQp = Q$.
leading to the requirement on ``p`` that ``p^TQp = Q``.

The symplectic manifold also forms a group under matrix multiplication, called the $\textit{symplectic group}$.
The symplectic manifold also forms a group under matrix multiplication, called the ``\textit{symplectic group}``.
Since all the symplectic matrices necessarily have determinant one, the [symplectic group](https://en.wikipedia.org/wiki/Symplectic_group)
$\operatorname{Sp}(2n, 𝔽)$ is a subgroup of the special linear group, $\operatorname{SL}(2n, 𝔽)$. When the underlying
field is either $ℝ$ or $ℂ$ the symplectic group with a manifold structure constitutes a Lie group, with the Lie
``\operatorname{Sp}(2n, 𝔽)`` is a subgroup of the special linear group, ``\operatorname{SL}(2n, 𝔽)``. When the underlying
field is either ```` or ```` the symplectic group with a manifold structure constitutes a Lie group, with the Lie
Algebra
````math
\mathfrak{sp}(2n,F) = \{H \in 𝔽^{2n×2n} \;|\; Q H + H^{T} Q = 0\}.
````
This set is also known as the [Hamiltonian matrices](https://en.wikipedia.org/wiki/Hamiltonian_matrix), which have the
property that $(QH)^T = QH$ and are commonly used in physics.
property that $(QH)^T = QH`` and are commonly used in physics.

```@autodocs
Modules = [Manifolds]
Expand Down
Loading

0 comments on commit 22717df

Please sign in to comment.