我遇到错误
sympy.polys.polyerrors.GeneratorsNeeded:如果没有生成器,则无法从'dict'初始化
当我尝试对零多项式求和时。错误发生在该行
g = k*Sum(f,(m,k,n)).doit()
此处m
和n
是符号,而k
是整数。发生错误
f
初始化为Poly(0,m)
时,第一次执行循环。该脚本计算多项式序列。相反,如果我将f
初始化为Poly(m,m)
,则脚本运行完成。如果尝试Poly(1,m)
,则会收到与以前相同的错误。
如何定义常数多项式,以便脚本可以正确执行?
答案 0 :(得分:2)
Sum
将doit()
传递给它试图求和的对象,这是发生错误的地方。因此,一个最小的例子是
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