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$?
-
How large is your system? How large is t (for fixed interaction strength)? – Norbert Schuch Jul 29 '18 at 23:38
-
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 – glS Jul 29 '18 at 23:51
-
1Well, 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. – Norbert Schuch Jul 30 '18 at 00:03
-
@NorbertSchuch what can be done if you can't? Are you referring to methods exploiting sparsity, or something else? – glS Jul 30 '18 at 15:52
-
If you can't what? Fit the state of fit the unitary? – Norbert Schuch Jul 30 '18 at 19:53
-
@NorbertSchuch either? is there a difference in the methods employed? – glS Jul 30 '18 at 19:57
-
Your question is already very broad, and you make it even broader ... :-/ If you can fit psi, you can just use numerical integration (as describe below). Few-body Hamiltonians are pretty sparse. If you can't fit the state - well, then there are LOTS of options: Use symmetries, focus on what you really want to know (which is probably not the state, but some local observable, so you might use Lieb-Robinson bounds), use an MPS or some other ansatz, ... – Norbert Schuch Jul 30 '18 at 20:41
-
1Related on [scicomp.se]: Are there simple ways to numerically solve the time-dependent Schrödinger equation? – Emilio Pisanty Jul 31 '18 at 08:35
-
@NorbertSchuch yes it is broad, but I'm not asking for someone to write a treatise on numerical methods to solve TDSEs. I would be very happy for example with a pointer to a good review on the topic, or to a list of things that should be taken into account and/or keywords to look for (a few of which you already provided in the above comments). – glS Jul 31 '18 at 11:27
-
@EmilioPisanty ah, that is a great post! I was surprised to not find this question in physics.SE but didn't think of looking in scicomp.SE – glS Jul 31 '18 at 11:28
-
@glS Well, it was originally posted to physics.se, but the moderation team disagreed with the choice of venue. – Emilio Pisanty Jul 31 '18 at 12:03
-
@glS Well, yes, but I wouldn't want to give such a comment as an answer, and questions shouldn't be answered in comments on SE ... – Norbert Schuch Jul 31 '18 at 21:58
1 Answers
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.
- 57,689
- 3
- 46
- 124