qiskit-algorithms
qiskit-algorithms copied to clipboard
[from qiskit] Add transition amplitude calculations on NumpyEigensolver
What should we add?
Currently, the NumpyEigensolver implements a _eval_aux_operators
which evaluates the auxiliary operators on the excited states.
Without much effort and using an equality in the form of Eq. 13 in https://doi.org/10.1103%2Fphysrevresearch.3.023244, we can extend it to evaluate transition amplitudes for the same auxiliary operators between two eigenstates of the Hamiltonian.
This would allow, among other, the evaluation of non-adiabatic couplings between the excited states (see in the same article).
The idea would be to have a static method for two fixed eigenstates:
@staticmethod
def _eval_transition_amplitudes(
aux_operators: ListOrDict[OperatorBase], wavefn, wavefm, threshold: float = 1e-12
) -> ListOrDict[Tuple[complex, complex]]:
which would be called by a higher level method for a Dict of pairs (i, j)
def compute_transition_amplitudes(
self,
aux_operators: Optional[ListOrDict[OperatorBase]],
transition_amplitude_pairs: Optional[Dict[Tuple[int, int]]]
) -> Optional[ListOrDict[Tuple[complex, complex]]]: