TEBDEvolver
class TEBDEvolver(evolution_state, *args, order=2, **kwargs)
内部MPOを進化させるためのTEBDアルゴリズム。
で詳しく説明されているように、この拡張は quimb_tebdで詳述しているが、 quimbの既存の quimb.tensor.TEBD 実装は、従来の行列積状態(MPS)ではなく、内部の行列積演算子(MPO)を時間発展させる。
より具体的には、内部オブジェクトは MPOState.
このクラスのAPIは、ベース・クラスからさらにメソッドを継承しているため、実際にはここに示したものよりはるかに大きい。 quimb.tensor.TEBD を継承しているからだ。 しかし、ここではそのAPIを複製しない。
インスタンスを初期化する。 TEBDEvolver インスタンスを作成します。
パラメーター
-
evolution_state (MPOState | MatrixProductState) –
時間進化状態への参照。 の引数
p0を上書きする。quimb.tensor.TEBDクラスの引数を上書きします。警告デフォルトの動作とは対照的に、この状態は正規化されない。 その代わり、そのまま参照され、保持される(つまりコピーは作成されない)。 これは、アルゴリズムが要求するように、このクラスの2つのインスタンス間で同じオブジェクトを共有できることを保証する。
DynamicMPFアルゴリズムで要求される -
args - それ以上の位置引数は
quimb.tensor.TEBDに転送される。 -
order (int) – 時間発展時に使用するSuzuki-Trotter公式の順序。 これは
quimb.tensor.TEBD.step()メソッドに転送されます。 -
kwargs - それ以上のキーワード引数は、コンストラクタに転送されます。
quimb.tensor.TEBDに転送される。
属性
conjugate
この時間分解インスタンスが右辺で動作するかどうかを返します。
evolved_time
現在の進化時間を返します。
方法
step
step()
TEBDの単一時間ステップを実行する。
これは基本的に quimb.tensor.TEBD.step() を呼び出し、構築時に指定された order 属性の値を転送します。
戻りの型
なし
sweep
sweep(direction, dt_frac, dt=None, queue=False)
TEBD アルゴリズムのシングル掃引を実行する [1].
TEBDアルゴリズムは、基礎となるテンソルネットワークの偶数結合と奇数結合を交互に更新する。 基本クラスの実装では quimb.tensor.TEBD 基底クラスの実装では、これは内部状態を左右交互に「スイープ」する形で実現される。
メソッドを呼び出すために、このサブクラスでこのメソッドの動作を上書きしている。 gate_split() メソッドを呼び出すためです。
パラメーター
- direction (Literal['left', 'right']) – スイープの方向。 これはリテラル文字列、
"left"または"right"のいずれかでなければならない。 - dt_frac (float) – 内部時間ステップ(
dt)の何分の1を時間進化させるか。 これが、スズキ・トロッターの内蔵式が分割を指定する方法である。 - dt (float | None) – 内部時間ステップを上書きするためのオプション値。
- queue (bool) – これを
Trueに設定するとNotImplementedError.
レイズ
- NotImplementedError - if
queue=True. - NotImplementedError - もし
cyclicはTrueである。 - NotImplementedError - もし
imagはTrueである。 - RuntimeError - 無効な
direction。
戻りの型
なし
参考文献
[1]: https://en.wikipedia.org/wiki/Time-evolving _block_decimation