Under the influence of a time-independent Hamiltonian $H$, a state $|\psi\rangle$ will evolve after a time $t$ to the final state $|\psi(t)\rangle=e^{-iH t}|\psi\rangle$, while in the most general case of a time-dependent Hamiltonian $H(t)$, the final state can be formally written as $$|\psi(t)\rangle=T\exp\left(-i\int_{t_0}^{t}dt\,H(t)\right) |\psi\rangle.$$ What are the preferred numerical methods to compute $|\psi(t)\rangle$, given $H$, $t$ and $|\psi\rangle$?
-
$\begingroup$ How large is your system? How large is t (for fixed interaction strength)? $\endgroup$– Norbert SchuchJul 29, 2018 at 23:38
-
$\begingroup$ I'm asking more about the general kind of techniques that exist. If they are too many to meaningfully summarize, a pointer to a good review (if there is any) would also be great. Regarding $t$, let's say big enough that a simple linear expansion of the exponential is not enough. I'm generally aware of Trotter-like methods, but I don't know whether they can be applied to the time-dependent case. I'm also aware of tensor network methods, but as far as I know (which is not much) those are used for the low energy physics more than to compute evolution of specific states $\endgroup$– glS ♦Jul 29, 2018 at 23:51
-
1$\begingroup$ Well, I guess my point was: Can you fit $|\psi\rangle$ in your memory? Or maybe even a unitary? Without further info, I'd say numerical integration of the differential equation (with e.g. a trotterized Hamiltonian) should be the method of choice. $\endgroup$– Norbert SchuchJul 30, 2018 at 0:03
-
$\begingroup$ @NorbertSchuch what can be done if you can't? Are you referring to methods exploiting sparsity, or something else? $\endgroup$– glS ♦Jul 30, 2018 at 15:52
-
1$\begingroup$ Related on Computational Science: Are there simple ways to numerically solve the time-dependent Schrödinger equation? $\endgroup$– Emilio PisantyJul 31, 2018 at 8:35
1 Answer
It depends on the Hamiltonian. There are three particular questions whose answers might influence your choice of strategy:
- Does the Hamiltonian have any particular structure or symmetry?
- How quickly does the Hamiltonian change in time?
- What do you know about the initial state in relation to the initial Hamiltonian?
Obviously, if the Hamiltonian has any particular structure or symmetry, you should start by taking advantage of it. For example, if your Hamiltonian $H$ satisfies $$\left[H,\sum_{i=1}^NZ_i\right]=0,$$ then you can split $H$ into a series of subspaces $H=\bigoplus_{i=0}^NH_i$, whose evolutions you can handle separately. This is particularly good if your initial state turns out to be supported on a small number of those subspaces. Another particularly trivial case is of $[H(t),H(s)]=0$ for all $s$ and $t$. In that case, you would start by decomposing the initial state in terms of the eigenvectors.
If your Hamiltonian is changing slowly in time, and your initial state only has support on a small number of eigenstates, it might be worthwhile investigating whether an adiabatic evolution is occurring. In that case, it may be "just" a case of finding the final Hamiltonian and some of its eigenstates.
If it's changing at a reasonable speed, but your initial state still has support only on a small number of the low-energy eigenvectors, then you might use matrix-product states (especially if your Hamiltonian has a one-dimensional structure).
If your Hamiltonian is changing very quickly in time, then the default option of Trotterising the Hamiltonian can work quite badly, with errors building quickly. There are improved techniques that work in these sorts of situations, but I've never seen them applied in the discrete setting of qubits (that said, I've never looked). Things like the explicit Arnoldi method, or explicit Fatunla method. You may find some useful details here.
The default method, which will always work (if you take a small enough $\delta t$) is to split the Hamiltonian evolution into lots of little time steps $\delta t$ and just evaluate $$ \ldots e^{-iH(5\delta t/2)\delta t}e^{-iH(3\delta t/2)\delta t}e^{-iH(\delta t/2)\delta t}|\psi\rangle. $$ This can be improved by using Runge-Kutta type techniques. You can also vary the size of the time step depending on how quickly the Hamiltonian is changing at a particular instant. Some of the quantum techniques for simulation may also be interesting. There have been recent advancements that massively improve the accuracy of those simulations by moving away from the standard Trotterisation.
There's probably plenty more that could be said, but I guess that's enough to get you started.