]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
Fix the is_positive_on test and give better examples.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 12 Feb 2017 21:38:44 +0000 (16:38 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 12 Feb 2017 21:38:44 +0000 (16:38 -0500)
mjo/cone/cone.py

index a7c16a520cbe19242398e176635ad3250e5c7671..01ef5f9d5cc56b087344237b9b5c915423ac0921 100644 (file)
@@ -30,6 +30,16 @@ def is_positive_on(L,K):
 
     EXAMPLES:
 
+    Positive operators on the nonnegative orthant are nonnegative
+    matrices::
+
+        sage: K = Cone([(1,0,0),(0,1,0),(0,0,1)])
+        sage: L = random_matrix(QQ,3).apply_map(abs)
+        sage: is_positive_on(L,K)
+        True
+
+    TESTS:
+
     The identity is always positive in a nontrivial space::
 
         sage: set_random_seed()
@@ -46,8 +56,6 @@ def is_positive_on(L,K):
         sage: is_positive_on(L,K)
         True
 
-    TESTS:
-
     Everything in ``K.positive_operators_gens()`` should be
     positive on ``K``::
 
@@ -66,7 +74,7 @@ def is_positive_on(L,K):
     elif L.base_ring() is SR:
         # Fall back to inequality-checking when the entries of ``L``
         # might be symbolic.
-        return all([ s*(L*x) >= 0 for x in K for s in K ])
+        return all([ s*(L*x) >= 0 for x in K for s in K.dual() ])
     else:
         # The only inexact ring that we're willing to work with is SR,
         # since it can still be exact when working with symbolic
@@ -246,6 +254,16 @@ def is_lyapunov_like_on(L,K):
 
     EXAMPLES:
 
+    Lyapunov-like operators on the nonnegative orthant are diagonal
+    matrices::
+
+        sage: K = Cone([(1,0,0),(0,1,0),(0,0,1)])
+        sage: L = diagonal_matrix(random_vector(QQ,3))
+        sage: is_lyapunov_like_on(L,K)
+        True
+
+    TESTS:
+
     The identity is always Lyapunov-like in a nontrivial space::
 
         sage: set_random_seed()
@@ -262,8 +280,6 @@ def is_lyapunov_like_on(L,K):
         sage: is_lyapunov_like_on(L,K)
         True
 
-    TESTS:
-
     Everything in ``K.lyapunov_like_basis()`` should be Lyapunov-like
     on ``K``::