Function Class¶
The function class provides a wrapper around a function \(f\) posed on some domain \(\mathcal{D} \subset \mathbb{R}^m\).
Design Considerations¶
Oftentimes functions coming from engineering applications
come in application units, e.g., in meters, Pascals, etc.
The trouble is that these units are often poorly scaled with respect
to each other, causing numerical issues.
Hence, one of the first steps is to restate the problem on the normalized domain:
an affine transform of \(\mathcal{D}\) into the unit box \([1,1]^m\).
One of the roles of the Function
class is to transparently handle
working in the normalized domain so that no changes are needed for the functions provided.
Function Class API¶

class
psdr.
Function
(funs, domain, grads=None, fd_grad=None, vectorized=False, kwargs={}, dask_client=None, return_grad=False)[source]¶ Wrapper around function specifying the domain
Provided a function \(f: \mathcal{D} \subset \mathbb{R}^m \to \mathbb{R}^d\), and a domain \(\mathcal{D}\), this class acts as a wrapper for both. The key contribution of this class is to provide access to the function on the normalized domain \(\mathcal{D}_{\text{norm}}\) that is a subset of the \([1,1]^m\) cube; i.e.,
\[\mathcal{D}_{\text{norm}} \subset [1,1]^m \subset \mathbb{R}^m.\]Parameters:  fun (function or list of functions) – Either a python function or a list of functions to evaluate
 domain (Domain) – The domain on which the function is posed
 vectorized (bool, default: False) – If True, the functions are vectorized for use with numpy.
 kwargs (dict, default: empty) – Keyword arguments to pass to the functions when evaluating function
 dask_client (dask.distributed.Client) – Client to use for multiprocessing