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

Polygamma

Boost , Math Toolkit 2.5.0 , Gamma 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/polygamma.hpp>
namespace boost{ namespace math{
template <class T>
calculated-result-type polygamma(int n, T z);
template <class T, class Policy>
calculated-result-type polygamma(int n, T z, const Policy&);
}} // namespaces
Description

Возвращает функцию полигаммы x. Полигамма определяется как n-я производная функции дигаммы:

Следующие графики иллюстрируют поведение функции для нечетного и четного порядка:

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

Тип возврата этой функции вычисляется с использованием правил расчета типа результата : результат типа double, когда T является целым типом, а тип T иначе.

Accuracy

В следующей таблице показаны пиковые ошибки (в единицах эпсилона), обнаруженные на различных платформах с различными типами плавающих точек. Если не указано иное, любой тип плавающей точки, который является более узким, чем показанный, будет иметь фактически нулевую ошибку .

Table 6.6. Error rates for polygamma

Microsoft Visual C++ версия 12.0
Win32

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

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

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

Математические данные

Max = 6.34ε (среднее значение = 1,53ε);

Max = 0.824ε (Mean = 0,0574ε)

(Rmath 3.0.2: Max = 108ε (Mean = 15.2ε))
(GSL 1.16: Max = 62.9ε (Mean = 12.8ε))

Max = 7.38ε (Средний = 1,84ε);

Макс = 18.3ε (Средний = 4.16ε;)

Математические данные Большие аргументы

Макс = 150ε (Средний = 15.1ε);

Max = 0.998ε (Mean = 0.0592ε)

(Rmath 3.0.2: Max = 1.71e+56ε (Mean = 1.01e+55ε) И другие сбои.)
(GSL 1.16: Max = 244ε (Mean = 32.8ε) И другие сбои.

Max = 2.23ε (среднее значение = 0.323ε;)

Max = 2.35ε (Средний = 0.34ε);

Математические данные - отрицательные аргументы

Max = 497ε (Средний = 129ε);

Max = 0,516ε (Mean = 0,022ε)

(Rmath 3.0.2: Max = +INFε (Mean = +INFε) И другие сбои.)
(GSL 1.16: Max = 36.6ε (Mean = 3.04ε) И другие сбои.

Max = 269ε (Средний = 87.7ε);

Max = 269ε (Средний = 87.9ε);

Математические данные - большие отрицательные аргументы

Макс = 162ε (среднее значение = 101ε)

Max = 0ε (Mean = 0ε)

(Rmath 3.0.2: Max = +INFε (Mean = +INFε) И другие сбои.)
(GSL 1.16: Max = 1,79ε (Mean = 0,197ε) И другие сбои.

Макс = 155ε (Средний = 96,4ε)

Макс = 155ε (Средний = 96,4ε)

Математические данные - небольшие аргументы

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

Max = 0ε (Mean = 0ε)

(Rmath 3.0.2: Max = 106ε (Mean = 20ε))
(GSL 1.16: Max = 15.2ε (Mean = 5.03ε))

Max = 3.33ε (Средний = 0.75ε);

Max = 3.33ε (Средний = 0.75ε);

Математические данные - большие заказы и другие случаи ошибок

Max = 200ε (Средний = 57.2ε);

Max = 0ε (Mean = 0ε)

(Rmath 3.0.2: Max = +INFε (Mean = +INFε) И другие сбои.)
(GSL 1.16: Max = 151ε (Mean = 39.3ε) И другие сбои.

Макс = 54,5ε (среднее значение = 13,3ε)

Макс = 90.1ε (среднее значение = 30.6ε;)


Как показано выше, частота ошибок, как правило, очень приемлема для аргументов умеренного размера. Показатели ошибок должны оставаться низкими для точных входов, однако обратите внимание, что функция становится исключительно чувствительной к небольшим изменениям входа для больших n и отрицательных x, действительно для случаев, когда n! будет переполнена, функция изменяется непосредственно от -∞ до +∞ где-то между каждым отрицательным целым числом - эти случаи не обрабатываются правильно.

По этим причинам к результатам следует относиться с особой осторожностью, когда n большой и x отрицательный.

Testing

Тестирование проводится с точностью до 35 цифр, полученной Mathematica.

Implementation

Для x < 0 используется следующая формула отражения:

N'-производная cot(x) табулируется для малого n, а для большего n имеет общую форму:

Коэффициенты косинусных терминов могут быть рассчитаны итеративно, начиная с C1,0 = -1 и затем с использованием

для получения коэффициентов n+1.

Обратите внимание, что любой другой коэффициент равен нулю, и, следовательно, у нас есть четные или нечетные многочлены в зависимости от того, является ли n четным или нечетным.

После того, как x является положительным, у нас есть два метода, для небольшого x мы используем расширение серии:

Обратите внимание, что оценка дзета-функций по целым значениям по существу является поиском таблицы, поскольку дзета оптимизирована для этих случаев.

Для больших x мы используем асимптотическое расширение:

Для x между двумя крайностями мы используем отношение:

чтобы сделать x достаточно большим для использования асимптотического расширения.

Есть также два особых случая:


PrevUpHomeNext

Статья Polygamma раздела Math Toolkit 2.5.0 Gamma Functions может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Gamma Functions ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 04:15:52/0.004802942276001/0