注釈
このページは docs/tutorials/02_vibrational_structure.ipynb から生成されました。
振動構造#
はじめに#
ある分子のハミルトニアンは、以下の数式で表されます。
原子核は電子よりも非常に重い質量を有するため、原子核は電子に比べて非常に遅い運動速度となります。したがって、原子核と電子の運動は分離しているとみなして考えることができます。 これはボルン・オッペンハイマー近似と呼ばれています。
ボルン・オッペンハイマー近似では、分子の波動関数は各電子の波動関数と振動回転スペクトルの積として表現されています。電子の波動関数は、電子のシュレーディンガー方程式の解に相当します。また、振動回転スペクトルは、様々な構造に対する電子のシュレディンガー方程式の固有値サンプリングによって生成されるポテンシャルエネルギー曲面(PES) での原子核のシュレーディンガー方程式の解に相当します。
原子核のシュレディンガー方程式は、通常、電子の場合と対比して、2段階で求解されます。 まず、単一粒子の基底状態 (この場合基底関数はモーダル(modals) と呼ばれます) は、ポテンシャルエネルギー曲面 (PES) に適用される調和近似もしくは振動自己無撞着場(VSCF) の計算から得られます。非調和振動の相関は、摂動的または変分法的なアプローチで帰納法的に追加されます。後者には、非調和振動子のエネルギーを高精度に導出可能にする振動配置間相互作用(VCI) と振動結合クラスター(VCC) が含まれます。 他のアプローチ (例:摂動論) に対するVCI法・VCC法の主な優位性は、所定のポテンシャルエネルギー曲面 (PES) での完全基底系限界に対する精度の系統的な向上にあるとされています。 しかし、この優位性は、系が大きくなると不利に働くため、原子数が最大10個程度の小さな分子に限定されています。
こうした系が大きくなると不利になる問題に対して、量子アルゴリズムの適用が望まれています。
原子核のシュレーディンガー方程式は以下で表されます。
いわゆるWatsonハミルトニアン(振動回転結合を無視)は、以下で表されます。
ここで \(Q_l\) は調和質量加重正規座標です。
\(\mathcal{H}_\text{vib}\) は、量子ハードウェア上で固有関数を計算するために、与えられた \(N_q\) 量子ビットの状態に作用する演算子にマッピングする必要があります。 電子構造計算では、非相対論的電子ハミルトニアンを第二量子化で表現することによってマッピングを実現することができます。つまり、与えられた(有限の)分子軌道によって生成された反対称化された粒子数表示ベクトル(ONV)の完全なセットとして投影します。 同様に第二量子化演算子に調和振動子ハミルトニアンをエンコードするためには、ポテンシャル \(V(Q_1, \ldots, Q_L)\) を \(n\) 体に拡張して以下のように展開します。
ここで、\(V_0\) は参照配置の電子エネルギーであり、 1 体項 \(V^{[l]}(Q_l)\) は、平衡位置からの \(l\) 番目の標準座標の変化に対する PES の変化を表わしています。 同様に、 2 体のポテンシャル \(V^{[l,m]}(Q_l, Q_m)\) は、 \(l\) と \(m\) 番目の座標に沿った同時変位における正確な PES の変化を表しています。 \(L\) 体展開において3 体までの項を含めれば、約 1~cm\(^{-1}\) の精度を得るのに十分です。 Watsonハミルトニアンを定義するポテンシャル演算子の多体展開は、任意の高結合項が含まれていることに注目しました。これは、ペアワイズ相互作用のみを含む非相対論的電子構造ハミルトニアンと比較すると、非常に重要な違いです。
Watson ハミルトニアンの柔軟な第二量子化形式は、いわゆる n モード表現から得られます。各モード \(l\) が、次のように定義された \(N_l\) 次元基底の \(S_l\) によって記述されているとしましょう。
\(n\) モード波動関数は、積基底 \(\mathcal{S} = \otimes_{i=1}^L \mathcal{S}_i\) によって、 Cl のように展開することができます。
多体基底関数 \(\phi_{k_1}^{(1)}(Q_1) \cdots \phi_{k_L}^{(L)}(Q_L)\) は、いわゆる \(n\) モード第二量子化において、以下のように占有数ベクトル (occupation-number vectors, ONVs) として符号化されています。
したがって上のように定義された ONV は、それぞれが独立モードを記述する \(L\) モードに固有なONV の積となります。各モードはただ一つの基底関数によって記述されているため、各モードに固有な ONV の占有数は 1 です。理論的に各モードは、区別可能な準粒子 (固体物理学ではフォノンとして定義されます) として解釈することができます。区別可能性は、 PESが二つのモードの並び替えに関して不変でないという事実から導かれます。今回の場合、これは二つの等しい粒子間にはたらくクーロン相互作用とは異なっています。この観点から、分子は PES 演算子を介して相互作用する、 \(L\) 個の区別できない粒子の集合として解釈することができます。
第二量子化表現に基づいて、モード \(l\) と基底関数 \(k_l\) ごとに、以下のように生成演算子と消滅演算子の対を導入します。
ただし
第二量子化形式は、ポテンシャルを次のように表現することで得られます。
ここで、上に定義した演算子と電子構造の演算子の違いを強調しておきます。まず既に述べたように、ポテンシャルには (原理的には) 三体やそれより高次の多体結合項が含まれており、これにより 6 つ (あるいはそれ以上の) 第二量子化演算子をもった演算子となっています。さらに、与えられたモードの生成演算子と消滅演算子の数が各項で同じであることからもわかるように、ハミルトニアンは各モードの粒子数を保存しています。一方で異なるモードは、相異なるモード \(l\) と \(m\) に属する第二量子化演算子を含んだ、二体 (あるいはそれより高次) の項 によって結合されています。
参考文献: Ollitrault, Pauline J., et al., arXiv:2003.12578 (2020).
電子ポテンシャルの計算
異なる原子核配置に対して ESE を解くことで、 PES 関数 \(V(Q_1, \ldots, Q_L)\) を求めることができます。現在では Qiskit によって、 PES を四次力場で近似することが可能です。
このような形式の PES の利点は、非調和力場 ( \(k_{ij}\), \(k_{ijk}\), \(k_{ijkl}\) ) が有限差分法によって求められることです。応答理論に基づく手法 (HF や DFT) によって原子核エネルギーのヘシアンが解析的に求まる手法については、準数値微分によって四次力場を次のように計算することができます。
および
例えばこのような数値的手法は、Gaussian のプログラム・セットに実装されています。
実際には、これは GaussianForceDriver を使用して、Qiskit で行うことができます。
[1]:
from qiskit_nature.second_q.drivers import GaussianForcesDriver
# if you ran Gaussian elsewhere and already have the output file
driver = GaussianForcesDriver(logfile="aux_files/CO2_freq_B3LYP_631g.log")
# if you want to run the Gaussian job from Qiskit
# driver = GaussianForcesDriver(
# ['#p B3LYP/6-31g Freq=(Anharm) Int=Ultrafine SCF=VeryTight',
# '',
# 'CO2 geometry optimization B3LYP/6-31g',
# '',
# '0 1',
# 'C -0.848629 2.067624 0.160992',
# 'O 0.098816 2.655801 -0.159738',
# 'O -1.796073 1.479446 0.481721',
# '',
# ''
[2]:
from qiskit_nature.second_q.problems import HarmonicBasis
basis = HarmonicBasis([2, 2, 2, 2])
量子ビット・ハミルトニアンへのマッピング#
ポテンシャルの近似ができたので、第二量子化でハミルトニアンを書き下す必要があります。そのためには、一体積分 \(\langle\phi_{k_i}| V(Q_i) | \phi_{h_i} \rangle\) や二体積分 \(\langle\phi_{k_i} \phi_{k_j}| V(Q_i,Q_j) | \phi_{h_i} \phi_{h_j} \rangle\)などを計算するためのモーダル基底を選ぶ必要があります。
最も単純な場合、 \(\phi\) 関数は各モードの調和振動子固有関数です。この選択の主な利点は、テイラー展開によって表現された PES の積分が、このような基底で簡単に計算できることです。これらの積分を計算するためのルーチンは Qiskit で実装されています。
その後、ボソン演算子 \(\mathcal{H}_\text{vib}^{SQ}\) を生成し、量子ビット演算子にマッピングしなければなりません。このチュートリアルの最初のセクションで紹介した直接的なマッピングは Qiskitを用いて次のようにできます。
[3]:
from qiskit_nature.second_q.problems import VibrationalStructureProblem
from qiskit_nature.second_q.mappers import DirectMapper
vibrational_problem = driver.run(basis=basis)
vibrational_problem.hamiltonian.truncation_order = 2
main_op, aux_ops = vibrational_problem.second_q_ops()
問題の振動演算子は次のようになります:
[4]:
print(main_op)
Vibrational Operator
number modes=4, number modals=[2, 2, 2, 2], number terms=50
(1268.0676746875001+0j) * ( +_0_0 -_0_0 )
+ (3813.8767834375008+0j) * ( +_0_1 -_0_1 )
+ (705.8633818750002+0j) * ( +_1_0 -_1_0 )
+ (-46.025705898886045+0j) * ( +_1_0 -_1_1 )
+ (-46.025705898886045+0j) * ( +_1_1 -_1_0 )
+ (2120.1145593750007+0j) * ( +_1_1 -_1_1 )
+ (238.31540750000005+0j) * ( +_2_0 -_2_0 )
+ (728.9613775000003+0j) * ( +_2_1 -_2_1 )
+ (238.31540750000005+0j) * ( +_3_0 -_3_0 )
+ (728.9613775000003+0j) * ( +_3_1 -_3_1 )
+ (4.942542500000002+0j) * ( +_0_0 -_0_0 +_1_0 -_1_0 )
+ (-88.20174216876333+0j) * ( +_0_0 -_0_0 +_1_0 -_1_1 )
+ (-88.20174216876333+0j) * ( +_0_0 -_0_0 +_1_1 -_1_0 )
+ (14.827627500000007+0j) * ( +_0_0 -_0_0 +_1_1 -_1_1 )
+ (14.827627500000007+0j) * ( +_0_1 -_0_1 +_1_0 -_1_0 )
+ (-264.60522650629+0j) * ( +_0_1 -_0_1 +_1_0 -_1_1 )
+ (-264.60522650629+0j) * ( +_0_1 -_0_1 +_1_1 -_1_0 )
+ (44.482882500000024+0j) * ( +_0_1 -_0_1 +_1_1 -_1_1 )
+ (-10.205891250000004+0j) * ( +_2_0 -_2_0 +_0_0 -_0_0 )
+ (-30.617673750000016+0j) * ( +_2_0 -_2_0 +_0_1 -_0_1 )
+ (-4.194299375000002+0j) * ( +_2_0 -_2_0 +_1_0 -_1_0 )
+ (42.67527310283147+0j) * ( +_2_0 -_2_0 +_1_0 -_1_1 )
+ (42.67527310283147+0j) * ( +_2_0 -_2_0 +_1_1 -_1_0 )
+ (-12.582898125000007+0j) * ( +_2_0 -_2_0 +_1_1 -_1_1 )
+ (-30.61767375000002+0j) * ( +_2_1 -_2_1 +_0_0 -_0_0 )
+ (-91.85302125000007+0j) * ( +_2_1 -_2_1 +_0_1 -_0_1 )
+ (-12.582898125000007+0j) * ( +_2_1 -_2_1 +_1_0 -_1_0 )
+ (128.02581930849442+0j) * ( +_2_1 -_2_1 +_1_0 -_1_1 )
+ (128.02581930849442+0j) * ( +_2_1 -_2_1 +_1_1 -_1_0 )
+ (-37.74869437500002+0j) * ( +_2_1 -_2_1 +_1_1 -_1_1 )
+ (-10.205891250000004+0j) * ( +_3_0 -_3_0 +_0_0 -_0_0 )
+ (-30.617673750000016+0j) * ( +_3_0 -_3_0 +_0_1 -_0_1 )
+ (-4.194299375000002+0j) * ( +_3_0 -_3_0 +_1_0 -_1_0 )
+ (42.67527310283147+0j) * ( +_3_0 -_3_0 +_1_0 -_1_1 )
+ (42.67527310283147+0j) * ( +_3_0 -_3_0 +_1_1 -_1_0 )
+ (-12.582898125000007+0j) * ( +_3_0 -_3_0 +_1_1 -_1_1 )
+ (7.0983500000000035+0j) * ( +_3_0 -_3_0 +_2_0 -_2_0 )
+ (21.29505000000001+0j) * ( +_3_0 -_3_0 +_2_1 -_2_1 )
+ 0j * ( +_3_0 -_3_1 +_2_0 -_2_1 )
+ 0j * ( +_3_0 -_3_1 +_2_1 -_2_0 )
+ 0j * ( +_3_1 -_3_0 +_2_0 -_2_1 )
+ 0j * ( +_3_1 -_3_0 +_2_1 -_2_0 )
+ (-30.61767375000002+0j) * ( +_3_1 -_3_1 +_0_0 -_0_0 )
+ (-91.85302125000007+0j) * ( +_3_1 -_3_1 +_0_1 -_0_1 )
+ (-12.582898125000007+0j) * ( +_3_1 -_3_1 +_1_0 -_1_0 )
+ (128.02581930849442+0j) * ( +_3_1 -_3_1 +_1_0 -_1_1 )
+ (128.02581930849442+0j) * ( +_3_1 -_3_1 +_1_1 -_1_0 )
+ (-37.74869437500002+0j) * ( +_3_1 -_3_1 +_1_1 -_1_1 )
+ (21.29505000000001+0j) * ( +_3_1 -_3_1 +_2_0 -_2_0 )
+ (63.88515000000004+0j) * ( +_3_1 -_3_1 +_2_1 -_2_1 )
一つ前のセルでは、調和モーダル基底でハミルトニアンを表現するためにボソン変換を定義しました。ここでは、一つのモードごとに二つのモーダルが対応付けられ、ポテンシャルは二次で打ち切られており、ボソンの量子ビットに対する「直接的な」マッピングとなっています。計算は次のように実行されます。
[5]:
qubit_mapper = DirectMapper()
qubit_op = qubit_mapper.map(main_op)
print(qubit_op)
4854.200029687493 * IIIIIIII
- 618.5645973437502 * IIIIIIIZ
- 1860.5306717187502 * IIIIIIZI
- 349.48563468750024 * IIIIIZII
- 25.864048912543417 * IIIIXXII
- 25.864048912543417 * IIIIYYII
- 1049.719110937499 * IIIIZIII
- 111.85586312500007 * IIIZIIII
- 342.57516687500015 * IIZIIIII
- 111.85586312500007 * IZIIIIII
- 342.57516687500015 * ZIIIIIII
+ 1.2356356250000005 * IIIIIZIZ
+ 22.050435542190833 * IIIIXXIZ
+ 22.050435542190833 * IIIIYYIZ
+ 3.706906875000002 * IIIIZIIZ
+ 3.706906875000002 * IIIIIZZI
+ 66.1513066265725 * IIIIXXZI
+ 66.1513066265725 * IIIIYYZI
+ 11.120720625000006 * IIIIZIZI
- 2.551472812500001 * IIIZIIIZ
- 7.654418437500004 * IIIZIIZI
- 1.0485748437500004 * IIIZIZII
- 10.668818275707867 * IIIZXXII
- 10.668818275707867 * IIIZYYII
- 3.1457245312500017 * IIIZZIII
- 7.654418437500005 * IIZIIIIZ
- 22.963255312500017 * IIZIIIZI
- 3.1457245312500017 * IIZIIZII
- 32.006454827123605 * IIZIXXII
- 32.006454827123605 * IIZIYYII
- 9.437173593750005 * IIZIZIII
- 2.551472812500001 * IZIIIIIZ
- 7.654418437500004 * IZIIIIZI
- 1.0485748437500004 * IZIIIZII
- 10.668818275707867 * IZIIXXII
- 10.668818275707867 * IZIIYYII
- 3.1457245312500017 * IZIIZIII
+ 1.7745875000000009 * IZIZIIII
+ 5.323762500000003 * IZZIIIII
- 7.654418437500005 * ZIIIIIIZ
- 22.963255312500017 * ZIIIIIZI
- 3.1457245312500017 * ZIIIIZII
- 32.006454827123605 * ZIIIXXII
- 32.006454827123605 * ZIIIYYII
- 9.437173593750005 * ZIIIZIII
+ 5.323762500000003 * ZIIZIIII
+ 15.97128750000001 * ZIZIIIII
モードごとに異なるモーダルをもたせるためには、以下のようにします。
[6]:
basis = HarmonicBasis([3, 3, 3, 3])
vibrational_problem = driver.run(basis=basis)
vibrational_problem.hamiltonian.truncation_order = 2
main_op, aux_ops = vibrational_problem.second_q_ops()
qubit_mapper = DirectMapper()
qubit_op = qubit_mapper.map(main_op)
print(qubit_op)
10788.71998265624 * IIIIIIIIIIII
- 599.2280473437502 * IIIIIIIIIIIZ
- 42.382439413480455 * IIIIIIIIIXIX
- 42.382439413480455 * IIIIIIIIIYIY
- 1802.5210217187503 * IIIIIIIIIIZI
- 3015.487755468749 * IIIIIIIIIZII
- 345.17806437499996 * IIIIIIIIZIII
- 29.42804386641884 * IIIIIIIXXIII
- 29.42804386641884 * IIIIIIIYYIII
- 9.18025376111823 * IIIIIIXIXIII
- 9.18025376111823 * IIIIIIYIYIII
- 1036.7963999999984 * IIIIIIIZIIII
- 74.16262749999993 * IIIIIIXXIIII
- 74.16262749999993 * IIIIIIYYIIII
- 1730.9391493749995 * IIIIIIZIIIII
- 102.72856234375004 * IIIIIZIIIIII
- 13.324103454983607 * IIIXIXIIIIII
- 13.324103454983607 * IIIYIYIIIIII
- 315.1932645312502 * IIIIZIIIIIII
- 541.6731217187498 * IIIZIIIIIIII
- 102.72856234375004 * IIZIIIIIIIII
- 13.324103454983597 * XIXIIIIIIIII
- 13.324103454983597 * YIYIIIIIIIII
- 315.1932645312502 * IZIIIIIIIIII
- 541.6731217187498 * ZIIIIIIIIIII
+ 1.2356356250000005 * IIIIIIIIZIIZ
+ 22.050435542190833 * IIIIIIIXXIIZ
+ 22.050435542190833 * IIIIIIIYYIIZ
- 1.7474526590263566 * IIIIIIXIXIIZ
- 1.7474526590263566 * IIIIIIYIYIIZ
+ 3.706906875000002 * IIIIIIIZIIIZ
+ 31.184025000000005 * IIIIIIXXIIIZ
+ 31.184025000000005 * IIIIIIYYIIIZ
+ 6.178178125000002 * IIIIIIZIIIIZ
- 1.7474526590263566 * IIIIIIIIZXIX
- 1.7474526590263566 * IIIIIIIIZYIY
- 31.184025000000013 * IIIIIIIXXXIX
- 31.184025000000013 * IIIIIIIYYXIX
- 31.184025000000013 * IIIIIIIXXYIY
- 31.184025000000013 * IIIIIIIYYYIY
+ 2.471271250000001 * IIIIIIXIXXIX
+ 2.471271250000001 * IIIIIIYIYXIX
+ 2.471271250000001 * IIIIIIXIXYIY
+ 2.471271250000001 * IIIIIIYIYYIY
- 5.24235797707907 * IIIIIIIZIXIX
- 5.24235797707907 * IIIIIIIZIYIY
- 44.100871084381666 * IIIIIIXXIXIX
- 44.100871084381666 * IIIIIIYYIXIX
- 44.100871084381666 * IIIIIIXXIYIY
- 44.100871084381666 * IIIIIIYYIYIY
- 8.737263295131783 * IIIIIIZIIXIX
- 8.737263295131783 * IIIIIIZIIYIY
+ 3.706906875000002 * IIIIIIIIZIZI
+ 66.1513066265725 * IIIIIIIXXIZI
+ 66.1513066265725 * IIIIIIIYYIZI
- 5.24235797707907 * IIIIIIXIXIZI
- 5.24235797707907 * IIIIIIYIYIZI
+ 11.120720625000006 * IIIIIIIZIIZI
+ 93.55207500000002 * IIIIIIXXIIZI
+ 93.55207500000002 * IIIIIIYYIIZI
+ 18.534534375000007 * IIIIIIZIIIZI
+ 6.178178125000003 * IIIIIIIIZZII
+ 110.25217771095417 * IIIIIIIXXZII
+ 110.25217771095417 * IIIIIIIYYZII
- 8.737263295131783 * IIIIIIXIXZII
- 8.737263295131783 * IIIIIIYIYZII
+ 18.53453437500001 * IIIIIIIZIZII
+ 155.920125 * IIIIIIXXIZII
+ 155.920125 * IIIIIIYYIZII
+ 30.89089062500001 * IIIIIIZIIZII
- 2.551472812500001 * IIIIIZIIIIIZ
+ 3.608327455463727 * IIIIIZIIIXIX
+ 3.608327455463727 * IIIIIZIIIYIY
- 7.654418437500004 * IIIIIZIIIIZI
- 12.757364062500006 * IIIIIZIIIZII
- 1.0485748437500004 * IIIIIZIIZIII
- 10.668818275707867 * IIIIIZIXXIII
- 10.668818275707867 * IIIIIZIYYIII
+ 1.4829087651944997 * IIIIIZXIXIII
+ 1.4829087651944997 * IIIIIZYIYIII
- 3.1457245312500017 * IIIIIZIZIIII
- 15.087987500000002 * IIIIIZXXIIII
- 15.087987500000002 * IIIIIZYYIIII
- 5.242874218750002 * IIIIIZZIIIII
+ 3.608327455463727 * IIIXIXIIIIIZ
+ 3.608327455463727 * IIIYIYIIIIIZ
- 5.102945625000002 * IIIXIXIIIXIX
- 5.102945625000002 * IIIXIXIIIYIY
- 5.102945625000002 * IIIYIYIIIXIX
- 5.102945625000002 * IIIYIYIIIYIY
+ 10.82498236639118 * IIIXIXIIIIZI
+ 10.82498236639118 * IIIYIYIIIIZI
+ 18.04163727731863 * IIIXIXIIIZII
+ 18.04163727731863 * IIIYIYIIIZII
+ 1.4829087651944997 * IIIXIXIIZIII
+ 1.4829087651944997 * IIIYIYIIZIII
+ 15.087987500000006 * IIIXIXIXXIII
+ 15.087987500000006 * IIIXIXIYYIII
+ 15.087987500000006 * IIIYIYIXXIII
+ 15.087987500000006 * IIIYIYIYYIII
- 2.097149687500001 * IIIXIXXIXIII
- 2.097149687500001 * IIIXIXYIYIII
- 2.097149687500001 * IIIYIYXIXIII
- 2.097149687500001 * IIIYIYYIYIII
+ 4.4487262955835 * IIIXIXIZIIII
+ 4.4487262955835 * IIIYIYIZIIII
+ 21.337636551415734 * IIIXIXXXIIII
+ 21.337636551415734 * IIIXIXYYIIII
+ 21.337636551415734 * IIIYIYXXIIII
+ 21.337636551415734 * IIIYIYYYIIII
+ 7.4145438259724985 * IIIXIXZIIIII
+ 7.4145438259724985 * IIIYIYZIIIII
- 7.654418437500005 * IIIIZIIIIIIZ
+ 10.824982366391183 * IIIIZIIIIXIX
+ 10.824982366391183 * IIIIZIIIIYIY
- 22.963255312500017 * IIIIZIIIIIZI
- 38.27209218750002 * IIIIZIIIIZII
- 3.1457245312500017 * IIIIZIIIZIII
- 32.006454827123605 * IIIIZIIXXIII
- 32.006454827123605 * IIIIZIIYYIII
+ 4.4487262955835 * IIIIZIXIXIII
+ 4.4487262955835 * IIIIZIYIYIII
- 9.437173593750005 * IIIIZIIZIIII
- 45.26396250000001 * IIIIZIXXIIII
- 45.26396250000001 * IIIIZIYYIIII
- 15.728622656250007 * IIIIZIZIIIII
- 12.757364062500006 * IIIZIIIIIIIZ
+ 18.04163727731863 * IIIZIIIIIXIX
+ 18.04163727731863 * IIIZIIIIIYIY
- 38.27209218750002 * IIIZIIIIIIZI
- 63.786820312500026 * IIIZIIIIIZII
- 5.242874218750002 * IIIZIIIIZIII
- 53.34409137853934 * IIIZIIIXXIII
- 53.34409137853934 * IIIZIIIYYIII
+ 7.414543825972498 * IIIZIIXIXIII
+ 7.414543825972498 * IIIZIIYIYIII
- 15.728622656250007 * IIIZIIIZIIII
- 75.43993750000001 * IIIZIIXXIIII
- 75.43993750000001 * IIIZIIYYIIII
- 26.21437109375001 * IIIZIIZIIIII
- 2.551472812500001 * IIZIIIIIIIIZ
+ 3.608327455463727 * IIZIIIIIIXIX
+ 3.608327455463727 * IIZIIIIIIYIY
- 7.654418437500004 * IIZIIIIIIIZI
- 12.757364062500006 * IIZIIIIIIZII
- 1.0485748437500004 * IIZIIIIIZIII
- 10.668818275707867 * IIZIIIIXXIII
- 10.668818275707867 * IIZIIIIYYIII
+ 1.4829087651944997 * IIZIIIXIXIII
+ 1.4829087651944997 * IIZIIIYIYIII
- 3.1457245312500017 * IIZIIIIZIIII
- 15.087987500000002 * IIZIIIXXIIII
- 15.087987500000002 * IIZIIIYYIIII
- 5.242874218750002 * IIZIIIZIIIII
+ 1.7745875000000009 * IIZIIZIIIIII
- 2.509645710117766 * IIZXIXIIIIII
- 2.509645710117766 * IIZYIYIIIIII
+ 5.323762500000003 * IIZIZIIIIIII
+ 8.872937500000004 * IIZZIIIIIIII
- 2.8170754092577175 * IXXXXIIIIIII
- 2.8170754092577175 * IXXYYIIIIIII
- 2.8170754092577175 * IYYXXIIIIIII
- 2.8170754092577175 * IYYYYIIIIIII
+ 3.608327455463727 * XIXIIIIIIIIZ
+ 3.608327455463727 * YIYIIIIIIIIZ
- 5.102945625000002 * XIXIIIIIIXIX
- 5.102945625000002 * XIXIIIIIIYIY
- 5.102945625000002 * YIYIIIIIIXIX
- 5.102945625000002 * YIYIIIIIIYIY
+ 10.82498236639118 * XIXIIIIIIIZI
+ 10.82498236639118 * YIYIIIIIIIZI
+ 18.04163727731863 * XIXIIIIIIZII
+ 18.04163727731863 * YIYIIIIIIZII
+ 1.4829087651944997 * XIXIIIIIZIII
+ 1.4829087651944997 * YIYIIIIIZIII
+ 15.087987500000006 * XIXIIIIXXIII
+ 15.087987500000006 * XIXIIIIYYIII
+ 15.087987500000006 * YIYIIIIXXIII
+ 15.087987500000006 * YIYIIIIYYIII
- 2.097149687500001 * XIXIIIXIXIII
- 2.097149687500001 * XIXIIIYIYIII
- 2.097149687500001 * YIYIIIXIXIII
- 2.097149687500001 * YIYIIIYIYIII
+ 4.4487262955835 * XIXIIIIZIIII
+ 4.4487262955835 * YIYIIIIZIIII
+ 21.337636551415734 * XIXIIIXXIIII
+ 21.337636551415734 * XIXIIIYYIIII
+ 21.337636551415734 * YIYIIIXXIIII
+ 21.337636551415734 * YIYIIIYYIIII
+ 7.4145438259724985 * XIXIIIZIIIII
+ 7.4145438259724985 * YIYIIIZIIIII
- 2.509645710117766 * XIXIIZIIIIII
- 2.509645710117766 * YIYIIZIIIIII
+ 3.5491750000000017 * XIXXIXIIIIII
+ 3.5491750000000017 * XIXYIYIIIIII
+ 3.5491750000000017 * YIYXIXIIIIII
+ 3.5491750000000017 * YIYYIYIIIIII
- 7.528937130353299 * XIXIZIIIIIII
- 7.528937130353299 * YIYIZIIIIIII
- 12.54822855058883 * XIXZIIIIIIII
- 12.54822855058883 * YIYZIIIIIIII
- 7.654418437500005 * IZIIIIIIIIIZ
+ 10.824982366391183 * IZIIIIIIIXIX
+ 10.824982366391183 * IZIIIIIIIYIY
- 22.963255312500017 * IZIIIIIIIIZI
- 38.27209218750002 * IZIIIIIIIZII
- 3.1457245312500017 * IZIIIIIIZIII
- 32.006454827123605 * IZIIIIIXXIII
- 32.006454827123605 * IZIIIIIYYIII
+ 4.4487262955835 * IZIIIIXIXIII
+ 4.4487262955835 * IZIIIIYIYIII
- 9.437173593750005 * IZIIIIIZIIII
- 45.26396250000001 * IZIIIIXXIIII
- 45.26396250000001 * IZIIIIYYIIII
- 15.728622656250007 * IZIIIIZIIIII
+ 5.323762500000003 * IZIIIZIIIIII
- 7.528937130353299 * IZIXIXIIIIII
- 7.528937130353299 * IZIYIYIIIIII
+ 15.97128750000001 * IZIIZIIIIIII
+ 26.618812500000015 * IZIZIIIIIIII
+ 2.8170754092577175 * XXIIXXIIIIII
+ 2.8170754092577175 * XXIIYYIIIIII
+ 2.8170754092577175 * YYIIXXIIIIII
+ 2.8170754092577175 * YYIIYYIIIIII
- 12.757364062500006 * ZIIIIIIIIIIZ
+ 18.04163727731863 * ZIIIIIIIIXIX
+ 18.04163727731863 * ZIIIIIIIIYIY
- 38.27209218750002 * ZIIIIIIIIIZI
- 63.786820312500026 * ZIIIIIIIIZII
- 5.242874218750002 * ZIIIIIIIZIII
- 53.34409137853934 * ZIIIIIIXXIII
- 53.34409137853934 * ZIIIIIIYYIII
+ 7.414543825972498 * ZIIIIIXIXIII
+ 7.414543825972498 * ZIIIIIYIYIII
- 15.728622656250007 * ZIIIIIIZIIII
- 75.43993750000001 * ZIIIIIXXIIII
- 75.43993750000001 * ZIIIIIYYIIII
- 26.21437109375001 * ZIIIIIZIIIII
+ 8.872937500000003 * ZIIIIZIIIIII
- 12.548228550588828 * ZIIXIXIIIIII
- 12.548228550588828 * ZIIYIYIIIIII
+ 26.61881250000001 * ZIIIZIIIIIII
+ 44.36468750000001 * ZIIZIIIIIIII
VibrationalStructureProblem
の解決#
以下では、我々の問題インスタンスの基底状態を計算します。 GroundStateSolver
に入る個々のコンポーネントの詳細については、 `対応するチュートリアルを参照してください。
[7]:
# for simplicity, we will use the smaller basis again
vibrational_problem = driver.run(basis=HarmonicBasis([2, 2, 2, 2]))
vibrational_problem.hamiltonian.truncation_order = 2
[8]:
from qiskit_algorithms import NumPyMinimumEigensolver
from qiskit_nature.second_q.algorithms import GroundStateEigensolver
solver = GroundStateEigensolver(
qubit_mapper,
NumPyMinimumEigensolver(filter_criterion=vibrational_problem.get_default_filter_criterion()),
)
[9]:
result = solver.solve(vibrational_problem)
print(result)
=== GROUND STATE ===
* Vibrational ground state energy (cm^-1): 2432.106954036546
The number of occupied modals for each mode is:
- Mode 0: 1.0
- Mode 1: 1.0
- Mode 2: 1.0
- Mode 3: 1.0
[10]:
import qiskit.tools.jupyter
%qiskit_version_table
%qiskit_copyright
Version Information
Qiskit Software | Version |
---|---|
qiskit-terra | 0.24.0.dev0+2b3686f |
qiskit-aer | 0.11.2 |
qiskit-ibmq-provider | 0.19.2 |
qiskit-nature | 0.6.0 |
System information | |
Python version | 3.9.16 |
Python compiler | GCC 12.2.1 20221121 (Red Hat 12.2.1-4) |
Python build | main, Dec 7 2022 00:00:00 |
OS | Linux |
CPUs | 8 |
Memory (Gb) | 62.50002670288086 |
Thu Apr 06 08:54:06 2023 CEST |
This code is a part of Qiskit
© Copyright IBM 2017, 2023.
This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.