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

Owen's T function

Boost , Math Toolkit 2.5.0 , Chapter 6. Special 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/owens_t.hpp>
namespace boost{ namespace math{
template <class T>
calculated-result-type owens_t(T h, T a);
template <class T, class Policy>
calculated-result-type owens_t(T h, T a, const Policy&);
}} // namespaces
Description

Возвращает функцию Оуэнсаизчиа.

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

   

Функция<owens_t(h,a)>дает вероятность события(X >h и 0< Y< a * X), гдеXиYявляются независимыми стандартными нормальными случайными величинами.

Для h и a >0, T(h,a), дает объем некоррелированного бивариативного нормального распределения с нулевыми средними и единичными дисперсиями по площади междуy = axиy = 0и справа отx = h.

Это область, затененная на рисунке ниже (Owens 1956).

Иллюстрируется также 3D-графиком.

Эта функция используется при вычислении нормального распределения. Он также используется при вычислении бивариативных и многовариантных нормальных вероятностей распределения. Тип возврата этой функции вычисляется с помощьюправил расчета типа результата: Результатом является тип<double>, когда T является целым типом, а тип T иначе.

Оригинальная статья Оуэна (стр. 1077) содержит некоторые дополнительные угловые кейсы.

T(h, 0) = 0

T(0, a) = ½π arctan(a)

T(h, 1) = ½ G(h) [1 - G(h)]

T(h, ∞) = G( | h |)

где G(h) - одномерная норма с нулевым средним значением и интегралом единичной дисперсии от -∞ до h.

Accuracy

Поверх встроенных типов и диапазона тестируемых ошибок меньше 10 * std::numeric_limits::epsilon().

Table 6.83. Error rates for owens_t

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

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

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

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

Оуэнс Т (средние малые значения)

Макс = 4.37ε (Средний = 0.973ε)

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

Макс = 3,34ε (Средний = 0,942ε)

Макс = 3,34ε (Средний = 0,91ε)

Оуэнс Т (большие и разнообразные значения)

Макс = 3.78ε (Средний = 0.621ε)

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

Макс = 49ε (Средний = 2.16ε)

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


Testing

Тестовые данные генерировались алгоритмами Patefield и Tandy T1 и T4, а также предлагаемой эталонной рутиной T7.

  • T1 был отклонен, если результат был слишком мал по сравнению с<atan(a)>(т.е. аннулирование),
  • Т4 был отклонен, если не было конвергенции,
  • Оба были отклонены, если не согласились.

Поверх встроенных типов и диапазона тестируемых ошибок меньше 10 std::numeric_limits::epsilon().

Однако существовал целый домен (большойh, маленькийa), где невозможно было генерировать какие-либо надежные значения теста (все методы были отклонены по той или иной причине).

Существуют также два набора тестов здравомыслия: значения пятен вычисляются с использованиемWolfram Mathematicaи. Проект R для статистических вычислений.

Implementation

Эта функция была предложена и оценена. Дональд. B. Owen, Tables for computing bivariate normal probabilities, Ann. Math. Статист., 27, 1075-1090 (1956).

Алгоритмы Patefield, M. and Tandy, D. "Fast and accurate Calculation of Owen's T-Function", Journal of Statistical Software, 5 (5), 1 - 25 (2000) адаптированы для C++ с произвольным RealType.

Алгоритм Patefield-Tandy предоставляет шесть методов эвалуализации (T1-T6); лучший метод выбирается в соответствии со значениямиaиh. См. оригинал статьи и источник вowens_t.hppдля деталей.

Алгоритм Patefield-Tandy точен примерно до 20 десятичных знаков, поэтому для типов с большей точностью мы используем:

  • Модифицированная версия T1, которая сворачивает вычислениеатана(h)в серию T1 (чтобы избежать вычитания двух значений, сходных по величине), а затем ускоряет полученную чередующуюся серию с использованием метода 1 от H. Cohen, F. Rodriguez Villegas, D. Zagier, "Convergence acceleration of alternating series", Bonn, (1991). Результат действителен везде, но не всегда сходится или может стать слишком расходящимся в первых нескольких терминах, чтобы точно суммировать. Это используется дляah< 1.
  • Модифицированная версия T2, которая ускоряется так же, как и T1. Это используется дляh >1.
  • Версия T4 только тогда, когда T1 и T2 не смогли дать точный ответ.
  • Возвращение к алгоритму Patefiled Tandy, когда все вышеперечисленные методы терпят неудачу: это происходит совсем не для наших тестовых данных с точностью до 100 десятичных цифр. Однако существует сложная область, когдаочень близко к 1 и точность увеличивается, что может привести к тому, что это произойдет в очень исключительных обстоятельствах.

Используя вышеупомянутый алгоритм и тип с 100-десятичной цифрой, были получены результаты с точностью до 80 десятичных мест в трудной области, гдеблизок к 1, и более 95 десятичных мест в другом месте.


PrevUpHomeNext

Статья Owen's T function раздела Math Toolkit 2.5.0 Chapter 6. Special Functions может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 6. Special Functions ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:16:49/0.0072200298309326/1