Example 2
A model framework of a diffusion process with fluctuating diffusivity is presented. A Brownian but non-Gaussian diffusion by means of a coupled set of stochastic differential equations is predicted. Position is described by an overdamped Langevin equation and the diffusion coefficient as the square of an Ornstein-Uhlenbeck process.
The example is focused in computing the probability density function for displacements at different time instants for the case of a one-dimensional process, as shown analitically by Chechkin et al. in [1] and discussed in [2].
- The example is structured as follows:
Note
You can access the script of this example on the yupi examples repository.
1. Setup dependencies
Import all the dependencies:
import numpy as np
from yupi.stats import collect
from yupi.graphics import plot_hists
from yupi.generators import DiffDiffGenerator
2. Definition of parameters
Simulation parameters:
T = 1000 # Total time of the simulation
N = 5000 # Number of trajectories
dt = .1 # Time step
3. Generating trajectories
Once we have all the parameters required, we just need to instantiate the class and generate the Trajectories:
dd = DiffDiffGenerator(T, dt=dt, seed=0)
trajs = dd.generate(N)
4. Data analysis and plots
Definition of time instants:
time_instants = np.array([1, 10, 100])
Let us obtain the position of all the trajectories in the key time instants:
r = [collect(trajs, at=float(t)) for t in time_instants]
Then, we can plot the results:
plot_hists(r, bins=30, density=True,
labels=[f't = {t}' for t in time_instants],
xlabel='x',
ylabel='PDF',
legend=True,
grid=True,
yscale='log',
ylim=(1e-3, 1),
xlim=(-20, 20),
filled=True
)