17.6 Специальные функции
- : [a, ierr] = airy (k, z, opt) ¶
-
Вычисление функций Эйри первого и второго рода, а также их производных.
K Function Scale factor (if "opt" is supplied) --- -------- --------------------------------------- 0 Ai (Z) exp ((2/3) * Z * sqrt (Z)) 1 dAi(Z)/dZ exp ((2/3) * Z * sqrt (Z)) 2 Bi (Z) exp (-abs (real ((2/3) * Z * sqrt (Z)))) 3 dBi(Z)/dZ exp (-abs (real ((2/3) * Z * sqrt (Z))))
Вызов функции
airy (z)эквивалентенairy (0, z).Результат имеет тот же размер, что и z.
При необходимости, ierr содержит следующую информацию о состоянии и имеет тот же размер, что и результат.
- Нормальное завершение.
- Ошибка ввода, возвращается
NaN. - Переполнение, возвращается
Inf. - Потеря значимости из-за уменьшения аргумента приводит к менее чем половине машинной точности.
- Потеря значимости из-за уменьшения аргумента, результат может быть неточным.
- Ошибка — вычисление не выполнено, условие завершения алгоритма не выполнено, возвращается
NaN.
- : J = besselj (alpha, x) ¶
- : J = besselj (alpha, x, opt) ¶
- : [J, ierr] = besselj (…) ¶
-
Вычисление функций Бесселя первого рода.
Порядок функции Бесселя alpha должен быть вещественным. Точки для вычисления x могут быть комплексными.
Если дополнительный аргумент opt равен 1 или true, результат J умножается на
exp (-abs (imag (x))).Если alpha является скаляром, результат имеет тот же размер, что и x. Если x является скаляром, результат имеет тот же размер, что и alpha. Если alpha является строчным вектором, а x — столбцовым вектором, результат представляет собой матрицу с
length (x)строками иlength (alpha)столбцами. В противном случае alpha и x должны соответствовать, и результат будет того же размера.При необходимости, ierr содержит следующую информацию о состоянии и имеет тот же размер, что и результат.
- Нормальное завершение.
- Ошибка ввода, возвращается
NaN. - Переполнение, возвращается
Inf. - Потеря значимости из-за уменьшения аргумента приводит к менее чем половине машинной точности.
- Потеря значимости из-за уменьшения аргумента, результат может быть неточным.
- Ошибка — вычисление не выполнено, условие завершения алгоритма не выполнено, возвращается
NaN.
- : Y = bessely (alpha, x) ¶
- : Y = bessely (alpha, x, opt) ¶
- : [Y, ierr] = bessely (…) ¶
-
Вычисление функций Бесселя второго рода.
Порядок функции Бесселя alpha должен быть вещественным. Точки для вычисления x могут быть комплексными.
Если дополнительный аргумент opt равен 1 или true, результат Y умножается на
exp (-abs (imag (x))).Если alpha является скаляром, результат имеет тот же размер, что и x. Если x является скаляром, результат имеет тот же размер, что и alpha. Если alpha является строчным вектором, а x — столбцовым вектором, результат представляет собой матрицу с
length (x)строками иlength (alpha)столбцами. В противном случае alpha и x должны соответствовать, и результат будет того же размера.При необходимости, ierr содержит следующую информацию о состоянии и имеет тот же размер, что и результат.
- Нормальное завершение.
- Ошибка ввода, возвращается
NaN. - Переполнение, возвращается
Inf. - Потеря значимости из-за уменьшения аргумента приводит к менее чем половине машинной точности.
- Полная потеря значимости из-за уменьшения аргумента, возвращается
NaN. - Ошибка — вычисление не выполнено, условие завершения алгоритма не выполнено, возвращается
NaN.
- : I = besseli (alpha, x) ¶
- : I = besseli (alpha, x, opt) ¶
- : [I, ierr] = besseli (…) ¶
-
Вычисление модифицированных функций Бесселя первого рода.
Порядок функции Бесселя alpha должен быть вещественным. Точки для вычисления x могут быть комплексными.
Если дополнительный аргумент opt равен 1 или true, результат I умножается на
exp (-abs (real (x))).Если alpha является скаляром, результат имеет тот же размер, что и x. Если x является скаляром, результат имеет тот же размер, что и alpha. Если alpha является строчным вектором, а x — столбцовым вектором, результат представляет собой матрицу с
length (x)строками иlength (alpha)столбцами. В противном случае alpha и x должны соответствовать, и результат будет того же размера.При необходимости, ierr содержит следующую информацию о состоянии и имеет тот же размер, что и результат.
- Нормальное завершение.
- Ошибка ввода, возвращается
NaN. - Переполнение, возвращается
Inf. - Потеря значимости из-за уменьшения аргумента приводит к менее чем половине машинной точности.
- Полная потеря значимости из-за уменьшения аргумента, возвращается
NaN. - Ошибка — вычисление не выполнено, условие завершения алгоритма не выполнено, возвращается
NaN.
- : K = besselk (alpha, x) ¶
- : K = besselk (alpha, x, opt) ¶
- : [K, ierr] = besselk (…) ¶
-
Вычисление модифицированных функций Бесселя второго рода.
Порядок функции Бесселя alpha должен быть вещественным. Точки для вычисления x могут быть комплексными.
Если дополнительный аргумент opt равен 1 или true, результат K умножается на
exp (x).Если alpha является скаляром, результат имеет тот же размер, что и x. Если x является скаляром, результат имеет тот же размер, что и alpha. Если alpha является строчным вектором, а x — столбцовым вектором, результат представляет собой матрицу с
length (x)строками иlength (alpha)столбцами. В противном случае alpha и x должны соответствовать, и результат будет того же размера.При необходимости, ierr содержит следующую информацию о состоянии и имеет тот же размер, что и результат.
- Нормальное завершение.
- Ошибка ввода, возвращается
NaN. - Переполнение, возвращается
Inf. - Потеря значимости из-за уменьшения аргумента приводит к менее чем половине машинной точности.
- Полная потеря значимости из-за уменьшения аргумента, возвращается
NaN. - Ошибка — вычисление не выполнено, условие завершения алгоритма не выполнено, возвращается
NaN.
- : H = besselh (alpha, x) ¶
- : H = besselh (alpha, k, x) ¶
- : H = besselh (alpha, k, x, opt) ¶
- : [H, ierr] = besselh (…) ¶
-
Вычислить функции Бесселя третьего рода (функции Ханкеля).
Порядок функции Бесселя alpha должен быть вещественным. Тип функции Ханкеля задается k и может быть первого (k = 1) или второго (k = 2) рода. По умолчанию используются функции Ханкеля первого рода. Точки для вычисления x могут быть комплексными.
Если необязательный аргумент opt равен 1 или true, результат умножается на
exp (-I*x)для k = 1 илиexp (I*x)для k = 2.Если alpha является скалярным, результат имеет тот же размер, что и x. Если x является скалярным, результат имеет тот же размер, что и alpha. Если alpha является строкой-вектором, а x — столбцом-вектором, результат является матрицей с
length (x)строками иlength (alpha)столбцами. В противном случае alpha и x должны соответствовать, и результат будет иметь тот же размер.Если запрошено, ierr содержит следующую информацию об ошибках и имеет тот же размер, что и результат.
- Нормальное завершение.
- Ошибка входных данных, возвращает
NaN. - Переполнение, возвращает
Inf. - Потеря значимости при уменьшении аргумента приводит к меньше чем половине точности машины.
- Полная потеря значимости при уменьшении аргумента, возвращает
NaN. - Ошибка — вычисление не выполнено, условие прекращения алгоритма не выполнено, возвращает
NaN.
- : beta (a, b) ¶
-
Вычислить функцию Бета для вещественных входных данных a и b.
Определение функции Бета:
beta (a, b) = gamma (a) * gamma (b) / gamma (a + b).
Функция Бета может быть довольно большой, и часто более полезно работать с логарифмом результата, а не с самой функцией. См.
betalnдля вычисления логарифма функции Бета эффективным способом.См. также: betaln, betainc, betaincinv.
- : betainc (x, a, b) ¶
- : betainc (x, a, b, tail) ¶
-
Вычислить неполную бета-функцию.
Она определяется как
x / 1 | I_x (a, b) = ---------- | t^(a-1) (1-t)^(b-1) dt beta (a,b) | / 0с вещественным x в диапазоне [0,1]. Входные данные a и b должны быть вещественными и строго положительными (> 0). Если один из входных данных не скалярный, то другие входные данные должны быть скалярными или иметь совместимые размеры.
По умолчанию tail равно
"lower"и вычисляется неполная бета-функция, интегрированная от 0 до x. Если tail равно"upper", то вычисляется дополнительная функция, интегрированная от x до 1. Два варианта связаны соотношениемbetainc (x, a, b,
"upper") = 1 - betainc (x, a, b,"lower").betaincиспользует более сложный алгоритм, чем вычитание, чтобы получить численно точные результаты, когда значение"lower"мало.Ссылка: A. Cuyt, V. Brevik Petersen, B. Verdonk, H. Waadeland, W.B. Jones, Справочник по непрерывным дробям для специальных функций, гл. 18.
См. также: beta, betaincinv, betaln.
- : betaincinv (y, a, b) ¶
- : betaincinv (y, a, b, "lower") ¶
- : betaincinv (y, a, b, "upper") ¶
-
Вычислить обратную функцию к нормализованной неполной бета-функции.
Нормализованная неполная бета-функция определяется как
x / 1 | I_x (a, b) = ---------- | t^(a-1) (1-t)^(b-1) dt beta (a,b) | / 0Если два входных данных являются скалярами, то
betaincinv (y, a, b)возвращается для каждого из остальных входных данных.Если два или более входных данных не являются скалярными, размеры должны совпадать, и
betaincinvприменяется поэлементно.Переменная y должна находиться в интервале [0,1], а a и b должны быть вещественными и строго положительными.
По умолчанию tail равно
"lower"и вычисляется обратная неполная бета-функция, интегрированная от 0 до x. Если tail равно"upper", то вычисляется обратная дополнительная функция, интегрированная от x до 1.Функция вычисляется стандартным методом Ньютона, решающим
y - betainc (x, a, b) = 0
- : betaln (a, b) ¶
-
Вычислить натуральный логарифм функции Бета для вещественных входных данных a и b.
betalnопределяется какbetaln (a, b) = log (beta (a, b))
и вычисляется таким образом, чтобы уменьшить вероятность подпотока.
Функция Бета может быть довольно большой, и часто более полезно работать с логарифмом результата, а не с самой функцией.
См. также: beta, betainc, betaincinv, gammaln.
- : bincoeff (n, k) ¶
-
Возвращает биномиальный коэффициент для n и k.
Биномиальный коэффициент определяется как
/ \ | n | n (n-1) (n-2) … (n-k+1) | | = ------------------------- | k | k! \ /
Например:
bincoeff (5, 2) ⇒ 10
В большинстве случаев функция
nchoosekбыстрее для небольших скалярных целочисленных аргументов. Она также предупреждает о потере точности для больших аргументов.См. также: nchoosek.
- : commutation_matrix (m, n) ¶
-
Возвращает матрицу перестановки K(m,n), которая является единственной матрицей m*n на m*n такой, что K(m,n) * vec(A) = vec(A') для всех матриц A размера m на n.
Если задан только один аргумент m, возвращается K(m,m).
См. Magnus и Neudecker (1988), Матричный дифференциальный исчисление с приложениями в статистике и эконометрике.
- : cosint (x) ¶
-
Вычислить функцию косинусного интеграла:
+oo / Ci (x) = - | (cos (t)) / t dt / xЭквивалентное определение:
x / | cos (t) - 1 Ci (x) = gamma + log (x) + | ------------- dt | t / 0Ссылка:
M. Abramowitz и I.A. Stegun, Справочник по математическим функциям, 1964.
- : duplication_matrix (n) ¶
-
Возвращает матрицу удвоения Dn, которая является единственной матрицей n^2 на n*(n+1)/2 такой, что Dn vech (A) = vec (A) для всех симметричных матриц A размера n на n.
См. Magnus и Neudecker (1988), Матричный дифференциальный исчисление с приложениями в статистике и эконометрике.
- : [sn, cn, dn, err] = ellipj (u, m) ¶
- : [sn, cn, dn, err] = ellipj (u, m, tol) ¶
-
Вычислить эллиптические функции Якоби sn, cn и dn от комплексного аргумента u и вещественного параметра m.
Если m — скаляр, результаты имеют тот же размер, что и u. Если u — скаляр, результаты имеют тот же размер, что и m. Если u — столбец, а m — строка, результаты — матрицы с
length (u)строками иlength (m)столбцами. В противном случае u и m должны иметь совместимые размеры, и результаты будут иметь тот же размер, что и входные данные.Значение u может быть комплексным. Значение m должно быть 0 ≤ m ≤ 1.
Необязательный вход tol в настоящее время игнорируется (MATLAB использует его для более быстрого, но менее точного приближения).
Если запрошено, err содержит следующую информацию о статусе и имеет тот же размер, что и результат.
- Нормальное возвращение.
- Ошибка — вычисление не выполнено, условие завершения алгоритма не выполнено, возвращается
NaN.
Ссылка: Милтон Абрамович и Ирен А. Стегун, Справочник по математическим функциям, глава 16 (разделы 16.4, 16.13 и 16.15), Dover, 1965.
См. также: ellipke.
- : k = ellipke (m) ¶
- : k = ellipke (m, tol) ¶
- : [k, e] = ellipke (…) ¶
-
Вычислить полные эллиптические интегралы первого K(m) и второго E(m) рода.
m должен быть скаляром или вещественным массивом с -Inf ≤ m ≤ 1.
Необязательный вход tol управляет пороговой точностью алгоритма и по умолчанию равен
eps (class (m)). Порог может быть увеличен для более быстрого, но менее точного приближения.При вызове с одним выходным параметром возвращаются только эллиптические интегралы первого рода.
Математическая заметка:
Эллиптические интегралы первого рода определяются как
1 / dt K (m) = | ------------------------------ / sqrt ((1 - t^2)*(1 - m*t^2)) 0Эллиптические интегралы второго рода определяются как
1 / sqrt (1 - m*t^2) E (m) = | ------------------ dt / sqrt (1 - t^2) 0Ссылка: Милтон Абрамович и Ирен А. Стегун, Справочник по математическим функциям, глава 17, Dover, 1965.
См. также: ellipj.
- : erf (z) ¶
-
Вычислить функцию ошибки.
Функция ошибки определяется как
z 2 / erf (z) = --------- * | e^(-t^2) dt sqrt (pi) / t=0
- : erfc (z) ¶
-
Вычислить дополнительную функцию ошибки.
Дополнительная функция ошибки определяется как
1 - erf (z).
- : erfcx (z) ¶
-
Вычислить масштабированную дополнительную функцию ошибки.
Масштабированная дополнительная функция ошибки определяется как
exp (z^2) * erfc (z)
- : erfi (z) ¶
-
Вычислить мнимую функцию ошибки.
Мнимая функция ошибки определяется как
-i * erf (i*z)
- : erfinv (x) ¶
-
Вычислить обратную функцию ошибки.
Обратная функция ошибки определяется таким образом, что
erf (y) == x
- : erfcinv (x) ¶
-
Вычислить обратную дополнительную функцию ошибки.
Обратная дополнительная функция ошибки определяется таким образом, что
erfc (y) == x
- : expint (x) ¶
-
Вычислить экспоненциальный интеграл.
Экспоненциальный интеграл определяется как:
+oo / | exp (-t) E_1 (x) = | -------- dt | t / xПримечание: для совместимости эта функция использует определение экспоненциального интеграла в MATLAB. Большинство других источников называют это конкретное значение E_1 (x), а экспоненциальный интеграл как
+oo / | exp (-t) Ei (x) = - | -------- dt | t / -xДва определения связаны для положительных вещественных значений x выражением
E_1 (-x) = -Ei (x) - i*pi.Ссылки:
М. Абрамович и И.А. Стегун, Справочник по математическим функциям, 1964.
Н. Блейстейн и Р.А. Хандельсман, Асимптотические разложения интегралов, 1986.
- : gamma (z) ¶
-
Вычислить гамма-функцию.
Гамма-функция определяется как
infinity / gamma (z) = | t^(z-1) exp (-t) dt. / t=0Примечание по программированию: гамма-функция может принимать очень большие значения даже для малых входных данных. Во многих случаях предпочтительнее использовать натуральный логарифм гамма-функции (
gammaln) в расчетах, чтобы минимизировать потерю точности. Конечный результат тогдаexp (result_using_gammaln).
- : gammainc (x, a) ¶
- : gammainc (x, a, tail) ¶
-
Вычислить нормированную неполную гамма-функцию.
Это определяется как
x 1 / gammainc (x, a) = --------- | exp (-t) t^(a-1) dt gamma (a) / t=0с предельным значением 1 при x стремящемся к бесконечности. Стандартное обозначение — P(a,x), например, Абрамович и Стегун (6.5.1).
Если a — скаляр, то
gammainc (x, a)возвращается для каждого элемента x и наоборот.Если ни x, ни a не являются скалярными, то размеры x и a должны совпадать, и
gammaincприменяется поэлементно. Элементы a должны быть неотрицательными.По умолчанию tail равно
"lower"и вычисляется неполная гамма-функция, интегрированная от 0 до x. Если tail равно"upper", вычисляется дополнительная функция, интегрированная от x до бесконечности.Если tail равно
"scaledlower", то нижняя неполная гамма-функция умножается на gamma(a+1)*exp(x)/(x^a). Если tail равно"scaledupper", то верхняя неполная гамма-функция умножается на ту же величину.Ссылки:
М. Абрамович и И.А. Стегун, Справочник по математическим функциям, Издательство Dover publications, Inc., 1972.
В. Гаутши, Вычислительная процедура для неполных гамма-функций, ACM Trans. Math Software, стр. 466–481, т. 5, вып. 4, 2012.
В. Х. Пресс, С. А. Теукольский, В. Т. Ветерлинг и Б. П. Фланнери, Числовые рецепты на Fortran 77, гл. 6.2, т. 1, 1992.
См. также: gamma, gammaincinv, gammaln.
- : gammaincinv (y, a) ¶
- : gammaincinv (y, a, tail) ¶
-
Вычислить обратную функцию нормированной неполной гамма-функции.
Нормированная неполная гамма-функция определяется как
x 1 / gammainc (x, a) = --------- | exp (-t) t^(a-1) dt gamma (a) / t=0и
gammaincinv (gammainc (x, a), a) = xдля каждого неотрицательного значения x. Если a является скаляром, тоgammaincinv (y, a)возвращается для каждого элемента y, и наоборот.Если ни y, ни a не являются скалярами, то размеры y и a должны совпадать, и
gammaincinvприменяется поэлементно. Переменная y должна находиться в интервале [0,1], а a должна быть вещественной и положительной.По умолчанию, tail —
"lower"и вычисляется обратная функция неполной гамма-функции, интегрированной от 0 до x. Если tail —"upper", то вычисляется обратная дополнительная функция, интегрированная от x до бесконечности.Функция вычисляется методом Ньютона, решающим
y - gammainc (x, a) = 0
Ссылка: A. Gil, J. Segura, и N. M. Temme, Эффективные и точные алгоритмы для вычисления и обращения отношений неполной гамма-функции, SIAM J. Sci. Computing, стр. A2965–A2981, том 34, 2012.
- : l = legendre (n, x) ¶
- : l = legendre (n, x, normalization) ¶
-
Вычислить ассоциированную функцию Лежандра степени n и порядка m = 0 … n.
Значение n должно быть действительным неотрицательным целым числом.
x — вектор с вещественными элементами в диапазоне [-1, 1].
Необязательный аргумент normalization может быть одним из
"unnorm","sch", или"norm". По умолчанию, если нормализация не задана, это"unnorm".Когда необязательный аргумент normalization равен
"unnorm", вычисляется ассоциированная функция Лежандра степени n и порядка m и возвращаются все значения для m = 0 … n. Возвращаемое значение имеет на одну размерность больше, чем x.Ассоциированная функция Лежандра степени n и порядка m:
m m 2 m/2 d^m P(x) = (-1) * (1-x ) * ---- P(x) n dx^m n
с полиномом Лежандра степени n:
1 d^n 2 n P(x) = ------ [----(x - 1) ] n 2^n n! dx^n
legendre (3, [-1.0, -0.9, -0.8])возвращает матрицу:x | -1.0 | -0.9 | -0.8 ------------------------------------ m=0 | -1.00000 | -0.47250 | -0.08000 m=1 | 0.00000 | -1.99420 | -1.98000 m=2 | 0.00000 | -2.56500 | -4.32000 m=3 | 0.00000 | -1.24229 | -3.24000
Когда необязательный аргумент normalization равен
"sch", вычисляется полунормализованная по Шмидту ассоциированная функция Лежандра. Полунормализованная по Шмидту ассоциированная функция Лежандра связана с ненормализованными функциями Лежандра следующим образом:Для функций Лежандра степени n и порядка 0:
0 0 SP(x) = P(x) n n
Для функций Лежандра степени n и порядка m:
m m m 2(n-m)! 0.5 SP(x) = P(x) * (-1) * [-------] n n (n+m)!
Когда необязательный аргумент normalization равен
"norm", вычисляется полностью нормализованная ассоциированная функция Лежандра. Полностью нормализованная ассоциированная функция Лежандра связана с ненормализованными ассоциированными функциями Лежандра следующим образом:Для функций Лежандра степени n и порядка m
m m m (n+0.5)(n-m)! 0.5 NP(x) = P(x) * (-1) * [-------------] n n (n+m)!
- : psi (z) ¶
- : psi (k, z) ¶
-
Вычислить функцию пси (полигамма-функцию).
Полигамма-функции — это k-я производная логарифма гамма-функции. Если не указано, k по умолчанию равно нулю. Значение нуль вычисляет дигамма-функцию, значение 1 — тригамма-функцию и так далее.
Дигамма-функция определяется как:
psi (z) = d (log (gamma (z))) / dx
При вычислении дигамма-функции (когда k равно нулю), z может иметь любое вещественное или комплексное значение. Однако для полигамма-функций (k больше 0), z должно быть вещественным и неотрицательным.
© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v7.2.0/Special-Functions.html