2016-03-18 19 views
1

私は整流子の操作をいくつか試してみたいと思って、このツールをsympyで見つけました。それは期待どおりに動作するようです(しかし、ドキュメントは事実上存在しないか、少なくとも私はほとんど見つけられませんでしたが、以下のDalton Bentleyのコメントを参照してください)。代わり期待単純結果0sympy.physics.quantum Commutatorの使い方は?

from sympy.physics.quantum import Commutator as Comm 
from sympy.physics.quantum import Operator 
A = Operator('A') 
B = Operator('B') 
C = Comm(Comm(Comm(A,B),A),B) 
D = Comm(Comm(Comm(A,B),B),A) 
E = (C-D).expand(commutator=true) 
E 
>>> [[[A,B],A],B] - [[[A,B],B],A] 

([[[A、B]、A]、B] = [[[A、B]、B]、A]以降)。では、整流子を評価することなく(つまり、doit()関数を呼び出すことなく)簡単な結果を強制するにはどうすればよいですか?

simplify(E.doit()) 
>>> 0 

が望ましい結果になることに注意してください。

+0

なぜ呼んでいる 'のdoIt()'問題:

は、私はここで、このために問題を開きましたか?一般的にSymPyは、単純化が非常にコストがかかることがあり(コストは通常​​、先験的に予測することが難しいため)、自動的に単純化することで控えめです。編集:またはあなたは交換機のアイデンティティについてSymPyを教えたいですか? –

+0

@BjoernDahlgren評価のつかない状況で答えを知りたい、つまり私は整流子式が必要です。未評価の文脈における簡略化は、上記の結果に対してゼロを得るべきである。 – Walter

+2

私は[実装されていない](https://github.com/sympy/sympy/blob/112d6abaf2c777a844d4290db9ecd952053a4a55/sympy/physics/quantum/commutator.py#L121)と言うことができます。問題を開くことができます。 –

答えて

1

現在、SymPyではCommutator._eval_expand_commutatorはこの識別情報を知らないため、式を簡略化できるように整流子を拡張する必要があります(.doitメソッド)。

整流子の引数に整流子が含まれている場合には、Commutator._eval_expand_commutatorメソッドに特殊なケースを追加し、既知のIDをチェックすることが必要になります。 https://github.com/sympy/sympy/issues/10892