![]()  | 
![]() ![]() ![]() ![]()  | 
![]()  | 
Incomplete Gamma Function InversesBoost , Math Toolkit 2.5.0 , Gamma Functions
  
  
   | 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]()  | 
Tip | 
|---|---|
| 
 Когда люди обычно говорят об обратной неполной гамма-функции, они говорят об инвертировании по параметрух. Они реализуются здесь как gamma_p_inv и gamma_q_inv и, безусловно, являются наиболее эффективными из обратных, представленных здесь. Обратный напараметр находит применение в некоторых статистических приложениях, но должен быть вычислен довольно грубой силой численных методов и, следовательно, в несколько раз медленнее. Они реализованы здесь как gamma_p_inva и gamma_q_inva.  | 
template <class T1, class T2> calculated-result-type gamma_q_inv(T1 a, T2 q); template <class T1, class T2, class Policy> calculated-result-type gamma_q_inv(T1 a, T2 q, const Policy&);
Возвращает значение x таким образом, что:<q
       =gamma_q(a,
       x);>
Требуется:a >0и1 >= p,q >= 0.
template <class T1, class T2> calculated-result-type gamma_p_inv(T1 a, T2 p); template <class T1, class T2, class Policy> calculated-result-type gamma_p_inv(T1 a, T2 p, const Policy&);
Возвращает значение x таким образом, что:<p
       =gamma_p(a,
       x);>
Требуется:a >0и1 >= p,q >= 0.
template <class T1, class T2> calculated-result-type gamma_q_inva(T1 x, T2 q); template <class T1, class T2, class Policy> calculated-result-type gamma_q_inva(T1 x, T2 q, const Policy&);
Возвращает такое значение, что:<q
       =gamma_q(a,
       x);>
Требуется:x >0и1 >= p,q >= 0.
template <class T1, class T2> calculated-result-type gamma_p_inva(T1 x, T2 p); template <class T1, class T2, class Policy> calculated-result-type gamma_p_inva(T1 x, T2 p, const Policy&);
Возвращает такое значение, что:<p
       =gamma_p(a,
       x);>
Требуется:x >0и1 >= p,q >= 0.
Точность этих функций не сильно зависит от платформы или типа Т. Учитывая, что эти функции вычисляются итеративными методами, они намеренно «настраиваются», чтобы не быть слишком точными: в любом случае невозможно, чтобы эти функции были более точными, чем обычные передние неполные гамма-функции. На практике точность этих функций очень похожа на точность функцийgamma_pиgamma_q:
Table 6.13. Error rates for gamma_p_inv
| 
                 Microsoft Visual C++ версия 12.0  | 
                 GNU C++ версия 5.1.0  | 
                 GNU C++ версия 5.1.0  | 
                 Солнечный компилятор версии 0x5130  | 
|
|---|---|---|---|---|
неполные гамма-обратные (a, z) средние значения  | 
Макс = 1,01ε (Средний = 0,307ε)  | 
Макс = 0.993ε (Средний = 0,15ε)  | 
Макс = 1,62ε (Средний = 0,365ε)  | 
Макс = 1,86ε (Средний = 0,405ε)  | 
неполные гамма-обратные (a, z) большие значения  | 
Макс = 0,924ε (Средний = 0,118ε)  | 
Max = 0ε (Mean = 0ε)  | 
Макс = 0,509ε (Средний = 0,0447ε)  | 
Макс = 0,509ε (Средний = 0,0447ε)  | 
неполные гамма-обратные (a, z) малые значения  | 
Макс = 1.1e+003ε (Средний = 108ε)  | 
Max = 441ε (Mean = 53.9ε)  | 
Макс = 9.17e+03ε (Средний = 1.32e+03ε)  | 
Макс = 1,09e+04ε (Средний = 1,46e+03ε)  | 
Table 6.14. Error rates for gamma_q_inv
| 
                 Microsoft Visual C++ версия 12.0  | 
                 GNU C++ версия 5.1.0  | 
                 GNU C++ версия 5.1.0  | 
                 Солнечный компилятор версии 0x5130  | 
|
|---|---|---|---|---|
неполные гамма-обратные (a, z) средние значения  | 
Макс = 3.46ε (Средний = 0.475ε)  | 
Макс = 0.912ε (Средний = 0,154ε)  | 
Макс = 6.2ε (Средний = 0.659ε)  | 
Макс = 6.2ε (Средний = 0.661ε)  | 
неполные гамма-обратные (a, z) большие значения  | 
Макс = 0,814ε (Средний = 0,0856ε)  | 
Макс = 0.894ε (Средний = 0,0915ε)  | 
Макс = 0ε (Средний = 0ε)  | 
Макс = 0ε (Средний = 0ε)  | 
неполные гамма-обратные (a, z) малые значения  | 
Макс = 451ε (Средний = 65ε)  | 
Max = 292ε (Mean = 36,4ε)  | 
Макс = 8.28e+03ε (Средний = 963ε)  | 
Макс = 8,98e+03ε (Средний = 877ε)  | 
Table 6.15. Error rates for gamma_p_inva
| 
                 Microsoft Visual C++ версия 12.0  | 
                 GNU C++ версия 5.1.0  | 
                 GNU C++ версия 5.1.0  | 
                 Солнечный компилятор версии 0x5130  | 
|
|---|---|---|---|---|
Неполные гамма-обращения.  | 
Макс = 3.52ε (Средний = 0.997ε)  | 
Макс = 0ε (Средний = 0ε)  | 
Макс = 6.44ε (Средний = 1.1ε)  | 
Макс = 4.08ε (Средний = 1.12ε)  | 
Table 6.16. Error rates for gamma_q_inva
| 
                 Microsoft Visual C++ версия 12.0  | 
                 GNU C++ версия 5.1.0  | 
                 GNU C++ версия 5.1.0  | 
                 Солнечный компилятор версии 0x5130  | 
|
|---|---|---|---|---|
Неполные гамма-обращения.  | 
Макс = 5.64ε (Средний = 1,09ε)  | 
Макс = 0ε (Средний = 0ε)  | 
Макс = 6.91ε (Средний = 1,17ε)  | 
Макс = 7,86ε (Средний = 1,25ε)  | 
Существует два набора тестов:
Функции gamma_p_inv иgamma_q_invимеют общую реализацию.
Сначала вычисляется первоначальное приближение с использованием методики, описанной в:
Наконец, последние несколько битов очищаются с помощью итерации Галлея, предел итерации устанавливается до 2/3 от числа битов в T, что в эксперименте достаточно для обеспечения того, чтобы обратные стороны были по меньшей мере такими же точными, как и обычные неполные гамма-функции. При тестировании требуется не более 3 итераций для получения результата, столь же точного, как передняя неполная гамма-функция, и во многих случаях требуется только одна итерация.
Функции gamma_p_inva и gamma_q_inva также имеют общую реализацию, но обрабатываются отдельно от gamma_p_inv и gamma_q_inv.
Первоначальное приближение дляaвычисляется очень грубо, так чтоgamma_p(a, x) ~ 0,5, это значение затем используется в качестве отправной точки для общего алгоритма поиска корней без производных. Как следствие, эти две функции намного дороже, чем функции gamma_p_inv или gamma_q_inv. Тем не менее, корень обычно встречается менее чем в 10 итерациях.
Статья Incomplete Gamma Function Inverses раздела Math Toolkit 2.5.0 Gamma Functions может быть полезна для разработчиков на c++ и boost.
:: Главная :: Gamma Functions ::
реклама  |