]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
Add a few tests for LL(K).
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 31 May 2015 00:05:32 +0000 (20:05 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 31 May 2015 00:05:32 +0000 (20:05 -0400)
mjo/cone/cone.py

index 2e3dc8afb78cd1f4e1d5f368eb5f75733d127e82..4b0193692edd7655f2880408d143bf141e6d567c 100644 (file)
@@ -87,8 +87,70 @@ def LL(K):
 
     OUTPUT:
 
-    A ``MatrixSpace`` object `M` such that every matrix `L \in M` is
-    Lyapunov-like on this cone.
+    A list of matrices forming a basis for the space of all
+    Lyapunov-like transformations on the given cone.
+
+    EXAMPLES:
+
+    The trivial cone has no Lyapunov-like transformations::
+
+        sage: L = ToricLattice(0)
+        sage: K = Cone([], lattice=L)
+        sage: LL(K)
+        []
+
+    The Lyapunov-like transformations on the nonnegative orthant are
+    simply diagonal matrices::
+
+        sage: K = Cone([(1,)])
+        sage: LL(K)
+        [[1]]
+
+        sage: K = Cone([(1,0),(0,1)])
+        sage: LL(K)
+        [
+        [1 0]  [0 0]
+        [0 0], [0 1]
+        ]
+
+        sage: K = Cone([(1,0,0),(0,1,0),(0,0,1)])
+        sage: LL(K)
+        [
+        [1 0 0]  [0 0 0]  [0 0 0]
+        [0 0 0]  [0 1 0]  [0 0 0]
+        [0 0 0], [0 0 0], [0 0 1]
+        ]
+
+    Only the identity matrix is Lyapunov-like on the `L^{3}_{1}` and
+    `L^{3}_{\infty}` cones [Rudolf et al.]_::
+
+        sage: L31 = Cone([(1,0,1), (0,-1,1), (-1,0,1), (0,1,1)])
+        sage: LL(L31)
+        [
+        [1 0 0]
+        [0 1 0]
+        [0 0 1]
+        ]
+
+        sage: L3infty = Cone([(0,1,1), (1,0,1), (0,-1,1), (-1,0,1)])
+        sage: LL(L3infty)
+        [
+        [1 0 0]
+        [0 1 0]
+        [0 0 1]
+        ]
+
+    TESTS:
+
+    The inner product `\left< L\left(x\right), s \right>` is zero for
+    every pair `\left( x,s \right)` in the discrete complementarity set
+    of the cone::
+
+        sage: K = random_cone(max_dim=8, max_rays=10)
+        sage: C_of_K = discrete_complementarity_set(K)
+        sage: l = [ (L*x).inner_product(s) for (x,s) in C_of_K for L in LL(K) ]
+        sage: sum(map(abs, l))
+        0
 
     """
     V = K.lattice().vector_space()