nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
Optimization Toolbox (optim)

Unconstrained and bound-constrained nonlinear optimization, root finding (fzero, fsolve), and nonlinear curve fitting. More...

Files

file  fzero.hpp
 Scalar root-finding and unconstrained minimisation.

Functions

Value nk::optim::fzero (FnHandle fn, double x0, std::pmr::memory_resource *mr=nullptr)
 Scalar root-finder, initial-guess form (x = fzero(fn, x0)).
Value nk::optim::fzero (FnHandle fn, double a, double b, std::pmr::memory_resource *mr=nullptr)
 Scalar root-finder, bracket form (x = fzero(fn, a, b)).
Value nk::optim::fminbnd (FnHandle fn, double lo, double hi, double tol, std::pmr::memory_resource *mr=nullptr)
 Bounded scalar minimisation (x = fminbnd(fn, lo, hi, tol)).
Value nk::optim::fminsearch (FnHandle fn, Span< const double > x0, double tol, std::pmr::memory_resource *mr=nullptr)
 Multi-dimensional unconstrained minimisation (x = fminsearch(fn, x0, tol)).

Detailed Description

Unconstrained and bound-constrained nonlinear optimization, root finding (fzero, fsolve), and nonlinear curve fitting.

Function Documentation

◆ fminbnd()

Value nk::optim::fminbnd ( FnHandle fn,
double lo,
double hi,
double tol,
std::pmr::memory_resource * mr = nullptr )

Bounded scalar minimisation (x = fminbnd(fn, lo, hi, tol)).

Brent's golden-section + parabolic-interpolation hybrid on [lo, hi].

Parameters
fnCallback (scalar in, scalar out).
loLower bound.
hiUpper bound (hi > lo).
tolConvergence tolerance on the minimiser location.
mrMemory resource (nullptr → process default).
Returns
Scalar minimiser x* ∈ [lo, hi].
See also
fzero, fminsearch

◆ fminsearch()

Value nk::optim::fminsearch ( FnHandle fn,
Span< const double > x0,
double tol,
std::pmr::memory_resource * mr = nullptr )

Multi-dimensional unconstrained minimisation (x = fminsearch(fn, x0, tol)).

Nelder-Mead simplex starting at x0. The callback receives a 1-element args whose [0] entry is a 1 × n DOUBLE row Value of length n = x0.size(), and writes a scalar into outs[0].

Parameters
fnCallback (vector in, scalar out).
x0Starting point (any length ≥ 1).
tolConvergence tolerance.
mrMemory resource (nullptr → process default).
Returns
Minimiser as a n × 1 DOUBLE column Value (length n = x0.size()).
See also
fminbnd

◆ fzero() [1/2]

Value nk::optim::fzero ( FnHandle fn,
double a,
double b,
std::pmr::memory_resource * mr = nullptr )

Scalar root-finder, bracket form (x = fzero(fn, a, b)).

Runs Brent's method on [a, b]. Throws if sign(fn(a)) == sign(fn(b)) (no sign change inside the interval).

Parameters
fnCallback (scalar in, scalar out).
aLower bracket bound (must be finite, a < b).
bUpper bracket bound (must be finite, a < b).
mrMemory resource (nullptr → process default).
Returns
Scalar root.
Exceptions
ErrorNo sign change in [a, b], or invalid bounds.
See also
fminbnd

◆ fzero() [2/2]

Value nk::optim::fzero ( FnHandle fn,
double x0,
std::pmr::memory_resource * mr = nullptr )

Scalar root-finder, initial-guess form (x = fzero(fn, x0)).

Expands an outward bracket around x0 until a sign change is detected, then runs Brent's method.

The callback receives a 1-element args (the scalar evaluation point) and writes its scalar result into outs[0].

Parameters
fnCallback (scalar in, scalar out).
x0Initial guess.
mrMemory resource (nullptr → process default).
Returns
Scalar root.
Exceptions
ErrorNo sign change found near x0.
See also
fminbnd