多项式系数列表

7

如何在SymPy中使用系数列表创建多项式?

例如,给定列表[1, -2, 1],我想得到Poly(x**2 - 2*x + 1)。我尝试查看文档,但没有找到类似的内容。


2
很遗憾,你的示例列表是镜像的 - 这使得很难确定哪个元素是 x ** 0 的系数,哪个是 x ** 2 的系数。 - mgilson
1
@mgilson 没关系:采用适合您的任何排序方式。我的意思是,如果需要,我可以轻松地执行 [::-1] - Ecir Hana
3个回答

10
您可以使用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')

1
我找到的唯一文档是http://docs.sympy.org/0.7.1/modules/polys/reference.html,它只提到了from_list()作为一个类方法,然后不得不点击源链接才发现所涉及的类是Poly,但仍然找不到关于此方法或其他Poly类方法的示例。是否有更好的sympy.polys.polytools.Poly方法文档? - user4322779
@TrisNefzger - 我已经查看了,但是很遗憾没有找到该方法的任何其他文档。我想由于SymPy仍然是一个相对年轻的项目,因此文档仍有一些需要补充的地方... - Alex Riley

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')

3

我认为你可以这样做:

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))))

当然,你不需要上述中的reversed, 具体取决于哪个系数映射到x**0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接