Connection | R Documentation |
An R6::R6Class object implementing the base Connection
class for affine connections.
rgeomstats::PythonClass
-> Connection
dim
An integer value specifying the dimension of the underlying manifold.
shape
An integer vector specifying the shape of one element of the
manifold. Defaults to NULL
.
default_coords_type
A string specifying the coordinate type.
Choices are extrensic
or intrinsic
. Dedaults to intrinsic
.
default_point_type
A string specifying the point type. Choices are
vector
or matrix
. It is automatically determined depending on the
manifold.
new()
The Connection
class constructor.
Connection$new( dim, shape = NULL, default_coords_type = "intrinsic", py_cls = NULL )
dim
An integer value specifying the dimension of the manifold.
shape
An integer vector specifying the shape of one element of the
manifold. Defaults to NULL
.
default_coords_type
A string specifying the coordinate type.
Choices are extrensic
or intrinsic
. Defaults to intrinsic
.
py_cls
A Python object of class Connection
. Defaults to NULL
in which case it is instantiated on the fly using the other input
arguments.
metric
A RiemannianMetric
object specifying the metric to use
on the manifold. Defaults to NULL
.
An object of class Connection
.
christoffels()
Christoffel symbols associated with the connection.
Connection$christoffels(base_point)
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
A numeric array of shape c(dim, dim, dim)
storing the
Christoffel symbols, with the contravariant index on the first
dimension.
geodesic_equation()
Computes the geodesic ODE associated with the connection.
Connection$geodesic_equation(state, .time)
state
A numeric array of shape dim
specifying a tangent vector
to the manifold at the position specified by .time
.
.time
A numeric array of shape dim
specifying a point on the
manifold at which to compute the geodesic ODE.
A numeric array of shape dim
storing the value of the vector
field to be integrated at position.
exp()
Exponential map associated to the affine connection.
Connection$exp(tangent_vec, base_point, n_steps = 100, step = "euler")
tangent_vec
A numeric array of shape dim
specifying a tangent vector
at base_point
.
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
n_steps
An integer value specifying the number of discrete time steps
to take in the integration. Defaults to 100L
.
step
A string specifying which numerical scheme to use for
integration. Choices are euler
or rk4
. Defaults to euler
.
Exponential map at base_point of tangent_vec computed by integration of the geodesic equation (initial value problem), using the christoffel symbols.
A numeric array of shape dim
storing the exponential of the
input tangent vector, which lies on on the manifold.
log()
Logarithm map associated to the affine connection.
Connection$log( point, base_point, n_steps = 100, step = "euler", max_iter = 25, verbose = FALSE, tol = gs$backend$atol )
point
A numeric array of shape dim
specifying a point on the
manifold.
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
n_steps
An integer value specifying the number of discrete time steps
to take in the integration. Defaults to 100L
.
step
A string specifying which numerical scheme to use for
integration. Choices are euler
or rk4
. Defaults to euler
.
max_iter
An integer value specifying the number of iterations.
Defaults to 25L
.
verbose
A boolean specifying whether the optimizer should display
intermediate messages pertaining to its convergence. Defaults to
FALSE
.
tol
A numeric value specifying the absolute tolerance for
optimization convergence. Defaults to gs$backend$atol
.
Solves the boundary value problem associated to the geodesic equation using the Christoffel symbols and conjugate gradient descent.
A numeric array of shape dim
storing the exponential of the
input tangent vector, which lies on on the manifold.
ladder_parallel_transport()
Approximate parallel transport using the pole ladder scheme.
Connection$ladder_parallel_transport( tangent_vec, base_point, direction, n_rungs = 1, scheme = "pole", alpha = 1, ... )
tangent_vec
A numeric array of shape dim
specifying a tangent vector
at base_point
.
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
direction
Tangent vector at base point specifying the initial speed of the geodesic along which to transport.
n_rungs
A scalar integer specifying the Number of steps of the
ladder. Defaults to 1L
.
scheme
A string specifying the scheme to use for the construction
of the ladder at each step. Choices are either pole
or schild
.
Defaults to pole
.
alpha
A numeric value specifying the exponent for the scaling of
the vector to transport. Must be greater or equal to 1 and
\insertCiteguigui2022numerical;textualrgeomstats proved that alpha = 2
is optimal. Defaults to 2
.
...
Extra arguments to be passed to calls to $exp()
and $log()
in auxiliary single ladder step functions.
Approximate parallel transport using either the pole ladder or
the Schild's ladder scheme
\insertCitelorenzi2014efficientrgeomstats. Pole ladder is exact in
symmetric spaces and of order two in general while Schild's ladder is a
first order approximation \insertCiteguigui2022numericalrgeomstats.
Both schemes are available on any affine connection manifolds whose
exponential and logarithm maps are implemented. tangent_vec
is
transported along the geodesic starting at the base_point
with
initial tangent vector direction
.
A named list with 3 components:
transported_tangent_vector
: Approximation of the parallel transport
of the input tangent vector.
trajectory
: A list of length n_steps
storing the geodesics of the
construction, only if return_geodesics = TRUE
in the step function. The
geodesics are methods of the class connection.
end_point
:
curvature()
Computes the curvature.
Connection$curvature(tangent_vec_a, tangent_vec_b, tangent_vec_c, base_point)
tangent_vec_a
Tangent vector at base_point
.
tangent_vec_b
Tangent vector at base_point
.
tangent_vec_c
Tangent vector at base_point
.
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
For three vector fields X|_P = \mathrm{tangent\_vec\_a}, Y|_P = \mathrm{tangent\_vec\_b}, Z|_P = \mathrm{tangent\_vec\_c} with tangent vector specified in argument at the base point P, the curvature is defined by
R(X,Y)Z = \nabla_{[X,Y]}Z - \nabla_X\nabla_Y Z + \nabla_Y\nabla_X Z.
Tangent vector at base_point
.
directional_curvature()
Computes the directional curvature (tidal force operator).
Connection$directional_curvature(tangent_vec_a, tangent_vec_b, base_point)
tangent_vec_a
Tangent vector at base_point
.
tangent_vec_b
Tangent vector at base_point
.
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
For two vector fields X|_P = \mathrm{tangent\_vec\_a} and Y|_P = \mathrm{tangent\_vec\_b} with tangent vector specified in argument at the base point P, the directional curvature, better known in relativity as the tidal force operator, is defined by
R_Y(X) = R(Y,X)Y.
Tangent vector at base_point
.
curvature_derivative()
Computes the covariant derivative of the curvature.
Connection$curvature_derivative( tangent_vec_a, tangent_vec_b, tangent_vec_c, tangent_vec_d, base_point = NULL )
tangent_vec_a
Tangent vector at base_point
.
tangent_vec_b
Tangent vector at base_point
.
tangent_vec_c
Tangent vector at base_point
.
tangent_vec_d
Tangent vector at base_point
.
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
For four vector fields H|_P = \mathrm{tangent\_vec\_a}, X|_P = \mathrm{tangent\_vec\_b}, Y|_P = \mathrm{tangent\_vec\_c}, Z|_P = \mathrm{tangent\_vec\_d} with tangent vector value specified in argument at the base point P, the covariant derivative of the curvature (\nabla_H R)(X, Y) Z |_P is computed at the base point P.
Tangent vector at base_point
.
directional_curvature_derivative()
Computes the covariant derivative of the directional curvature.
Connection$directional_curvature_derivative( tangent_vec_a, tangent_vec_b, base_point = NULL )
tangent_vec_a
Tangent vector at base_point
.
tangent_vec_b
Tangent vector at base_point
.
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
For two vector fields X|_P = \mathrm{tangent\_vec\_a}, Y|_P = \mathrm{tangent\_vec\_b} with tangent vector value specified in argument at the base point P, the covariant derivative (in the direction X) (\nabla_X R_Y)(X) |_P = (\nabla_X R)(Y, X) Y |_P of the directional curvature (in the direction Y) R_Y(X) = R(Y, X) Y is a quadratic tensor in X and Y that plays an important role in the computation of the moments of the empirical Fréchet mean \insertCitepennec2019curvaturergeomstats.
Tangent vector at base_point
.
geodesic()
Generates parametrized function for the geodesic curve.
Connection$geodesic( initial_point, end_point = NULL, initial_tangent_vec = NULL )
initial_point
Point on the manifold specifying the initial point of the geodesic.
end_point
Point on the manifold specifying the end point of the
geodesic. Defaults to NULL
, in which case an initial tangent vector
must be given.
initial_tangent_vec
Tangent vector at base point specifying the
initial speed of the geodesics. Defaults to NULL
, in which case an
end point must be given and a logarithm is computed.
Geodesic curve defined by either:
an initial point and an initial tangent vector,
an initial point and an end point.
A function representing the time-parametrized geodesic curve. If a list of initial conditions is passed, the output list will contain, for each time point, a list with the geodesic values each initial condition.
parallel_transport()
Computes the parallel transport of a tangent vector.
Connection$parallel_transport( tangent_vec, base_point, direction = NULL, end_point = NULL )
tangent_vec
A numeric array of shape dim
specifying a tangent vector
at base_point
.
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
direction
Tangent vector at base point specifying the point along
which the parallel transport is computed. Defaults to NULL
.
end_point
Point on the manifold specifying the point to transport
to. Defaults to NULL
.
Closed-form solution for the parallel transport of a tangent
vector along the geodesic between two points base_point
and
end_point
or alternatively defined by t \mapsto
\exp_\mathrm{base_point} (t \mathrm{direction}).
Tangent vector transported at t \mapsto \exp_\mathrm{base_point} (t \mathrm{direction}).
injectivity_radius()
Computes the radius of the injectivity domain.
Connection$injectivity_radius(base_point)
base_point
A numeric array of shape dim
specifying a base point on
the manifold.
This is is the supremum of radii r for which the exponential map is a diffeomorphism from the open ball of radius r centered at the base point onto its image.
A numeric value representing the injectivity radius.
clone()
The objects of this class are cloneable with this method.
Connection$clone(deep = FALSE)
deep
Whether to make a deep clone.
Nicolas Guigui
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.