I have forgotten
my Password

Or login with:

  • Facebookhttp://facebook.com/
  • Googlehttps://www.google.com/accounts/o8/id
  • Yahoohttps://me.yahoo.com
COST (GBP)
this unit 5.00
sub units 0.00
+
0

Bracket

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

Interface

C++

Bracket

 
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;
}

Output

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

Parameters

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

Returns

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

Authors

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.