2015-09-04 3 views
4

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

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

+1

Очень жаль, что ваш пример списка зеркально - что затрудняет определение того, какой элемент является коэффициентом для 'x ** 0' и который является коэффициентом для' x ** 2'. – mgilson

+1

@mgilson Не имеет значения: возьмите любой заказ, который вам подходит. Я пытаюсь сказать, что я мог бы легко сделать «[:: - 1», если понадобится. –

ответ

8

Вы можете использовать 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') 
+0

Единственная документация, которую я нашел для этого, - http://docs.sympy.org/0.7.1/modules/polys/reference.html, которая упоминает только метод from_list() как метод класса, затем нужно щелкнуть ссылку источника на выяснить класс, о котором идет речь, это Poly и до сих пор не найдено примеров того или иного метода класса Poly. Есть ли более хорошая документация для методов sympy.polys.polytools.Poly? –

+0

@TrisNefzger - Я, к сожалению, не нашел дополнительной документации для этого метода. Я предполагаю, что SymPy по-прежнему является относительно молодым проектом, документация все еще немного догоняет ... –

2

Он смотрит на меня, как вы могли бы сделать что-то вроде:

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 в выше.

3

Это простая альтернатива работает для меня (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') 
Смежные вопросы