Sympy没有更新级数系数

3
aa = list(symbols('a0:2'))
q1= series(aa[0]/(1-x) + aa[1]/(1-x**2),x,n=6)
q1.subs(aa[0],1)  
print(q1)
Output: x**2*(a0 + a1) + x**4*(a0 + a1) + a1 + a0 + a0*x + a0*x**3 + a0*x**5 + O(x**6)

但是我希望系列中所有的a0都被值为1的替代:

Output: x**2*(1 + a1) + x**4*(1 + a1) + a1 + 1 + 1*x + 1*x**3 + 1*x**5 + O(x**6)

我的理解是:

q1.subs(aa[0],1)  

想要实现这个功能。还有其他的方法吗?谢谢!


subs produces a new expression. It does not modify q1 itself. Try q2 = q1.subs(...); print(q2) - hpaulj
1个回答

2

除了可变矩阵外,SymPy对象是不可变的。它们的方法不会修改它们; 而是返回一个新的对象。这个对象需要被赋值给某个东西(或打印出来,或返回):

q2 = q1.subs(...)
print(q1.subs(...))
return q1.subs(...)  

所有的都有意义;孤独的q1.subs(...)是无用的。

这在“陷阱和缺陷”文章中有所涵盖,位于表达式的不可变性下;我建议也阅读该页面的其余内容。


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