HI, я пытаюсь найти общее выражение для получения показателей многовариантного многочлена порядка order
и с n_variables
, подобно тому, которое представлено в этой ссылке в уравнении (3).
Вот мой текущий код, который использует генератор itertools.product
.
def generalized_taylor_expansion_exponents( order, n_variables ):
"""
Find the exponents of a multivariate polynomial expression of order
`order` and `n_variable` number of variables.
"""
exps = (p for p in itertools.product(range(order+1), repeat=n_variables) if sum(p) <= order)
# discard the first element, which is all zeros..
exps.next()
return exps
Требуется следующее:
for i in generalized_taylor_expansion_exponents(order=3, n_variables=3):
print i
(0, 0, 1)
(0, 0, 2)
(0, 0, 3)
(0, 1, 0)
(0, 1, 1)
(0, 1, 2)
(0, 2, 0)
(0, 2, 1)
(0, 3, 0)
(1, 0, 0)
(1, 0, 1)
(1, 0, 2)
(1, 1, 0)
(1, 1, 1)
(1, 2, 0)
(2, 0, 0)
(2, 0, 1)
(2, 1, 0)
(3, 0, 0)
На самом деле этот код выполняется быстро, потому что объект генератора только создан.Если я хочу заполнить список значениями из этого генератора, выполнение действительно начинает выполняться медленно, в основном из-за большого количества вызовов sum
.Типичное значение для order
и n_variables
составляет 5 и 10. соответственно.
Как я могу значительно улучшить скорость выполнения?
Спасибо за любую помощь.
Davide Lasagna