web-dev-qa-db-ja.com

sympyの式で複数のシンボルを置き換える方法は?

変数を直接割り当てても、変数をさかのぼって使用した式は変更されません。

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

>>> f
x + y
14
Wesley

複数の値を置き換えるには:

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

実際、sympyは、あなたが本当にsubsで値を置き換えるまで値を置き換えないように設計されています( http://docs.sympy.org/latest/tutorial/basic_operations.html を参照)

試して

f.subs({x:0})
f.subs(x, 0) # as alternative

の代わりに

x = 0
2
MSeifert

コマンド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)です。

2
Adrien