# FoundationClasses
TKMath
math

# math_BFGS Class Reference

This class implements the Broyden-Fletcher-Goldfarb-Shanno variant of
Davidson-Fletcher-Powell minimization algorithm of a function of
multiple variables.Knowledge of the function's gradient is required.
.

`#include <math_BFGS.hxx>`

## Public Member Functions

void * | operator new (size_t, void *anAddress)
void * | operator new (size_t size)
void | operator delete (void *anAddress)
Standard_EXPORT | math_BFGS (math_MultipleVarFunctionWithGradient &F, const math_Vector &StartingPoint, const Standard_Real Tolerance=1.0e-8, const Standard_Integer NbIterations=200, const Standard_Real ZEPS=1.0e-12)
| Given the starting point StartingPoint, the Broyden-Fletcher-Goldfarb-Shanno variant of Davidson-Fletcher-Powell minimization is done on the function F. The tolerance required on F is given by Tolerance. The solution F = Fi is found when : 2.0 * abs(Fi - Fi-1) <= Tolerance * (abs(Fi) + abs(Fi-1) + ZEPS). The maximum number of iterations allowed is given by NbIterations. .
Standard_EXPORT | math_BFGS (math_MultipleVarFunctionWithGradient &F, const Standard_Real Tolerance=1.0e-8, const Standard_Integer NbIterations=200, const Standard_Real ZEPS=1.0e-12)
| Initializes the computation of the minimum of F. Warning A call to the Perform method must be made after this initialization to effectively compute the minimum of the function F. .
virtual Standard_EXPORT void | Delete ()
virtual Standard_EXPORT | ~math_BFGS ()
Standard_EXPORT void | Perform (math_MultipleVarFunctionWithGradient &F, const math_Vector &StartingPoint)
| Is used internally by the constructors. .
virtual Standard_EXPORT Standard_Boolean | IsSolutionReached (math_MultipleVarFunctionWithGradient &F) const
| This method is called at the end of each iteration to check if the solution is found. It can be redefined in a sub-class to implement a specific test to stop the iterations. .
Standard_Boolean | IsDone () const
| Returns true if the computations are successful, otherwise returns false. .
const math_Vector & | Location () const
| returns the location vector of the minimum. Exception NotDone is raised if the minimum was not found.
void | Location (math_Vector &Loc) const
| outputs the location vector of the minimum in Loc. Exception NotDone is raised if the minimum was not found. Exception DimensionError is raised if the range of Loc is not equal to the range of the StartingPoint.
Standard_Real | Minimum () const
| returns the value of the minimum. Exception NotDone is raised if the minimum was not found.
const math_Vector & | Gradient () const
| Returns the gradient vector at the minimum. Exception NotDone is raised if the minimum was not found. .
void | Gradient (math_Vector &Grad) const
| Returns the value of the gradient vector at the minimum in Grad. Exception NotDone is raised if the minimum was not found. Exception DimensionError is raised if the range of Grad is not equal to the range of the StartingPoint. .
Standard_Integer | NbIterations () const
| Returns the number of iterations really done in the calculation of the minimum. The exception NotDone is raised if the minimum was not found. .
Standard_EXPORT void | Dump (Standard_OStream &o) const
| Prints on the stream o information on the current state of the object. Is used to redefine the operator <<. .

## Protected Attributes

math_Status | TheStatus
math_Vector | TheLocation
math_Vector | TheGradient
Standard_Real | PreviousMinimum
Standard_Real | TheMinimum
Standard_Real | XTol
Standard_Real | EPSZ
Standard_Integer | nbiter

## Private Attributes

Standard_Boolean | Done
Standard_Integer | Itermax

## Constructor & Destructor Documentation

Standard_EXPORT math_BFGS::math_BFGS | ( | math_MultipleVarFunctionWithGradient & | F,
|  | const math_Vector & | StartingPoint,
|  | const Standard_Real | Tolerance = `1.0e-8`,
|  | const Standard_Integer | NbIterations = `200`,
|  | const Standard_Real | ZEPS = `1.0e-12`
| ) |

Standard_EXPORT math_BFGS::math_BFGS | ( | math_MultipleVarFunctionWithGradient & | F,
|  | const Standard_Real | Tolerance = `1.0e-8`,
|  | const Standard_Integer | NbIterations = `200`,
|  | const Standard_Real | ZEPS = `1.0e-12`
| ) |

virtual Standard_EXPORT math_BFGS::~math_BFGS | ( |  | ) | `[inline, virtual]`

## Member Function Documentation

virtual Standard_EXPORT void math_BFGS::Delete | ( |  | ) | `[virtual]`

Standard_EXPORT void math_BFGS::Dump | ( | Standard_OStream & | o | ) | const

void math_BFGS::Gradient | ( | math_Vector & | Grad | ) | const`[inline]`

const math_Vector & math_BFGS::Gradient | ( |  | ) | const`[inline]`

Standard_Boolean math_BFGS::IsDone | ( |  | ) | const`[inline]`

virtual Standard_EXPORT Standard_Boolean math_BFGS::IsSolutionReached | ( | math_MultipleVarFunctionWithGradient & | F | ) | const`[virtual]`

void math_BFGS::Location | ( | math_Vector & | Loc | ) | const`[inline]`

const math_Vector & math_BFGS::Location | ( |  | ) | const`[inline]`

Standard_Real math_BFGS::Minimum | ( |  | ) | const`[inline]`

Standard_Integer math_BFGS::NbIterations | ( |  | ) | const`[inline]`

void math_BFGS::operator delete | ( | void * | anAddress | ) | `[inline]`

void* math_BFGS::operator new | ( | size_t | size | ) | `[inline]`

void* math_BFGS::operator new | ( | size_t | ,
|  | void * | anAddress
| ) | `[inline]`

Standard_EXPORT void math_BFGS::Perform | ( | math_MultipleVarFunctionWithGradient & | F,
|  | const math_Vector & | StartingPoint
| ) |

## Field Documentation

Standard_Boolean math_BFGS::Done `[private]`

Standard_Real math_BFGS::EPSZ `[protected]`

Standard_Integer math_BFGS::Itermax `[private]`

Standard_Integer math_BFGS::nbiter `[protected]`

Standard_Real math_BFGS::PreviousMinimum `[protected]`

math_Vector math_BFGS::TheGradient `[protected]`

math_Vector math_BFGS::TheLocation `[protected]`

Standard_Real math_BFGS::TheMinimum `[protected]`

math_Status math_BFGS::TheStatus `[protected]`

Standard_Real math_BFGS::XTol `[protected]`

The documentation for this class was generated from the following files:

- math_BFGS.hxx
- math_BFGS.lxx