NumPyMinimumEigensolver を使用した励起状態エネルギーの探索#

NumPyMinimumEigensolver クラスを使用して物理的に意味のあるハミルトニアンの基底状態を確実に見つけるためには、ソルバーの filter_criterion 属性を設定する必要があります。

Qiskit Natureの BaseProblem の サブクラスは、 get_default_filter_criterion() メソッドを提供します。このメソッドは、一般的に遭遇するケースに対するフィルター基準のデフォルト実装を提供します。

以下に、この設定を使用する方法を示します。

  1. 解決したい ElectronicStructureProblem クラスを取得します。

from qiskit_nature.second_q.drivers import PySCFDriver
driver = PySCFDriver(atom="H 0 0 0; H 0 0 0.735", basis="sto-3g")
problem = driver.run()
  1. QubitMapper を設定します:

from qiskit_nature.second_q.mappers import JordanWignerMapper
mapper = JordanWignerMapper()
  1. NumPyMinimumEigensolver を設定します:

from qiskit_algorithms import NumPyMinimumEigensolver
algo = NumPyMinimumEigensolver()
algo.filter_criterion = problem.get_default_filter_criterion()
  1. GroundStateEigensolver ですべてをラップします。

from qiskit_nature.second_q.algorithms import GroundStateEigensolver
solver = GroundStateEigensolver(mapper, algo)
  1. 問題を解きます:

result = solver.solve(problem)

print(f"Total ground state energy = {result.total_energies[0]:.4f}")
Total ground state energy = -1.1373