RiemannianMetric | R Documentation |
An R6::R6Class object implementing the base
RiemannianMetric
class. This is an abstract class for Riemannian and
pseudo-Riemannian metrics which are the associated Levi-Civita connection
on the tangent bundle.
rgeomstats::PythonClass
-> rgeomstats::Connection
-> RiemannianMetric
signature
An integer vector specifying the signature of the metric.
rgeomstats::PythonClass$get_python_class()
rgeomstats::PythonClass$set_python_class()
rgeomstats::Connection$christoffels()
rgeomstats::Connection$curvature()
rgeomstats::Connection$curvature_derivative()
rgeomstats::Connection$directional_curvature()
rgeomstats::Connection$directional_curvature_derivative()
rgeomstats::Connection$exp()
rgeomstats::Connection$geodesic()
rgeomstats::Connection$geodesic_equation()
rgeomstats::Connection$injectivity_radius()
rgeomstats::Connection$ladder_parallel_transport()
rgeomstats::Connection$log()
rgeomstats::Connection$parallel_transport()
new()
The RiemannianMetric
class constructor.
RiemannianMetric$new( dim, shape = NULL, signature = 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
.
signature
An integer vector specifying the signature of the
metric. Defaults to c(dim, 0L)
.
default_coords_type
A string specifying the coordinate type.
Choices are extrensic
or intrinsic
. Defaults to intrinsic
.
py_cls
A Python object of class RiemannianMetric
. Defaults to
NULL
in which case it is instantiated on the fly using the other
input arguments.
An object of class RiemannianMetric
.
metric_matrix()
Metric matrix at the tangent space at a base point.
RiemannianMetric$metric_matrix(base_point = NULL)
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
A numeric array of shape dim x dim
storing the inner-product
matrix.
if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$metric_matrix() }
cometric_matrix()
Inner co-product matrix at the cotangent space at a base point. This represents the cometric matrix, i.e. the inverse of the metric matrix.
RiemannianMetric$cometric_matrix(base_point = NULL)
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
A numeric array of shape dim x dim
storing the inverse of the
inner-product matrix.
if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$cometric_matrix() }
inner_product_derivative_matrix()
Compute derivative of the inner prod matrix at base point.
RiemannianMetric$inner_product_derivative_matrix(base_point)
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
A numeric array of shape dim x dim
storing the derivative of
the inverse of the inner-product matrix.
if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$inner_product_derivative_matrix() }
inner_product()
Inner product between two tangent vectors at a base point.
RiemannianMetric$inner_product(tangent_vec_a, tangent_vec_b, base_point)
tangent_vec_a
A numeric array of shape dim
specifying a tangent
vector at base point.
tangent_vec_b
A numeric array of shape dim
specifying a tangent
vector at base point.
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
A scalar value representing the inner product between the two input tangent vectors at the input base point.
if (reticulate::py_module_available("geomstats")) { mt <- SPDMetricLogEuclidean$new(n = 3) mt$inner_product(diag(0, 3), diag(1, 3), base_point = diag(1, 3)) }
inner_coproduct()
Computes inner coproduct between two cotangent vectors at base point. This is the inner product associated to the cometric matrix.
RiemannianMetric$inner_coproduct( cotangent_vec_a, cotangent_vec_b, base_point = NULL )
cotangent_vec_a
A numeric array of shape dim
specifying a
cotangent vector at base point.
cotangent_vec_b
A numeric array of shape dim
specifying a
cotangent vector at base point.
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
A scalar value representing the inner coproduct between the two input cotangent vectors at the input base point.
if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$inner_coproduct(diag(0, 3), diag(1, 3), base_point = diag(1, 3)) }
hamiltonian()
Computes the Hamiltonian energy associated to the cometric. The Hamiltonian at state (q, p) is defined by
H(q, p) = \frac{1}{2} \langle p, p \rangle_q,
where \langle \cdot, \cdot \rangle_q is the cometric at q.
RiemannianMetric$hamiltonian(state)
state
A list with two components: (i) a numeric array of shape
dim
specifying the position which is a point on the manifold and
(ii) a numeric array of shape dim
specifying the momentum which is
a cotangent vector.
A numeric value representing the Hamiltonian energy at state
.
if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$hamiltonian() }
squared_norm()
Computes the square of the norm of a vector. Squared norm of a vector associated to the inner product at the tangent space at a base point.
RiemannianMetric$squared_norm(vector, base_point = NULL)
vector
A numeric array of shape dim
specifying a vector.
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
A numeric value representing the squared norm of the input vector.
if (reticulate::py_module_available("geomstats")) mt <- SPDMetricLogEuclidean$new(n = 3) mt$squared_norm(diag(0, 3), diag(1, 3))
norm()
Computes the norm of a vector associated to the inner product at the tangent space at a base point.
RiemannianMetric$norm(vector, base_point = NULL)
vector
A numeric array of shape dim
specifying a vector.
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
This only works for positive-definite Riemannian metrics and inner products.
A numeric value representing the norm of the input vector.
if (reticulate::py_module_available("geomstats")) mt <- SPDMetricLogEuclidean$new(n = 3) mt$norm(diag(0, 3), diag(1, 3))
normalize()
Normalizes a tangent vector at a given point.
RiemannianMetric$normalize(vector, base_point = NULL)
vector
A numeric array of shape dim
specifying a vector.
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
A numeric array of shape dim
storing the normalized version of
the input tangent vector.
if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$normalize(diag(2, 3), diag(1, 3)) }
random_unit_tangent_vec()
Generates a random unit tangent vector at a given point.
RiemannianMetric$random_unit_tangent_vec(base_point = NULL, n_vectors = 1)
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
n_vectors
An integer value specifying the number of vectors to be
generated at base_point
. For vectorization purposes, n_vectors
can
be greater than 1 iff base_point
corresponds to a single point.
Defaults to 1L
.
A numeric array of shape c(n_vectors, dim)
storing random unit
tangent vectors at base_point
.
if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$random_unit_tangent_vec(diag(1, 3)) }
squared_dist()
Squared geodesic distance between two points.
RiemannianMetric$squared_dist(point_a, point_b, ...)
point_a
A numeric array of shape dim
on the manifold.
point_b
A numeric array of shape dim
on the manifold.
...
Extra parameters to be passed to the $log()
method of the
parent Connection
class.
A numeric value storing the squared geodesic distance between the two input points.
if (reticulate::py_module_available("geomstats")) mt <- SPDMetricLogEuclidean$new(n = 3) mt$squared_dist(diag(1, 3), diag(1, 3))
dist()
Geodesic distance between two points.
RiemannianMetric$dist(point_a, point_b, ...)
point_a
A numeric array of shape dim
on the manifold.
point_b
A numeric array of shape dim
on the manifold.
...
Extra parameters to be passed to the $log()
method of the
parent Connection
class.
It only works for positive definite Riemannian metrics.
A numeric value storing the geodesic distance between the two input points.
if (reticulate::py_module_available("geomstats")) { mt <- SPDMetricLogEuclidean$new(n = 3) mt$dist(diag(1, 3), diag(1, 3)) }
dist_broadcast()
Computes the geodesic distance between points.
RiemannianMetric$dist_broadcast(points_a, points_b)
points_a
A numeric array of shape c(n_samples_a, dim)
specifying
a set of points on the manifold.
points_b
A numeric array of shape c(n_samples_b, dim)
specifying
a set of points on the manifold.
If n_samples_a == n_samples_b
then dist
is the element-wise
distance result of a point in points_a
with the point from points_b
of the same index. If n_samples_a != n_samples_b
then dist
is the
result of applying geodesic distance for each point from points_a
to
all points from points_b
.
A numeric array of shape c(n_samples_a, dim)
if n_samples_a == n_samples_b
or of shape c(n_samples_a, n_samples_b, dim)
if
n_samples_a != n_samples_b
storing the geodesic distance between
points in set A and points in set B.
if (reticulate::py_module_available("geomstats")) { mt <- SPDMetricLogEuclidean$new(n = 3) mt$dist(diag(1, 3), diag(1, 3)) }
dist_pairwise()
Computes the pairwise distance between points.
RiemannianMetric$dist_pairwise(points, n_jobs = 1, ...)
points
A numeric array of shape c(n_samples, dim)
specifying a
set of points on the manifold.
n_jobs
An integer value specifying the number of cores for
parallel computation. Defaults to 1L
.
...
Extra parameters to be passed tothe joblib.Parallel
Python
class. See joblib documentation for details.
A numeric matrix of shape c(n_samples, n_samples)
storing the
pairwise geodesic distances between all the points.
diameter()
Computes the diameter of set of points on a manifold.
RiemannianMetric$diameter(points)
points
A numeric array of shape c(n_samples, dim)
specifying a
set of points on the manifold.
The diameter is the maximum over all pairwise distances.
A numeric value representing the largest distance between any two points in the input set.
closest_neighbor_index()
Finds the closest neighbor to a point among a set of neighbors.
RiemannianMetric$closest_neighbor_index(point, neighbors)
point
A numeric array of shape dim
specifying a point on the
manifold.
neighbors
A numeric array of shape c(n_neighbors, dim)
specifying a set of neighboring points for the input point
.
An integer value representing the index of the neighbor in
neighbors
that is closest to point
.
normal_basis()
Normalizes the basis with respect to the metric. This corresponds to a renormalization of each basis vector.
RiemannianMetric$normal_basis(basis, base_point = NULL)
basis
A numeric array of shape c(dim, dim)
specifying a basis.
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
A numeric array of shape c(dim, n, n)
storing the normal basis.
sectional_curvature()
Computes the sectional curvature.
RiemannianMetric$sectional_curvature( tangent_vec_a, tangent_vec_b, base_point = NULL )
tangent_vec_a
A numeric array of shape c(n, n)
specifying a
tangent vector at base_point
.
tangent_vec_b
A numeric array of shape c(n, n)
specifying a
tangent vector at base_point
.
base_point
A numeric array of shape dim
specifying a point on
the manifold. Defaults to NULL
.
For two orthonormal tangent vectors x and y at a base point, the sectional curvature is defined by
\langle R(x, y)x, y \rangle = \langle R_x(y), y \rangle.
For non-orthonormal vectors, it is
\langle R(x, y)x, y \rangle / \\|x \wedge y\\|^2.
See also https://en.wikipedia.org/wiki/Sectional_curvature.
A numeric value representing the sectional curvature at
base_point
.
clone()
The objects of this class are cloneable with this method.
RiemannianMetric$clone(deep = FALSE)
deep
Whether to make a deep clone.
Nina Miolane
## ------------------------------------------------ ## Method `RiemannianMetric$metric_matrix` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$metric_matrix() } ## ------------------------------------------------ ## Method `RiemannianMetric$cometric_matrix` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$cometric_matrix() } ## ------------------------------------------------ ## Method `RiemannianMetric$inner_product_derivative_matrix` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$inner_product_derivative_matrix() } ## ------------------------------------------------ ## Method `RiemannianMetric$inner_product` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { mt <- SPDMetricLogEuclidean$new(n = 3) mt$inner_product(diag(0, 3), diag(1, 3), base_point = diag(1, 3)) } ## ------------------------------------------------ ## Method `RiemannianMetric$inner_coproduct` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$inner_coproduct(diag(0, 3), diag(1, 3), base_point = diag(1, 3)) } ## ------------------------------------------------ ## Method `RiemannianMetric$hamiltonian` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$hamiltonian() } ## ------------------------------------------------ ## Method `RiemannianMetric$normalize` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$normalize(diag(2, 3), diag(1, 3)) } ## ------------------------------------------------ ## Method `RiemannianMetric$random_unit_tangent_vec` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { # mt <- SPDMetricLogEuclidean$new(n = 3) # mt$random_unit_tangent_vec(diag(1, 3)) } ## ------------------------------------------------ ## Method `RiemannianMetric$dist` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { mt <- SPDMetricLogEuclidean$new(n = 3) mt$dist(diag(1, 3), diag(1, 3)) } ## ------------------------------------------------ ## Method `RiemannianMetric$dist_broadcast` ## ------------------------------------------------ if (reticulate::py_module_available("geomstats")) { mt <- SPDMetricLogEuclidean$new(n = 3) mt$dist(diag(1, 3), diag(1, 3)) }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.