X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fcone%2Fcone.py;h=1ab6b97c128cde3d1e176032cf0d90f601057166;hb=46b32aa189efc76f3403fe410a622ee21329812b;hp=f78c27e7e8ba748274b968601fff61c4701a98c1;hpb=5b7044f0fad38851282ffdc07b55b98c11b7f78e;p=sage.d.git diff --git a/mjo/cone/cone.py b/mjo/cone/cone.py index f78c27e..1ab6b97 100644 --- a/mjo/cone/cone.py +++ b/mjo/cone/cone.py @@ -176,7 +176,8 @@ def positive_operator_gens(K): A positive operator on a cone should send its generators into the cone:: - sage: K = random_cone(max_ambient_dim = 6) + sage: set_random_seed() + sage: K = random_cone(max_ambient_dim = 5) sage: pi_of_K = positive_operator_gens(K) sage: all([K.contains(p*x) for p in pi_of_K for x in K.rays()]) True @@ -184,16 +185,30 @@ def positive_operator_gens(K): The dimension of the cone of positive operators is given by the corollary in my paper:: - sage: K = random_cone(max_ambient_dim = 6) + sage: set_random_seed() + sage: K = random_cone(max_ambient_dim = 5) sage: n = K.lattice_dim() sage: m = K.dim() sage: l = K.lineality() sage: pi_of_K = positive_operator_gens(K) - sage: actual = Cone([p.list() for p in pi_of_K]).dim() - sage: expected = n**2 - l*(n - l) - (n - m)*m + sage: L = ToricLattice(n**2) + sage: actual = Cone([p.list() for p in pi_of_K], lattice=L).dim() + sage: expected = n**2 - l*(m - l) - (n - m)*m sage: actual == expected True + The lineality of the cone of positive operators is given by the + corollary in my paper:: + + sage: set_random_seed() + sage: K = random_cone(max_ambient_dim = 5) + sage: n = K.lattice_dim() + sage: pi_of_K = positive_operator_gens(K) + sage: L = ToricLattice(n**2) + sage: actual = Cone([p.list() for p in pi_of_K], lattice=L).lineality() + sage: expected = n**2 - K.dim()*K.dual().dim() + sage: actual == expected + True """ # Matrices are not vectors in Sage, so we have to convert them # to vectors explicitly before we can find a basis. We need these @@ -286,6 +301,13 @@ def Z_transformation_gens(K): sage: z_cone.linear_subspace() == lls True + And thus, the lineality of Z is the Lyapunov rank:: + + sage: set_random_seed() + sage: K = random_cone(min_ambient_dim = 1, max_ambient_dim = 6) + sage: z_cone = Cone([ z.list() for z in Z_transformation_gens(K) ]) + sage: z_cone.lineality() == K.lyapunov_rank() + True """ # Matrices are not vectors in Sage, so we have to convert them # to vectors explicitly before we can find a basis. We need these