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

Bracket and Solve Root

Boost , Math Toolkit 2.5.0 , Root Finding Without Derivatives

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
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&);

<bracket_and_solve_root>- функция удобства, которая вызываеталгоритм TOMS 748Внутренне найти кореньf(x). Как правило, гораздо проще использовать эту функцию, чем алгоритмTOMS 748, поскольку он выполняет тяжелую работу по скобке корня для вас. Это рутинные кронштейны довольно надежны и обычно будут более надежными, чем домашние рутины, если функция не может быть проанализирована, чтобы получить жесткие скобки.

Обратите внимание, что эта процедура может использоваться только тогда, когда:

  • f(x)является монотонным в половине реальной оси, содержащейдогадку.
  • Значение исходной догадки должно иметь тот же знак, что и корень: функцияпри поиске корня никогда не пересекает происхождение.
  • Расположение корня должно быть известно, по крайней мере, приблизительно, если расположение корня отличается на много порядков отдогадываться, тогда потребуется много итераций, чтобы скрепить корень, несмотря на специальные эвристики, используемые для защиты от этой самой ситуации. Типичным примером является установка начальной догадки до 0,1, когда корень находится на уровне 1e-300.

Параметры<bracket_and_solve_root>:

f

Унарный функтор — функция, корень которой должен быть решен.f(x)должно равномерно увеличиваться или уменьшаться нах.

guess

Первоначальное приближение к корню.

factor

Коэффициент масштабирования, который используется для скобки корня: значениеугадываниеумножается (или делится, когда это уместно) нафактордо тех пор, пока не будут найдены два значения, которые скобка корень. Значение, такое как 2, является типичным выбором дляфактора. Кроме того,факторбудет умножаться на 2 каждые 32 итерации: это для защиты от очень плохой первоначальной догадки, обычно они происходят, когда известно, что результат очень большой или маленький, но не точный порядок величины.

rising

истинно, еслиf(x)поднимается наxиложно, еслиf(x)падает наx. Это значение используется вместе с результатомf, чтобы определить, находится липредположениевыше или ниже корня.

tol

Бинарный функтор, определяющий условие терминации для поиска корня.tolпропускают текущие скобки на каждом шаге, когда они возвращаются истинными, тогда текущие скобки возвращаются в результате пары. См. такжепредопределенные функторы терминации.

max_iter

Максимальное количество вызовов функций для выполнения в поиске корня. На выходе устанавливается фактическое количество выполненных вызовов.

Окончательный аргументPolicyнеобязателен и может быть использован для контроля поведения функции: как она обрабатывает ошибки, какой уровень точности использовать и т. д. См. документацию по политикедля более подробной информации.

Возвращает: пару значенийr, которые скрепляют корень так, что:

f(r.first) * f(r.second) <= 0

и либо

tol(r.first, r.second) == true

и либо

max_iter >= m

гдем- начальное значениеmax_iter, переданное функции.

Другими словами, абонент должен проверить, произошло ли прекращение в результате превышенияmax_iterвызовов функции (легко осуществляется путем проверки значенияmax_iter, когда функция возвращается), а не потому, что условие прекращенияtolбыло удовлетворено.


PrevUpHomeNext

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




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



:: Главная :: Root Finding Without Derivatives ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:31:09/0.0092949867248535/1