Encontrar la energía del estado fundamental usando el NumPyMinimumEigensolver#
Para garantizar que se encuentre un estado fundamental físicamente significativo de un Hamiltoniano al usar NumPyMinimumEigensolver
, es necesario configurar el atributo filter_criterion
del solucionador.
Las subclases de BaseProblem
en Qiskit Nature proporcionan el método get_default_filter_criterion()
que proporciona una implementación predeterminada de dicho criterio de filtro para casos comunes.
A continuación te mostramos cómo puedes utilizar esta configuración.
Obtenemos un
ElectronicStructureProblem
que queremos resolver:
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()
Configuramos nuestro
QubitMapper
:
from qiskit_nature.second_q.mappers import JordanWignerMapper
mapper = JordanWignerMapper()
Configuramos nuestro
NumPyMinimumEigensolver
:
from qiskit_algorithms import NumPyMinimumEigensolver
algo = NumPyMinimumEigensolver()
algo.filter_criterion = problem.get_default_filter_criterion()
Encapsulamos todo en un
GroundStateEigensolver
:
from qiskit_nature.second_q.algorithms import GroundStateEigensolver
solver = GroundStateEigensolver(mapper, algo)
Resolvemos el problema:
result = solver.solve(problem)
print(f"Total ground state energy = {result.total_energies[0]:.4f}")
Total ground state energy = -1.1373