# Qiskit TimeEvolutionProblem with complex operator

I have been using Qiskit to simulate some oscillators using Hamiltonian simulation. A next step I would like to make is adding dissipation of these oscillators in some way. I think it would be possible by having a partially complex 'Hamiltonian' as that would result in something proportional to

$$e^{Ht}$$

However when I try this, I get errors about the complex part. I understand that a Hamiltonian is normally Hermitian, but is there a way to simulate this in Qiskit anyway?

If not, are there any other ways to simulate a dissipative system?

You can use quantum imaginary time evolution (QITE) techniques to simulate $$e^{Ht}$$. Qiskit algorithms package contains ImaginaryTimeEvolver interface with two implementations:

The following code snippet shows how to use SciPyImaginaryEvolver:

from qiskit.quantum_info import Statevector, SparsePauliOp
from qiskit_algorithms import SciPyImaginaryEvolver
from qiskit_algorithms.time_evolvers.time_evolution_problem import TimeEvolutionProblem

initial_state = Statevector.from_label("0")
hamiltonian = SparsePauliOp.from_list([('X', 1.0)])
tau = 100

evolution_problem = TimeEvolutionProblem(hamiltonian, tau, initial_state)
classic_evolver = SciPyImaginaryEvolver(num_timesteps=300)
result = classic_evolver.evolve(evolution_problem)

result.evolved_state.draw('latex')

• Can VarQITE be combined with TrotterQRTE? I’m guessing that VarQITE is less efficient than TrotterQRTE.? And only a small part of my Hamiltonian is imaginary. Commented May 26 at 15:04