In [12]:
P0 = Polyhedron(vertices = [[0, 0, 0], [1, 0, 0], [0, 1, 0], [1, 1, 1]])
In [13]:
P0
Out[13]:
In [1]:
P1 = Polyhedron(vertices = [[1, 0], [0, 1]], rays = [[1, 1]])
In [2]:
P1
Out[2]:
El texto que aparece al definir un politopo nos da mucha información acerca del politopo:
Por supuesto, deseamos ver el objecto:
In [11]:
P0.plot()
Out[11]:
In [3]:
P1.plot()
Out[3]:
Podemos ver todos los métodos disponibles escribiendo P1.
+ tecla tab.
In [4]:
P1. # ponga el cursor despues del punto y presione la tecla Tab
In [5]:
P2 = Polyhedron(vertices = [[1/2, 0, 0], [0, 1/2, 0]],rays = [[1, 1, 0]],lines = [[0, 0, 1]])
In [6]:
P2
Out[6]:
In [7]:
P1.parent()
Out[7]:
In [8]:
P2.parent()
Out[8]:
In [14]:
for h in P1.Hrepresentation():
print(h)
Cada línea da una fila de la matriz $A$ y una entrada del vector $b$. La variable $x$ es el vector en el espacio donde $P1$ está definido. La $H$-representación puede contener ecuaciones:
La construcción de un politopo a traves de su $H$-representación, requiere un formato preciso. Cada desigualdad $(a_{i1},\ldots,a_{id})⋅x+bi\geq 0$ debe ser escrita como $[b_i,a_{i1}, \ldots, a_{id}]$.
Vale la pena utilizar el parametro egns para reducir la construcción del objeto. En el siguiente ejemplo, las primeras cuatro filas son el negativo del segundo grupo de cuatro filas.
Como aprendimos de la clase, los ejemplos son muy importantes. Sage ha implementado varios ejemplos: http://doc.sagemath.org/html/en/reference/discrete_geometry/sage/geometry/polyhedron/library.html"
In [15]:
P3_QQ = Polyhedron(vertices = [[0.5, 0], [0, 0.5]], base_ring=QQ)
In [16]:
HRep = P3_QQ.Hrepresentation()
In [17]:
H1 = HRep[0]; H1
Out[17]:
In [18]:
H2 = HRep[1]; H2
Out[18]:
In [19]:
H1.A()
Out[19]:
In [20]:
H1.b()
Out[20]:
In [21]:
H1.is_equation()
Out[21]:
In [22]:
H1.is_inequality()
Out[22]:
In [23]:
H1.contains(vector([0,0]))
Out[23]:
In [24]:
H2.contains(vector([0,0]))
Out[24]:
In [25]:
H1.is_incident(H2)
Out[25]:
Es posible obtener los diferentes objetos de la H-representación de la siguiente manera.
In [26]:
P3_QQ.equations()
Out[26]:
In [27]:
P3_QQ.inequalities()
Out[27]:
In [28]:
VRep = P2.Vrepresentation(); VRep
In [ ]:
L = VRep[0]; L
In [ ]:
V = VRep[1]; V
In [29]:
R = VRep[3]; R
In [30]:
L.is_line()
In [31]:
L.is_incident(V)
In [32]:
R.is_incident(L)
In [33]:
L.vector()
In [34]:
V.vector()
Es posible obtener las diferentes objetos de la $V$-representación de la siguiente manera.
In [35]:
P2.vertices()
In [36]:
P2.rays()
In [37]:
P2.lines()
In [38]:
P2.vertices_matrix()
In [ ]:
In [ ]:
Ejercicio A
En este ejercicio, usted construirá el cuboctahedro de varias maneras y verificará que tienen el mismo tipo combinatorio.
1) La primera opción es verificar si están en la librería: http://doc.sagemath.org/html/en/reference/discrete_geometry/sage/geometry/polyhedron/library.html. ¡Si está! Entonces podemos utilizar la construcción dada.
In [39]:
CO = polytopes.cuboctahedron()
Veamos si en verdad se parece a lo que esperamos:
In [40]:
CO.plot()
Out[40]:
Podemos pedir el $f$-vector del cuboctahedro:
In [41]:
CO.f_vector()
Out[41]:
2) La segunda construcción utiliza el hecho de que podemos cortar los vértices por un nuevo hiperplano que atraviese las aristas exactamente en el punto medio.
In [42]:
Cube = polytopes.cube()
In [43]:
EC = Cube.edge_truncation(1/2)
Solo para verificar, calculemos el $f$-vector:
In [44]:
EC.f_vector()
Out[44]:
Pero como sabemos, dos politopos diferentes pueden tener el mismo f-vector, asi que debemos verificar si son isomorfos combinatoriamente:
In [45]:
EC.is_combinatorially_isomorphic(CO)
Out[45]:
!Genial!
Ahora solo para entender la construcción de una mejor manera, visualicemos el corte usual:
In [46]:
TC = Cube.truncation()
In [47]:
TC.show()
3) La tercera construcción utiliza unos trucos bonitos que podemos hacer en Sage.
Podemos tomar el polar dual del cubo, que nos da el octahedro, y ampliarlo por un factor de 2:
In [48]:
OC = 2*Cube.polar()
Luego, podemos tomar otra vez la intersección con el cubo :
In [49]:
ECCO = Cube & OC
Que politopo es ECCO?
In [50]:
ECCO.is_combinatorially_isomorphic(EC)
Out[50]:
!Eso es todo! Encontramos tres maneras de construir el cuboctahedro.
Ejercisio B
Escoja cinco ejemplos discutidos en la clase que esten en la lista: http://doc.sagemath.org/html/en/reference/discrete_geometry/sage/geometry/polyhedron/library.html" y visualicelos, encuentre la $V$-representación, la $H$-representación, y el $f$-vector
In [ ]:
In [ ]:
In [ ]:
In [ ]: