Metric Spaces#
- class sage.categories.metric_spaces.MetricSpaces(category, *args)#
Bases:
MetricSpacesCategory
The category of metric spaces.
A metric on a set \(S\) is a function \(d : S \times S \to \RR\) such that:
\(d(a, b) \geq 0\),
\(d(a, b) = 0\) if and only if \(a = b\).
A metric space is a set \(S\) with a distinguished metric.
Implementation
Objects in this category must implement either a
dist
on the parent or the elements ormetric
on the parent; otherwise this will cause an infinite recursion.Todo
Implement a general geodesics class.
Implement a category for metric additive groups and move the generic distance \(d(a, b) = |a - b|\) there.
Incorporate the length of a geodesic as part of the default distance cycle.
EXAMPLES:
sage: from sage.categories.metric_spaces import MetricSpaces sage: C = MetricSpaces() sage: C Category of metric spaces sage: TestSuite(C).run()
- class CartesianProducts(category, *args)#
Bases:
CartesianProductsCategory
- class ParentMethods#
Bases:
object
- dist(a, b)#
Return the distance between
a
andb
inself
.It is defined as the maximum of the distances within the Cartesian factors.
EXAMPLES:
sage: from sage.categories.metric_spaces import MetricSpaces sage: Q2 = QQ.cartesian_product(QQ) sage: Q2.category() Join of Category of Cartesian products of commutative rings and Category of Cartesian products of metric spaces sage: Q2 in MetricSpaces() True sage: Q2.dist((0, 0), (2, 3)) 3
- extra_super_categories()#
Implement the fact that a (finite) Cartesian product of metric spaces is a metric space.
EXAMPLES:
sage: from sage.categories.metric_spaces import MetricSpaces sage: C = MetricSpaces().CartesianProducts() sage: C.extra_super_categories() [Category of metric spaces] sage: C.super_categories() [Category of Cartesian products of topological spaces, Category of metric spaces] sage: C.axioms() frozenset()
- class Complete(base_category)#
Bases:
CategoryWithAxiom
The category of complete metric spaces.
- class CartesianProducts(category, *args)#
Bases:
CartesianProductsCategory
- extra_super_categories()#
Implement the fact that a (finite) Cartesian product of complete metric spaces is a complete metric space.
EXAMPLES:
sage: from sage.categories.metric_spaces import MetricSpaces sage: C = MetricSpaces().Complete().CartesianProducts() sage: C.extra_super_categories() [Category of complete metric spaces] sage: C.super_categories() [Category of Cartesian products of metric spaces, Category of complete metric spaces] sage: C.axioms() frozenset({'Complete'}) sage: R2 = RR.cartesian_product(RR) sage: R2 in MetricSpaces() True sage: R2 in MetricSpaces().Complete() True sage: QR = QQ.cartesian_product(RR) sage: QR in MetricSpaces() True sage: QR in MetricSpaces().Complete() False
- class ElementMethods#
Bases:
object
- abs()#
Return the absolute value of
self
.EXAMPLES:
sage: CC(I).abs() 1.00000000000000
- dist(b)#
Return the distance between
self
andother
.EXAMPLES:
sage: UHP = HyperbolicPlane().UHP() # optional - sage.symbolic sage: p1 = UHP.get_point(5 + 7*I) # optional - sage.symbolic sage: p2 = UHP.get_point(1 + I) # optional - sage.symbolic sage: p1.dist(p2) # optional - sage.symbolic arccosh(33/7)
- class Homsets(category, *args)#
Bases:
HomsetsCategory
The category of homsets of metric spaces
It consists of the metric maps, that is, the Lipschitz functions with Lipschitz constant 1.
- class ElementMethods#
Bases:
object
- class ParentMethods#
Bases:
object
- dist(a, b)#
Return the distance between
a
andb
inself
.EXAMPLES:
sage: UHP = HyperbolicPlane().UHP() # optional - sage.symbolic sage: p1 = UHP.get_point(5 + 7*I) # optional - sage.symbolic sage: p2 = UHP.get_point(1.0 + I) # optional - sage.symbolic sage: UHP.dist(p1, p2) # optional - sage.symbolic 2.23230104635820 sage: PD = HyperbolicPlane().PD() # optional - sage.symbolic sage: PD.dist(PD.get_point(0), PD.get_point(I/2)) # optional - sage.symbolic arccosh(5/3)
- metric(*args, **kwds)#
Deprecated: Use
metric_function()
instead. See github issue #30062 for details.
- metric_function()#
Return the metric function of
self
.EXAMPLES:
sage: UHP = HyperbolicPlane().UHP() # optional - sage.symbolic sage: m = UHP.metric_function() # optional - sage.symbolic sage: p1 = UHP.get_point(5 + 7*I) # optional - sage.symbolic sage: p2 = UHP.get_point(1.0 + I) # optional - sage.symbolic sage: m(p1, p2) # optional - sage.symbolic 2.23230104635820
- class SubcategoryMethods#
Bases:
object
- Complete()#
Return the full subcategory of the complete objects of
self
.EXAMPLES:
sage: Sets().Metric().Complete() Category of complete metric spaces
- class WithRealizations(category, *args)#
Bases:
WithRealizationsCategory
- class ParentMethods#
Bases:
object
- dist(a, b)#
Return the distance between
a
andb
by converting them to a realization ofself
and doing the computation.EXAMPLES:
sage: H = HyperbolicPlane() # optional - sage.symbolic sage: PD = H.PD() # optional - sage.symbolic sage: p1 = PD.get_point(0) # optional - sage.symbolic sage: p2 = PD.get_point(I/2) # optional - sage.symbolic sage: H.dist(p1, p2) # optional - sage.symbolic arccosh(5/3)
- class sage.categories.metric_spaces.MetricSpacesCategory(category, *args)#
Bases:
RegressiveCovariantConstructionCategory
- classmethod default_super_categories(category)#
Return the default super categories of
category.Metric()
.Mathematical meaning: if \(A\) is a metric space in the category \(C\), then \(A\) is also a topological space.
INPUT:
cls
– the classMetricSpaces
category
– a category \(Cat\)
OUTPUT:
A (join) category
In practice, this returns
category.Metric()
, joined together with the result of the methodRegressiveCovariantConstructionCategory.default_super_categories()
(that is the join ofcategory
andcat.Metric()
for eachcat
in the super categories ofcategory
).EXAMPLES:
Consider
category=Groups()
. Then, a group \(G\) with a metric is simultaneously a topological group by itself, and a metric space:sage: Groups().Metric().super_categories() [Category of topological groups, Category of metric spaces]
This resulted from the following call:
sage: sage.categories.metric_spaces.MetricSpacesCategory.default_super_categories(Groups()) Join of Category of topological groups and Category of metric spaces