2015-10-04 18 views
9

変数を直接割り当てても、変数を遡及的に使用した式は変更されません。sympyの式で複数のシンボルを置換する方法は?

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

>>> f 
x + y 
+0

チェックアウト: 'expr.subs(x、val)'についてはhttp://docs.sympy.org/latest/tutorial/basic_operations.html –

答えて

17

置換するいくつかの値:実際にあなたが本当に

は試してみてください(http://docs.sympy.org/latest/tutorial/basic_operations.htmlを参照)subsでそれらを代用したいまで値を代入しないように設計されてsympy

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

これまでの回答を探していました。なぜ私のコードがうまくいかなかったのか理解していますが、値をサブクラスするための構文のクイックリファレンスが必要でした。私の最初のグーグルサーチで何かを見つけることができなかったので、いつか次の男をいつか救うために考え出した後、答えを共有すると思った。投稿Q&Aスタイルはstackoverflowの機能です。 http://meta.stackoverflow.com/questions/290038/answer-your-own-question-qa-style – Wesley

+0

fがシンボルの行列の場合はどうなりますか? 'a = symarray( 'a'、3)'のように? –

1

f.subs({x:0}) 
f.subs(x, 0) # as alternative 
の代わりに
x = 0 
+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式には影響しません。これにはまだSymbol('x')が含まれています。

これが最良のSympyドキュメントのこのページで説明されています。他の回答で述べたようあなたが何をしたいのか http://docs.sympy.org/latest/gotchas.html#variables

は、f.subs(x,0)です。

+0

fがシンボルの行列の場合はどうなりますか? 'a = symarray( 'a'、3)'のように? –

関連する問題