seemps.evolution.euler.euler#
- seemps.evolution.euler.euler(H, t_span, state, steps=1000, strategy=<seemps.state.core.Strategy object>, callback=None, itime=False)[source]#
Solve a Schrodinger equation using the Euler method.
Integrates the Schrodinger equation in real or imaginary time using a first order Euler method. The equation is defined as .. math:
i\frac{d}{dt}\psi = H(t) \psi
in real time and as .. math:
\frac{d}{dt}\psi = -H(t) \psi
in imaginary time evolution.
The integration algorithm is very simple. It is .. math:
\psi(t_{n+1}) = \psi(t_{n}) - i \delta t H \psi(t_{n})
for real time and .. math:
\psi(t_{n+1}) = \psi(t_{n}) - \delta t H \psi(t_{n})
for imaginary time evolution. The integration step is deduced from the arguments as explained below.
The t_span denotes the integration interval. * If it is a single number T, the initial condition is ..math::t=0
the evolution proceeds in steps of \(\delta{t}=T/N\) where N=steps.
If t_span is a tuple, it contains the initial and final time, and the number of integration steps is deduced from N=steps as \(\delta{t}=T/N\)
If t_span is a sequence of numbers, starting with the initial condition, and progressing in time steps t_span[n+1]-t_span[n].
The Euler algorithm is a very bad integrator and is offered only for illustrative purposes.
- Parameters:
- H
MPO
Hamiltonian in MPO form.
- t_span
float
|tuple
[float
,float
] |Vector
Integration interval, or sequence of time steps.
- state
MPS
Initial guess of the ground state.
- steps
int
,default
= 1000 Integration steps, if not defined by t_span.
- strategy
Strategy
,default
=DEFAULT_STRATEGY
Truncation strategy for MPO and MPS algebra.
- callback
Optional
[Callable
[[float
,MPS
],Any
]] A callable called after each iteration (defaults to None).
- itimebool,
default
=False
Whether to solve the imaginary time evolution problem.
- H