From: Michael Orlitzky Date: Thu, 7 Jan 2016 19:29:51 +0000 (-0500) Subject: Add more examples for the positive operators. X-Git-Url: http://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=75a1cc8b3affcc1ffcf4fa68572ede75873b9380;p=sage.d.git Add more examples for the positive operators. --- diff --git a/mjo/cone/cone.py b/mjo/cone/cone.py index 332d4b2..43ec8f7 100644 --- a/mjo/cone/cone.py +++ b/mjo/cone/cone.py @@ -334,6 +334,43 @@ def positive_operator_gens(K): sage: actual == expected True + The trivial cone, full space, and half-plane all give rise to the + expected dimensions:: + + sage: n = ZZ.random_element().abs() + sage: K = Cone([[0] * n], ToricLattice(n)) + sage: K.is_trivial() + True + sage: L = ToricLattice(n^2) + sage: pi_of_K = positive_operator_gens(K) + sage: actual = Cone([p.list() for p in pi_of_K], lattice=L).dim() + sage: actual == n^2 + True + sage: K = K.dual() + sage: K.is_full_space() + True + sage: pi_of_K = positive_operator_gens(K) + sage: actual = Cone([p.list() for p in pi_of_K], lattice=L).dim() + sage: actual == n^2 + True + sage: K = Cone([(1,0),(0,1),(0,-1)]) + sage: pi_of_K = positive_operator_gens(K) + sage: actual = Cone([p.list() for p in pi_of_K]).dim() + sage: actual == 3 + True + + The cone of positive operators is solid when the original cone is proper:: + + sage: set_random_seed() + sage: K = random_cone(max_ambient_dim=5, + ....: strictly_convex=True, + ....: solid=True) + sage: pi_of_K = positive_operator_gens(K) + sage: L = ToricLattice(K.lattice_dim()**2) + sage: pi_cone = Cone([p.list() for p in pi_of_K], lattice=L) + sage: pi_cone.is_solid() + True + The lineality of the cone of positive operators is given by the corollary in my paper:: @@ -371,7 +408,8 @@ def positive_operator_gens(K): vectors = [ W(tp.list()) for tp in tensor_products ] # Create the *dual* cone of the positive operators, expressed as - # long vectors.. + # long vectors. WARNING: takes forever unless we pass check=False + # to Cone(). pi_dual = Cone(vectors, ToricLattice(W.dimension())) # Now compute the desired cone from its dual... @@ -487,7 +525,8 @@ def Z_transformation_gens(K): vectors = [ W(m.list()) for m in tensor_products ] # Create the *dual* cone of the cross-positive operators, - # expressed as long vectors.. + # expressed as long vectors. WARNING: takes forever unless we pass + # check=False to Cone(). Sigma_dual = Cone(vectors, lattice=ToricLattice(W.dimension())) # Now compute the desired cone from its dual...