Код: Выделить всё
w^n-1=0
- a_1+a_2w+...+a_nw^{n-1}=0
кодовый код. (at the moment n=12 and k=1 as it takes too long to generate any shape n>12 and w=e^{(2*i*pi)/n})
I'm currently using itertools to generate all permutations of the side lengths and then iterating through them to find a permutation that satisfies my equations and then it Перерывы. Мне было интересно, могу ли я написать какой -нибудь код, чтобы я мог проверить, удовлетворяет ли перестанов мои уравнения, прежде чем генерировать следующую перестановку для проверки. Это значительно сократит мое время выполнения, поскольку мне нужна только одна перестановка, которая работает. < /P>
Я не осознавал, что мой код должен быть здесь. Я принял предложение пользователя, и, похоже, он работает так, как предполагалось, но это все еще довольно медленно, если у кого -то есть еще несколько идей, чтобы сократить время. < /P>
import itertools
import numpy as np
import cmath
n = 12 #number of sides of the polygon
k = 1 #lengths = 1^k,2^k,...,n^k
lengths = [] #empty set to append edge lengths
w = cmath.exp((2*np.pi*1j)/n)
for i in range(1,n):
lengths.append(i**k)
for shape in itertools.permutations(lengths):
sum = n**k
for a in range(1,n):
sum = sum + shape[a-1]*w**a
if abs(round(sum.real,12)) == 0.0 and abs(round(sum.imag,12)) == 0.0:
ngon = [n**k]
for ii in shape:
ngon.append(ii)
print(ngon)
break
Подробнее здесь: https://stackoverflow.com/questions/795 ... ore-i-gene