如何用sympy中的表达式替换多个符号?

问题描述:

直接赋值变量不会修改追溯使用该变量的表达式。如何用sympy中的表达式替换多个符号?

>>> from sympy import Symbol 
>>> x = Symbol('x') 
>>> y = Symbol('y') 
>>> f = x + y 
>>> x = 0 

>>> f 
x + y 
+0

请查看:http://docs.sympy.org/latest/tutorial/basic_operations.html for expr.subs(x,val)' –

要替换几个值:

>>> from sympy import Symbol 
>>> x, y = Symbol('x y') 
>>> f = x + y 
>>> f.subs({x:10, y: 20}) 
>>> f 
30 
+0

正在寻找这个答案。我明白为什么我的代码无法正常工作,但我只需要一个快速参考语法的子值。在我的第一个谷歌搜索找不到任何东西,所以我想我会分享答案后,我想通了,希望有时间保存下一个人。发布问答风格是计算器的一项功能。 http://meta.*.com/questions/290038/answer-your-own-question-qa-style – Wesley

+0

如果f是符号矩阵?如'a = symarray('a',3)'? –

其实sympy设计不是取代值,直到你真的想与subs来代替它们(见http://docs.sympy.org/latest/tutorial/basic_operations.html

尝试

f.subs({x:0}) 
f.subs(x, 0) # as alternative 
代替个
x = 0 
+0

如果f是符号矩阵,该怎么办?如'a = symarray('a',3)'? –

命令x = Symbol('x')存储Sympy的Symbol('x')成Python的变量x。之后创建的Sympy表达式f确实包含Symbol('x'),而不是Python变量x

当您重新指定x = 0时,Python变量x设置为零,并且不再与Symbol('x')相关。这对Sympy表达式没有影响,Sympy表达式仍然包含Symbol('x')

这在Sympy文档的这个页面是最好的解释: http://docs.sympy.org/latest/gotchas.html#variables

你想要做什么是f.subs(x,0),在其他的答案说。

+0

如果f是符号矩阵,该怎么办?如'a = symarray('a',3)'? –