変数を直接割り当てても、変数をさかのぼって使用した式は変更されません。
>>> from sympy import Symbol
>>> x = Symbol('x')
>>> y = Symbol('y')
>>> f = x + y
>>> x = 0
>>> f
x + y
複数の値を置き換えるには:
>>> from sympy import Symbol
>>> x, y = Symbol('x y')
>>> f = x + y
>>> f.subs({x:10, y: 20})
>>> f
30
実際、sympyは、あなたが本当にsubs
で値を置き換えるまで値を置き換えないように設計されています( http://docs.sympy.org/latest/tutorial/basic_operations.html を参照)
試して
f.subs({x:0})
f.subs(x, 0) # as alternative
の代わりに
x = 0
コマンドx = Symbol('x')
は、SympyのSymbol('x')
をPythonの変数x
に保存します。後で作成するSympy式f
には、Python variable x
ではなく、Symbol('x')
が含まれます。
_x = 0
_を再割り当てすると、Python変数x
はゼロに設定され、Symbol('x')
とは無関係になります。これは効果がありません。まだSymbol('x')
を含むSympy式で。
これは、Sympyドキュメントのこのページで最もよく説明されています。 http://docs.sympy.org/latest/gotchas.html#variables
他の答えで述べたように、あなたがしたいのはf.subs(x,0)
です。