TEBD Time evolution#
The second but better known algorithm is the time-evolving block decimation method to approximate the evolution of a quantum state. This algorithm solves the Schrödinger equation
with a Hamiltonian that consists entirely of nearest-neighbor interactions
The algorithm proceeds by applying local gates made of small time-steps \(\exp(-i \delta{t} h_{i,i+1})\), adapting the matrix-product state so that the bond dimension does not grow too much.
Class implementing a 2nd order Trotter algorithm. |
|
Class implementing a 3rd order Trotter algorithm. |
The following is an example evolving a matrix-product state with 20 qubits under a spin-1/2 Heisenberg Hamiltonian:
>>> import seemps
>>> mps = seemps.random_uniform_mps(2, 20)
>>> H = seemps.hamiltonians.HeisenbergHamiltonian(20)
>>> dt = 0.1
>>> U = seemps.evolution.Trotter2ndOrder(H, dt)
>>> strategy = seemps.state.DEFAULT_STRATEGY.replace(tolerance = 1e-8)
>>> t = 0.0
>>> for steps in range(0, 50):
... mps = U.apply_inplace(mps)
... t += dt
>>> mps
<seemps.state.CanonicalMPS object at 0x000002166AFFC1D0>
See also#
Restarted Arnoldi iteration - Krylov-based time evolution
Implicit time evolution methods - Implicit time evolution methods
Runge-Kutta methods - Explicit time evolution methods
Time-Dependent Variational Principle (TDVP) - Time-dependent variational principle