1 | initial version |
If I adapt the problem to the comment, it is possible to use integer points in polyhedra.
First, one creates the polyhedron of partitions with parts \geq 2
in chamber
. Then, one fixes the sum of the parts to be N
in the coord_sum
. Taking the intersection and then the integral points, we get at least the potential partitions. Then, one can iterate to test the inverse sum.
For d=1
I get:
sage: for N in range(2,13):
....: chamber = Polyhedron(rays=[[0]*_+[2]*(N-_) for _ in range(N)],backend='normaliz')
....: coord_sum = Polyhedron(eqns=[[-N]+[1]*N],backend='normaliz')
....: start_partitions = (chamber & coord_sum).integral_points()
....: d = 1
....: for p in start_partitions:
....: non_zero = [_ for _ in p if _ > 0]
....: if sum([1/_ for _ in non_zero]) == len(non_zero) - d - 1:
....: print(p)
....:
(0, 0, 0, 0, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 3, 3, 3)
(0, 0, 0, 0, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 6)
(0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 6)
(0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2)
If my code is not correct, one may still modify it to get the proper definition of admissibility...
2 | No.2 Revision |
If I adapt the problem to the comment, it is possible to use integer points in polyhedra.
First, one creates the polyhedron of partitions with parts in \geq 2
chamber
. Then, one fixes the sum of the parts to be N
in the coord_sum
. Taking the intersection and then the integral points, we get at least the potential partitions. Then, one can iterate to test the inverse sum.sum and the minimal part.
For d=1
I get:
sage: for N in range(2,13):
....: chamber = Polyhedron(rays=[[0]*_+[2]*(N-_) Polyhedron(rays=[[0]*_+[1]*(N-_) for _ in range(N)],backend='normaliz')
....: coord_sum = Polyhedron(eqns=[[-N]+[1]*N],backend='normaliz')
....: start_partitions = (chamber & coord_sum).integral_points()
....: d = 1
....: for p in start_partitions:
....: non_zero = [_ for _ in p if _ > 0]
....: if min(non_zero) >= 2 and sum([1/_ for _ in non_zero]) == len(non_zero) - d - 1:
....: print(p)
....:
(0, 0, 0, 0, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 3, 3, 3)
(0, 0, 0, 0, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 6)
(0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 6)
(0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2)
If my code is not correct, one may still modify it to get the proper definition of admissibility...
3 | No.3 Revision |
If I adapt the problem to the comment, it is possible to use integer points in polyhedra.
First, one creates the polyhedron of partitions in chamber
. Then, one fixes the sum of the parts to be N
in the coord_sum
. Taking the intersection and then the integral points, we get at least the potential partitions. Then, one can iterate to test the inverse sum and the minimal part.
For d=1
I get:
sage: d = 1
....: adm_part = set()
....: for k in range(2,2*(d+1)+1):
....: chamber = Polyhedron(rays=[[0]*_+[1]*(k-_) for _ in range(k)],backend='normaliz')
....: for N in range(2,13):
....: chamber = Polyhedron(rays=[[0]*_+[1]*(N-_) for _ in range(N)],backend='normaliz')
....: range(2*k,25):
....: coord_sum = Polyhedron(eqns=[[-N]+[1]*N],backend='normaliz')
....: Polyhedron(eqns=[[-N]+[1]*k],backend='normaliz')
....: start_partitions = (chamber & coord_sum).integral_points()
....: d = 1
....: for p in start_partitions:
....: non_zero = [_ tuple([_ for _ in p if _ > 0]
....: 0])
....: if min(non_zero) >= 2 and sum([1/_ for _ in non_zero]) == len(non_zero) - d - 1:
....: print(p)
....:
(0, 0, 0, 0, 2, if non_zero not in adm_part:
....: adm_part.add(non_zero)
....: print(non_zero)
....:
(3, 3, 3)
(2, 4, 4)
(2, 3, 6)
(2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 3, 3, 3)
(0, 0, 0, 0, 0, 0, 0, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 6)
If my code is not correct, one may still modify it to get the proper definition of admissibility...
4 | No.4 Revision |
If I adapt the problem to the comment, it is possible to use integer points in polyhedra.
First, one creates the polyhedron of partitions in chamber
. Then, one fixes the sum of the parts to be N
in the coord_sum
. Taking the intersection and then the integral points, we get at least the potential partitions. Then, one can iterate to test the inverse sum and the minimal part.
For d=1
I get:
sage: d = 1
....: bound = 25
....: adm_part = set()
....: for k in range(2,2*(d+1)+1):
....: chamber = Polyhedron(rays=[[0]*_+[1]*(k-_) for _ in range(k)],backend='normaliz')
....: for N in range(2*k,25): range(2*k,bound):
....: coord_sum = Polyhedron(eqns=[[-N]+[1]*k],backend='normaliz')
....: start_partitions = (chamber & coord_sum).integral_points()
....: for p in start_partitions:
....: non_zero = tuple([_ for _ in p if _ > 0])
....: if min(non_zero) >= 2 and sum([1/_ for _ in non_zero]) == len(non_zero) - d - 1:
....: if non_zero not in adm_part:
....: adm_part.add(non_zero)
....: print(non_zero)
....:
(3, 3, 3)
(2, 4, 4)
(2, 3, 6)
(2, 2, 2, 2)
If my code is not correct, one may still modify it to get the proper definition of admissibility...