Runge-Kutta methods#
Runge-Kutta methods integrate an MPS-valued ordinary differential equation
For runge_kutta() and
runge_kutta_fehlberg(), the right-hand side can be
provided either as an MPO or as a Python callable.
If an MPO L is provided, the solver uses F(t, state) = L @ state. If a
callable is provided, it must have the signature F(t, state) and return the
MPS derivative at that point. This allows the same solvers to handle
time-independent MPOs, time-dependent operators, and problem-specific PDE
right-hand sides.
The order of the method determines the local truncation error and the number of operator applications required per step. Thus, it is important to consider the trade-off between cost and accuracy when choosing the most suitable method for each application.
The SeeMPS library considers four methods.
1. Euler method#
This is an explicit, first-order Taylor approximation of the evolution, with a simple update with a fixed time step.
2. Improved Euler or Heun method#
This is a second-order, fixed-step explicit method that uses two evaluations of the right-hand side and two linear combinations of states.
3. Fourth-order Runge-Kutta method#
This algorithm uses four evaluations of the right-hand side and four linear combinations of states.
4. Runge-Kutta-Fehlberg method#
The Runge-Kutta-Fehlberg algorithm is an adaptive step-size solver that combines two embedded Runge-Kutta formulas. This combination dynamically adjusts the step size to keep the integration error within a specified tolerance. Each attempted step evaluates the right-hand side six times, and the solver may repeat a step if the proposed step size is not suitable.
Examples#
Using a time-independent MPO:
final = runge_kutta(L, time=1.0, state=initial, steps=100)
Using a time-dependent or problem-specific operator:
def rhs(t, state):
return diffusion_mpo(t) @ state + source(t, state)
final = runge_kutta_fehlberg(rhs, time=(0.0, 1.0), state=initial)
|
Solve |
|
Solve |
|
Solve |
|
Solve |
See also#
Restarted Arnoldi iteration - Krylov-based time evolution
Implicit time evolution methods - Implicit time evolution methods
TEBD Time evolution - Local evolution for nearest-neighbor Hamiltonians
Time-Dependent Variational Principle (TDVP) - Time-dependent variational principle