2015-10-04 47 views
9

直接賦值變量不會修改追溯使用該變量的表達式。如何用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)' –

回答

17

要替換幾個值:

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

正在尋找這個答案。我明白爲什麼我的代碼無法正常工作,但我只需要一個快速參考語法的子值。在我的第一個谷歌搜索找不到任何東西,所以我想我會分享答案後,我想通了,希望有時間保存下一個人。發佈問答風格是計算器的一項功能。 http://meta.stackoverflow.com/questions/290038/answer-your-own-question-qa-style – Wesley

+0

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

1

命令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)'? –

相關問題