lib5c.util.optimization module¶
Module containing utility functions for curve optimization and root finding.
-
lib5c.util.optimization.
array_newton
(func, x0, fprime=None, args=(), tol=1.48e-08, maxiter=50, fprime2=None, failure_idx_flag=None)[source]¶ Finds roots of a scalar function
func
given a vector of initial guessesx0
and parallel vectors of additional arguments tofunc
(passed inargs
) in a vectorized fashion. Similar to callingscipy.optimize.newton()
in a for loop, but more performant and more legible. Bootlegged from https://github.com/scipy/scipy/pull/8357 preceeding its official release.Parameters: - func (function) – The scalar function to minimize. Should be vectorized (when a vector of
independent inputs is passed it should return a vector of independent
outputs). Signature should be
func(x, *args)
wherex0
contains initial guesses forx
andargs
represents the additional arguments. - x0 (np.ndarray) – Initial guesses.
- fprime (function, optional) – The derivative of
func
. If not passed, this will be estimated with the secant method. - args (tuple) – Extra arguments to be passed to
func
. - tol (float) – The allowable error of the zero value.
- maxiter (int) – Maximal number of iterations.
- fprime2 (function, optional) – The second derivative of
func
. If passed, Halley’s method will be used. If not passed, the normal Newton-Raphson method or the secant method is used. - failure_idx_flag (bool, optional) – Pass True to return two extra boolean arrays specifying which optimizations failed or encountered zero derivatives, respectively.
Returns: - root (np.ndarray) – The identified zeros of
func
. - failures (np.ndarray of bool, optional) – Only returned if
failure_idx_flag
is True. Indicates which elements failed to converge. - zero_der (np.ndarray of bool, optional) – Only returned if
failure_idx_flag
is True. Indicates which elements had a zero derivative.
- func (function) – The scalar function to minimize. Should be vectorized (when a vector of
independent inputs is passed it should return a vector of independent
outputs). Signature should be
-
lib5c.util.optimization.
quadratic_log_log_fit
(x, y)[source]¶ Fit a pure-quadratic function
y = a * x**2
using a loss function in log-log space.Parameters: - x (np.ndarray) – Flat vector of
x
values to fit. - y (np.ndarray) – Flat vector of
y
values to fit.
Returns: The fitted function.
Return type: np.poly1d
- x (np.ndarray) – Flat vector of