1D Root finding algorithms.
val brent : ?tol:float ‑> (float ‑> float) ‑> float ‑> float ‑> float
brent f a b
returns an approximation x
of a root of f
in
the interval [a,b]
with absolute accuracy 6. *. epsilon_float
*. abs_float(x) +. tol
.
f(a) *. f(b) > 0.
.Parameter tol: desired length of the interval of uncertainty of the final
result (must be >= 0
). Default: sqrt epsilon_float
.
Ref.: Brent, R. (1973) Algorithms for Minimization without Derivatives. Englewood Cliffs, NJ: Prentice-Hall.
val bisection : ?eps:float ‑> (float ‑> float) ‑> float ‑> float ‑> float
bisection f a b
find an approximation of a root in the
interval [a,b]
using the bisection algorithm.
f(a) *. f(b) > 0.
or eps <= 0.
sqrt epsilon_float
.val illinois : ?eps:float ‑> (float ‑> float) ‑> float ‑> float ‑> float
illinois f a b
find an approximation of a root in the interval
[a,b]
using the Illinois algorithm (which is the Regula Falsi
method with a small twist). Order of convergence: ³√3 ≈ 1.442.
f(a) *. f(b) > 0.
or eps <= 0.
Parameter eps: is the desired relative error on the solution. More
precisely, it terminates when the interval [a,b] verifies
|a-b| ≤ eps max(|a|, |b|). Default: sqrt epsilon_float
.
val newton : ?good_enough:(float ‑> float ‑> float ‑> bool) ‑> (float ‑> float * float) ‑> float ‑> float
newton f_f' x0
returns an approximate root of f
close to the
initial guess x0
using Newton's method. f_f'
is a function
such that f_f' x
returns the couple (f x, f' x)
where f' x
is the derivative of f
at x
.
x
, the previous approximation xprev
, and f(x)
and returns
whether x
is a good enough approximation. Default:
abs_float(f x) < sqrt epsilon_float
.val brent2 : ?tol:float ‑> (float ‑> float * int) ‑> float ‑> float ‑> float
brent2 f a b
finds a zero of the function f
in the same way
brent f a b
does except that f x
returns the couple (y, z)
for the number y * 2**z
. Thus underflow and overflow can be
avoided for a function with large range.
Ref.: Brent, R. (1973) Algorithms for Minimization without Derivatives. Englewood Cliffs, NJ: Prentice-Hall.