Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Root Finding Without Derivatives

Boost , Math Toolkit 2.5.0 , Root finding

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Synopsis
#include <boost/math/tools/roots.hpp>
namespace boost { namespace math {
namespace tools { // Note namespace boost::math::tools.
// Bisection
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>
std::pair<T, T>
   bisect(
      F f,
      T min,
      T max,
      Tol tol);
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&);
// Bracket and Solve Root
template <class F, class T, class Tol>
std::pair<T, T>
   bracket_and_solve_root(
      F f,
      const T& guess,
      const T& factor,
      bool rising,
      Tol tol,
      boost::uintmax_t& max_iter);
template <class F, class T, class Tol, class Policy>
std::pair<T, T>
   bracket_and_solve_root(
      F f,
      const T& guess,
      const T& factor,
      bool rising,
      Tol tol,
      boost::uintmax_t& max_iter,
      const Policy&);
 // TOMS 748 algorithm
template <class F, class T, class Tol>
std::pair<T, T>
   toms748_solve(
      F f,
      const T& a,
      const T& b,
      Tol tol,
      boost::uintmax_t& max_iter);
template <class F, class T, class Tol, class Policy>
std::pair<T, T>
   toms748_solve(
      F f,
      const T& a,
      const T& b,
      Tol tol,
      boost::uintmax_t& max_iter,
      const Policy&);
template <class F, class T, class Tol>
std::pair<T, T>
   toms748_solve(
      F f,
      const T& a,
      const T& b,
      const T& fa,
      const T& fb,
      Tol tol,
      boost::uintmax_t& max_iter);
template <class F, class T, class Tol, class Policy>
std::pair<T, T>
   toms748_solve(
      F f,
      const T& a,
      const T& b,
      const T& fa,
      const T& fb,
      Tol tol,
      boost::uintmax_t& max_iter,
      const Policy&);
// Termination conditions:
template <class T>
struct eps_tolerance;
struct equal_floor;
struct equal_ceil;
struct equal_nearest_integer;
}}} // boost::math::tools namespaces
Description

Эти функции решают корень некоторой функцииf(x)-без необходимости каких-либо производныхf(x).

<bracket_and_solve_root>функции используют алгоритмTOMS 748Алефельда, Потры и Ши, который является асимптотически наиболее эффективным из известных и, как было показано, является оптимальным для определенных классов плавных функций. Различия между нимии.

В качестве альтернативы,бисектпредставляет собой простуюбисекциярутину, которая может быть полезна сама по себе в некоторых ситуациях, или альтернативно для сужения диапазона, содержащего корень, до вызова более продвинутого алгоритма.

Все алгоритмы в этом разделе уменьшают диаметр замкнутого интервала с той же асимптотической эффективностью, с которой они находят корень. Это в отличие от методов, основанных на производных, которые могутникогдазначительно уменьшить замкнутый интервал, даже если они быстро приближаются к корню. Это также контрастирует с некоторыми другими свободными от производных методами (например, методом Брента, описанным вБрент-Деккере), который только уменьшает замкнутый интервал на конечной стадии. Следовательно, эти способы возвращают<std::pair>, содержащий обнаруженный замкнутый интервал, и принимают объект функции, определяющий условие терминации.

Для готовых условий прекращения предусмотрены три функциональных объекта:

  • eps_toleranceвызывает прекращение, когда относительная ошибка в замкнутом интервале ниже определенного порога.
  • equal_floorиequal_ceilполезны для некоторых статистических применений, где результат известен как целое число.
  • Другие пользовательские условия терминации, вероятно, будут использоваться редко, но могут быть полезны в некоторых конкретных обстоятельствах.

PrevUpHomeNext

Статья Root Finding Without Derivatives раздела Math Toolkit 2.5.0 Root finding может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Root finding ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:50:58/0.0095229148864746/1