template <class F, class T, class Tol>
std::pair<T, T>
bisect(
F f,
T min,
T max,
Tol tol);
template <class F, class T, class Tol>
std::pair<T, T>
bisect(
F f,
T min,
T max,
Tol tol,
boost::uintmax_t& max_iter);
template <class F, class T, class Tol, class Policy>
std::pair<T, T>
bisect(
F f,
T min,
T max,
Tol tol,
boost::uintmax_t& max_iter,
const Policy&);
Эти функции находят корень, используябисекция.
<bisect
>Функциональные аргументы:
- f
Унарный функтор, который является функциейf(x), чьи корни должны быть найдены.
- min
Левая скобка интервала, как известно, содержит корень.
- max
Правая скобка интервала, как известно, содержит корень.
Предпосылкой является то, чтоmin< maxиf(min)*f(max)<= 0, функция повышаетоценку_error, если эти предварительные условия нарушены. Действие, предпринятое по ошибке, контролируется аргументом шаблонаPolicy: поведение по умолчанию заключается в том, чтобы броситьповышение::math::evaluation_error. Еслиполитикаизменена, чтобы не бросать, то она возвращается.std::pair(min, min).
- tol
Бинарный функтор, который определяет условие терминации: функция возвращает текущие скобки, заключающие корень, когдаtol(min, max)становится правдой. См. такжепредопределенные функторы терминации.
- max_iter
Максимальное количество призывовf(x)при поиске корня. На выходе это обновляется до фактического количества выполненных вызовов.
Конечный аргументПолитикаявляется необязательным и может быть использован для контроля поведения функции: как она обрабатывает ошибки, какой уровень точности использовать и т. д. См. документациюдля более подробной информации.
Возвращает: пара значенийr, которые скрепляют корень так, что:
f(r.first) * f(r.second) <= 0
и либо
tol(r.first, r.second) == true
и либо
max_iter >= m
гдем— начальное значениеmax_iter, переданное функции.
Другими словами, абонент должен проверить, произошло ли прекращение в результате превышенияmax_iterвызовов функции (легко осуществляется путем проверки обновленного значенияmax_iter, когда функция возвращается), а не потому, что условие прекращенияtolбыло удовлетворено.