X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fcone%2Fschur.py;h=53607a948ef26a3cb9f5fae2d86c8d895a4fab71;hb=7b8b7a41b839e1a0180ba0a4f7506dcc655b51e9;hp=d1bad98bb2b6b2a8f5be968efd29e0c79cf9f1fb;hpb=c41a2b88c599484041267165cf7f83fc880e4105;p=sage.d.git diff --git a/mjo/cone/schur.py b/mjo/cone/schur.py index d1bad98..53607a9 100644 --- a/mjo/cone/schur.py +++ b/mjo/cone/schur.py @@ -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)