![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
BetaBoost , Math Toolkit 2.5.0 , Beta Functions
|
Microsoft Visual C++ версия 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 0x5130 |
|
---|---|---|---|---|
Бета-функция: малые значения |
Макс = 1,75ε (Средний = 0,828ε) |
Макс = 2.65ε (Средний = 1.22ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 2.86ε (Средний = 1.31ε) |
Бета-функция: средние значения |
Макс = 99.1ε (Средний = 22.4ε) |
Макс = 60,4ε (Средний = 19,4ε) |
Макс = 0.978ε (Mean = 0,0578ε) |
Макс = 107ε (Средний = 24,5ε) |
Бета-функция: расходящиеся значения |
Макс = 10,7ε (Средний = 2,22ε) |
Max = 10.3ε (Mean = 2.41ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 19,7ε (Средний = 2,75ε) |
Обратите внимание, что самые худшие ошибки происходят, когда а или б велики, и что, когда это так, результат очень близок к нулю, поэтому абсолютные ошибки будут очень малы.
Используется смесь точечных точечных тестов и случайно сгенерированных тестовых данных: тестовые данные были вычислены с использованиемNTL::RRс 1000-битной точностью.
Традиционные методы оценки бета-функции включают в себя либо оценку гамма-функций напрямую, либо прием логарифмов, а затем экспоненциацию результата. Тем не менее, первый склонен к переполнению даже для очень скромных аргументов, в то время как второй склонен к ошибкам отмены. В качестве альтернативы, если рассматривать гамма-функцию как белую коробку, содержащую приближение Ланчоса, то можно объединить термины мощности:
Это почти идеальное решение, однако почти вся ошибка возникает при оценке значений мощности, когдаaилиbвелики. Если мы предположим, чтоa >b, то больший из двух степеней может быть уменьшен в коэффициентеb, что сразу сокращает максимальную погрешность пополам:
Возможно, это не окончательное решение, но оно очень конкурентоспособно по сравнению с другими методами реализации.
Общий вариант осуществления, в котором нет приближенияLanczos, реализован очень похожим образом на общий вариант гамма-функции. Опять же, чтобы избежать численного переполнения, условия мощности, которые префиксируют серию и продолжающиеся части фракции, собираются вместе в:
где la, lb и lc - пределы интеграции, используемые для a, b и a+b.
Есть несколько особых случаев, которые стоит упомянуть:
Когдаaилиbменьше единицы, мы можем использовать отношения повторения:
Переехать в более благоприятный регион, где они оба больше 1.
Кроме того:
Статья Beta раздела Math Toolkit 2.5.0 Beta Functions может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Beta Functions ::
реклама |