使用具有常数多项式的Sum生成器在SymPy中需要的错误

时间:2018-06-25 19:17:23

标签: python sympy

我遇到错误

  

sympy.polys.polyerrors.GeneratorsNeeded:如果没有生成器,则无法从'dict'初始化

当我尝试对零多项式求和时。错误发生在该行

    g = k*Sum(f,(m,k,n)).doit()

此处mn是符号,而k是整数。发生错误 f初始化为Poly(0,m)时,第一次执行循环。该脚本计算多项式序列。相反,如果我将f初始化为Poly(m,m),则脚本运行完成。如果尝试Poly(1,m),则会收到与以前相同的错误。

如何定义常数多项式,以便脚本可以正确执行?

1 个答案:

答案 0 :(得分:2)

Sumdoit()传递给它试图求和的对象,这是发生错误的地方。因此,一个最小的例子是

x = symbols('x')
f = Poly(0, x)
f.doit()  #  GeneratorsNeeded: can't initialize from 'dict' without generators

看起来像一个错误,没有正确解决一个极端情况。但是有一种解决方法:将 expression 传递给Sum(无论如何,这都是期望值),而不是Poly对象。多边形由as_expr()变成表达式。

f = Poly(0, m)
Sum(f.as_expr(), (m, 0, n)).doit()   #  0