Список коэффициентов к многочлену

Как создать полином из списка коэффициентов в SymPy?

Например, учитывая список [1, -2, 1], я хотел бы получить Poly(x**2 - 2*x + 1). Я попытался просмотреть документы, но не смог найти ничего подобного.


person Ecir Hana    schedule 04.09.2015    source источник
comment
К сожалению, ваш примерный список зеркальный — из-за этого трудно сказать, какой элемент является коэффициентом x**0, а какой — коэффициентом x**2.   -  person mgilson    schedule 05.09.2015
comment
@mgilson Неважно: принимайте любой заказ, который вам подходит. Я пытаюсь сказать, что я мог бы легко сделать [::-1, если бы мне было нужно.   -  person Ecir Hana    schedule 05.09.2015


Ответы (3)


Вы можете использовать Poly.from_list построить многочлен:

>>> x = sympy.Symbol('x')
>>> sympy.Poly.from_list([1, -2, 1], gens=x)
Poly(x**2 - 2*x + 1, x, domain='ZZ')
person Alex Riley    schedule 04.09.2015
comment
Единственная документация, которую я нашел для этого, — это docs.sympy.org/0.7. 1/modules/polys/reference.html, в котором только упоминается from_list() как метод класса, затем пришлось щелкнуть ссылку на источник, чтобы узнать, что рассматриваемый класс — это Poly, и по-прежнему не нашел примеров этого или другого Методы полигонального класса. Есть ли лучшая документация для методов sympy.polys.polytools.Poly? - person ; 05.09.2015
comment
@TrisNefzger - я просмотрел, но, к сожалению, не нашел никакой дополнительной документации для этого метода. Я думаю, поскольку SymPy все еще является относительно молодым проектом, документация еще должна наверстать упущенное... - person Alex Riley; 05.09.2015

Мне кажется, что вы бы сделали что-то вроде:

from sympy.abc import x
from sympy import poly
lst = [1, -2, 1]
poly(sum(coef*x**i for i, coef in enumerate(reversed(lst))))

Конечно, вы не зависите от того, какой коэффициент соответствует x**0, вам может не понадобиться reversed в приведенном выше примере.

person mgilson    schedule 04.09.2015

Эта более простая альтернатива работает для меня (Sympy 0.7.6.1):

>>> from sympy import Symbol, Poly
>>> x = Symbol('x')
>>> Poly([1,2,3], x)
Poly(x**2 + 2*x + 3, x, domain='ZZ')
person Adrien    schedule 13.09.2015