filter_diagonal_terms
filter_diagonal_terms(op)
占有数基底において対角成分となる演算子の項を除去する。
これにより、指定された式の中から、数演算子の積( )である FermionOperator すべての項が除去されます。これには、定数項(数演算子の積がゼロであるもの)、単一の数演算子、および のような高次の積も含まれます。
ヒント
このような項を除去する主な動機は、演算子の時間発展において生じます。そこでは、このような対角項は、全体的な位相を導入する以外、時間発展に影響を与えないからです。 したがって、時間とともに変化した状態からサンプリングされたビット列は、影響を受けない。 したがって、例えば、 SqDRIFT, で使用される qDRIFT の時間発展のための電子構造ハミルトニアンを準備する際には、これらを除去することを推奨します。そうすることで、そうでなければ生じる不必要なサンプリングのオーバーヘッドを回避できるからです。
警告
指定された演算子は、正規順序でなければならない! これは、検証されていない実装上の前提条件です。 その形式の演算子を得る方法については normal_ordered() 、を参照してください。
注
演算子はその場で変更されます。 グループインデックスを追跡する場合(参照 groups)、残存する項は相対的なグループ分けを維持しますが、グループインデックスは0から始まる連続した範囲に再割り当てされます。 したがって、この関数の呼び出しを通じて、どの項の特定のグループインデックスも維持されるとは限らないため、それに依存してはなりません。
>>> from qiskit_fermions.operators import FermionOperator
>>> from qiskit_fermions.operators.terms.filtering import filter_diagonal_terms
>>> op = FermionOperator.from_dict(
... {
... (): 1.0, # constant (diagonal)
... ((True, 0), (False, 0)): 2.0, # n_0 (diagonal)
... ((True, 0), (True, 1), (False, 1), (False, 0)): 3.0, # n_0 n_1 (diagonal)
... ((True, 0), (False, 1)): 4.0, # a†_0 a_1 (off-diagonal)
... }
... )
>>> filter_diagonal_terms(op)
>>> list(op.iter_terms())
[([(True, 0), (False, 1)], (4+0j))]
パラメーター
op – フィルタリング対象となる対角要素を持つ、正規順序演算子。
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。