# Arby’s documentation¶

Arby is a fully data-driven Python module to construct surrogate models, reduced bases and empirical interpolants from training data.

This module implements a type of Reduced Order Modeling technique for reducing the computational complexity of mathematical models in numerical simulations.

# Quick Usage¶

Suppose we have a set of real functions parametrized by a real number $$\lambda$$. This set, the training set, represents an underlying parametrized model $$f_\lambda(x)$$ with continuous dependency in $$\lambda$$. Without complete knowledge about $$f_\lambda$$, we’d like to produce an accurate approximation only through the access to the training set.

With Arby we can build an accurate surrogate model to represent the training set. For simplicity, suppose a discretization of the parameter domain [par_min, par_max] with Ntrain samples indexing the training set

params = np.linspace(par_min, par_max, Ntrain)


and a discretization of the $$x$$ domain $$[a,b]$$ in Nsamples points

x_samples = np.linspace(a, b, Nsamples)


Next, we build a training set

training_set = [f(par, x_samples) for par in params]


that has shape (Ntrain, Nsamples).

Then we build the surrogate model with Arby by doing:

from arby import ReducedOrderModel as ROM
f_model = ROM(training_space=training_set,
physical_interval=x_samples,
parameter_interval=params)


With f_model we can get function samples for any parameter par in the interval [par_min, par_max] simply by calling it:

f_model_at_par = f_model.surrogate(par)
plt.plot(x_samples, model_at_par)
plt.show()