Skip to main content
IBM Quantum Platform

filter_diagonal_terms

filter_diagonal_terms(op)

占有数基底において対角成分となる演算子の項を除去する。

これにより、指定された式の中から、数演算子の積( aiaia^\dagger_i a_i )である FermionOperator すべての項が除去されます。これには、定数項(数演算子の積がゼロであるもの)、単一の数演算子、および ninj=aiajajain_i n_j = a^\dagger_i a^\dagger_j a_j a_i のような高次の積も含まれます。

ヒント

このような項を除去する主な動機は、演算子の時間発展において生じます。そこでは、このような対角項は、全体的な位相を導入する以外、時間発展に影響を与えないからです。 したがって、時間とともに変化した状態からサンプリングされたビット列は、影響を受けない。 したがって、例えば、 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で行ってください。