62 virtual std::vector<double>
Equations(
const std::vector<double> &x) = 0;
81 static const double EPS;
106 virtual std::vector<double>
Jacobian(
const std::vector<double> &x);
114 void SetDx(
double dx) { m_dx = dx; }
172 virtual bool IsSolved(
const std::vector<double>& x,
const std::vector<double>& f,
const std::vector<double>& xdelta = std::vector<double>())
const;
Sub-class where it is determined whether the required accuracy is achieved in the Broyden's method.
virtual ~BroydenSolutionCriterium()=default
Destroy the BroydenSolutionCriterium object.
BroydenSolutionCriterium(double maximum_error=TOL)
virtual bool IsSolved(const std::vector< double > &x, const std::vector< double > &f, const std::vector< double > &xdelta=std::vector< double >()) const
Abstract class which defines the system of non-linear equations to be solved by the Broyden's method.
virtual ~BroydenEquations(void)=default
Destructor.
int m_N
The number of equations.
void SetDimension(int dim)
virtual int Dimension() const
Number of equations.
BroydenEquations()=default
Default constructor. Does nothing.
virtual std::vector< double > Equations(const std::vector< double > &x)=0
BroydenJacobian * m_Jacobian
virtual ~Broyden(void)=default
Destroy the Broyden object.
void UseNewton(bool flag)
BroydenEquations * m_Equations
double MaxDifference() const
static const int MAX_ITERS
Maximum number of Broyden iterations before terminating.
virtual std::vector< double > Solve(const std::vector< double > &x0, BroydenSolutionCriterium *solcrit=NULL, int max_iterations=MAX_ITERS)
Broyden(BroydenEquations *eqs=NULL, BroydenJacobian *jaco=NULL)
Construct a new Broyden object.
static const double TOL
Default desired solution accuracy.
int MaxIterations() const
Class which implements calculation of the Jacobian needed for the Broyden's method.
virtual std::vector< double > Jacobian(const std::vector< double > &x)
Evaluates the Jacobian for given values of the variables.
BroydenJacobian(BroydenEquations *eqs=NULL)
Construct a new BroydenJacobian object.
void SetDx(double dx)
Set the finite variable difference value used for calculating the Jacobian numerically.
virtual ~BroydenJacobian(void)=default
Destructor.
The main namespace where all classes and functions of the Thermal-FIST library reside.