![]()  | 
![]() ![]() ![]() ![]()  | 
![]()  | 
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 ::
реклама  |