NumPyMinimumEigensolver を使用した励起状態エネルギーの探索#
NumPyMinimumEigensolver
クラスを使用して物理的に意味のあるハミルトニアンの基底状態を確実に見つけるためには、ソルバーの filter_criterion
属性を設定する必要があります。
Qiskit Natureの BaseProblem
の サブクラスは、 get_default_filter_criterion()
メソッドを提供します。このメソッドは、一般的に遭遇するケースに対するフィルター基準のデフォルト実装を提供します。
以下に、この設定を使用する方法を示します。
解決したい
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()
QubitMapper
を設定します:
from qiskit_nature.second_q.mappers import JordanWignerMapper
mapper = JordanWignerMapper()
NumPyMinimumEigensolver
を設定します:
from qiskit_algorithms import NumPyMinimumEigensolver
algo = NumPyMinimumEigensolver()
algo.filter_criterion = problem.get_default_filter_criterion()
GroundStateEigensolver
ですべてをラップします。
from qiskit_nature.second_q.algorithms import GroundStateEigensolver
solver = GroundStateEigensolver(mapper, algo)
問題を解きます:
result = solver.solve(problem)
print(f"Total ground state energy = {result.total_energies[0]:.4f}")
Total ground state energy = -1.1373