Spec-Zone.ru › D

std.mathspecial

Математические специальные функции

Технический термин «Специальные функции» включает несколько семейств трансцендентных функций, которые имеют важные применения в определённых областях математики и физики.

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

Статус
В этот модуль будет добавлено ещё много функций. Правила именования для функций распределения (gammaIncomplete и т. д.) ещё не окончательные и, вероятно, изменятся.
Лицензия:
Лицензия Boost 1.0.
Авторы:
Стивен Л. Мошиер (исходный код на C). Преобразование в D Дона Клугстоном
Источник
std/mathspecial.d
pure nothrow @nogc @safe real gamma(real x);

Функция гамма, Γ(x)

Γ(x) — это обобщение факториала на вещественные и комплексные числа. Как и x!, Γ(x+1) = x * Γ(x).

Математически, если z.re > 0, то Γ(z) = ∫0∞ tz-1e-t dt

Значения
x Γ(x)
НЕОПРЕД. НЕОПРЕД.
±0.0 ±∞
целое > 0 (x-1)!
целое < 0 НЕОПРЕД.
+∞ +∞
-∞ НЕОПРЕД.

pure nothrow @nogc @safe real logGamma(real x);

Натуральный логарифм функции гамма, Γ(x)

Возвращает логарифм по основанию е (2.718...) абсолютного значения функции гамма от аргумента.

Для вещественных чисел logGamma эквивалентно log(fabs(gamma(x))).

Значения
x logGamma(x)
НЕОПРЕД. НЕОПРЕД.
целое ≤ 0 +∞
±∞ +∞

pure nothrow @nogc @safe real sgnGamma(real x);

Знак Γ(x).

Возвращает -1, если Γ(x) < 0, +1, если Γ(x) > 0, НЕОПРЕД., если знак неопределён.

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

pure nothrow @nogc @safe real beta(real x, real y);

Функция бета

Функция бета определяется как

beta(x, y) = (Γ(x) * Γ(y)) / Γ(x + y)

pure nothrow @nogc @safe real digamma(real x);

Функция дигамма

Функция дигамма — это логарифмическая производная функции гамма.

digamma(x) = d/dx logGamma(x)

См. также:
logmdigamma, logmdigammaInverse.
pure nothrow @nogc @safe real logmdigamma(real x);

Функция логарифм минус дигамма

logmdigamma(x) = log(x) - digamma(x)

См. также:
digamma, logmdigammaInverse.
pure nothrow @nogc @safe real logmdigammaInverse(real x);

Обратная функция логарифм минус дигамма

Для заданного y функция находит x такое, что log(x) - digamma(x) = y.

См. также:
logmdigamma, digamma.
pure nothrow @nogc @safe real betaIncomplete(real a, real b, real x);

Неполный бета-интеграл

Возвращает неполный бета-интеграл от аргументов, вычисленный от нуля до x. Регуляризованная неполная бета-функция определяется как

betaIncomplete(a, b, x) = Γ(a + b) / ( Γ(a) Γ(b) ) * ∫0x ta-1(1-t)b-1 dt

и совпадает с функцией кумулятивного распределения.

Область определения — 0 ≤ x ≤ 1. В этой реализации a и b ограничены положительными значениями. Интеграл от x до 1 может быть получен с помощью соотношения симметрии

betaIncompleteCompl(a, b, x ) = betaIncomplete( b, a, 1-x )

Интеграл вычисляется с помощью разложения в непрерывную дробь или, когда b * x мало, с помощью степенного ряда.

pure nothrow @nogc @safe real betaIncompleteInverse(real a, real b, real y);

Обратная функция неполного бета-интеграла

Для заданного y функция находит x такое, что

betaIncomplete(a, b, x) == y

Используются итерации Ньютона или деление отрезка пополам.

pure nothrow @nogc @safe real gammaIncomplete(real a, real x);

pure nothrow @nogc @safe real gammaIncompleteCompl(real a, real x);

Неполный гамма-интеграл и его дополнение

Эти функции определяются как

gammaIncomplete = ( ∫0x e-t ta-1 dt )/ Γ(a)

gammaIncompleteCompl(a,x) = 1 - gammaIncomplete(a,x) = (∫x∞ e-t ta-1 dt )/ Γ(a)

В этой реализации оба аргумента должны быть положительными. Интеграл вычисляется с помощью степенного ряда или разложения в непрерывную дробь, в зависимости от относительных значений a и x.

pure nothrow @nogc @safe real gammaIncompleteComplInverse(real a, real p);

Обратная функция дополненного неполного гамма-интеграла

Для заданных a и p функция находит x такое, что

gammaIncompleteCompl( a, x ) = p.

pure nothrow @nogc @safe real erf(real x);

Функция ошибок

Интеграл —

erf(x) = 2/ √(π) ∫0x exp( - t2) dt

Модуль x ограничен примерно 106.56 для 80-разрядной арифметики IEEE; вне этого диапазона возвращается 1 или -1.

pure nothrow @nogc @safe real erfc(real x);

Дополнительная функция ошибок

erfc(x) = 1 - erf(x) = 2/ √(π) ∫x∞ exp( - t2) dt

Эта функция имеет высокую относительную точность для значений x, удалённых от нуля. (Для значений, близких к нулю, используйте erf(x)).

pure nothrow @nogc @safe real normalDistribution(real x);

Функция стандартного нормального распределения.

Нормальное (или гауссово, или колоколообразное) распределение определяется как:

normalDist(x) = 1/√(2π) ∫-∞x exp( - t2/2) dt = 0.5 + 0.5 * erf(x/sqrt(2)) = 0.5 * erfc(- x/sqrt(2))

Для поддержания точности при значениях x, близких к 1.0, используйте normalDistribution(x) = 1.0 - normalDistribution(-x).

Ссылки
http://www.netlib.org/cephes/ldoubdoc.html, G. Марсалья, "Оценивание нормального распределения", Журнал статистического программного обеспечения 11, (июль 2004).
pure nothrow @nogc @safe real normalDistributionInverse(real p);

Обратная функция стандартного нормального распределения

Возвращает аргумент x, для которого площадь под кривой плотности вероятности нормального распределения (интегрированная от минус бесконечности до x) равна p.

Примечание
Эта функция реализована только с 80-разрядной точностью.

© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_mathspecial.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API