Generating GLE Samples

Generation of sample trajectory via GLE_analysisEM.GLE_Estimator.sample

plot em samples
{'A': array([[ 0.02002006,  1.        ],
       [-1.        ,  1.50130236]]), 'C': array([[1.00000000e+00, 1.07699575e-16],
       [1.21168839e-16, 1.00000000e+00]]), 'force': array([[1.]]), 'µ_0': array([0.]), 'Σ_0': array([[1.]]), 'SST': array([[0.0002002 , 0.        ],
       [0.        , 0.01501302]]), 'dt': 0.005, 'basis': {'basis_type': 'linear', 'transformer__accept_sparse': False, 'transformer__check_inverse': True, 'transformer__feature_names_out': None, 'transformer__func': <function dV at 0x7ff7d6de5670>, 'transformer__inv_kw_args': None, 'transformer__inverse_func': None, 'transformer__kw_args': None, 'transformer__validate': False, 'transformer': FunctionTransformer(func=<function dV at 0x7ff7d6de5670>), 'dim_x': 1, 'nb_basis_elt': 1}}

import numpy as np
from matplotlib import pyplot as plt
from GLE_analysisEM import GLE_Estimator, GLE_BasisTransform
from sklearn.preprocessing import FunctionTransformer


a = 0.025
b = 1.0


def dV(X):
    """
    Compute the force field
    """
    return -4 * a * np.power(X, 3) + 2 * b * X


dim_x = 1
dim_h = 1
model = "euler"
force = np.identity(dim_x)

basis = GLE_BasisTransform(transformer=FunctionTransformer(dV))
generator = GLE_Estimator(verbose=1, dim_x=dim_x, dim_h=dim_h, model=model, basis=basis, force_init=force, init_params="random", multiprocessing=4)
X, idx, h = generator.sample(n_samples=5000, x0=0.0, v0=0.0)
print(generator.get_coefficients())
for n in range(dim_h):
    plt.plot(X[:, 0], h[:, n], label="h{}".format(n + 1))

for n in range(dim_x):
    plt.plot(X[:, 0], X[:, n * 2 + 2], label="v{}".format(n + 1))
    plt.plot(X[:, 0], X[:, n * 2 + 1], label="x{}".format(n + 1))


plt.legend(loc="upper right")
plt.show()

Total running time of the script: ( 0 minutes 0.496 seconds)

Gallery generated by Sphinx-Gallery