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

Beta

Boost , Math Toolkit 2.5.0 , Beta Functions

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/special_functions/beta.hpp>
namespace boost{ namespace math{
template <class T1, class T2>
calculated-result-type beta(T1 a, T2 b);
template <class T1, class T2, class Policy>
calculated-result-type beta(T1 a, T2 b, const Policy&);
}} // namespaces
Description

Бета-функция определяется:

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

Эффективно существует две версии этой функции: полностью общая версия, которая является медленной, но достаточно точной, и гораздо более эффективное приближение, которое используется там, где число цифр в значении T соответствует определенному приближениюЛанчоса. На практике любой встроенный тип плавающей точки, с которым вы столкнетесь, имеет подходящее значение.Приближение Ланчосаопределено для него. Также возможно, учитывая достаточное машинное время, генерировать дальнейшее приближениеLanczosс использованием программы libs/math/tools/lanczos_generator.cpp.

Тип возврата этих функций вычисляется с использованием правил расчета типа результата, когда T1 и T2 являются различными типами.

Accuracy

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

Table 6.17. Error rates for beta

Microsoft Visual C++ версия 12.0
Win32
двойная

GNU C++ версия 5.1.0
Linux
длинный двойной

GNU C++ версия 5.1.0
Linux
Double

Солнечный компилятор версии 0x5130
Солнечный солярис

Бета-функция: малые значения

Макс = 1,75ε (Средний = 0,828ε)

Макс = 2.65ε (Средний = 1.22ε)

:Макс = 11.9ε (Средний = 7.03ε)]

Макс = 0ε (Mean = 0ε)

GSL 1.16:Макс = 3.94ε (Mean = 1.44ε)]
Rmath 3.0.2:Макс = 1.14ε (Mean = 0.601ε)]
Цефес:Макс = 1,97ε (Mean = 0.934ε)]

Макс = 2.86ε (Средний = 1.31ε)

Бета-функция: средние значения

Макс = 99.1ε (Средний = 22.4ε)

Макс = 60,4ε (Средний = 19,4ε)

:Макс = 1,07e+03ε (Средний = 264ε)

Макс = 0.978ε (Mean = 0,0578ε)

GSL 1.16:Макс = 1.18e+03ε (Mean = 238ε)]
Rmath 3.0.2:Макс = 1.09e+03ε (Mean = 265ε)]
Цефес:Макс = 1.5e+03ε (Mean = 329ε)

Макс = 107ε (Средний = 24,5ε)

Бета-функция: расходящиеся значения

Макс = 10,7ε (Средний = 2,22ε)

Max = 10.3ε (Mean = 2.41ε)

:Max = 128ε (Mean = 23.8ε)]

Макс = 0ε (Mean = 0ε)

GSL 1.16:Макс = 12.1ε (Mean = 1.99ε)]
Rmath 3.0.2:Макс = 176ε (Mean = 28ε)]
Цефес:Макс = 175ε (Mean = 22ε)

Макс = 19,7ε (Средний = 2,75ε)


Обратите внимание, что самые худшие ошибки происходят, когда а или б велики, и что, когда это так, результат очень близок к нулю, поэтому абсолютные ошибки будут очень малы.

Testing

Используется смесь точечных точечных тестов и случайно сгенерированных тестовых данных: тестовые данные были вычислены с использованиемNTL::RRс 1000-битной точностью.

Implementation

Традиционные методы оценки бета-функции включают в себя либо оценку гамма-функций напрямую, либо прием логарифмов, а затем экспоненциацию результата. Тем не менее, первый склонен к переполнению даже для очень скромных аргументов, в то время как второй склонен к ошибкам отмены. В качестве альтернативы, если рассматривать гамма-функцию как белую коробку, содержащую приближение Ланчоса, то можно объединить термины мощности:

Это почти идеальное решение, однако почти вся ошибка возникает при оценке значений мощности, когдаaилиbвелики. Если мы предположим, чтоa >b, то больший из двух степеней может быть уменьшен в коэффициентеb, что сразу сокращает максимальную погрешность пополам:

Возможно, это не окончательное решение, но оно очень конкурентоспособно по сравнению с другими методами реализации.

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

где la, lb и lc - пределы интеграции, используемые для a, b и a+b.

Есть несколько особых случаев, которые стоит упомянуть:

Когдаaилиbменьше единицы, мы можем использовать отношения повторения:

Переехать в более благоприятный регион, где они оба больше 1.

Кроме того:


PrevUpHomeNext

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




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



:: Главная :: Beta Functions ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 23:23:42/0.0071811676025391/0