Open CASCADE Technology 7.8.2.dev
math_BissecNewton Class Reference

This class implements a combination of Newton-Raphson and bissection methods to find the root of the function between two bounds. Knowledge of the derivative is required. More...

#include <math_BissecNewton.hxx>

Public Member Functions

 math_BissecNewton (const Standard_Real theXTolerance)
 Constructor.
 
void Perform (math_FunctionWithDerivative &F, const Standard_Real Bound1, const Standard_Real Bound2, const Standard_Integer NbIterations=100)
 A combination of Newton-Raphson and bissection methods is done to find the root of the function F between the bounds Bound1 and Bound2 on the function F. The tolerance required on the root is given by TolX. The solution is found when: abs(Xi - Xi-1) <= TolX and F(Xi) * F(Xi-1) <= 0 The maximum number of iterations allowed is given by NbIterations.
 
virtual Standard_Boolean IsSolutionReached (math_FunctionWithDerivative &theFunction)
 This method is called at the end of each iteration to check if the solution has been found. It can be redefined in a sub-class to implement a specific test to stop the iterations.
 
Standard_Boolean IsDone () const
 Tests is the root has been successfully found.
 
Standard_Real Root () const
 returns the value of the root. Exception NotDone is raised if the minimum was not found.
 
Standard_Real Derivative () const
 returns the value of the derivative at the root. Exception NotDone is raised if the minimum was not found.
 
Standard_Real Value () const
 returns the value of the function at the root. Exception NotDone is raised if the minimum was not found.
 
void Dump (Standard_OStream &o) const
 Prints on the stream o information on the current state of the object. Is used to redifine the operator <<.
 
virtual ~math_BissecNewton ()
 Destructor.
 

Protected Attributes

math_Status TheStatus
 
Standard_Real XTol
 
Standard_Real x
 
Standard_Real dx
 
Standard_Real f
 
Standard_Real df
 

Detailed Description

This class implements a combination of Newton-Raphson and bissection methods to find the root of the function between two bounds. Knowledge of the derivative is required.

Constructor & Destructor Documentation

◆ math_BissecNewton()

math_BissecNewton::math_BissecNewton ( const Standard_Real theXTolerance)

Constructor.

Parameters
theXTolerance- algorithm tolerance.

◆ ~math_BissecNewton()

virtual math_BissecNewton::~math_BissecNewton ( )
virtual

Destructor.

Member Function Documentation

◆ Derivative()

Standard_Real math_BissecNewton::Derivative ( ) const

returns the value of the derivative at the root. Exception NotDone is raised if the minimum was not found.

◆ Dump()

void math_BissecNewton::Dump ( Standard_OStream & o) const

Prints on the stream o information on the current state of the object. Is used to redifine the operator <<.

◆ IsDone()

Standard_Boolean math_BissecNewton::IsDone ( ) const

Tests is the root has been successfully found.

◆ IsSolutionReached()

virtual Standard_Boolean math_BissecNewton::IsSolutionReached ( math_FunctionWithDerivative & theFunction)
virtual

This method is called at the end of each iteration to check if the solution has been found. It can be redefined in a sub-class to implement a specific test to stop the iterations.

◆ Perform()

void math_BissecNewton::Perform ( math_FunctionWithDerivative & F,
const Standard_Real Bound1,
const Standard_Real Bound2,
const Standard_Integer NbIterations = 100 )

A combination of Newton-Raphson and bissection methods is done to find the root of the function F between the bounds Bound1 and Bound2 on the function F. The tolerance required on the root is given by TolX. The solution is found when: abs(Xi - Xi-1) <= TolX and F(Xi) * F(Xi-1) <= 0 The maximum number of iterations allowed is given by NbIterations.

◆ Root()

Standard_Real math_BissecNewton::Root ( ) const

returns the value of the root. Exception NotDone is raised if the minimum was not found.

◆ Value()

Standard_Real math_BissecNewton::Value ( ) const

returns the value of the function at the root. Exception NotDone is raised if the minimum was not found.

Field Documentation

◆ df

Standard_Real math_BissecNewton::df
protected

◆ dx

Standard_Real math_BissecNewton::dx
protected

◆ f

Standard_Real math_BissecNewton::f
protected

◆ TheStatus

math_Status math_BissecNewton::TheStatus
protected

◆ x

Standard_Real math_BissecNewton::x
protected

◆ XTol

Standard_Real math_BissecNewton::XTol
protected

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