Math-Brent
view release on metacpan or search on metacpan
lib/Math/Brent.pm view on Meta::CPAN
Provides a simple interface to the L</BracketMinimum()> and L</Brent()>
routines.
Given a function, an initial guess for the function's
minimum, and its scaling, this routine converges
to the function's minimum using Brent's method.
($x, $y) = Minimise1D($guess, $scale, \&func);
The minimum is reached within a certain tolerance (defaulting 1e-7), and
attempts to do so within a maximum number of iterations (defaulting to 100).
You may override them by providing alternate values:
($x, $y) = Minimise1D($guess, $scale, \&func, 1.5e-8, 120);
=cut
sub Minimise1D
{
my ($guess, $scale, $func, $tol, $itmax) = @_;
my ($a, $b, $c) = BracketMinimum($guess - $scale, $guess + $scale, $func);
lib/Math/Brent.pm view on Meta::CPAN
=item 1. B<$bx> is between B<$ax> and B<$cx>, and
=item 2. B<func($bx)> is less than both B<func($ax)> and B<func($cx)>),
=back
Brent() isolates the minimum to a fractional precision of about B<$tol>
using Brent's method.
A maximum number of iterations B<$itmax> may be specified for this search - it
defaults to 100. Returned is a list consisting of the abcissa of the minum
and the function value there.
=cut
sub Brent
{
my ($ax, $bx, $cx, $func, $tol, $ITMAX) = @_;
my ($d, $u, $x, $w, $v); # ordinates
my ($fu, $fx, $fw, $fv); # function evaluations
( run in 1.415 second using v1.01-cache-2.11-cpan-71847e10f99 )