92 double solve(
double a,
double b)
99 checkAndFixAlgorithmCriteria(a, b,
fa,
fb);
107 const double m = calculateBisection(a, b);
111 b = useSecantMethod(b, s,
m) ? s :
m;
122 checkAndFixAlgorithmCriteria(a, b,
fa,
fb);
132 const std::function<
double(
double)> f_;
143 static void checkAndFixAlgorithmCriteria(
double &a,
double &b,
double &
fa,
double &
fb)
noexcept
146 if (std::fabs(
fa) < std::fabs(
fb))
163 static double calculateSecant(
double b,
double fb,
double lastB,
double lastFb)
noexcept
178 static double calculateBisection(
double a,
double b)
noexcept
180 return 0.5 * (a + b);
192 static bool useSecantMethod(
double b,
double s,
double m)
noexcept
~Dekker() override=default
double solve(double a, double b)
Definition Dekker.hpp:92
Dekker(const double epsilon, std::function< double(double)> f) noexcept
Definition Dekker.hpp:58
Dekker(const double epsilon, const uint32 maxNumIterations, std::function< double(double)> f) noexcept
Definition Dekker.hpp:72
ABC for iteration classes to derive from.
Definition Iteration.hpp:46
const double epsilon_
Definition Iteration.hpp:114
void resetNumberOfIterations() noexcept
Definition Iteration.hpp:94
void incrementNumberOfIterations()
Definition Iteration.hpp:103
Definition Bisection.hpp:43
NdArray< dtype > arange(dtype inStart, dtype inStop, dtype inStep=1)
Definition arange.hpp:59
std::uint32_t uint32
Definition Types.hpp:40