// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _math_NewtonFunctionRoot_HeaderFile #define _math_NewtonFunctionRoot_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _Standard_OStream_HeaderFile #include #endif class StdFail_NotDone; class math_FunctionWithDerivative; //! This class implements the calculation of a root of a function of
//! a single variable starting from an initial near guess using the
//! Newton algorithm. Knowledge of the derivative is required.
class math_NewtonFunctionRoot { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } //! The Newton method is done to find the root of the function F
//! from the initial guess Guess.
//! The tolerance required on the root is given by Tolerance.
//! The solution is found when :
//! abs(Xi - Xi-1) <= EpsX and abs(F(Xi))<= EpsF
//! The maximum number of iterations allowed is given by NbIterations.
Standard_EXPORT math_NewtonFunctionRoot(math_FunctionWithDerivative& F,const Standard_Real Guess,const Standard_Real EpsX,const Standard_Real EpsF,const Standard_Integer NbIterations = 100); //! The Newton method is done to find the root of the function F
//! from the initial guess Guess.
//! The solution must be inside the interval [A, B].
//! The tolerance required on the root is given by Tolerance.
//! The solution is found when :
//! abs(Xi - Xi-1) <= EpsX and abs(F(Xi))<= EpsF
//! The maximum number of iterations allowed is given by NbIterations.
Standard_EXPORT math_NewtonFunctionRoot(math_FunctionWithDerivative& F,const Standard_Real Guess,const Standard_Real EpsX,const Standard_Real EpsF,const Standard_Real A,const Standard_Real B,const Standard_Integer NbIterations = 100); //! is used in a sub-class to initialize correctly all the fields
//! of this class.
Standard_EXPORT math_NewtonFunctionRoot(const Standard_Real A,const Standard_Real B,const Standard_Real EpsX,const Standard_Real EpsF,const Standard_Integer NbIterations = 100); //! is used internally by the constructors.
Standard_EXPORT void Perform(math_FunctionWithDerivative& F,const Standard_Real Guess) ; //! Returns true if the computations are successful, otherwise returns false.
Standard_Boolean IsDone() const; //! Returns the value of the root of function .
//! Exception NotDone is raised if the root was not found.
Standard_Real Root() const; //! returns the value of the derivative at the root.
//! Exception NotDone is raised if the root was not found.
Standard_Real Derivative() const; //! returns the value of the function at the root.
//! Exception NotDone is raised if the root was not found.
Standard_Real Value() const; //! Returns the number of iterations really done on the
//! computation of the Root.
//! Exception NotDone is raised if the root was not found.
Standard_Integer NbIterations() const; //! Prints information on the current state of the object.
Standard_EXPORT void Dump(Standard_OStream& o) const; protected: private: Standard_Boolean Done; Standard_Real X; Standard_Real Fx; Standard_Real DFx; Standard_Integer It; Standard_Real EpsilonX; Standard_Real EpsilonF; Standard_Integer Itermax; Standard_Real Binf; Standard_Real Bsup; }; #include // other Inline functions and methods (like "C++: function call" methods) #endif