Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
r""" Library of Hyperplane Arrangements
A collection of useful or interesting hyperplane arrangements. See :mod:`sage.geometry.hyperplane_arrangement.arrangement` for details about how to construct your own hyperplane arrangements. """ #***************************************************************************** # Copyright (C) 2013 David Perkinson <davidp@reed.edu> # # Distributed under the terms of the GNU General Public License (GPL) # http://www.gnu.org/licenses/ #*****************************************************************************
""" Construct the parent for the hyperplane arrangements.
For internal use only.
INPUT:
- ``base_ring`` -- a ring
- ``dimension`` -- integer
- ``names`` -- ``None`` (default) or a list/tuple/iterable of strings
OUTPUT:
A new :class:`~sage.geometry.hyperplane_arrangement.arrangement.HyperplaneArrangements` instance.
EXAMPLES::
sage: from sage.geometry.hyperplane_arrangement.library import make_parent sage: make_parent(QQ, 3) Hyperplane arrangements in 3-dimensional linear space over Rational Field with coordinates t0, t1, t2 """ else: raise ValueError('number of variable names does not match dimension')
""" The library of hyperplane arrangements. """
r""" The braid arrangement.
INPUT:
- ``n`` -- integer
- ``K`` -- field (default: ``QQ``)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The hyperplane arrangement consisting of the `n(n-1)/2` hyperplanes `\{ x_i - x_j = 0 : 1 \leq i \leq j \leq n \}`.
EXAMPLES::
sage: hyperplane_arrangements.braid(4) Arrangement of 6 hyperplanes of dimension 4 and rank 3 """
r""" Return a bigraphical hyperplane arrangement.
INPUT:
- ``G`` -- graph
- ``A`` -- list, matrix, dictionary (default: ``None`` gives semiorder), or the string 'generic'
- ``K`` -- field (default: `\QQ`)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The hyperplane arrangement with hyperplanes `x_i - x_j = A[i,j]` and `x_j - x_i = A[j,i]` for each edge `v_i, v_j` of ``G``. The indices `i,j` are the indices of elements of ``G.vertices()``.
EXAMPLES::
sage: G = graphs.CycleGraph(4) sage: G.edges() [(0, 1, None), (0, 3, None), (1, 2, None), (2, 3, None)] sage: G.edges(labels=False) [(0, 1), (0, 3), (1, 2), (2, 3)] sage: A = {0:{1:1, 3:2}, 1:{0:3, 2:0}, 2:{1:2, 3:1}, 3:{2:0, 0:2}} sage: HA = hyperplane_arrangements.bigraphical(G, A) sage: HA.n_regions() 63 sage: hyperplane_arrangements.bigraphical(G, 'generic').n_regions() 65 sage: hyperplane_arrangements.bigraphical(G).n_regions() 59
REFERENCES:
- [HP2016]_ """
r""" Return the Catalan arrangement.
INPUT:
- ``n`` -- integer
- ``K`` -- field (default: `\QQ`)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The arrangement of `3n(n-1)/2` hyperplanes `\{ x_i - x_j = -1,0,1 : 1 \leq i \leq j \leq n \}`.
EXAMPLES::
sage: hyperplane_arrangements.Catalan(5) Arrangement of 30 hyperplanes of dimension 5 and rank 4
TESTS::
sage: h = hyperplane_arrangements.Catalan(5) sage: h.characteristic_polynomial() x^5 - 30*x^4 + 335*x^3 - 1650*x^2 + 3024*x sage: h.characteristic_polynomial.clear_cache() # long time sage: h.characteristic_polynomial() # long time x^5 - 30*x^4 + 335*x^3 - 1650*x^2 + 3024*x """
r""" Return the coordinate hyperplane arrangement.
INPUT:
- ``n`` -- integer
- ``K`` -- field (default: `\QQ`)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The coordinate hyperplane arrangement, which is the central hyperplane arrangement consisting of the coordinate hyperplanes `x_i = 0`.
EXAMPLES::
sage: hyperplane_arrangements.coordinate(5) Arrangement of 5 hyperplanes of dimension 5 and rank 5 """
r""" Return the semiorder hyperplane arrangement of a graph.
INPUT:
- ``G`` -- graph
- ``K`` -- field (default: `\QQ`)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The semiorder hyperplane arrangement of a graph G is the arrangement `\{ x_i - x_j = -1,1 \}` where `ij` is an edge of ``G``.
EXAMPLES::
sage: G = graphs.CompleteGraph(5) sage: hyperplane_arrangements.G_semiorder(G) Arrangement of 20 hyperplanes of dimension 5 and rank 4 sage: g = graphs.HouseGraph() sage: hyperplane_arrangements.G_semiorder(g) Arrangement of 12 hyperplanes of dimension 5 and rank 4 """
r""" Return the Shi hyperplane arrangement of a graph `G`.
INPUT:
- ``G`` -- graph
- ``K`` -- field (default: `\QQ`)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The Shi hyperplane arrangement of the given graph ``G``.
EXAMPLES::
sage: G = graphs.CompleteGraph(5) sage: hyperplane_arrangements.G_Shi(G) Arrangement of 20 hyperplanes of dimension 5 and rank 4 sage: g = graphs.HouseGraph() sage: hyperplane_arrangements.G_Shi(g) Arrangement of 12 hyperplanes of dimension 5 and rank 4 sage: a = hyperplane_arrangements.G_Shi(graphs.WheelGraph(4)); a Arrangement of 12 hyperplanes of dimension 4 and rank 3 """
r""" Return the graphical hyperplane arrangement of a graph ``G``.
INPUT:
- ``G`` -- graph
- ``K`` -- field (default: `\QQ`)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The graphical hyperplane arrangement of a graph G, which is the arrangement `\{ x_i - x_j = 0 \}` for all edges `ij` of the graph ``G``.
EXAMPLES::
sage: G = graphs.CompleteGraph(5) sage: hyperplane_arrangements.graphical(G) Arrangement of 10 hyperplanes of dimension 5 and rank 4 sage: g = graphs.HouseGraph() sage: hyperplane_arrangements.graphical(g) Arrangement of 6 hyperplanes of dimension 5 and rank 4
TESTS::
sage: h = hyperplane_arrangements.graphical(g) sage: h.characteristic_polynomial() x^5 - 6*x^4 + 14*x^3 - 15*x^2 + 6*x sage: h.characteristic_polynomial.clear_cache() # long time sage: h.characteristic_polynomial() # long time x^5 - 6*x^4 + 14*x^3 - 15*x^2 + 6*x """
r""" Return the Ish arrangement.
INPUT:
- ``n`` -- integer
- ``K`` -- field (default:``QQ``)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The Ish arrangement, which is the set of `n(n-1)` hyperplanes.
.. MATH::
\{ x_i - x_j = 0 : 1 \leq i \leq j \leq n \} \cup \{ x_1 - x_j = i : 1 \leq i \leq j \leq n \}.
EXAMPLES::
sage: a = hyperplane_arrangements.Ish(3); a Arrangement of 6 hyperplanes of dimension 3 and rank 2 sage: a.characteristic_polynomial() x^3 - 6*x^2 + 9*x sage: b = hyperplane_arrangements.Shi(3) sage: b.characteristic_polynomial() x^3 - 6*x^2 + 9*x
TESTS::
sage: a.characteristic_polynomial.clear_cache() # long time sage: a.characteristic_polynomial() # long time x^3 - 6*x^2 + 9*x
REFERENCES:
- [AR2012]_ """ prod([(x - 1 - j) for j in range(k, n-1)]) for k in range(0, n)])
r""" Return the linial hyperplane arrangement.
INPUT:
- ``n`` -- integer
- ``K`` -- field (default: `\QQ`)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The linial hyperplane arrangement is the set of hyperplanes `\{x_i - x_j = 1 : 1\leq i < j \leq n\}`.
EXAMPLES::
sage: a = hyperplane_arrangements.linial(4); a Arrangement of 6 hyperplanes of dimension 4 and rank 3 sage: a.characteristic_polynomial() x^4 - 6*x^3 + 15*x^2 - 14*x
TESTS::
sage: h = hyperplane_arrangements.linial(5) sage: h.characteristic_polynomial() x^5 - 10*x^4 + 45*x^3 - 100*x^2 + 90*x sage: h.characteristic_polynomial.clear_cache() # long time sage: h.characteristic_polynomial() # long time x^5 - 10*x^4 + 45*x^3 - 100*x^2 + 90*x """
r""" Return the semiorder arrangement.
INPUT:
- ``n`` -- integer
- ``K`` -- field (default: `\QQ`)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The semiorder arrangement, which is the set of `n(n-1)` hyperplanes `\{ x_i - x_j = -1,1 : 1 \leq i \leq j \leq n\}`.
EXAMPLES::
sage: hyperplane_arrangements.semiorder(4) Arrangement of 12 hyperplanes of dimension 4 and rank 3
TESTS::
sage: h = hyperplane_arrangements.semiorder(5) sage: h.characteristic_polynomial() x^5 - 20*x^4 + 180*x^3 - 790*x^2 + 1380*x sage: h.characteristic_polynomial.clear_cache() # long time sage: h.characteristic_polynomial() # long time x^5 - 20*x^4 + 180*x^3 - 790*x^2 + 1380*x """ for k in range(1, n+1)])
r""" Return the Shi arrangement.
INPUT:
- ``n`` -- integer
- ``K`` -- field (default:``QQ``)
- ``names`` -- tuple of strings or ``None`` (default); the variable names for the ambient space
OUTPUT:
The Shi arrangement is the set of `n(n-1)` hyperplanes: `\{ x_i - x_j = 0,1 : 1 \leq i \leq j \leq n \}`.
EXAMPLES::
sage: hyperplane_arrangements.Shi(4) Arrangement of 12 hyperplanes of dimension 4 and rank 3
TESTS::
sage: h = hyperplane_arrangements.Shi(4) sage: h.characteristic_polynomial() x^4 - 12*x^3 + 48*x^2 - 64*x sage: h.characteristic_polynomial.clear_cache() # long time sage: h.characteristic_polynomial() # long time x^4 - 12*x^3 + 48*x^2 - 64*x """ prod([(x - 1 - j) for j in range(k, n-1)]) for k in range(0, n)])
|