![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Incomplete Beta FunctionsBoost , Math Toolkit 2.5.0 , Beta Functions
|
Microsoft Visual C++ версии 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечная компиляторная версия 0x5130 |
|
---|---|---|---|---|
Неполная функция бета: Небольшие ценности |
Max = 6,56ε (Mean = 1,88ε) |
Max = 0ε (Mean = 0ε) |
Max = 8,47ε (Mean = 1,68ε) |
Max = 13,8ε (Mean = 2,69ε) |
Неполная функция бета: средние значения |
Max = 56,2ε (Mean = 14,1ε) |
Max = 0ε (Mean = 0ε) |
Max = 75,3ε (Mean = 11,3ε) |
Max = 132ε (Mean = 19,8ε) |
Неполная функция бета: большие и разные значения |
Max = 1.87e+003ε (Mean = 93.8ε) |
Max = 0,981ε (Mean = 0,0638ε) |
Max = 3.45e+04ε (Mean = 1.32e+03ε) |
Max = 4.26e+04ε (Mean = 1.54e+03ε) |
Неполная бета-функция: Малые целые значения |
Max = 6,37ε (Mean = 1,03ε) |
Max = 0ε (Mean = 0ε) |
Max = 5,34ε (Mean = 1,11ε) |
Max = 107ε (Mean = 17.1ε) |
Table 6.20. Error rates for beta (incomplete)
Microsoft Visual C++ версии 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечная компиляторная версия 0x5130 |
|
---|---|---|---|---|
Неполная функция бета: Небольшие ценности |
Max = 11,1ε (Mean = 2,28ε) |
Max = 0ε (Mean = 0ε) |
Max = 12,5ε (Mean = 2,01ε) |
Max = 18,7ε (Mean = 3,19ε) |
Неполная функция бета: средние значения |
Max = 91,1ε (Mean = 12,7ε) |
Max = 0,568ε (Mean = 0,0342ε) |
Max = 67,1ε (Mean = 13,3ε) |
Max = 174ε (Mean = 25ε) |
Неполная функция бета: большие и разные значения |
Max = 635ε (Mean = 29,5ε) |
Max = 0,999ε (Mean = 0,0399ε) |
Max = 6.84e+04ε (Mean = 2.76e+03ε) |
Max = 6.86e+04ε (Mean = 2.79e+03ε) |
Неполная бета-функция: Малые целые значения |
Max = 26,8ε (Mean = 6,61ε) |
Max = 0,786ε (Mean = 0,0248ε) |
Max = 10,2ε (Mean = 3,49ε) |
Max = 51,8ε (Mean = 11ε) |
Table 6.21. Error rates for betac
Microsoft Visual C++ версии 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечная компиляторная версия 0x5130 |
|
---|---|---|---|---|
Неполная функция бета: Небольшие ценности |
Max = 12ε (Mean = 2,43ε) |
Max = 0,676ε (Mean = 0,0302ε) |
Max = 7,75ε (Mean = 1,91ε) |
Max = 12,6ε (Mean = 3,02ε) |
Неполная функция бета: средние значения |
Max = 91,3ε (Mean = 14,8ε) |
Max = 0,949ε (Mean = 0,0944ε) |
Max = 63,5ε (Mean = 13,4ε) |
Max = 97,6ε (Mean = 24,3ε) |
Неполная функция бета: большие и разные значения |
Max = 3.72e+003ε (Mean = 113ε) |
Max = 1,12ε (Mean = 0,0458ε) |
Max = 1.05e+05ε (Mean = 5.45e+03ε) |
Max = 1.04e+05ε (Mean = 5.46e+03ε) |
Неполная бета-функция: Малые целые значения |
Max = 26,7ε (Mean = 6,67ε) |
Max = 0,586ε (Mean = 0,0314ε) |
Max = 10,4ε (Mean = 3,54ε) |
Max = 103ε (Mean = 17,4ε) |
Существует два набора тестов: спот-тесты сравнивают значения, взятые из онлайн-оценщика функции Mathworld с этой реализацией: они обеспечивают базовую «проверку состояния» для реализации, с одним спот-тестом в каждом домене реализации (см. имплементационные примечания ниже).
Точное тестирование использует данные, генерируемые с очень высокой точностью (с NTL RR классом , установленным при 1000-битной точности), используя «учебник» непрерывное представительство фракции (см. первую непрерывную долю в обсуждении реализации ниже). Обратите внимание, что эта продолжающаяся часть не используется в реализации, и поэтому у нас есть тестовые данные, которые полностью независимы от кода.
Эта реализация тесно основана на "Algorithm 708; Значительное цифровое вычисления неполных коэффициентов бета-функций", DiDonato и Morris, ACM, 1992.
Все четыре из этих функций имеют общую реализацию: это передается как х, так и y, и может вернуть либо p, либо q, где они связаны:
таким образом, в любой момент мы можем заменить a для b, x для y и p для q, если это приводит к более благоприятному положению. Как правило, такие свопы выполняются так, что мы всегда вычисляем значение меньше 0,9: когда требуется, это может быть вычтено из 1 без неоправданной ошибки отмены.
Нижеследующее постоянное представительство фракций встречается во многих учебниках, но не используется в этой реализации - это как медленнее, так и менее точно, чем альтернативы - однако оно используется для получения тестовых данных:
Следующая неизменная доля связана с Didonato и Morris, и используется в этой реализации, когда a и b являются более чем 1:
Для малых b и x затем может использоваться представление серии:
Когда b < < а затем переход от 0 к 1 происходит очень близко к x = 1, и необходимо позаботиться о методе вычисления, в этом случае используется следующая серия представления:
Где Q(a,x) является неполной гамма-функцией. Обратите внимание, что этот метод опирается на сохранение таблицы всех pn ранее вычислилось, что ограничивает точность метода, в зависимости от размера используемой таблицы.
Когда a и b являются малыми целых чисел, то мы можем связать неполную бета-версию с биномиальным распределением и использовать следующую конечную сумму:
Наконец, мы можем обойти сложные области или перейти в область с более эффективным средством вычисления, используя формулы дублирования:
Домены a, b и x, для которых используются различные методы, идентичны тем, которые описаны в статье Didonato и Morris TOMS 708.
Статья Incomplete Beta Functions раздела Math Toolkit 2.5.0 Beta Functions может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Beta Functions ::
реклама |