I have forgotten
my Password

this unit 5.00
sub units 0.00


Given two initial points, this algorithm finds another point such that a bracketing triple is formed.
Controller: CodeCogs




voidbracketdouble(*f)(double)[function pointer]
double& a
double& b
double& c )
Given a user-defined function f and two distinct initial points a and b, this algorithm searches in the downhill direction (defined by the function as evaluated at the initial points) and returns a new point c such that the triplet \inline (a, b, c) brackets a minimum of the function. Explicitly, bracketing the minimum means finding three values a, b and c such that

In order to achieve this, an initial guess is made using the golden section

and then parabolic extrapolation is used as described below. Consider

then the new extrapolated abscissa will be

If this does not create a new minimum point \inline \left( u, f(u) \right), default golden section interval magnification is used

The function takes four parameters.

Example 1

#include <codecogs/maths/optimization/bracket.h>
#include <iostream>
#include <iomanip>
#include <cmath>
// user-defined function
double f(double x) {
    return x * sin(x);
int main() 
    double a = 5, b = 4, c;
    Maths::Optimization::bracket(f, a, b, c);
    std::cout << "The bracketing triple is: " << std::endl << std::endl;
    std::cout << "    a = 4" << std::endl << "    b = 5 " << std::endl;
    std::cout << "    c = " << std::setprecision(10) << c << std::endl;
    std::cout << std::endl;
    std::cout << "The corresponding function values are: " << std::endl;
    std::cout << std::endl;
    std::cout << " f(a) = " << f(4) << std::endl << " f(b) = " << f(5);
    std::cout << std::endl;
    std::cout << " f(c) = " << f(c) << std::endl << std::endl;
    return 0;


The bracketing triple is:
    a = 4
    b = 5
    c = 6.618034
The corresponding function values are:
 f(a) = -3.027209981
 f(b) = -4.794621373
 f(c) = 2.174859828


fthe user-defined function
athe left endpoint of the initial interval
bthe right endpoint of the initial interval
cthe third point that will complete the bracketing triple


The new values of a, b and c creating a bracketing triple.


Lucian Bentea (August 2005)
Source Code

Source code is available when you buy a Commercial licence.

Not a member, then Register with CodeCogs. Already a Member, then Login.