OrbitalRotation
class OrbitalRotation(rotation_unitary)
ベース: FermionicGate
軌道周りの回転を実行します。
のユニタリ行列 (rotation_unitary)が与えられたとき、このゲートは、生成演算子を次のように写像する単一粒子の基底変換を実現する
これは、多体ユニタリー演算を適用することと同等である
ゲートが作用するフェルミオンモードの数は、 の次元である rotation_unitary。
このゲートのインスタンスの初期化は、以下に挙げる引数を使用して行うことができます。
パラメーター
rotation_unitary (np.ndarray) – のユニタリ行列 は、 を通じて軌道回転を定義する。これは正方行列かつユニタリでなければならない。これは呼び出し側の責任であり、検証は行われない。
属性
rotation_unitary
軌道回転係数を表す単位行列。
方法
from_t1_amplitudes
classmethod from_t1_amplitudes(t1)
(単一)の振幅から軌道回転を構築します。
この回転は、ユニタリ変換 であり、ここで、 の振幅行列 が、すべての 軌道にわたる反エルミート生成子に埋め込まれている
占有軌道が仮想軌道よりも先に並べられる。 これは、結合クラスター振幅から初期化される際に(L)UCJアンザッツに取り込まれる単一励起軌道回転である。詳細はを参照のこと UCJ。
パラメーター
t1 (ndarray) – 形状を持つ の振幅であり (nocc, nvrt)、ここで nocc は占有軌道数、 は nvrt 仮想軌道数である。
戻り値
モードで動作するもので OrbitalRotation 、その rotation_unitary である。
戻りの型
プロトコルの方法
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
ベクトルのグローバルモードに配置した後、軌道回転を適用します。
ゲートの局所行列( rotation_unitary ゲートのモード num_modes に作用する 行列)は、まずフルレジスタに埋め込まれます。具体的には、状態ベクトルのモード数分の単位行列を、によって選ばれた行・列に書き込む rotation_unitary 形となります freg_indices。
スピンフルな場合、埋め込み行列はアルファ/ベータ分割に沿ってブロック対角でなければならない。 アルファ/ベータがゼロではない対角線外のブロックを持つ回転は、スピンセクターを混合させる。これにより、個々のアルファ/ベータ電子数が保存されなくなり、結果として固定 (n_alpha, n_beta) セクター外の振幅が写像されてしまう。これは、固定セクターの状態ベクトルでは表現できない操作である。 このような回転は、. によって拒否されます ValueError。
その後、埋め込まれた行列は、次の2つの方法のいずれかで適用されます:
- 高速パス (がインストール
ffsimされている場合のみ):埋め込まれた行列は、ffsim.apply_orbital_rotation()のギブンズ回転カーネルを介して適用されます。 スピンフル・ブロック・スピン表記法(モード0..norbはアルファ軌道、モードnorb..2*norbはベータ軌道)では、2つの対角ブロックは、ffsim に として渡されるスピンごとの回転を表します(mat_a, mat_b)。 - 一般的な手順 :それ以外の場合(すなわち、 が
ffsim利用できない場合)、回転は、その生成元 による進化 として適用される。ここで、 は埋め込み行列である。 は、 (linear_operator()ネイティブの FCI 行列・ベクトルカーネルによってサポートされる)をscipy``LinearOperator介して に変換され、 を通じて適用されるscipy.sparse.linalg.expm_multiply()。 これは…を反映しているEvolution._apply_unitary_placed_()。
パラメーター
- vec (ndarray) – 作用させる状態ベクトル。
- norb (int) – グローバル状態ベクトルの空間軌道数。
- nelec (int |tuple[int, int]) – スピンを持たない系の場合は単一の整数、あるいはスピンαおよびスピンβのフェルミオンの数を表す整数のペアのいずれか。 整数の場合はスピンなしモードの解釈(モード
norbは軌道である)が選択され、ペアの場合はモード2 * norbのスピンを含むブロック(orb, spin)・スピン解釈が選択される。 - copy (bool) – 操作を行う前にベクトルをコピーするかどうか。
- freg_indices (list[int]) – このゲートのローカルモードが写像される絶対(グローバル)モードのインデックス。 回転は、適用される前にこれらのグローバルモードに組み込まれます。
戻り値
変換後のベクトル。
昇給
ValueError – がスピンフルな対であり nelec 、かつ(施された)回転がアルファおよびベータのスピンセクターを混合する場合。
戻りの型