ROOT
ROOT project
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
BisectionStepper< T > Class Template Reference

The specialized Stepper to compute a step with the Bisection Method. More...

#include <stepper_def.hpp>

Inheritance diagram for BisectionStepper< T >:
Inheritance graph
Collaboration diagram for BisectionStepper< T >:
Collaboration graph

Public Member Functions

 BisectionStepper (std::function< double(double)> fun, bool aitken_mode, Eigen::Vector2d _int)
 Constructor of a BisectionStepper object.
 
Eigen::Vector2d compute_step (Eigen::Vector2d previous_iteration) override
 Specialized method to compute and return a new step with Bisection. Let left_edge = a, right_edge = b; then we have an interval [a,b] such that f(a)*f(b) < 0; We compute x_new = (a+b)/2; if f(a)*f(x_new) < 0 then a_new = a, b_new = x_new, otherwise a_new = x_new, b_new = b -> left_edge = a_new, right_edge = b_new.
 
 BisectionStepper (std::function< double(double)> fun, bool aitken_mode, Eigen::Vector2d _int)
 
Eigen::Vector2d compute_step (Eigen::Vector2d last_iter)
 Virtual function to compute the step for the method -> overridden by all the methods.
 
- Public Member Functions inherited from StepperBase< T >
 StepperBase (std::function< double(double)> fun, bool aitken_mode)
 Constructor for virtual Stepper class, which will be inherited by the daughters.
 
virtual ~StepperBase ()=default
 
Eigen::Vector2d step (Eigen::Vector2d previous_step)
 Method handling all the steps involved in computing the new guess.
 

Private Attributes

double left_edge
 
double right_edge
 Bounds of the interval to use (updated at each step)
 

Additional Inherited Members

- Protected Member Functions inherited from StepperBase< T >
Eigen::Vector2d aitken_step (Eigen::Vector2d previous_iter)
 Method to handle the computation of a step using Aitken's acceleration.
 
- Protected Attributes inherited from StepperBase< T >
std::function< double(double)> function
 Function to compute the root of.
 
bool aitken_requirement
 Option to use Aitken's acceleration.
 

Detailed Description

template<typename T>
class BisectionStepper< T >

The specialized Stepper to compute a step with the Bisection Method.

Constructor & Destructor Documentation

◆ BisectionStepper() [1/2]

template<typename T >
BisectionStepper< T >::BisectionStepper ( std::function< double(double)>  fun,
bool  aitken_mode,
Eigen::Vector2d  _int 
)

Constructor of a BisectionStepper object.

Parameters
funThe function to find the root of
aitken_modeOption to use Aitken's acceleration
_intInitial interval such that f(_int(0))*f(_int(1)) < 0

◆ BisectionStepper() [2/2]

BisectionStepper< Eigen::Vector2d >::BisectionStepper ( std::function< double(double)>  fun,
bool  aitken_mode,
Eigen::Vector2d  _int 
)

Member Function Documentation

◆ compute_step() [1/2]

Eigen::Vector2d BisectionStepper< Eigen::Vector2d >::compute_step ( Eigen::Vector2d  )
virtual

Virtual function to compute the step for the method -> overridden by all the methods.

Parameters
previous_iteration2-dimensional vector storing x(i-1) and f(x(i-1)) - previous guesses
Returns
2-dimensional vector storing x(i) and f(x(i)) - new guesses

Implements StepperBase< T >.

◆ compute_step() [2/2]

template<typename T >
Eigen::Vector2d BisectionStepper< T >::compute_step ( Eigen::Vector2d  previous_iteration)
overridevirtual

Specialized method to compute and return a new step with Bisection. Let left_edge = a, right_edge = b; then we have an interval [a,b] such that f(a)*f(b) < 0; We compute x_new = (a+b)/2; if f(a)*f(x_new) < 0 then a_new = a, b_new = x_new, otherwise a_new = x_new, b_new = b -> left_edge = a_new, right_edge = b_new.

Parameters
previous_iteration2-dimensional vector storing x(i-1) and f(x(i-1)) - old guesses
Returns
2-dimensional vector storing x(i) = (left_edge + right_edge) / 2 and f(x(i)) - new guesses

Implements StepperBase< T >.

Member Data Documentation

◆ left_edge

template<typename T >
double BisectionStepper< T >::left_edge
private

◆ right_edge

template<typename T >
double BisectionStepper< T >::right_edge
private

Bounds of the interval to use (updated at each step)


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