Я хочу генерировать перестановку, чтобы проверить ее, удовлетворяю уравнению, прежде чем я генерирую другое. Python [закPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я хочу генерировать перестановку, чтобы проверить ее, удовлетворяю уравнению, прежде чем я генерирую другое. Python [зак

Сообщение Anonymous »

Я пишу код, чтобы найти выпуклый n-n-gon с длиной стороны 1^k, 2^k, ..., n^k с равными углами интерьера. Если мы сформулируем это как задачу алгебры на сложной плоскости, это удовлетворено с помощью следующих уравнений: < /p> где a_1, a_2, ..., a_n - это некоторая перестановка 1^k, 2^k, ..., n^k без повторений. Так, например, для n = 3 вы можете иметь только боковые длины 1^0,2^0,3^0, для n = 6 = 2x3 вы можете иметь боковые длины 1^1,2^1, ..., 6^1, для n = 30 = 2x3x5 вы можете иметь боковые длины 1^2,2^2, ..., 30^2.
кодовый код. (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>
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»