]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/cone/schur.py
cone/nonnegative_orthant.py: add a word to the docs.
[sage.d.git] / mjo / cone / schur.py
index d1bad98bb2b6b2a8f5be968efd29e0c79cf9f1fb..53607a948ef26a3cb9f5fae2d86c8d895a4fab71 100644 (file)
@@ -19,6 +19,11 @@ def schur_cone(n):
 
     REFERENCES:
 
+    .. [GourionSeeger] Daniel Gourion and Alberto Seeger.
+       Critical angles in polyhedral convex cones: numerical and
+       statistical considerations. Mathematical Programming, 123:173-198,
+       2010, doi:10.1007/s10107-009-0317-2.
+
     .. [IusemSeegerOnPairs] Alfredo Iusem and Alberto Seeger.
        On pairs of vectors achieving the maximal angle of a convex cone.
        Mathematical Programming, 104(2-3):501-523, 2005,
@@ -47,6 +52,17 @@ def schur_cone(n):
         sage: abs(actual - expected).n() < 1e-12
         True
 
+    The dual of the Schur cone is the "downward monotonic cone"
+    [GourionSeeger]_, whose elements' entries are in non-increasing
+    order::
+
+        sage: set_random_seed()
+        sage: n = ZZ.random_element(10)
+        sage: K = schur_cone(n).dual()
+        sage: x = K.random_element()
+        sage: all( x[i] >= x[i+1] for i in xrange(n-1) )
+        True
+
     TESTS:
 
     We get the trivial cone when ``n`` is zero::
@@ -59,7 +75,7 @@ def schur_cone(n):
         sage: set_random_seed()
         sage: def majorized_by(x,y):
         ....:     return (all(sum(x[0:i]) <= sum(y[0:i])
-        ....:                 for i in range(x.degree()-1))
+        ....:                 for i in xrange(x.degree()-1))
         ....:             and sum(x) == sum(y))
         sage: n = ZZ.random_element(10)
         sage: V = VectorSpace(QQ, n)