Как в цикле Python обеспечить скобки в результате прохода циклом?
Пишу фрагмент кода вычисления полинома Ньютона. И в ходе прохода циклом for мне необходимо получить 3 слагаемых (и каждое должно быть в скобках):
(x - 30)(x - 20)(x - 10) + (x - 20)*(x - 10) + (x - 10)
И вот когда я иду кодом, получаю такое:
x + (x - 30)(x - 20)(x - 10) + (x - 20)*(x - 10) - 10
Мне важно иметь 3 слагаемых, поскольку в дальнейшем каждое из них в другом цикле будет перемножаться на коэффициенты.
Как добиться?
Код:
from sympy import symbols
x = symbols('x')
dig_list = [10, 20, 30]
poly_0 = x-dig_list[0]
summa = poly_0
for i in range(1, len(dig_list)):
poly_n = poly_0 * (x-dig_list[i])
summa += poly_n
poly_0 = poly_n
print(summa)
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
sympy.UnevaluatedExpr запрещает SymPy упрощать то что внутри выражения. Я упростил ваш код, первое слагаемое можно не обрабатывать отдельно:
from sympy import symbols, UnevaluatedExpr
x = symbols('x')
dig_list = [10, 20, 30]
sum_ = 0
term = 1
for xi in dig_list:
term *= UnevaluatedExpr(x - xi)
sum_ += term
print(sum_)
(x - 10) + (x - 10)*(x - 20) + (x - 10)*(x - 20)*(x - 30)