From 785d079a2f5faa5126685aea96d584c3fa9c3007 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Fri, 2 Nov 2018 10:00:44 -0400 Subject: [PATCH] mjo/cone: add the nonnegative_orthant module. --- mjo/cone/all.py | 1 + mjo/cone/nonnegative_orthant.py | 53 +++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 mjo/cone/nonnegative_orthant.py diff --git a/mjo/cone/all.py b/mjo/cone/all.py index bda0d03..e7d3bff 100644 --- a/mjo/cone/all.py +++ b/mjo/cone/all.py @@ -6,6 +6,7 @@ from mjo.cone.cone import * from mjo.cone.completely_positive import * from mjo.cone.doubly_nonnegative import * from mjo.cone.faces import * +from mjo.cone.nonnegative_orthant import * from mjo.cone.permutation_invariant import * from mjo.cone.rearrangement import * from mjo.cone.symmetric_psd import * diff --git a/mjo/cone/nonnegative_orthant.py b/mjo/cone/nonnegative_orthant.py new file mode 100644 index 0000000..c116330 --- /dev/null +++ b/mjo/cone/nonnegative_orthant.py @@ -0,0 +1,53 @@ +""" +The nonnegative orthant in `\mathbb{Z}^{n}`. I'm sick and tired of +typing it. +""" + +from sage.all import * + +def nonnegative_orthant(n): + r""" + The nonnegative orthant in ``n`` dimensions. + + INPUT: + + - ``n`` -- the dimension of the ambient space. + + OUTPUT: + + The convex cone having ``n`` standard basis vectors as its + generators. Each generating ray will have the integer ring as its + base ring. + + SETUP:: + + sage: from mjo.cone.nonnegative_orthant import nonnegative_orthant + + EXAMPLES:: + + sage: nonnegative_orthant(3).rays() + N(1, 0, 0), + N(0, 1, 0), + N(0, 0, 1) + in 3-d lattice N + + TESTS: + + We can construct the trivial cone as the nonnegative orthant in a + trivial vector space:: + + sage: nonnegative_orthant(0) + 0-d cone in 0-d lattice N + + The nonnegative orthant is a proper cone:: + + sage: set_random_seed() + sage: n = ZZ.random_element(10) + sage: K = nonnegative_orthant(n) + sage: K.is_proper() + True + + """ + I = identity_matrix(ZZ,n) + lattice = ToricLattice(n) + return Cone(I.rows(), lattice) -- 2.43.2