Математика
Математические операторы
-
-(x) -
Унарный минус-оператор.
-
+(x, y...) -
Оператор сложения.
x+y+z+...вызывает эту функцию со всеми аргументами, т.е.+(x, y, z, ...).
-
-(x, y) -
Оператор вычитания.
-
*(x, y...) -
Оператор умножения.
x*y*z*...вызывает эту функцию со всеми аргументами, т.е.*(x, y, z, ...).
-
/(x, y) -
Оператор правого деления: умножение
xна обратное значениеyсправа. Для целочисленных аргументов даёт результаты с плавающей запятой.
-
\(x, y) -
Оператор левого деления: умножение
yна обратное значениеxслева. Для целочисленных аргументов даёт результаты с плавающей запятой.
-
^(x, y) -
Оператор возведения в степень.
-
.+(x, y) -
Оператор поэлементного сложения.
-
.-(x, y) -
Оператор поэлементного вычитания.
-
.*(x, y) -
Оператор поэлементного умножения.
-
./(x, y) -
Оператор поэлементного правого деления.
-
.\(x, y) -
Оператор поэлементного левого деления.
-
.^(x, y) -
Оператор поэлементного возведения в степень.
-
fma(x, y, z) -
Вычисляет
x*y+zбез округления промежуточного результатаx*y. На некоторых системах это значительно дороже, чемx*y+z.fmaиспользуется для повышения точности в определённых алгоритмах. См.muladd.
-
muladd(x, y, z) -
Комбинированный оператор умножения-сложения, вычисляет
x*y+zэффективным способом. На некоторых системах это может быть эквивалентноx*y+z, илиfma(x,y,z).muladdиспользуется для повышения производительности. См.fma.
-
div(x, y) -
÷(x, y) -
Частное от целочисленного деления. Вычисляет
x/y, усечённое до целого числа.
-
fld(x, y) -
Наибольшее целое число, меньшее или равное
x/y.
-
cld(x, y) -
Наименьшее целое число, большее или равное
x/y.
-
mod(x, y) -
Модуль после целочисленного деления, возвращая значение в диапазоне \([0,y)\), если
yположительно, или \((y,0]\) еслиyотрицательно.x == fld(x,y)*y + mod(x,y)
-
mod2pi(x) -
Модуль после деления на
2π, возвращая значение в диапазоне \([0,2π)\).Эта функция вычисляет поплавковую точку представления модуля после деления на численно точное
2π, и поэтому не совсем такая же, какmod(x,2π), которая бы вычислила модульxотносительно деления на число с плавающей запятой2π.
-
rem(x, y) -
%(x, y) -
Остаток от целочисленного деления, возвращая значение той же знак, что и
x, и меньшее по величине, чемy. Это значение всегда точное.x == div(x,y)*y + rem(x,y)
-
divrem(x, y) -
Частное и остаток от целочисленного деления. Эквивалентно
(div(x,y), rem(x,y))или(x÷y, x%y).
-
fldmod(x, y) -
Целочисленное частное и остаток после деления. Эквивалентно
(fld(x,y), mod(x,y)).
-
fld1(x, y) -
Целочисленное деление, возвращающее значение, согласованное с
mod1(x,y)x == fld(x,y)*y + mod(x,y) x == (fld1(x,y)-1)*y + mod1(x,y)
-
mod1(x, y) -
Модуль после целочисленного деления, возвращающее значение
rтакое, чтоmod(r, y) == mod(x, y)в диапазоне \((0, y]\) для положительногоyи в диапазоне \([y,0)\) для отрицательногоy.
-
fldmod1(x, y) -
Возвращает
(fld1(x,y), mod1(x,y)).
-
//(num, den) -
Деление двух целых чисел или рациональных чисел, давая результат
Rational.
-
rationalize([T<:Integer=Int, ]x; tol::Real=eps(x)) -
Приближённое число с плавающей точкой
xкак рациональное число с компонентами указанного целого типа. Результат будет отличаться отxне более чем наtol. ЕслиTне указано, оно по умолчаниюInt.julia> rationalize(5.6) 28//5 julia> a = rationalize(BigInt, 10.3) 103//10 julia> typeof(num(a)) BigInt
-
num(x) -
Числитель рационального представления
x.
-
den(x) -
Знаменатель рационального представления
x.
-
<<(x, n) -
Оператор сдвига влево,
x << n. Дляn >= 0, результат —xсдвинут влево наnбит, заполняя нулями. Это эквивалентноx * 2^n. Дляn < 0, это эквивалентноx >> -n.julia> Int8(3) << 2 12 julia> bits(Int8(3)) "00000011" julia> bits(Int8(12)) "00001100"
-
>>(x, n) -
Оператор сдвига вправо,
x >> n. Дляn >= 0, результат —xсдвинут вправо наnбит, гдеn >= 0, заполняя нулями, еслиx >= 0, знаками, еслиx < 0, сохраняя знакx. Это эквивалентноfld(x, 2^n). Дляn < 0, это эквивалентноx << -n.julia> Int8(13) >> 2 3 julia> bits(Int8(13)) "00001101" julia> bits(Int8(3)) "00000011" julia> Int8(-14) >> 2 -4 julia> bits(Int8(-14)) "11110010" julia> bits(Int8(-4)) "11111100"
-
>>>(x, n) -
Оператор беззнакового сдвига вправо,
x >>> n. Дляn >= 0, результат —xсдвинут вправо наnбит, гдеn >= 0, заполняя нулями. Дляn < 0, это эквивалентноx << -n.Для
Unsignedцелочисленных типов, это эквивалентно>>(). ДляSignedцелочисленных типов, это эквивалентноsigned(unsigned(x) >> n).julia> Int8(-14) >>> 2 60 julia> bits(Int8(-14)) "11110010" julia> bits(Int8(60)) "00111100"
BigIntрассматриваются как имеющие бесконечный размер, поэтому заполнения не требуется, и это эквивалентно>>().
-
:(start, [step, ]stop) -
Оператор диапазона.
a:bстроит диапазон отaдоbс шагом 1, иa:s:bаналогично, но использует шагs. Эти синтаксисы вызывают функциюcolon. Двоеточие также используется в индексации для выбора целых измерений.
-
colon(start, [step, ]stop) -
Вызывается синтаксисом
:для построения диапазонов.
-
range(start, [step, ]length) -
Построить диапазон по длине, задав начальное значение и необязательный шаг (по умолчанию 1).
-
Base.OneTo(n) -
Определите
AbstractUnitRange, который ведет себя как1:n, с дополнительным отличием, что нижняя граница гарантируется (системой типов) как 1.
-
==(x, y) -
Общий оператор равенства, дающий результат
Bool. Возвращается к===. Должен быть реализован для всех типов с понятием равенства, основанным на абстрактном значении, которое представляет экземпляр. Например, все числовые типы сравниваются по числовому значению, игнорируя тип. Строки сравниваются как последовательности символов, игнорируя кодировку.Следует стандарту IEEE для чисел с плавающей точкой.
Коллекции, как правило, должны реализовывать
==, вызывая==рекурсивно для всего содержимого.Новые числовые типы должны реализовывать эту функцию для двух аргументов нового типа и обрабатывать сравнение с другими типами с помощью правил повышения, где это возможно.
-
!=(x, y) -
≠(x, y) -
Оператор сравнения «не равно». Всегда возвращает противоположный результат, что и
==. Новые типы, как правило, не должны реализовывать этот оператор, а полагаться на стандартное определение!=(x,y) = !(x==y).
-
===(x, y) -
≡(x, y) -
См. оператор
is().
-
!==(x, y) -
≢(x, y) -
Эквивалентно
!is(x, y).
-
<(x, y) -
Оператор сравнения «меньше». Новые числовые типы должны реализовывать эту функцию для двух аргументов нового типа. Из-за поведения значений NaN с плавающей запятой,
<реализует частичный порядок. Типы с каноническим частичным порядком должны реализовывать<, а типы с каноническим полным порядком должны реализовыватьisless.
-
<=(x, y) -
≤(x, y) -
Оператор сравнения «меньше или равно».
-
>(x, y) -
Оператор сравнения «больше». В общем случае, новые типы должны реализовывать
<вместо этой функции, и полагаться на стандартное определение>(x,y) = y<x.
-
>=(x, y) -
≥(x, y) -
Оператор сравнения «больше или равно».
-
.==(x, y) -
Оператор сравнения на равенство по элементам.
-
.!=(x, y) -
.≠(x, y) -
Оператор сравнения «не равно» по элементам.
-
.<(x, y) -
Оператор сравнения «меньше» по элементам.
-
.<=(x, y) -
.≤(x, y) -
Оператор сравнения «меньше или равно» по элементам.
-
.>(x, y) -
Оператор сравнения «больше» по элементам.
-
.>=(x, y) -
.≥(x, y) -
Оператор сравнения «больше или равно» по элементам.
-
cmp(x, y) -
Возвращает -1, 0 или 1, в зависимости от того,
xменьше, равно или большеyсоответственно. Использует полный порядок, реализованныйisless. Для чисел с плавающей запятой использует<, но выбрасывает ошибку для не упорядоченных аргументов.
-
~(x) -
Битовое отрицание.
-
&(x, y) -
Битовое И.
-
|(x, y) -
Битовое ИЛИ.
-
$(x, y) -
Битовое исключающее ИЛИ.
-
!(x) -
Логическое отрицание.
-
x && y -
Короткое замыкание логического И.
-
x || y -
Короткое замыкание логического ИЛИ.
Математические функции
-
isapprox(x, y; rtol::Real=sqrt(eps), atol::Real=0) -
Сравнение на приблизительное равенство:
trueеслиnorm(x-y) <= atol + rtol*max(norm(x), norm(y)). По умолчаниюatolравно нулю, а значениеrtolпо умолчанию зависит от типовxиy.Для вещественных или комплексных чисел с плавающей запятой
rtolпо умолчанию равноsqrt(eps(typeof(real(x-y)))). Это соответствует требованию равенства примерно половины цифр мантиссы. Для других типовrtolпо умолчанию равно нулю.xиyтакже могут быть массивами чисел, в этом случаеnormпо умолчанию равноvecnorm, но может быть изменено путем передачи ключевого аргументаnorm::Function. (Для чиселnormэквивалентноabs.) Когдаxиyявляются массивами, еслиnorm(x-y)не является конечным (т.е.±InfилиNaN), сравнение переходит к проверке, являются ли все элементыxиyприблизительно равными покомпонентно.Бинарный оператор
≈эквивалентенisapproxс аргументами по умолчанию, аx ≉ yэквивалентен!isapprox(x,y).
-
sin(x) -
Вычислить синус
x, гдеxв радианах.
-
cos(x) -
Вычислить косинус
x, гдеxв радианах.
-
tan(x) -
Вычислить тангенс
x, гдеxв радианах.
-
sind(x) -
Вычислить синус
x, гдеxв градусах.
-
cosd(x) -
Вычислить косинус
x, гдеxв градусах.
-
tand(x) -
Вычислить тангенс
x, гдеxв градусах.
-
sinpi(x) -
Вычислить \(\sin(\pi x)\) более точно, чем
sin(pi*x), особенно для больших значенийx.
-
cospi(x) -
Вычислить \(\cos(\pi x)\) более точно, чем
cos(pi*x), особенно для больших значенийx.
-
sinh(x) -
Вычислить гиперболический синус
x.
-
cosh(x) -
Вычислить гиперболический косинус
x.
-
tanh(x) -
Вычислить гиперболический тангенс
x.
-
asin(x) -
Вычислить обратный синус
x, где результат в радианах.
-
acos(x) -
Вычислить обратный косинус
x, где результат в радианах.
-
atan(x) -
Вычислить обратный тангенс
x, где результат в радианах.
-
atan2(y, x) -
Вычислить обратный тангенс
y/x, используя знакиxиyдля определения квадранта результата.
-
asind(x) -
Вычислить обратный синус
x, где результат в градусах.
-
acosd(x) -
Вычислить обратный косинус
x, где результат в градусах.
-
atand(x) -
Вычислить обратный тангенс
x, где результат в градусах.
-
sec(x) -
Вычислить секанс
x, гдеxв радианах.
-
csc(x) -
Вычислить косеканс
x, гдеxв радианах.
-
cot(x) -
Вычислить котангенс
x, гдеxв радианах.
-
secd(x) -
Вычислить секанс
x, гдеxв градусах.
-
cscd(x) -
Вычислить косеканс
x, гдеxв градусах.
-
cotd(x) -
Вычислить котангенс
x, гдеxв градусах.
-
asec(x) -
Вычислить обратный секанс
x, где результат в радианах.
-
acsc(x) -
Вычислить обратный косеканс
x, где результат в радианах.
-
acot(x) -
Вычислить обратный котангенс
x, где результат в радианах.
-
asecd(x) -
Вычислить обратный секанс
x, где результат в градусах.
-
acscd(x) -
Вычислить обратный косеканс
x, где результат в градусах.
-
acotd(x) -
Вычислить обратный котангенс
x, где результат в градусах.
-
sech(x) -
Вычислить гиперболический секанс
x
-
csch(x) -
Вычислить гиперболический косекант от
x.
-
coth(x) -
Вычислить гиперболический котангенс от
x.
-
asinh(x) -
Вычислить обратный гиперболический синус от
x.
-
acosh(x) -
Вычислить обратный гиперболический косинус от
x.
-
atanh(x) -
Вычислить обратный гиперболический тангенс от
x.
-
asech(x) -
Вычислить обратный гиперболический секант от
x.
-
acsch(x) -
Вычислить обратный гиперболический косекант от
x.
-
acoth(x) -
Вычислить обратный гиперболический котангенс от
x.
-
sinc(x) -
Вычислить \(\sin(\pi x) / (\pi x)\), если \(x \neq 0\), и \(1\), если \(x = 0\).
-
cosc(x) -
Вычислить \(\cos(\pi x) / x - \sin(\pi x) / (\pi x^2)\), если \(x \neq 0\), и \(0\), если \(x = 0\). Это производная от
sinc(x).
-
deg2rad(x) -
Преобразовать
xиз градусов в радианы.
-
rad2deg(x) -
Преобразовать
xиз радиан в градусы.
-
hypot(x, y) -
Вычислить гипотенузу \(\sqrt{x^2+y^2}\), избегая переполнения и потери точности.
-
hypot(x...) -
Вычислить гипотенузу \(\sqrt{\sum x_i^2}\), избегая переполнения и потери точности.
-
log(x) -
Вычислить натуральный логарифм от
x. Бросает исключениеDomainErrorдля отрицательных аргументовReal. Используйте комплексные отрицательные аргументы для получения комплексных результатов.Есть экспериментальная реализация в модуле
Base.Math.JuliaLibm, которая обычно быстрее и точнее.
-
log(b, x) -
Вычислить логарифм по основанию
bотx. Бросает исключениеDomainErrorдля отрицательных аргументовReal.julia> log(4,8) 1.5 julia> log(4,2) 0.5
Примечание
Если
bявляется степенью 2 или 10, следует использоватьlog2илиlog10, так как они обычно быстрее и точнее. Например,julia> log(100,1000000) 2.9999999999999996 julia> log10(1000000)/2 3.0
-
log2(x) -
Вычислить логарифм по основанию 2 от
x. Бросает исключениеDomainErrorдля отрицательных аргументовReal.
-
log10(x) -
Вычислить логарифм по основанию 10 от
x. Бросает исключениеDomainErrorдля отрицательных аргументовReal.
-
log1p(x) -
Точно вычислить натуральный логарифм от
1+x. Бросает исключениеDomainErrorдля аргументов меньше -1.Есть экспериментальная реализация в модуле
Base.Math.JuliaLibm, которая обычно быстрее и точнее.
-
frexp(val) -
Возвращает
(x,exp)такое, чтоxимеет величину в интервале \([1/2, 1)\) или 0, и val = \(x \times 2^{exp}\).
-
exp(x) -
Вычислить \(e^x\).
-
exp2(x) -
Вычислить \(2^x\).
-
exp10(x) -
Вычислить \(10^x\).
-
ldexp(x, n) -
Вычислить \(x \times 2^n\).
-
modf(x) -
Возвращает пару (fpart, ipart) дробной и целой частей числа. Обе части имеют тот же знак, что и аргумент.
-
expm1(x) -
Точно вычислить \(e^x-1\).
-
round([T, ]x[, digits[, base]][, r::RoundingMode]) -
Округляет
xдо целого значения в соответствии с указаннымRoundingMode, возвращая значение того же типа, что иx. При отсутствии указания режима округления используется глобальный режим (см.rounding()), который по умолчанию округляет до ближайшего целого (RoundNearestрежим), а при равенстве (дробная часть равна 0,5) округляет к ближайшему четному числу.julia> round(1.7) 2.0 julia> round(1.5) 2.0 julia> round(2.5) 2.0
Необязательный аргумент
RoundingModeизменит способ округления.round(T, x, [r::RoundingMode])преобразует результат к типуT, бросая исключениеInexactError, если значение не может быть представлено.round(x, digits)округляет до указанного числа цифр после запятой (или до указанного числа цифр перед запятой, если отрицательное число).round(x, digits, base)округляет с основанием, отличным от 10.julia> round(pi, 2) 3.14 julia> round(pi, 3, 2) 3.125
Примечание
Округление до указанного числа цифр в основаниях, отличных от 2, может быть неточным при работе с двоичными числами с плавающей точкой. Например, значение
Float64, представленное как1.15, фактически меньше, чем 1,15, но будет округлено до 1,2.julia> x = 1.15 1.15 julia> @sprintf "%.20f" x "1.14999999999999991118" julia> x < 115//100 true julia> round(x, 1) 1.2
-
RoundingMode -
Тип, используемый для управления режимом округления операций с плавающей точкой (через функции
rounding()/setrounding()), или в качестве необязательных аргументов для округления до ближайшего целого (через функциюround()).В настоящее время поддерживаются следующие режимы округления:
-
RoundNearest(по умолчанию) RoundNearestTiesAwayRoundNearestTiesUpRoundToZero-
RoundFromZero(только дляBigFloat) RoundUpRoundDown
-
-
RoundNearest -
Режим округления по умолчанию. Округляет до ближайшего целого, а при равенстве (дробная часть равна 0,5) округляет к ближайшему четному числу.
-
RoundNearestTiesAway -
Округляет до ближайшего целого, а при равенстве округляет в сторону от нуля (поведение C/C++
round()).
-
RoundNearestTiesUp -
Округляет до ближайшего целого, а при равенстве округляет к положительной бесконечности (поведение Java/JavaScript
round()).
-
round(z, RoundingModeReal, RoundingModeImaginary) -
Возвращает ближайшее целое значение того же типа, что и комплексное значение
zкz, разрывая связи с использованием указанныхRoundingMode. ПервыйRoundingModeиспользуется для округления вещественных компонентов, а второй — для округления мнимых компонентов.
-
ceil([T, ]x[, digits[, base]]) -
ceil(x)возвращает ближайшее целое значение того же типа, что иx, которое больше или равноx.ceil(T, x)преобразует результат в типT, выбрасывая исключениеInexactErrorесли значение не может быть представлено.digitsиbaseработают так же, как дляround().
-
floor([T, ]x[, digits[, base]]) -
floor(x)возвращает ближайшее целое значение того же типа, что иx, которое меньше или равноx.floor(T, x)преобразует результат в типT, выбрасывая исключениеInexactErrorесли значение не может быть представлено.digitsиbaseработают так же, как дляround().
-
trunc([T, ]x[, digits[, base]]) -
trunc(x)возвращает ближайшее целое значение того же типа, что иx, модуль которого меньше или равенx.trunc(T, x)преобразует результат в типT, выбрасывая исключениеInexactErrorесли значение не может быть представлено.digitsиbaseработают так же, как дляround().
-
unsafe_trunc(T, x) -
unsafe_trunc(T, x)возвращает ближайшее целое значение типаT, модуль которого меньше или равенx. Если значение не может быть представлено типомT, будет возвращено произвольное значение.
-
signif(x, digits[, base]) -
Округляет (в смысле
round)xтаким образом, чтобы значащих цифр былоdigits, в представлении по основаниюbase, по умолчанию 10. Например,signif(123.456, 2)равно120.0, иsignif(357.913, 4, 2)равно352.0.
-
min(x, y, ...) -
Возвращает минимальное значение из аргументов. Операция выполняется поэлементно для массивов.
-
max(x, y, ...) -
Возвращает максимальное значение из аргументов. Операция выполняется поэлементно для массивов.
-
minmax(x, y) -
Возвращает
(min(x,y), max(x,y)). См. также:extrema(), который возвращает(minimum(x), maximum(x)).julia> minmax('c','b') ('b','c')
-
clamp(x, lo, hi) -
Возвращает
xеслиlo <= x <= hi. Еслиx < lo, возвращаетlo. Еслиx > hi, возвращаетhi. Аргументы приводятся к общему типу. Операция выполняется поэлементно над массивами, еслиxявляется массивом.julia> clamp([pi, 1.0, big(10.)], 2., 9.) 3-element Array{BigFloat,1}: 3.141592653589793238462643383279502884197169399375105820974944592307816406286198 2.000000000000000000000000000000000000000000000000000000000000000000000000000000 9.000000000000000000000000000000000000000000000000000000000000000000000000000000
-
clamp!(array::AbstractArray, lo, hi) -
Ограничивает значения в
arrayзаданным диапазоном, на месте. См. такжеclamp().
-
abs(x) -
Модуль
x.Когда
absприменяется к целым числам со знаком, может произойти переполнение, что приведёт к возвращению отрицательного значения. Это переполнение происходит только тогда, когдаabsприменяется к минимальному представимому значению целого числа со знаком. То есть, когдаx == typemin(typeof(x)),abs(x) == x < 0, а не-xкак можно было бы ожидать.
-
Base.checked_abs(x) -
Вычисляет
abs(x), проверяя на ошибки переполнения, где это применимо. Например, стандартные целые числа со знаком в дополнительном коде (например,Int) не могут представлятьabs(typemin(Int)), что приводит к переполнению.Защита от переполнения может привести к заметному снижению производительности.
-
Base.checked_neg(x) -
Вычисляет
-x, проверяя на ошибки переполнения, где это применимо. Например, стандартные целые числа со знаком в дополнительном коде (например,Int) не могут представлять-typemin(Int), что приводит к переполнению.Защита от переполнения может привести к заметному снижению производительности.
-
Base.checked_add(x, y) -
Вычисляет
x+y, проверяя на ошибки переполнения, где это применимо.Защита от переполнения может привести к заметному снижению производительности.
-
Base.checked_sub(x, y) -
Вычисляет
x-y, проверяя на ошибки переполнения, где это применимо.Защита от переполнения может привести к заметному снижению производительности.
-
Base.checked_mul(x, y) -
Вычисляет
x*y, проверяя на ошибки переполнения, где это применимо.Защита от переполнения может привести к заметному снижению производительности.
-
Base.checked_div(x, y) -
Вычисляет
div(x,y), проверяя на ошибки переполнения, где это применимо.Защита от переполнения может привести к заметному снижению производительности.
-
Base.checked_rem(x, y) -
Вычисляет
x%y, проверяя на ошибки переполнения, где это применимо.Защита от переполнения может привести к заметному снижению производительности.
-
Base.checked_fld(x, y) -
Вычисляет
fld(x,y), проверяя на ошибки переполнения, где это применимо.Защита от переполнения может привести к заметному снижению производительности.
-
Base.checked_mod(x, y) -
Вычисляет
mod(x,y), проверяя на ошибки переполнения, где это применимо.Защита от переполнения может привести к заметному снижению производительности.
-
Base.checked_cld(x, y) -
Вычисляет
cld(x,y), проверяя на ошибки переполнения, где это применимо.Защита от переполнения может привести к заметному снижению производительности.
-
abs2(x) -
Возвращает квадрат модуля
x.
-
copysign(x, y) -
Возвращает
xс тем же знаком, что иy.
-
sign(x) -
Возвращает ноль, если
x==0, и \(x/|x|\) в противном случае (т.е., ±1 для вещественныхx).
-
signbit(x) -
Возвращает
trueесли знакxотрицательный, иначеfalse.
-
flipsign(x, y) -
Возвращает
xс изменённым знаком, еслиyотрицательно. Например,abs(x) = flipsign(x,x).
-
sqrt(x) -
Возвращает \(\sqrt{x}\). Выбрасывает
DomainErrorдля отрицательныхRealаргументов. Используйте комплексные отрицательные аргументы вместо этого. Префиксный оператор√эквивалентенsqrt.
-
isqrt(n) -
Целочисленный квадратный корень: наибольшее целое
mтакое, чтоm*m <= n.
-
cbrt(x) -
Возвращает \(x^{1/3}\). Префиксный оператор
∛эквивалентенcbrt.
-
erf(x) -
Вычисляет функцию ошибки от
x, определённую как \(\frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} dt\) для произвольных комплексныхx.
-
erfc(x) -
Вычисляет дополнительную функцию ошибки от
x, определённую как \(1 - \operatorname{erf}(x)\).
-
erfcx(x) -
Вычисляет масштабированную дополнительную функцию ошибки от
x, определённую как \(e^{x^2} \operatorname{erfc}(x)\). Также обратите внимание, что \(\operatorname{erfcx}(-ix)\) вычисляет функцию Фаддеева \(w(x)\).
-
erfi(x) -
Вычисляет мнимую функцию ошибки от
x, определённую как \(-i \operatorname{erf}(ix)\).
-
dawson(x) -
Вычисляет функцию Доусона (масштабированная мнимая функция ошибки) от
x, определённую как \(\frac{\sqrt{\pi}}{2} e^{-x^2} \operatorname{erfi}(x)\).
-
erfinv(x) -
Вычисляет обратную функцию ошибки вещественного
x, определённую как \(\operatorname{erf}(\operatorname{erfinv}(x)) = x\).
-
erfcinv(x) -
Вычисляет обратную дополнительную функцию ошибки вещественного
x, определённую как \(\operatorname{erfc}(\operatorname{erfcinv}(x)) = x\).
-
real(z) -
Возвращает действительную часть комплексного числа
z.
-
imag(z) -
Возвращает мнимую часть комплексного числа
z.
-
reim(z) -
Возвращает действительную и мнимую части комплексного числа
z.
-
conj(z) -
Вычисляет комплексно-сопряжённое число комплексного числа
z.
-
angle(z) -
Вычисляет фазовый угол в радианах комплексного числа
z.
-
cis(z) -
Возвращает \(\exp(iz)\).
-
binomial(n, k) -
Количество способов выбрать
kизnэлементов.
-
factorial(n) -
Факториал
n. Еслиn— целое число, факториал вычисляется как целое число (преобразованное к типу как минимум 64 бита). Обратите внимание, что это может привести к переполнению, еслиnне мало, но вы можете использоватьfactorial(big(n))для точного вычисления результата с произвольной точностью. Еслиnне целое число,factorial(n)эквивалентноgamma(n+1).
-
gcd(x, y) -
Наибольший общий (положительный) делитель (или ноль, если
xиyоба равны нулю).
-
lcm(x, y) -
Наименьшее общее кратное (неотрицательное).
-
gcdx(x, y) -
Вычисляет наибольший общий (положительный) делитель
xиy, а также коэффициенты Безу, т. е. целые коэффициентыuиv, которые удовлетворяют \(ux+vy = d = gcd(x,y)\). \(gcdx(x,y)\) возвращает \((d,u,v)\).julia> gcdx(12, 42) (6,-3,1)
julia> gcdx(240, 46) (2,-9,47)
Примечание
Коэффициенты Безу не определяются однозначно.
gcdxвозвращает минимальные коэффициенты Безу, которые вычисляются с помощью расширенного алгоритма Евклида. (См.: D. Knuth, TAoCP, 2/e, стр. 325, Алгоритм X.) Для целых чисел со знаком эти коэффициентыuиvминимальны в том смысле, что \(|u| < |y/d|\) и \(|v| < |x/d|\). Кроме того, знакиuиvвыбираются так, чтобыdбыло положительным. Для беззнаковых целых чисел коэффициентыuиvмогут быть близки к своимtypemax, и тождество в этом случае выполняется только с помощью арифметики по модулю беззнаковых целых чисел.
-
ispow2(n) → Bool -
Проверяет, является ли
nстепенью двойки.
-
nextpow2(n) -
Наименьшая степень двойки, не меньшая, чем
n. Возвращает 0 дляn==0, и возвращает-nextpow2(-n)для отрицательных аргументов.
-
prevpow2(n) -
Наибольшая степень двойки, не большая, чем
n. Возвращает 0 дляn==0, и возвращает-prevpow2(-n)для отрицательных аргументов.
-
nextpow(a, x) -
Наименьшее
a^n, не меньшее, чемx, гдеn— неотрицательное целое число.aдолжно быть больше 1, аxдолжно быть больше 0.
-
prevpow(a, x) -
Наибольшее
a^n, не большее, чемx, гдеn— неотрицательное целое число.aдолжно быть больше 1, аxне должно быть меньше 1.
-
nextprod([k_1, k_2, ..., ]n) -
Следующее целое число, не меньшее, чем
n, которое можно представить в виде \(\prod k_i^{p_i}\) для целых чисел \(p_1\), \(p_2\) и т. д.
-
invmod(x, m) -
Вычисляет обратное число
xпо модулюm:yтакое, что \(x y = 1 \pmod m\), при \(div(x,y) = 0\). Неопределено для \(m = 0\) или если \(gcd(x,m) \neq 1\).
-
powermod(x, p, m) -
Вычисляет \(x^p \pmod m\).
-
gamma(x) -
Вычисляет гамма-функцию от
x.
-
lgamma(x) -
Вычисляет логарифм абсолютного значения
gamma()дляRealx, в то время как дляComplexxвычисляет логарифмgamma(x).
-
lfact(x) -
Вычисляет логарифмический факториал
x
-
digamma(x) -
Вычисляет функцию дигамма от
x(логарифмическую производную отgamma(x)).
-
invdigamma(x) -
Вычисляет обратную функцию дигамма от
x.
-
trigamma(x) -
Вычисляет функцию тригамма от
x(логарифмическую вторую производную отgamma(x)).
-
polygamma(m, x) -
Вычисляет функцию полигамма порядка
mот аргументаx((m+1)thпроизводная логарифмаgamma(x)).
-
airy(k, x) -
kпроизводная функции Эйри \(\operatorname{Ai}(x)\).
-
airyai(x) -
Функция Эйри \(\operatorname{Ai}(x)\).
-
airyprime(x) -
Производная функции Эйри \(\operatorname{Ai}'(x)\).
-
airyaiprime(x) -
Производная функции Эйри \(\operatorname{Ai}'(x)\).
-
airybi(x) -
Функция Эйри \(\operatorname{Bi}(x)\).
-
airybiprime(x) -
Производная функции Эйри \(\operatorname{Bi}'(x)\).
-
airyx(k, x) -
масштабированная
k-я производная функции Эйри, возвращает \(\operatorname{Ai}(x) e^{\frac{2}{3} x \sqrt{x}}\) дляk == 0 || k == 1, и \(\operatorname{Ai}(x) e^{- \left| \operatorname{Re} \left( \frac{2}{3} x \sqrt{x} \right) \right|}\) дляk == 2 || k == 3.
-
besselj0(x) -
Функция Бесселя первого рода нулевого порядка, \(J_0(x)\).
-
besselj1(x) -
Функция Бесселя первого рода первого порядка, \(J_1(x)\).
-
besselj(nu, x) -
Функция Бесселя первого рода порядка
nu, \(J_\nu(x)\).
-
besseljx(nu, x) -
Масштабированная функция Бесселя первого рода порядка
nu, \(J_\nu(x) e^{- | \operatorname{Im}(x) |}\).
-
bessely0(x) -
Функция Бесселя второго рода нулевого порядка, \(Y_0(x)\).
-
bessely1(x) -
Функция Бесселя второго рода первого порядка, \(Y_1(x)\).
-
bessely(nu, x) -
Функция Бесселя второго рода порядка
nu, \(Y_\nu(x)\).
-
besselyx(nu, x) -
Масштабированная функция Бесселя второго рода порядка
nu, \(Y_\nu(x) e^{- | \operatorname{Im}(x) |}\).
-
hankelh1(nu, x) -
Функция Бесселя третьего рода порядка
nu, \(H^{(1)}_\nu(x)\).
-
hankelh1x(nu, x) -
Масштабированная функция Бесселя третьего рода порядка
nu, \(H^{(1)}_\nu(x) e^{-x i}\).
-
hankelh2(nu, x) -
Функция Бесселя третьего рода порядка
nu, \(H^{(2)}_\nu(x)\).
-
hankelh2x(nu, x) -
Масштабированная функция Бесселя третьего рода порядка
nu, \(H^{(2)}_\nu(x) e^{x i}\).
-
besselh(nu, [k=1, ]x) -
Функция Бесселя третьего рода порядка
nu(функция Ханкеля).kравно либо 1, либо 2, выбираяhankelh1()илиhankelh2()соответственно.kпо умолчанию равно 1, если оно опущено. (См. такжеbesselhx()для варианта с экспоненциальным масштабированием.)
-
besselhx(nu, [k=1, ]z) -
Вычислить масштабированную функцию Ханкеля \(\exp(∓iz) H_ν^{(k)}(z)\), где \(k\) равно 1 или 2, \(H_ν^{(k)}(z)\) —
besselh(nu, k, z), а \(∓\) — \(-\) для \(k=1\) и \(+ \) для \(k=2\).kпо умолчанию равно 1, если оно опущено.Причина создания этой функции заключается в том, что \(H_ν^{(k)}(z)\) асимптотически пропорциональна \(\exp(∓iz)/\sqrt{z}\) для больших \(|z|\), и поэтому функция
besselh()подвержена переполнению или потере точности, когдаzимеет большую мнимую часть. Функцияbesselhxотменяет этот экспоненциальный множитель (аналитически), поэтому она избегает этих проблем.
-
besseli(nu, x) -
Модифицированная функция Бесселя первого рода порядка
nu, \(I_\nu(x)\).
-
besselix(nu, x) -
Масштабированная модифицированная функция Бесселя первого рода порядка
nu, \(I_\nu(x) e^{- | \operatorname{Re}(x) |}\).
-
besselk(nu, x) -
Модифицированная функция Бесселя второго рода порядка
nu, \(K_\nu(x)\).
-
besselkx(nu, x) -
Масштабированная модифицированная функция Бесселя второго рода порядка
nu, \(K_\nu(x) e^x\).
-
beta(x, y) -
Интеграл Эйлера первого рода \(\operatorname{B}(x,y) = \Gamma(x)\Gamma(y)/\Gamma(x+y)\).
-
lbeta(x, y) -
Натуральный логарифм абсолютного значения функции бета \(\log(|\operatorname{B}(x,y)|)\).
-
eta(x) -
Функция Дирихле эта \(\eta(s) = \sum^\infty_{n=1}(-1)^{n-1}/n^{s}\).
-
zeta(s) -
Функция Римана дзета \(\zeta(s)\).
-
zeta(s, z) -
Обобщенная функция дзета \(\zeta(s, z)\), определенная суммой \(\sum_{k=0}^\infty ((k+z)^2)^{-s/2}\), где любой член с \(k+z=0\) исключается. Для \(\Re z > 0\) это определение эквивалентно функции дзета Гурвица \(\sum_{k=0}^\infty (k+z)^{-s}\). Для \(z=1\) она дает функцию дзета Римана \(\zeta(s)\).
-
ndigits(n, b = 10) -
Вычислить количество цифр в числе
nв системе счисленияb.
-
widemul(x, y) -
Перемножить
xиy, представив результат в более широком типе.
-
@evalpoly(z, c...) -
Вычислить многочлен \(\sum_k c[k] z^{k-1}\) для коэффициентов
c[1],c[2], ...; то есть коэффициенты заданы в порядке возрастания степениz. Этот макрос расширяется до эффективного встроенного кода, использующего метод Хорнера или, для комплексныхz, более эффективный алгоритм типа Гоертцеля.
Статистики
-
mean(v[, region]) -
Вычислить среднее значение всего массива
v, или по умолчанию по измерениям вregion.Примечание
Julia не игнорирует
NaNзначения при вычислении. Для приложений, требующих обработки пропущенных данных, рекомендуется использовать пакетDataArrays.jl.
-
mean(f::Function, v) -
Применить функцию
fк каждому элементуvи вычислить среднее.
-
mean!(r, v) -
Вычислить среднее значение
vпо единичным измерениямrи записать результат вr.
-
std(v[, region]; corrected::Bool=true, mean=nothing) -
Вычислить выборочное стандартное отклонение вектора или массива
v, необязательно по измерениям вregion. Алгоритм возвращает оценку стандартного отклонения генерирующего распределения при предположении, что каждый элементv— независимо и одинаково распределенная случайная величина, взятая из этого генерирующего распределения. Это вычисление эквивалентно вычислениюsqrt(sum((v - mean(v)).^2) / (length(v) - 1)). Может быть предоставлено предварительно вычисленное значениеmean.Примечание
Julia не игнорирует
NaNзначения при вычислении. Для приложений, требующих обработки пропущенных данных, рекомендуется использовать пакетDataArrays.jl.
-
stdm(v, m::Number; corrected::Bool=true) -
Вычислить выборочное стандартное отклонение вектора
vс известным средним значениемm. Еслиcorrectedравноtrue, сумма масштабируется с помощьюn-1, в противном случае с помощьюn, еслиcorrectedравноfalse, гдеn = length(x).Примечание
Julia не игнорирует
NaNзначения при вычислении. Для приложений, требующих обработки пропущенных данных, рекомендуется использовать пакетDataArrays.jl.
-
var(v[, region]) -
Вычислить выборочную дисперсию вектора или массива
v, необязательно по измерениям вregion. Алгоритм вернет оценку дисперсии генерирующего распределения при предположении, что каждый элементv— независимо и одинаково распределенная случайная величина, взятая из этого генерирующего распределения. Это вычисление эквивалентно вычислениюsumabs2(v - mean(v)) / (length(v) - 1). Примечание: Julia не игнорируетNaNзначения при вычислении. Для приложений, требующих обработки пропущенных данных, рекомендуется использовать пакетDataArray.
-
varm(v, m[, region]; corrected::Bool=true) -
Вычислить выборочную дисперсию набора
vс известным(и) средним(и) значением(и)m, необязательно поregion.mможет содержать средние значения для каждого измеренияv. Еслиcorrectedравноtrue, сумма масштабируется с помощьюn-1, в противном случае с помощьюn, еслиcorrectedравноfalse, гдеn = length(x).Примечание
Julia не игнорирует
NaNзначения при вычислении. Для приложений, требующих обработки пропущенных данных, рекомендуется использовать пакетDataArrays.jl.
-
middle(x) -
Вычислить середину скалярного значения, что эквивалентно самому
x, но с типомmiddle(x, x)для согласованности.
-
middle(x, y) -
Вычислить середину двух вещественных чисел
xиy, что эквивалентно вычислению их среднего значения ((x + y) / 2).
-
middle(range) -
Вычислить середину диапазона, что заключается в вычислении среднего его экстремумов. Поскольку диапазон отсортирован, среднее вычисляется по первому и последнему элементу.
julia> middle(1:10) 5.5
-
middle(a) -
Вычислить середину массива
a, что заключается в поиске его экстремумов и вычислении их среднего значения.julia> a = [1,2,3.6,10.9] 4-element Array{Float64,1}: 1.0 2.0 3.6 10.9 julia> middle(a) 5.95
-
median(v[, region]) -
Вычислить медиану всего массива
v, или необязательно по измерениям вregion. При четном количестве элементов точного медианного элемента не существует, поэтому результат эквивалентен вычислению среднего двух медианных элементов.Примечание
Julia не игнорирует
NaNзначения при вычислении. Для приложений, требующих обработки пропущенных данных, рекомендуется использовать пакетDataArrays.jl.
-
median!(v) -
Подобно
median, но может перезаписать входной вектор.
-
midpoints(e) -
Вычислить середины интервалов с границами
e. Результат — вектор/диапазон длинойlength(e) - 1. Примечание: Julia не игнорируетNaNзначения при вычислении.
-
quantile(v, p; sorted=false) -
Вычислить квантиль(и) вектора
vв заданной вероятности или вектореp. Ключевое слово-аргументsortedуказывает, можно ли считатьvотсортированным.Значение
pдолжно находиться в интервале [0,1], аvне должно содержатьNaNзначений.Квантили вычисляются с помощью линейной интерполяции между точками
((k-1)/(n-1), v[k]), дляk = 1:nгдеn = length(v). Это соответствует определению 7 Гиндмана и Фана (1996) и совпадает со значением по умолчанию в R.Примечание
Julia не игнорирует
NaNзначения при вычислении. Для приложений, требующих обработки пропущенных данных, рекомендуется использовать пакетDataArrays.jl.quantileвыброситArgumentErrorв случае наличияNaNзначений в массиве данных.- Гиндман, Р.Дж. и Фан, Ю. (1996) «Выборочные квантили в статистических пакетах», The American Statistician, том 50, № 4, стр. 361-365
-
quantile!([q, ]v, p; sorted=false) -
Вычислить квантиль(и) вектора
vпо вероятностямp, с необязательной передачей результата в массивq(если не указан, создаётся новый массив вывода). Ключевое слово-аргументsortedуказывает, можно ли считатьvотсортированным; еслиfalse(значение по умолчанию), элементыvмогут быть частично отсортированы.Элементы
pдолжны находиться в интервале [0,1], иvне должно содержатьNaNзначений.Квантили вычисляются с помощью линейной интерполяции между точками
((k-1)/(n-1), v[k]), дляk = 1:nгдеn = length(v). Это соответствует определению 7 Гиндмана и Фана (1996) и совпадает со значением по умолчанию в R.Примечание
Julia не игнорирует
NaNзначения при вычислении. Для приложений, требующих обработки пропущенных данных, рекомендуется использовать пакетDataArrays.jl.quantile!выброситArgumentErrorв случае наличияNaNзначений в массиве данных.- Гиндман, Р.Дж. и Фан, Ю. (1996) «Выборочные квантили в статистических пакетах», The American Statistician, том 50, № 4, стр. 361-365
-
cov(x[, corrected=true]) -
Вычислить дисперсию вектора
x. Еслиcorrectedравноtrue(значение по умолчанию), то сумма масштабируется с помощьюn-1, в противном случае, еслиcorrectedравноfalseгдеn = length(x), с помощьюn.
-
cov(X[, vardim=1, corrected=true]) -
Вычислить ковариационную матрицу матрицы
Xпо размерностиvardim. Еслиcorrectedравноtrue(значение по умолчанию), то сумма масштабируется с помощьюn-1, в противном случае, еслиcorrectedравноfalseгдеn = size(X, vardim), с помощьюn.
-
cov(x, y[, corrected=true]) -
Вычислить ковариацию между векторами
xиy. Еслиcorrectedравноtrue(значение по умолчанию), то сумма масштабируется с помощьюn-1, в противном случае, еслиcorrectedравноfalseгдеn = length(x) = length(y), с помощьюn.
-
cov(X, Y[, vardim=1, corrected=true]) -
Вычислить ковариацию между векторами или матрицами
XиYпо размерностиvardim. Еслиcorrectedравноtrue(значение по умолчанию), то сумма масштабируется с помощьюn-1, в противном случае, еслиcorrectedравноfalseгдеn = size(X, vardim) = size(Y, vardim), с помощьюn.
-
cor(x) -
Возвращает число один.
-
cor(X[, vardim=1]) -
Вычислить матрицу корреляции Пирсона для матрицы
Xпо размерностиvardim.
-
cor(x, y) -
Вычислить корреляцию Пирсона между векторами
xиy.
-
cor(X, Y[, vardim=1]) -
Вычислить корреляцию Пирсона между векторами или матрицами
XиYпо размерностиvardim.
Обработка сигналов
Функции быстрой Фурье-трансформации (БПФ) в Julia реализуются путём вызова функций из FFTW.
-
fft(A[, dims]) -
Выполняет многомерную БПФ массива
A. Необязательный аргументdimsуказывает итерируемый подмножество размерностей (например, целое число, диапазон, кортеж или массив), по которым нужно выполнить преобразование. Наиболее эффективно, если размерAпо преобразованным размерностям является произведением малых простых чисел; см.nextprod(). См. такжеplan_fft()для ещё большей эффективности.Одномерная БПФ вычисляет одномерное дискретное преобразование Фурье (ДПФ), как определено
\[\operatorname{DFT}(A)[k] = \sum_{n=1}^{\operatorname{length}(A)} \exp\left(-i\frac{2\pi (n-1)(k-1)}{\operatorname{length}(A)} \right) A[n].\]Многомерная БПФ просто выполняет эту операцию по каждой преобразованной размерности
A.Примечание
- Julia по умолчанию запускает FFTW с 1 потоком. Более высокая производительность обычно возможна путём увеличения числа потоков. Используйте
FFTW.set_num_threads(Sys.CPU_CORES)для использования столько потоков, сколько ядер на вашем компьютере. - По умолчанию выполняется многомерная БПФ. Библиотеки БПФ в других языках, таких как Python и Octave, выполняют одномерную БПФ по первой неединичной размерности массива. Это стоит учитывать при проведении сравнений. Более подробная информация доступна в разделе Примечательные различия с другими языками руководства.
- Julia по умолчанию запускает FFTW с 1 потоком. Более высокая производительность обычно возможна путём увеличения числа потоков. Используйте
-
fft!(A[, dims]) -
То же, что и
fft(), но работает на месте сA, который должен быть массивом комплексных чисел с плавающей запятой.
-
ifft(A[, dims]) -
Многомерное обратное БПФ.
Одномерное обратное БПФ вычисляет
\[\operatorname{IDFT}(A)[k] = \frac{1}{\operatorname{length}(A)} \sum_{n=1}^{\operatorname{length}(A)} \exp\left(+i\frac{2\pi (n-1)(k-1)} {\operatorname{length}(A)} \right) A[n].\]Многомерное обратное БПФ просто выполняет эту операцию по каждой преобразованной размерности
A.
-
ifft!(A[, dims]) -
То же, что и
ifft(), но работает на месте сA.
-
bfft(A[, dims]) -
Аналогично
ifft(), но вычисляет ненормализованное обратное (обратное) преобразование, которое необходимо разделить на произведение размеров преобразованных размерностей, чтобы получить обратное. (Это немного эффективнее, чемifft(), поскольку он опускает шаг масштабирования, который в некоторых приложениях можно объединить с другими вычислительными шагами в другом месте.)\[\operatorname{BDFT}(A)[k] = \operatorname{length}(A) \operatorname{IDFT}(A)[k]\]
-
bfft!(A[, dims]) -
То же, что и
bfft(), но работает на месте сA.
-
plan_fft(A [, dims]; flags=FFTW.ESTIMATE; timelimit=Inf) -
Предварительно спланируйте оптимизированное преобразование Фурье (FFT) по заданным измерениям (
dims) массивов, соответствующих форме и типуA. (Два первых аргумента имеют тот же смысл, что и дляfft().) Возвращает объектP, который представляет линейный оператор, вычисленный с помощью FFT, и который содержит всю информацию, необходимую для быстрого вычисленияfft(A, dims).Чтобы применить
Pк массивуA, используйтеP * A; в общем случае синтаксис применения планов очень похож на синтаксис матриц. (План можно применить только к массивам такого же размера, что иAдля которого был создан план.) Вы также можете применить план с предварительно выделенным выходным массивомÂ, вызвавA_mul_B!(Â, plan, A). (Однако дляA_mul_B!, входной массивAдолжен быть массивом комплексных чисел с плавающей точкой, подобным выходномуÂ.) Вы можете вычислить план обратного преобразования, используяinv(P)и применить обратный план с помощьюP \ Â(обратный план кешируется и повторно используется для последующих вызововinvили\), а также применить обратный план к предварительно выделенному выходному массивуAс помощьюA_ldiv_B!(A, P, Â).Аргумент
flagsпредставляет собой побитовое ИЛИ флагов планировщика FFTW, по умолчаниюFFTW.ESTIMATE. Например, передачаFFTW.MEASUREилиFFTW.PATIENTвместо этого потратит несколько секунд (или более), тестируя различные возможные алгоритмы FFT и выбирая самый быстрый; см. руководство FFTW для получения дополнительной информации о флагах планировщика. Необязательный аргументtimelimitзадает приблизительную верхнюю границу допустимого времени планирования в секундах. ПередачаFFTW.MEASUREилиFFTW.PATIENTможет привести к тому, что входной массивAбудет перезаписан нулями во время создания плана.plan_fft!()эквивалентноplan_fft(), но создает план, который работает непосредственно над его аргументом (который должен быть массивом комплексных чисел с плавающей точкой).plan_ifft()и т.д. аналогичны, но создают планы, выполняющие эквивалент обратных преобразованийifft()и т.д.
-
plan_ifft(A [, dims]; flags=FFTW.ESTIMATE; timelimit=Inf) -
То же, что и
plan_fft(), но создает план, выполняющий обратные преобразованияifft().
-
plan_bfft(A [, dims]; flags=FFTW.ESTIMATE; timelimit=Inf) -
То же, что и
plan_fft(), но создает план, выполняющий ненормализованное обратное преобразованиеbfft().
-
plan_fft!(A [, dims]; flags=FFTW.ESTIMATE; timelimit=Inf) -
То же, что и
plan_fft(), но работает непосредственно надA.
-
plan_ifft!(A [, dims]; flags=FFTW.ESTIMATE; timelimit=Inf) -
То же, что и
plan_ifft(), но работает непосредственно надA.
-
plan_bfft!(A [, dims]; flags=FFTW.ESTIMATE; timelimit=Inf) -
То же, что и
plan_bfft(), но работает непосредственно надA.
-
rfft(A[, dims]) -
Многомерное преобразование Фурье (FFT) действительного массива
A, используя тот факт, что преобразование обладает сопряжённой симметрией, чтобы сэкономить примерно половину времени вычислений и затрат памяти по сравнению сfft(). ЕслиAимеет размер(n_1, ..., n_d), результат имеет размер(div(n_1,2)+1, ..., n_d).Необязательный аргумент
dimsуказывает итерируемое подмножество одной или нескольких размерностейAдля преобразования, подобноfft(). Вместо (приблизительного) удвоения первой размерностиAв результате, размерностьdims[1]удваивается аналогичным образом.
-
irfft(A, d[, dims]) -
Обратное преобразование
rfft(): для комплексного массиваAдаёт соответствующий действительный массив, чьё преобразование Фурье даётAв первой половине. Как и вrfft(),dimsявляется необязательным подмножеством размерностей для преобразования, по умолчанию1:ndims(A).dпредставляет длину преобразованного действительного массива вдоль размерностиdims[1], которая должна удовлетворятьdiv(d,2)+1 == size(A,dims[1]). (Этот параметр нельзя вывести изsize(A), так как оба2*size(A,dims[1])-2и2*size(A,dims[1])-1являются допустимыми размерами для преобразованного действительного массива.)
-
brfft(A, d[, dims]) -
Аналогично
irfft(), но вычисляет ненормализованное обратное преобразование (аналогичноbfft()), которое необходимо разделить на произведение размеров преобразованных размерностей (действительного выходного массива), чтобы получить обратное преобразование.
-
plan_rfft(A [, dims]; flags=FFTW.ESTIMATE; timelimit=Inf) -
Предварительно спланируйте оптимизированное преобразование Фурье с действительным входом, аналогично
plan_fft(), за исключениемrfft()вместоfft(). Два первых аргумента и размер преобразованного результата такие же, как и дляrfft().
-
plan_brfft(A, d [, dims]; flags=FFTW.ESTIMATE; timelimit=Inf) -
Предварительно спланируйте оптимизированное ненормализованное преобразование с действительным входом, аналогично
plan_rfft(), за исключениемbrfft()вместоrfft(). Два первых аргумента и размер преобразованного результата такие же, как и дляbrfft().
-
plan_irfft(A, d [, dims]; flags=FFTW.ESTIMATE; timelimit=Inf) -
Предварительно спланируйте оптимизированное обратное преобразование Фурье с действительным входом, аналогично
plan_rfft(), за исключениемirfft()иbrfft()соответственно. Три первых аргумента имеют тот же смысл, что и дляirfft().
-
dct(A[, dims]) -
Вычисляет многомерное дискретное косинусное преобразование (DCT) типа II массива
A, используя унитарную нормализацию DCT. Необязательный аргументdimsуказывает итерируемое подмножество размерностей (например, целое число, диапазон, кортеж или массив) для преобразования. Наиболее эффективно, если размерAпо преобразованным размерностям является произведением малых простых чисел; см.nextprod(). См. такжеplan_dct()для ещё большей эффективности.
-
dct!(A[, dims]) -
То же, что и
dct!(), за исключением того, что оно работает непосредственно надA, который должен быть массивом действительных или комплексных чисел с плавающей точкой.
-
idct(A[, dims]) -
Вычисляет многомерное обратное дискретное косинусное преобразование (DCT) массива
A(технически, DCT типа III с унитарной нормализацией). Необязательный аргументdimsуказывает итерируемое подмножество размерностей (например, целое число, диапазон, кортеж или массив) для преобразования. Наиболее эффективно, если размерAпо преобразованным размерностям является произведением малых простых чисел; см.nextprod(). См. такжеplan_idct()для ещё большей эффективности.
-
idct!(A[, dims]) -
То же, что и
idct!(), но работает непосредственно надA.
-
plan_dct(A[, dims[, flags[, timelimit]]]) -
Предварительно спланируйте оптимизированное дискретное косинусное преобразование (DCT), аналогично
plan_fft(), за исключением того, что генерирует функцию, вычисляющуюdct(). Два первых аргумента имеют тот же смысл, что и дляdct().
-
plan_dct!(A[, dims[, flags[, timelimit]]]) -
То же, что и
plan_dct(), но работает непосредственно надA.
-
plan_idct(A[, dims[, flags[, timelimit]]]) -
Предварительно спланировать оптимизированное обратное дискретное косинусное преобразование (DCT), аналогичное
plan_fft(), за исключением того, что создается функция, вычисляющаяidct(). Первые два аргумента имеют то же значение, что и дляidct().
-
plan_idct!(A[, dims[, flags[, timelimit]]]) -
То же, что и
plan_idct(), но выполняется на месте сA.
-
fftshift(x) -
Поменять местами первую и вторую половины каждого измерения
x.
-
fftshift(x, dim) -
Поменять местами первую и вторую половины заданного измерения массива
x.
-
ifftshift(x[, dim]) -
Отменяет действие
fftshift.
-
filt(b, a, x[, si]) -
Применить фильтр, описываемый векторами
aиbк векторуx, с необязательным начальным вектором состояния фильтраsi(по умолчанию нули).
-
filt!(out, b, a, x[, si]) -
То же, что и
filt(), но записывает результат в аргументout, который может ссылаться на входной аргументxдля изменения на месте.
-
deconv(b, a) -
Построить вектор
cтакой, чтоb = conv(a,c) + r. Эквивалентно делению многочленов.
-
conv(u, v) -
Свертка двух векторов. Используется алгоритм БПФ.
-
conv2(u, v, A) -
Двумерная свертка матрицы
Aс двумерным разделительным ядром, сгенерированным векторамиuиv. Используется двумерный алгоритм БПФ.
-
conv2(B, A) -
Двумерная свертка матрицы
Bс матрицейA. Используется двумерный алгоритм БПФ.
-
xcorr(u, v) -
Вычислить взаимную корреляцию двух векторов.
Следующие функции определены в модуле Base.FFTW.
-
r2r(A, kind[, dims]) -
Выполняет многомерное преобразование с действительным входом/выходом (r2r) типа
kindмассиваA, как определено в руководстве FFTW.kindуказывает либо дискретное косинусное преобразование различных типов (FFTW.REDFT00,FFTW.REDFT01,FFTW.REDFT10, илиFFTW.REDFT11), либо дискретное синусное преобразование различных типов (FFTW.RODFT00,FFTW.RODFT01,FFTW.RODFT10, илиFFTW.RODFT11), либо преобразование DFT с действительным входом и выходным значением в формате halfcomplex (FFTW.R2HCи его обратноеFFTW.HC2R), либо дискретное преобразование Хартли (FFTW.DHT). Аргументkindможет быть массивом или кортежем для задания различных типов преобразований по различным измерениямA;kind[end]используется для любых неопределенных измерений. См. руководство FFTW для точных определений этих типов преобразований по адресу http://www.fftw.org/doc.Необязательный аргумент
dimsуказывает итерируемый подмножество измерений (например, целое число, диапазон, кортеж или массив) для преобразования вдоль.kind[i]— это тип преобразования дляdims[i], аkind[end]используется дляi > length(kind).См. также
plan_r2r()для предварительной оптимизации r2r-преобразований.
-
r2r!(A, kind[, dims]) -
То же, что и
r2r(), но работает на месте сA, который должен быть массивом действительных или комплексных чисел с плавающей точкой.
-
plan_r2r(A, kind[, dims[, flags[, timelimit]]]) -
Предварительно спланировать оптимизированное преобразование r2r, аналогичное
Base.plan_fft(), за исключением того, что преобразования (и первые три аргумента) соответствуютr2r()иr2r!(), соответственно.
-
plan_r2r!(A, kind[, dims[, flags[, timelimit]]]) -
Аналогично
Base.plan_fft(), но соответствуетr2r!().
Численное интегрирование
Хотя для численного интегрирования и решения обыкновенных дифференциальных уравнений доступны несколько внешних пакетов, мы также предоставляем некоторую встроенную поддержку интегрирования в Julia.
-
quadgk(f, a, b, c...; reltol=sqrt(eps), abstol=0, maxevals=10^7, order=7, norm=vecnorm) -
Численно интегрировать функцию
f(x)отaдоb, и необязательно по дополнительным интерваламbдоcи так далее. Ключевые параметры включают относительную погрешностьreltol(по умолчаниюsqrt(eps)в точности конечных точек), абсолютную погрешностьabstol(по умолчанию 0), максимальное число вычислений функцииmaxevals(по умолчанию10^7), иorderправила интегрирования (по умолчанию 7).Возвращает пару
(I,E)оценок интегралаIи оценки верхней границы абсолютной ошибкиE. Еслиmaxevalsне превышена, тоE <= max(abstol, reltol*norm(I))будет содержать результат. (Обратите внимание, что полезно указать положительнуюabstolв случаях, когдаnorm(I)может быть нулевым.)Конечные точки
aи т.д. также могут быть комплексными (в этом случае интегрирование выполняется по прямым отрезкам в комплексной плоскости). Если конечные точкиBigFloat, то интегрирование будет выполняться также сBigFloatточностью.Примечание
Рекомендуется увеличивать интервал интегрирования
orderпримерно пропорционально точности, для гладких подынтегральных функций.Более общо, точность задаётся точностью конечных точек интегрирования (приведенных к типам с плавающей точкой).
Подынтегральная функция
f(x)может возвращать любой числовой скаляр, вектор или матрицу, или, в действительности, любой тип, поддерживающий+,-, умножение на вещественные значения иnorm(то есть любой нормированное векторное пространство). В качестве альтернативы, можно указать другую норму, передав функцию, похожую наnorm, в качестве ключевого аргументаnorm(по умолчаниюvecnorm).Примечание
Эта функция предоставляет только одномерные интегралы. Для многомерного интегрирования (кубатуры) существует много различных алгоритмов (часто значительно лучше, чем простые вложенные одномерные интегралы), и оптимальный выбор сильно зависит от конкретной задачи. Обратитесь к списку внешних пакетов Julia для получения доступных алгоритмов многомерного интегрирования или других специализированных задач (например, интегралов высокоосциллирующих или сингулярных функций).
Алгоритм — это адаптивный метод интегрирования Гаусса-Кронирода: интеграл в каждом интервале оценивается с помощью правила Кронирода (
2*order+1точек), а ошибка оценивается с помощью вложенного правила Гаусса (orderточек). Затем интервал с наибольшей ошибкой делится на два интервала, и процесс повторяется до достижения требуемой погрешности.Эти правила квадратур наилучшим образом работают для гладких функций внутри каждого интервала, поэтому, если ваша функция имеет известную разрывность или другую особенность, лучше разбить интервал так, чтобы эта особенность оказалась в конечной точке. Например, если у
fесть разрыв вx=0.7и вы хотите интегрировать от 0 до 1, вы должны использоватьquadgk(f, 0,0.7,1)для разделения интервала в точке разрыва. Подынтегральная функция никогда не вычисляется точно в конечных точках интервалов, поэтому можно интегрировать функции, расходящиеся в конечных точках, при условии, что сингулярность интегрируема (например, сингулярность типаlog(x)или1/sqrt(x)).Для вещественных конечных точек начальная и/или конечная точки могут быть бесконечными. (Внутренне выполняется преобразование координат для отображения бесконечного интервала на конечный.)
© 2009–2016 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/release-0.5/stdlib/math/