Class root (o2scl)

O2scl : Class List

template<class func_t = funct, class dfunc_t = func_t, class fp_t = double>
class root

One-dimensional solver [abstract base].

See the One-dimensional solvers section of the User’s guide for general information about O2scl solvers.

Todo

class root

Future:

  • Maybe consider allowing the user to specify the stream to which ‘verbose’ information is sent.

Subclassed by o2scl::root_bkt< std::function< double(double)>, std::function< double(double)>, double >, o2scl::root_bkt< funct, funct, double >, o2scl::root_bkt< std::function< cpp_dec_float_25(cpp_dec_float_25)>, std::function< cpp_dec_float_25(cpp_dec_float_25)>, cpp_dec_float_25 >, o2scl::root_bkt< funct_cdf25, funct_cdf25, cpp_dec_float_25 >, o2scl::root_bkt< std::function< long double(long double)>, std::function< long double(long double)>, long double >, o2scl::root_bkt< funct_ld, funct_ld, long double >, o2scl::root_bkt< funct >, o2scl::root_bkt< std::function< cpp_dec_float_35(cpp_dec_float_35)>, std::function< cpp_dec_float_35(cpp_dec_float_35)>, cpp_dec_float_35 >, o2scl::root_bkt< std::function< cpp_dec_float_50(cpp_dec_float_50)>, std::function< cpp_dec_float_50(cpp_dec_float_50)>, cpp_dec_float_50 >, o2scl::root_bkt< std::function< cpp_dec_float_100(cpp_dec_float_100)>, std::function< cpp_dec_float_100(cpp_dec_float_100)>, cpp_dec_float_100 >, o2scl::root_bkt< o2scl::nstar_rot::polytrope_solve >, o2scl::root_de< funct, funct >, o2scl::root_bkt< func_t, dfunc_t, fp_t >, o2scl::root_cern< func_t >, o2scl::root_de< func_t, dfunc_t, fp_t >, o2scl::root_robbins_monro< func_t, dfunc_t >

Public Functions

inline root()
inline virtual ~root()
inline virtual const char *type()

Return the type, "root".

inline virtual int print_iter(fp_t x, fp_t y, int iter, fp_t value = 0.0, fp_t limit = 0.0, std::string comment = "")

Print out iteration information.

Depending on the value of the variable verbose, this prints out the iteration information. If verbose=0, then no information is printed, while if verbose>1, then after each iteration, the present values of x and y are output to std::cout along with the iteration number. If verbose>=2 then each iteration waits for a character before continuing.

virtual int solve(fp_t &x, func_t &func) = 0

Solve func using x as an initial guess.

inline virtual int solve_bkt(fp_t &x1, fp_t x2, func_t &func)

Solve func in region \( x_1<x<x_2 \) returning \( x_1 \) .

inline virtual int solve_de(fp_t &x, func_t &func, dfunc_t &df)

Solve func using x as an initial guess using derivatives df.

Public Members

fp_t tol_rel

The maximum value of the functions for success (default \( 10^{-8} \) )

fp_t tol_abs

The minimum allowable stepsize (default \( 10^{-12} \) )

int verbose

Output control (default 0)

int ntrial

Maximum number of iterations (default 100)

bool err_nonconv

If true, call the error handler if the solver does not converge (default true)

int last_ntrial

The number of iterations used in the most recent solve.