Python nos proporciona un módulo de terceros para operar sobre politopos. Para quien no sepa qué son los politopos, los politopos son una forma geométrica en una geometría n-dimensional correspondiente a un polígono o poliedro. Al igual que otras figuras geométricas como un cuadrado o un cubo, un politopo no se limita a una sola dimensión. Puede ser 2-D, 3-D o nD.
Un politopo n-dimensional generalmente se representa como n-politopo . Por ejemplo, un politopo 2-D se representará como 2-politopo, un politopo 3-D como 3-politopo y así sucesivamente. Un politopo se almacena dentro de Python utilizando la representación de medio espacio o representación H. Esto significa que un politopo se representa como la multiplicación vector-array de dos arrays y un vector:
Ax <= B
Aquí, A es una array de m*n, x es un conjunto de coordenadas multiplicado por A y B es una array de columna de m*1. El módulo de politopos nos permitirá realizar algunas operaciones geométricas sobre estos politopos. Comencemos con la instalación:
Un politopo es un módulo de terceros, por lo que tendríamos que instalarlo en nuestra máquina antes de poder usarlo. Para instalar el módulo, simplemente escriba esto en la terminal:
pip install polytope
Después de la instalación, importaremos el módulo a nuestro IDE como:
import polytope as pc
Ahora crearemos un politopo usando el módulo politopo:
# Python program to demonstrate # polytopes # Using numpy to create matrices import numpy as np import polytope as pc # Declaring numpy arrays A = np.array([[1.0, 2.0], [3.0, -1.0], [-1.0, 4.0], [0.0, -2.0]]) b = np.array([2.0, 0.0, 3.0, 1.0]) p = pc.Polytope(A, b) print(p)
Producción:
Aquí, creamos las arrays A y b usando arrays numpy. Luego usamos la .Polytope()
función para crear un politopo usando esas arrays. Aquí, no especificamos ningún valor de «x».
Métodos y operaciones sobre politopos:
Ahora que hemos creado un politopo simple, podemos realizar algunas operaciones básicas sobre ellos. Por ejemplo, el módulo de politopos nos permite comparar dos politopos.
Considere dos politopos, p1 y p2 , entonces:
- p1 == p2: Esto significa que cada elemento de p1 está en p2 y cada elemento de p2 está en p1 . Por lo tanto, p1 y p2 son exactamente idénticos.
- p1 <= p2: Esto significa que p1 es un subconjunto de p2 . Por lo tanto, cada elemento de p1 está en p2 pero lo mismo puede no ser cierto para p2 .
- p2 <= p1: Esto significa que p2 es un subconjunto de p1 . Por lo tanto, cada elemento de p2 está en p1 pero lo mismo puede no ser cierto para p1 .
También podemos verificar si un elemento está en un politopo usando:
[4.0, 5.0] in p1
Algunas operaciones matemáticas básicas disponibles para politopos incluyen:
- p1.diferencia(p2)
- p1.union(p2)
- p1.intersecar(p2)
Por ejemplo:
# Python program to demonstrate # polytopes # Using numpy to create matrices import numpy as np import polytope as pc # Declaring numpy arrays A = np.array([[1.0, 2.0], [3.0, -1.0], [-1.0, 4.0], [0.0, -2.0]]) b = np.array([2.0, 0.0, 3.0, 1.0]) C = np.array([[1.0, 0.0], [2.0, 4.0], [3.0, -1.0], [1.0, 9.0]]) d = np.array([2.0, 0.0, -1.0, 3.0]) p1 = pc.Polytope(A, b) p2 = pc.Polytope(C, d) # Using diff method p1.diff(p2)
Producción:
Podemos iterar sobre una región de politopos. Una región puede entenderse como un contenedor que contiene dos politopos, donde uno es el comienzo y el otro el final. Considere el siguiente código.
# Python program to demonstrate # polytopes import numpy as np import polytope as pc # Declaring numpy arrays A = np.array([[1.0, 2.0], [3.0, -1.0], [-1.0, 4.0], [0.0, -2.0]]) b = np.array([2.0, 0.0, 3.0, 1.0]) C = np.array([[1.0, 0.0], [2.0, 4.0], [3.0, -1.0], [1.0, 9.0]]) d = np.array([2.0, 0.0, -1.0, 3.0]) p1 = pc.Polytope(A, b) p2 = pc.Polytope(C, d) r = pc.Region([p1, p2])
El código anterior creará una región de dos politopos. Esto se puede usar como un iterador como:
for polytope in r: print(polytope)
producción:
Publicación traducida automáticamente
Artículo escrito por agarwalkeshav8399 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA