FUNCTION
Bracket
Given two initial points, this algorithm finds another point such that a bracketing triple is formed.
You're viewing an older version of this page (#86). View the current version.
Interface
#include <codecogs/maths/optimization/bracket.h>
using namespace Maths::Optimization;
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 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 , 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