gemseo / utils / derivatives

# finite_differences module¶

class gemseo.utils.derivatives.finite_differences.FirstOrderFD(f_pointer, step=None, design_space=None, normalize=True, parallel=False, **parallel_args)[source]

First-order finite differences approximator.

$\begin{split}\frac{df(x)}{dx}\approx\frac{f(x+\\delta x)-f(x)}{\\delta x}\end{split}$
Parameters:
• f_pointer (Callable[[ndarray], ndarray]) – The pointer to the function to derive.

• step (float | complex | ndarray | None) – The default differentiation step.

• design_space (DesignSpace | None) – The design space containing the upper bounds of the input variables. If None, consider that the input variables are unbounded.

• normalize (bool) –

Whether to normalize the function.

By default it is set to True.

• parallel (bool) –

Whether to differentiate the function in parallel.

By default it is set to False.

• **parallel_args (Any) – The parallel execution options, see gemseo.core.parallel_execution.

compute_optimal_step(x_vect, numerical_error=2.220446049250313e-16, **kwargs)[source]

Compute the gradient by real step.

Parameters:
• x_vect (ndarray) – The input vector.

• numerical_error (float) –

The numerical error associated to the calculation of $$f$$. By default, machine epsilon (appx 1e-16), but can be higher. when the calculation of $$f$$ requires a numerical resolution.

By default it is set to 2.220446049250313e-16.

• **kwargs – The additional arguments passed to the function.

Returns:

The optimal steps. The errors.

Return type:
f_pointer: Callable[[ndarray], ndarray]

The pointer to the function to derive.