Sympy不更新系列系数

时间:2018-05-19 17:11:46

标签: python python-3.x python-2.7 sympy

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)  

会做到这一点。有没有其他方法可以做同样的事情?谢谢!

1 个答案:

答案 0 :(得分:2)

除了可变矩阵,SymPy对象是不可变的。他们的方法不会修改它们;而是返回一个新对象。需要将此对象分配给某个(或打印或返回):

q2 = q1.subs(...)
print(q1.subs(...))
return q1.subs(...)  
一切都有意义;孤独的q1.subs(...)是没用的。

Immutability of Expressions下的“陷阱和陷阱”一文中对此进行了介绍;我也建议您阅读该页面的其余部分。